boot 1.68 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
system("/usr/bin/perl", "-w", "boot-pkgs") == 0
    or die "Running boot-pkgs failed: $?";

my $dir;
my $curdir;

14
15
$curdir = &cwd()
    or die "Can't find current directory: $!";
16

17
# Check that we have all boot packages.
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
43
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;
44

Ian Lynagh's avatar
Ian Lynagh committed
45
# autoreconf everything that needs it.
46
47
48
foreach $dir (".", glob("libraries/*/")) {
    if (-f "$dir/configure.ac") {
        print "Booting $dir\n";
49
50
51
52
        chdir $dir or die "can't change to $dir: $!";
        system("autoreconf") == 0
            or die "Running autoreconf failed with exitcode $?";
        chdir $curdir or die "can't change to $curdir: $!";
53
54
    }
}
55

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