summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libffi/ghc.mk2
-rw-r--r--packages3
-rwxr-xr-xsync-all23
3 files changed, 21 insertions, 7 deletions
diff --git a/libffi/ghc.mk b/libffi/ghc.mk
index d761a43a47..2e333df6e9 100644
--- a/libffi/ghc.mk
+++ b/libffi/ghc.mk
@@ -55,7 +55,7 @@ $(libffi_STAMP_CONFIGURE): $(TOUCH_DEP)
$(call removeFiles,$(libffi_STAMP_STATIC_SHARED_BUILD))
$(call removeFiles,$(libffi_STAMP_STATIC_SHARED_INSTALL))
$(call removeTrees,$(LIBFFI_DIR) libffi/build)
- cat ghc-tarballs/libffi/libffi*.tar.gz | $(GZIP_CMD) -d | { cd libffi && $(TAR_CMD) -xf - ; }
+ cat libffi-tarballs/libffi*.tar.gz | $(GZIP_CMD) -d | { cd libffi && $(TAR_CMD) -xf - ; }
mv libffi/libffi-* libffi/build
# We have to fake a non-working ln for configure, so that the fallback
diff --git a/packages b/packages
index 7f8a8ab123..ecba5c8252 100644
--- a/packages
+++ b/packages
@@ -42,7 +42,8 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# localpath tag remotepath
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-ghc-tarballs - ghc-tarballs.git
+ghc-tarballs windows ghc-tarballs.git
+libffi-tarballs - libffi-tarballs.git
utils/hsc2hs - hsc2hs.git
utils/haddock - haddock.git
libraries/array - packages/array.git
diff --git a/sync-all b/sync-all
index 741e22b2cb..5d7e313536 100755
--- a/sync-all
+++ b/sync-all
@@ -2,6 +2,7 @@
use strict;
use Cwd;
+use English;
$| = 1; # autoflush stdout after each print, to avoid output after die
@@ -55,6 +56,8 @@ sub parsePackages {
$line{"tag"} = $2;
$line{"remotepath"} = $3;
push @packages, \%line;
+
+ $tags{$2} = 0;
}
elsif (! /^(#.*)?$/) {
die "Bad content on line $lineNum of packages file: $_";
@@ -244,8 +247,6 @@ sub gitall {
my $is_github_repo = $repo_base =~ m/(git@|git:\/\/|https:\/\/)github.com/;
- parsePackages;
-
@args = ();
if ($command =~ /^remote$/) {
@@ -554,14 +555,18 @@ sub help
{
my $exit = shift;
+ my $tags = join ' ', sort (grep !/^-$/, keys %tags);
+
# Get the built in help
my $help = <<END;
Usage:
./sync-all [-q] [-s] [--ignore-failure] [-r repo] [--checked-out] [--bare]
- [--nofib] [--extra] [--testsuite] [--no-dph] [--resume]
+ [--<tag>] [--no-<tag>] [--resume]
cmd [git flags]
+ where <tag> is one of: $tags
+
Applies the command "cmd" to each repository in the tree.
A full repository tree is obtained by first cloning the ghc
@@ -752,8 +757,13 @@ END
sub main {
+ &parsePackages();
+
$tags{"-"} = 1;
$tags{"dph"} = 1;
+ if ($OSNAME =~ /^(MSWin32|Cygwin)$/) {
+ $tags{"windows"} = 1;
+ }
while ($#_ ne -1) {
my $arg = shift;
@@ -792,12 +802,15 @@ sub main {
}
# --<tag> says we grab the libs tagged 'tag' with
# 'get'. It has no effect on the other commands.
- elsif ($arg =~ m/^--no-(.*)$/) {
+ elsif ($arg =~ m/^--no-(.*)$/ && defined($tags{$1})) {
$tags{$1} = 0;
}
- elsif ($arg =~ m/^--(.*)$/) {
+ elsif ($arg =~ m/^--(.*)$/ && defined($tags{$1})) {
$tags{$1} = 1;
}
+ elsif ($arg =~ m/^-/) {
+ die "Unrecognised flag: $arg";
+ }
else {
unshift @_, $arg;
if (grep /^-q$/, @_) {