mirror of https://github.com/perkeep/perkeep.git
48 lines
1.0 KiB
Perl
48 lines
1.0 KiB
Perl
use strict;
|
|
use Time::HiRes ();
|
|
use FindBin qw($Bin);
|
|
|
|
sub build_bin {
|
|
my $target = shift;
|
|
my $final_bin = find_bin($target);
|
|
if ($ENV{CAMLI_FAST_DEV}) {
|
|
return $final_bin;
|
|
}
|
|
|
|
my $full_target = $target;
|
|
$full_target =~ s!^\./((cmd|server)/(\w+))$!camlistore.org/$1! or die "Bogus target $target";
|
|
|
|
my $mtime = 0;
|
|
if (-f $final_bin) {
|
|
$mtime = (stat($final_bin))[9];
|
|
}
|
|
|
|
print STDERR "Building $full_target ...\n";
|
|
my $t0 = Time::HiRes::time();
|
|
system("go", "run", "make.go",
|
|
"--quiet",
|
|
"--embed_static=false",
|
|
"--sqlite=false",
|
|
"--if_mods_since=$mtime",
|
|
"--targets=$full_target")
|
|
and die "go install $target failed";
|
|
my $td = Time::HiRes::time() - $t0;
|
|
|
|
print STDERR "Build/init took " . sprintf("%0.03f", $td) . " seconds.\n";
|
|
|
|
return $final_bin;
|
|
}
|
|
|
|
sub find_bin {
|
|
my $target = shift;
|
|
$target =~ s!.+/!!;
|
|
my $bin = find_gobin();
|
|
return "$bin/$target";
|
|
}
|
|
|
|
sub find_gobin {
|
|
return "$Bin/bin";
|
|
}
|
|
|
|
1;
|