X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=darcs-all;h=bd8d7123ed8bf2002a0663cd20303a2ad6a5ba03;hb=5271a0583a29cae8e9014518cf0b1361f3193a26;hp=30173c2fa57b56e166d5ca679f74a140d991815f;hpb=610379bc0660cc9df6bb8cfaa98e566157236026;p=ghc-hetmet.git diff --git a/darcs-all b/darcs-all index 30173c2..bd8d712 100644 --- a/darcs-all +++ b/darcs-all @@ -2,7 +2,7 @@ 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. @@ -10,23 +10,29 @@ my $defaultrepo = `cat _darcs/prefs/defaultrepo`; 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#/ghc$##; + $defaultrepo_base =~ s#/[^/]+/?$##; $defaultrepo_lib = "$defaultrepo_base/packages"; + $hsc2hs_repo_loc = $defaultrepo_base; } -elsif ($defaultrepo =~ /^\//) { - # Local filesystem (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"; } -my $verbose = 1; +my $verbose = 2; my $ignore_failure = 0; # --extra says we grab the extra libs with 'get'. It has no effect on @@ -37,34 +43,16 @@ my $extra = 0; my $nofib = 0; my $testsuite = 0; -while ($#_ ne -1) { - my $arg = shift; - if ($arg eq "-q") { - $verbose = 0; - } - elsif ($arg eq "--extra") { - $extra = 1; - } - elsif ($arg eq "--nofib") { - $nofib = 1; - } - elsif ($arg eq "--testsuite") { - $testsuite = 1; - } - else { - unshift @_, $arg; - last; - } -} - sub message { - if ($verbose) { + if ($verbose >= 2) { print "@_\n"; } } sub warning { - print "warning: @_\n"; + if ($verbose >= 1) { + print "warning: @_\n"; + } } sub darcs { @@ -75,6 +63,7 @@ sub darcs { } sub darcsall { + my @packages; darcs @_; for my $dir (@top_dirs) { if (-d $dir && -d "$dir/_darcs") { @@ -84,12 +73,21 @@ sub darcsall { 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 () { + 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"); } } @@ -121,14 +119,18 @@ sub darcsget { 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) { @@ -142,6 +144,34 @@ sub main { die "error: darcs-all must be run from the top level of the ghc tree." } + while ($#_ ne -1) { + my $arg = shift; + # We handle -q here as well as lower down as we need to skip over it + # if it comes before the darcs command + if ($arg eq "-q") { + $verbose = 1; + } + elsif ($arg eq "-s") { + $verbose = 0; + } + elsif ($arg eq "--extra") { + $extra = 1; + } + elsif ($arg eq "--nofib") { + $nofib = 1; + } + elsif ($arg eq "--testsuite") { + $testsuite = 1; + } + else { + unshift @_, $arg; + if (grep /^-q$/, @_) { + $verbose = 1; + } + last; + } + } + if ($#_ eq -1) { die "What do you want to do?"; }