boot 1.47 KB
Newer Older
1
2
3
4
5
#!/usr/bin/perl -w

use strict;

use Cwd;
6

7
# Create libraries/*/{ghc.mk,GNUmakefile}
8
9
10
11
12
13
14
system("/usr/bin/perl", "-w", "boot-pkgs") == 0
    or die "Running boot-pkgs failed: $?";

my $dir;
my $curdir;

$curdir = &cwd();
15

16
# Check that we have all boot packages.
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
open PACKAGES, "< packages";
while (<PACKAGES>) {
    if (/^#/) {
        # Comment; do nothing
    }
    elsif (/^([a-zA-Z0-9\/.-]+) *[^ ]+ *[^ ]+$/) {
        $dir = $1;
        
        # We would like to just check for an _darcs directory here, but in
        # an lndir tree we avoid making _darcs directories, so it doesn't
        # exist. We therefore require that every repo has a LICENSE file
        # instead.
        if (! -f "$dir/LICENSE") {
            print STDERR "Error: $dir/LICENSE doesn't exist.\n";
            die "Maybe you haven't done './darcs-all get'?";
        }
    }
    elsif (/^([a-zA-Z0-9\/.-]+) *[^ ]+ *[^ ]+ *[^ ]+$/) {
        # These are lines which refer to optional repositories, so their
        # absence isn't an error.
    }
    else {
        die "Bad line in packages file: $_";
    }
}
close PACKAGES;
43

Ian Lynagh's avatar
Ian Lynagh committed
44
# autoreconf everything that needs it.
45
46
47
48
49
50
51
52
foreach $dir (".", glob("libraries/*/")) {
    if (-f "$dir/configure.ac") {
        print "Booting $dir\n";
        chdir $dir;
        system "autoreconf";
        chdir $curdir;
    }
}
53

sven.panne@aedion.de's avatar
sven.panne@aedion.de committed
54
# Alas, darcs doesn't handle file permissions, so fix a few of them.
55
56
57
for my $file ("boot", "darcs-all", "push-all", "validate") {
    chmod 0755, $file if -f $file;
}