summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lynagh <igloo@earth.li>2010-08-15 15:16:57 +0000
committerIan Lynagh <igloo@earth.li>2010-08-15 15:16:57 +0000
commit0e17d4498cc037d5c18d33fcc4a4885778d266c0 (patch)
treee08cb9ec6812792138afa6aa3fdead92a1d87692
parenteb586af1a1eaa107138dd38eaadacf842b9b0b4d (diff)
downloadhaskell-0e17d4498cc037d5c18d33fcc4a4885778d266c0.tar.gz
Make the "tag" column of the packages file always present
It makes the parsing simpler if we always have the same number of columns
-rw-r--r--boot26
-rw-r--r--darcs-all12
-rw-r--r--packages84
3 files changed, 62 insertions, 60 deletions
diff --git a/boot b/boot
index 339f21dca2..6683ad5698 100644
--- a/boot
+++ b/boot
@@ -8,6 +8,7 @@ use Cwd;
system("/usr/bin/perl", "-w", "boot-pkgs") == 0
or die "Running boot-pkgs failed: $?";
+my $tag;
my $dir;
my $curdir;
@@ -20,21 +21,22 @@ while (<PACKAGES>) {
if (/^#/) {
# Comment; do nothing
}
- elsif (/^([a-zA-Z0-9\/.-]+) *[^ ]+ *[^ ]+$/) {
+ elsif (/^([a-zA-Z0-9\/.-]+) *([^ ]+) *[^ ]+ *[^ ]+$/) {
$dir = $1;
+ $tag = $2;
- # 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
+ # If $tag is not "-" then it is an optional repository, so its
# absence isn't an error.
+ if ($tag eq "-") {
+ # 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'?";
+ }
+ }
}
else {
die "Bad line in packages file: $_";
diff --git a/darcs-all b/darcs-all
index 72aff5476f..9eee3c6a40 100644
--- a/darcs-all
+++ b/darcs-all
@@ -166,9 +166,9 @@ sub darcsall {
foreach (@repos) {
chomp;
- if (/^([^# ]+) +(?:([^ ]+) +)?([^ ]+) +([^ ]+)$/) {
+ if (/^([^# ]+) +([^ ]+) +([^ ]+) +([^ ]+)$/) {
$localpath = $1;
- $tag = defined($2) ? $2 : "";
+ $tag = $2;
$remotepath = $3;
if ($checked_out_tree) {
@@ -190,7 +190,7 @@ sub darcsall {
darcs (@_, "--repodir", $localpath);
}
}
- elsif ($tag eq "") {
+ elsif ($tag eq "-") {
message "== Required repo $localpath is missing! Skipping";
}
else {
@@ -227,9 +227,9 @@ sub darcsget {
foreach (@repos) {
chomp;
- if (/^([^ ]+) +(?:([^ ]+) +)?([^ ]+) +([^ ]+)$/) {
+ if (/^([^ ]+) +([^ ]+) +([^ ]+) +([^ ]+)$/) {
$localpath = $1;
- $tag = defined($2) ? $2 : "";
+ $tag = $2;
$remotepath = $3;
if ($checked_out_tree) {
@@ -239,7 +239,7 @@ sub darcsget {
$path = "$repo_base/$remotepath";
}
- if (($tag eq "") || defined($tags{$tag})) {
+ if (($tag eq "-") || defined($tags{$tag})) {
if (-d $localpath) {
warning("$localpath already present; omitting");
}
diff --git a/packages b/packages
index 23aa5e0d4e..53d1a215ba 100644
--- a/packages
+++ b/packages
@@ -1,5 +1,5 @@
# Despite the name "package", this file contains the master list of
-# the *repositories* that make up GHC.
+# the *repositories* that make up GHC. It is parsed by boot and darcs-all.
#
# Some of this information is duplicated elsewhere in the build system:
# See Trac #3896
@@ -17,54 +17,54 @@
# - nofib and testsuite are optional helpers
#
# The format of the lines in this file is:
-# localpath (optional) tag remotepath VCS
+# localpath tag remotepath VCS
# where
# * 'localpath' is where to put the repository in a checked out tree,
# * 'remotepath' is where the repository is in the central repository,
# * 'VCS' is what version control system the repo uses,
-# * The 'tag', if present, determines when "darcs-all get" will get the
-# repo. If there is no tag then it will always get it, but if there
+# * The 'tag' determines when "darcs-all get" will get the
+# repo. If the tag is "-" then it will always get it, but if there
# is a tag then a corresponding flag must be given to darcs-all, e.g.
# if you want to get the packages with an "extralibs" or "testsuite"
# tag then you need to use "darcs-all --extra --testsuite get".
# Support for new tags must be manually added to the darcs-all script.
#
# Lines that start with a '#' are comments.
-. ghc git
-ghc-tarballs ghc-tarballs darcs
-utils/hsc2hs hsc2hs darcs
-utils/haddock haddock2 darcs
-libraries/array packages/array darcs
-libraries/base packages/base darcs
-libraries/binary packages/binary darcs
-libraries/bytestring packages/bytestring darcs
-libraries/Cabal packages/Cabal darcs
-libraries/containers packages/containers darcs
-libraries/directory packages/directory darcs
-libraries/dph packages/dph darcs
-libraries/extensible-exceptions packages/extensible-exceptions darcs
-libraries/filepath packages/filepath darcs
-libraries/ghc-prim packages/ghc-prim darcs
-libraries/haskeline packages/haskeline darcs
-libraries/haskell98 packages/haskell98 darcs
-libraries/haskell2010 packages/haskell2010 darcs
-libraries/hpc packages/hpc darcs
-libraries/integer-gmp packages/integer-gmp darcs
-libraries/integer-simple packages/integer-simple darcs
-libraries/mtl packages/mtl darcs
-libraries/old-locale packages/old-locale darcs
-libraries/old-time packages/old-time darcs
-libraries/pretty packages/pretty darcs
-libraries/process packages/process darcs
-libraries/random packages/random darcs
-libraries/template-haskell packages/template-haskell darcs
-libraries/terminfo packages/terminfo darcs
-libraries/unix packages/unix darcs
-libraries/utf8-string packages/utf8-string darcs
-libraries/Win32 packages/Win32 darcs
-libraries/xhtml packages/xhtml darcs
-testsuite testsuite testsuite darcs
-nofib nofib nofib darcs
-libraries/deepseq extra packages/deepseq darcs
-libraries/parallel extra packages/parallel darcs
-libraries/stm extra packages/stm darcs
+. - ghc git
+ghc-tarballs - ghc-tarballs darcs
+utils/hsc2hs - hsc2hs darcs
+utils/haddock - haddock2 darcs
+libraries/array - packages/array darcs
+libraries/base - packages/base darcs
+libraries/binary - packages/binary darcs
+libraries/bytestring - packages/bytestring darcs
+libraries/Cabal - packages/Cabal darcs
+libraries/containers - packages/containers darcs
+libraries/directory - packages/directory darcs
+libraries/dph - packages/dph darcs
+libraries/extensible-exceptions - packages/extensible-exceptions darcs
+libraries/filepath - packages/filepath darcs
+libraries/ghc-prim - packages/ghc-prim darcs
+libraries/haskeline - packages/haskeline darcs
+libraries/haskell98 - packages/haskell98 darcs
+libraries/haskell2010 - packages/haskell2010 darcs
+libraries/hpc - packages/hpc darcs
+libraries/integer-gmp - packages/integer-gmp darcs
+libraries/integer-simple - packages/integer-simple darcs
+libraries/mtl - packages/mtl darcs
+libraries/old-locale - packages/old-locale darcs
+libraries/old-time - packages/old-time darcs
+libraries/pretty - packages/pretty darcs
+libraries/process - packages/process darcs
+libraries/random - packages/random darcs
+libraries/template-haskell - packages/template-haskell darcs
+libraries/terminfo - packages/terminfo darcs
+libraries/unix - packages/unix darcs
+libraries/utf8-string - packages/utf8-string darcs
+libraries/Win32 - packages/Win32 darcs
+libraries/xhtml - packages/xhtml darcs
+testsuite testsuite testsuite darcs
+nofib nofib nofib darcs
+libraries/deepseq extra packages/deepseq darcs
+libraries/parallel extra packages/parallel darcs
+libraries/stm extra packages/stm darcs