5 my @top_dirs = ("nofib", "testsuite");
7 # Figure out where to get the other repositories from,
8 # based on where this GHC repo came from.
9 my $defaultrepo = `cat _darcs/prefs/defaultrepo`;
14 if ($defaultrepo =~ /:/) {
16 $defaultrepo_base = $defaultrepo;
17 $defaultrepo_base =~ s#/ghc$##;
18 $defaultrepo_lib = "$defaultrepo_base/packages";
20 elsif ($defaultrepo =~ /^\//) {
21 # Local filesystem (assumes a checked-out tree):
22 $defaultrepo_base = $defaultrepo;
23 $defaultrepo_lib = "$defaultrepo/libraries";
26 die "Couldn't work out defaultrepo";
30 my $ignore_failure = 0;
32 # --extra says we grab the extra libs with 'get'. It has no effect on
35 # --nofib/--testsuite tell get to also grab the respective repos.
36 # They have no effect on the other commands.
45 elsif ($arg eq "--extra") {
48 elsif ($arg eq "--nofib") {
51 elsif ($arg eq "--testsuite") {
67 print "warning: @_\n";
71 message "== running darcs @_";
72 system ("darcs", @_) == 0
74 or die "darcs failed: $?";
79 for my $dir (@top_dirs) {
80 if (-d $dir && -d "$dir/_darcs") {
81 darcs (@_, "--repodir", $dir);
84 message "== $dir not present or not a repository; skipping";
87 for my $pkg (`cat libraries/core-packages libraries/extra-packages`) {
89 if (-d "libraries/$pkg") {
90 darcs (@_, "--repodir", "libraries/$pkg");
93 warning("$pkg doesn't exist, use 'darcs-all get' to get it");
99 my ($get_it, $r_flags, $repo_root, $package) = @_;
103 warning("$package already present; omitting");
106 darcs (@$r_flags, "$repo_root/$package");
113 if (! grep /(?:--complete|--partial)/, @_) {
114 warning("adding --partial, to override use --complete");
115 $r_flags = [@_, "--partial"];
121 darcsgetpackage($nofib, $r_flags, $defaultrepo_base, "nofib");
122 darcsgetpackage($testsuite, $r_flags, $defaultrepo_base, "testsuite");
128 @packages = `cat core-packages extra-packages`;
131 @packages = `cat core-packages`;
134 for my $pkg (@packages) {
136 darcsgetpackage(1, $r_flags, $defaultrepo_lib, $pkg);
141 if (! -d "_darcs" || ! -d "compiler") {
142 die "error: darcs-all must be run from the top level of the ghc tree."
146 die "What do you want to do?";
149 if ($command eq "get") {
153 if ($command =~ /^(?:w|wh|wha|what|whats|whatsn|whatsne|whatsnew)$/) {
154 # Hack around whatsnew failing if there are no changes