github.com/slspeek/camlistore_namedsearch@v0.0.0-20140519202248-ed6f70f7721a/misc/devlib.pl (about) 1 use strict; 2 use Time::HiRes (); 3 use FindBin qw($Bin); 4 5 sub build_bin { 6 my $target = shift; 7 my $final_bin = find_bin($target); 8 if ($ENV{CAMLI_FAST_DEV}) { 9 return $final_bin; 10 } 11 12 my $full_target = $target; 13 $full_target =~ s!^\./((cmd|server)/(\w+))$!camlistore.org/$1! or die "Bogus target $target"; 14 15 my $mtime = 0; 16 if (-f $final_bin) { 17 $mtime = (stat($final_bin))[9]; 18 } 19 20 print STDERR "Building $full_target ...\n"; 21 my $t0 = Time::HiRes::time(); 22 system("go", "run", "make.go", 23 "--quiet", 24 "--embed_static=false", 25 "--sqlite=false", 26 "--if_mods_since=$mtime", 27 "--targets=$full_target") 28 and die "go install $target failed"; 29 my $td = Time::HiRes::time() - $t0; 30 31 print STDERR "Build/init took " . sprintf("%0.03f", $td) . " seconds.\n"; 32 33 return $final_bin; 34 } 35 36 sub find_bin { 37 my $target = shift; 38 $target =~ s!.+/!!; 39 my $bin = find_gobin(); 40 return "$bin/$target"; 41 } 42 43 sub find_gobin { 44 return "$Bin/bin"; 45 } 46 47 1;