require 'package' class Vim < Package description 'Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient.' homepage 'http://www.vim.org/' @_ver = '8.2.4594' version @_ver license 'GPL-2' compatibility 'all' source_url 'https://github.com/vim/vim.git' git_hashtag "v#{@_ver}" binary_url({ aarch64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/vim/8.2.4594_armv7l/vim-8.2.4594-chromeos-armv7l.tar.zst', armv7l: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/vim/8.2.4594_armv7l/vim-8.2.4594-chromeos-armv7l.tar.zst', i686: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/vim/8.2.4594_i686/vim-8.2.4594-chromeos-i686.tar.zst', x86_64: 'https://gitlab.com/api/v4/projects/26210301/packages/generic/vim/8.2.4594_x86_64/vim-8.2.4594-chromeos-x86_64.tar.zst' }) binary_sha256({ aarch64: '67807f3bb5fa193a8997e484b01f7e187a183e6060e602240a26065b4f96f623', armv7l: '67807f3bb5fa193a8997e484b01f7e187a183e6060e602240a26065b4f96f623', i686: '156f8c4cc69a4cdf79ef6fc2d2abaad0bcbf76241d9a16a3f60a3a2340be3d2f', x86_64: '69ea16d8dbdb6f2ea932d766c3222b1a870e0344e5d44dbd84fb16dbbb5f78cb' }) depends_on 'vim_runtime' def self.preflight gvim = `which #{CREW_PREFIX}/bin/gvim 2> /dev/null`.chomp abort "gvim version #{version} already installed.".lightgreen unless gvim.to_s == '' end def self.patch abort('Please remove libiconv before building.') if File.exist?("#{CREW_LIB_PREFIX}/libcharset.so") # set the system-wide vimrc path FileUtils.cd('src') do system 'sed', '-i', "s|^.*#define SYS_VIMRC_FILE.*$|#define SYS_VIMRC_FILE \"#{CREW_PREFIX}/etc/vimrc\"|", 'feature.h' system 'sed', '-i', "s|^.*#define SYS_GVIMRC_FILE.*$|#define SYS_GVIMRC_FILE \"#{CREW_PREFIX}/etc/gvimrc\"|", 'feature.h' end end def self.build system '[ -x configure ] || autoreconf -fvi' system "env CFLAGS='-pipe -fno-stack-protector -U_FORTIFY_SOURCE -flto=auto' \ CXXFLAGS='-pipe -fno-stack-protector -U_FORTIFY_SOURCE -flto=auto' \ LDFLAGS='-fno-stack-protector -U_FORTIFY_SOURCE -flto=auto' \ ./configure \ #{CREW_OPTIONS} \ --localstatedir=#{CREW_PREFIX}/var/lib/vim \ --with-features=huge \ --with-compiledby='Chromebrew' \ --enable-gpm \ --enable-acl \ --with-x=no \ --disable-gui \ --enable-multibyte \ --enable-cscope \ --enable-netbeans \ --enable-perlinterp=dynamic \ --enable-pythoninterp=dynamic \ --enable-python3interp=dynamic \ --enable-rubyinterp=dynamic \ --enable-luainterp=dynamic \ --enable-tclinterp=dynamic \ --disable-canberra \ --disable-selinux \ --disable-nls" system 'make' end def self.install system 'make', "DESTDIR=#{CREW_DEST_DIR}", "VIMRCLOC=#{CREW_PREFIX}/etc", 'install' FileUtils.ln_s "#{CREW_PREFIX}/bin/vim", "#{CREW_DEST_PREFIX}/bin/vi" # these are provided by 'vim_runtime' FileUtils.rm_r "#{CREW_DEST_PREFIX}/share/vim" # these are provided by 'xxd_standalone' @deletefiles = %W[#{CREW_DEST_PREFIX}/bin/xxd #{CREW_DEST_MAN_PREFIX}/man1/xxd.1] @deletefiles.each do |f| FileUtils.rm f if File.exist?(f) end # remove desktop and icon files for the terminal package FileUtils.rm_r "#{CREW_DEST_PREFIX}/share/applications" FileUtils.rm_r "#{CREW_DEST_PREFIX}/share/icons" end def self.postinstall puts puts "The config files are located in #{CREW_PREFIX}/etc.".lightblue puts 'User-specific configuration should go in ~/.vimrc.'.lightblue puts puts 'If you are upgrading from an earlier version, edit ~/.bashrc'.orange puts "and remove the 'export VIMRUNTIME' and 'export LC_ALL=C' lines.".orange puts end end