ajhc-0.8.0.8: utils/build_extlibs.prl
#!/usr/bin/perl
use strict;
use warnings;
use Cwd;
use Getopt::Std;
our ($opt_l,$opt_d,$opt_c,$opt_j);
getopts('ldc:j:') or die "unknown opt";
$opt_c = "./ajhc" unless $opt_c;
$opt_j = "./jahm" unless $opt_j;
# clean out environment
delete $ENV{AJHC_PATH};
delete $ENV{AJHC_OPTS};
delete $ENV{AJHC_CACHE};
delete $ENV{AJHC_LIBRARY_PATH};
my $tmpdir = "tmp/build";
mkdir "tmp";
mkdir "tmp/build";
sub mysystem {
print( (join " ", @_), "\n");
system @_ and die "Running Command Failed!";
}
foreach my $fn (@ARGV) {
next unless $fn =~ /\.(cabal|yaml)$/;
my $patch = $fn;
$patch =~ s/\.(cabal|yaml)$/.patch/;
print "Processing $fn\n" unless $opt_l;
open my $fh, "<", $fn or die "$!: $fn";
my ($name,$version,$options);
$options = "";
while(<$fh>) {
$name = $1 if /^name:\s*(.*?)\s*$/i;
$version = $1 if /^version:\s*(.*?)\s*$/i;
$options = $1 if /^options:\s*(.*?)\s*$/i;
}
next unless $name;
next unless $version;
$options = "$options --stop deps --deps tmp/$name-deps.yaml" if $opt_d;
print("$name-$version.hl\n"),next if $opt_l;
print "Processing $fn, found $name-$version\n";
my $url = "http://hackage.haskell.org/packages/archive/$name/$version/$name-$version.tar.gz";
# my $url = "http://new-hackage.haskell.org/package/$name-$version/$name-$version.tar.gz";
print "Fetching $url\n";
unless(-e "$tmpdir/$name-$version.tar.gz") {
mysystem "$opt_j downloadURI $url $tmpdir/$name-$version.tar.gz";
}
mysystem "tar -zxv --directory $tmpdir -f $tmpdir/$name-$version.tar.gz" and die "$!: tar";
my $src = -d "$tmpdir/$name-$version/src" ? "/src" : "";
mysystem "patch -d $tmpdir/$name-$version -p1 < $patch" if -e $patch;
mysystem("cp '$fn' '$tmpdir/$name-$version'");
$fn =~ s/.*\///;
mysystem("$opt_c $options " . ($ENV{AJHC_TEST} || "") .
" --build-hl '$tmpdir/$name-$version/$fn' -L- -L. -i- '-i$tmpdir/$name-$version$src'") and die "$!: ajhc";
}