X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=darcs-all;h=e8a113915ab5d15a88112df7d19c9d69cd4b2d2f;hp=b1451b173f22dd1bd8097d3c95db5c9053c88c6a;hb=1d141bd52e6eea321e90cd11059f726094dd50be;hpb=b8539b1d6fabe70b28ce4da89d8e7c451d763e97 diff --git a/darcs-all b/darcs-all index b1451b1..e8a1139 100644 --- a/darcs-all +++ b/darcs-all @@ -2,6 +2,24 @@ use strict; +# Usage: +# +# ./darcs-all [-q] [-s] [--nofib] [--testsuite] get [darcs get flags] +# This gets the GHC core repos, if they do not already exist. +# -q says to be quite, and -s to be silent. +# --nofib, --testsuite also get the nofib and testsuite repos respectively +# The darcs get flag you are most likely to want is --complete. By +# default we pass darcs the --partial flag. +# +# ./darcs-all [-q] [-s] cmd [darcs cmd flags] +# This runs the darcs "cmd" command, with any flags you give, in all +# of the repos you have checked out. e.g. +# ./darcs-all pull +# ./darcs-all -q send --dry-run +# -q says to be quite, and -s to be silent. + +$| = 1; # autoflush stdout after each print, to avoid output after die + # Figure out where to get the other repositories from, # based on where this GHC repo came from. my $defaultrepo = `cat _darcs/prefs/defaultrepo`; @@ -55,13 +73,15 @@ sub darcsall { my $localpath; my $path; my $tag; - - darcs @_; + my @repos; open IN, "< packages" or die "Can't open packages file"; - while () { + @repos = ; + close IN; + + foreach (@repos) { chomp; - if (/^([^ ]+) +(?:([^ ]+) +)?([^ ]+)/) { + if (/^([^# ]+) +(?:([^ ]+) +)?([^ ]+) +([^ ]+)$/) { $localpath = $1; $tag = defined($2) ? $2 : ""; @@ -75,11 +95,10 @@ sub darcsall { message "== $localpath repo not present; skipping"; } } - elsif (! /^$/) { + elsif (! /^(#.*)?$/) { die "Bad line: $_"; } } - close IN; } sub darcsget { @@ -88,6 +107,7 @@ sub darcsget { my $remotepath; my $path; my $tag; + my @repos; if (! grep /(?:--complete|--partial)/, @_) { warning("adding --partial, to override use --complete"); @@ -98,9 +118,12 @@ sub darcsget { } open IN, "< packages" or die "Can't open packages file"; - while () { + @repos = ; + close IN; + + foreach (@repos) { chomp; - if (/^([^ ]+) +(?:([^ ]+) +)?([^ ]+)/) { + if (/^([^ ]+) +(?:([^ ]+) +)?([^ ]+) +([^ ]+)$/) { $localpath = $1; $tag = defined($2) ? $2 : ""; $remotepath = $3; @@ -109,7 +132,12 @@ sub darcsget { $path = "$defaultrepo_base/$localpath"; } else { - $path = "$defaultrepo_base/$remotepath"; + if ($remotepath =~ /^http:/) { + $path = $remotepath; + } + else { + $path = "$defaultrepo_base/$remotepath"; + } } if (($tag eq "") || defined($tags{$tag})) { @@ -121,11 +149,10 @@ sub darcsget { } } } - elsif (! /^$/) { + elsif (! /^(#.*)?$/) { die "Bad line: $_"; } } - close IN; } sub main { @@ -143,17 +170,6 @@ sub main { elsif ($arg eq "-s") { $verbose = 0; } - # --ci says we grab cabal-install repo, and the libraries it needs - # with 'get'. - # It has no effect on the other commands. - elsif ($arg eq "--ci") { - $tags{"ci"} = 1; - } - # --extra says we grab the extra libs with 'get'. - # It has no effect on the other commands. - elsif ($arg eq "--extra") { - $tags{"extralibs"} = 1; - } # --nofib tells get to also grab the nofib repo. # It has no effect on the other commands. elsif ($arg eq "--nofib") {