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;