use strict;
-my @top_dirs = ("nofib", "testsuite");
+my @top_dirs = ("nofib", "testsuite", "utils/hsc2hs");
# Figure out where to get the other repositories from,
# based on where this GHC repo came from.
chomp $defaultrepo;
my $defaultrepo_base;
my $defaultrepo_lib;
+my $hsc2hs_repo_loc;
-if ($defaultrepo =~ /:/) {
+if ($defaultrepo =~ /^...*:/) {
# HTTP or SSH
+ # Above regex says "at least two chars before the :", to avoid
+ # catching Win32 drives ("C:\").
$defaultrepo_base = $defaultrepo;
$defaultrepo_base =~ s#/[^/]+/?$##;
$defaultrepo_lib = "$defaultrepo_base/packages";
+ $hsc2hs_repo_loc = $defaultrepo_base;
}
-elsif ($defaultrepo =~ /^\//) {
- # Local filesystem, absolute path (assumes a checked-out tree):
- $defaultrepo_base = $defaultrepo;
- $defaultrepo_lib = "$defaultrepo/libraries";
-}
-elsif ($defaultrepo =~ /^..\//) {
- # Local filesystem, relative path (assumes a checked-out tree):
+elsif ($defaultrepo =~ /^(\.\.)?\//) {
+ # Local filesystem, either absolute or relative path
+ # (assumes a checked-out tree):
$defaultrepo_base = $defaultrepo;
$defaultrepo_lib = "$defaultrepo/libraries";
+ $hsc2hs_repo_loc = "$defaultrepo_base/utils";
}
else {
die "Couldn't work out defaultrepo";
}
sub darcsall {
+ my @packages;
darcs @_;
for my $dir (@top_dirs) {
if (-d $dir && -d "$dir/_darcs") {
message "== $dir not present or not a repository; skipping";
}
}
- for my $pkg (`cat libraries/core-packages libraries/extra-packages`) {
- chomp $pkg;
- if (-d "libraries/$pkg") {
+ for my $path (<libraries/*/_darcs>) {
+ chomp $path;
+ if ($path =~ m#/(.*)/#) {
+ my $pkg = $1;
darcs (@_, "--repodir", "libraries/$pkg");
}
else {
+ die "that pattern can't fail!";
+ }
+ }
+ @packages = `cat libraries/boot-packages`;
+ # @packages = `cat libraries/boot-packages libraries/extra-packages`;
+ for my $pkg (@packages) {
+ chomp $pkg;
+ if (! -d "libraries/$pkg") {
warning("$pkg doesn't exist, use 'darcs-all get' to get it");
}
}
darcsgetpackage($nofib, $r_flags, $defaultrepo_base, "nofib");
darcsgetpackage($testsuite, $r_flags, $defaultrepo_base, "testsuite");
+ chdir "utils";
+ darcsgetpackage(1 , $r_flags, $hsc2hs_repo_loc, "hsc2hs");
+ chdir "..";
+
chdir "libraries";
my @packages;
if ($extra) {
- @packages = `cat core-packages extra-packages`;
+ @packages = `cat boot-packages extra-packages`;
}
else {
- @packages = `cat core-packages`;
+ @packages = `cat boot-packages`;
}
for my $pkg (@packages) {