This script, which I have been using on Windows:
Other aspects of the script:
#!c:/opt/bin/perl use warnings; use strict; use Cwd qw(getcwd chdir realpath); use File::Find; use File::Copy; use File::stat; #--------------------------------------------------------- # Configuration my $svn_top_dir = 'e:/where/projects/vim/vim7'; my $vim_src_dir = "$svn_top_dir/src"; my $release_dir = 'c:\opt\vim\vim71'; my $user_name = 'the_user'; my $user_domain = 'the_domain'; my $mingw_path = 'c:\opt\MinGW\bin'; my $svn = 'c:\opt\svn\svn-win32-1.4.4\bin\svn'; my $rsync = 'c:\opt\cwRsync\bin\rsync'; my $rsync_arg = '-avzcP --delete --exclude="/dos/" ftp.nluug.nl: +:Vim/runtime/ ./runtime/'; my $make_cmd = $mingw_path . '\mingw32-make.exe -f Make_ming.m +ak'; my $cc = 'CC="c:/opt/MinGW/bin/gcc -Ic:/opt/MinGW/includ +e -Lc:/opt/MinGW/lib"'; my $general_options = 'FEATURES=HUGE DEBUG=no OLE=yes'; my $perl_current = 'c:/opt/perl'; my $perl_use = $perl_current; my $perl_options = "PERL=$perl_use PERL_VER=58"; # GUI=yes my $backup_existing = 1; my $update_svn = 1; my $stop_if_no_new_source = 1; my $build_gui = 1; my $release_gui = 1; my $build_console = 1; my $release_console = 1; my $update_runtime = 1; #--------------------------------------------------------- my $rc = ''; my $log = scalar localtime(time) . "\n"; my $start_dir = getcwd(); my $back_dir = ''; if($backup_existing) { my $back; for (1 .. 3) { # tested, but perhaps not all situations my $dir = $release_dir.".$_"; -e $dir or mkdir $dir and ($back_dir = $dir) and last; my $st = stat($dir) or die "can't stat $dir: $!\n"; $back or $back = $st->mtime; ($back < $st->mtime) or $back_dir = $dir and $back = $st->mtime; } chdir $release_dir or die "Can't cd to $release_dir: $!\n";; print "Backing up existing release at $release_dir to $back_dir ... +"; find({wanted => \&back_existing}, '.'); print "done\n"; } $ENV{USERNAME} = $user_name; $ENV{USERDOMAIN} = $user_domain; $ENV{PATH} .= ';' . $mingw_path; # Get the sources (other than runtime) # First time: svn co https://vim.svn.sourceforge.net/svnroot/vim/vim7 # chdir $svn_top_dir or die "Can't cd to $svn_top_dir: $!\n";; if($update_svn) { print "Updating sources ... "; $rc = `$svn update`; if($rc =~ /^At revision \d+\./) { print "nothing to do\n"; $stop_if_no_new_source and exit; } print "done\n"; } chdir $vim_src_dir or die "Can't cd to $vim_src_dir: $!\n";; if($build_gui) { print "Buildig GUI version ... "; $rc = `$make_cmd clean $cc $general_options $perl_options GUI=yes`; + $rc = `$make_cmd clean $cc $general_options $perl_options GUI=no`; $rc = `$make_cmd $cc $general_options $perl_options GUI=yes`; $log .= $rc; print "done\n"; if($release_gui) { print "Releasing GUI to $release_dir ... "; find({wanted => \&release}, '.'); print "done\n"; } } if($build_console) { print "Buildig console version ... "; $rc = `$make_cmd clean $cc $general_options $perl_options GUI=yes`; + $rc = `$make_cmd clean $cc $general_options $perl_options GUI=no`; $rc = `$make_cmd $cc $general_options $perl_options GUI=no`; $log .= $rc; print "done\n"; if($release_console) { print "Releasing console to $release_dir ... "; find({wanted => \&release}, '.'); print "done\n"; } } if($update_runtime) { chdir $release_dir or die "Can't cd to $release_dir: $!\n";; print "Rsync'ing runtime ... "; $rc = `$rsync $rsync_arg`; print "done\n"; print "rsync output:\n$rc,\n"; chdir $start_dir or die "Can't cd to $start_dir: $!\n";; } sub release { my $file = $_; $file =~ /\.(exe|dll)$/ and move($file, "$release_dir/$file"); } sub back_existing { my $file = $_; $file =~ /\.(exe|dll)$/ and copy($file, "$back_dir/$file"); } # nothing is actually done with $log # print "\n\n$log\n\n"; __END__
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Download, build and deploy vim (personal use on Windows)
by xdg (Monsignor) on Oct 21, 2007 at 21:32 UTC | |
by sg (Pilgrim) on Oct 21, 2007 at 23:38 UTC |