Fold base.git into ghc.git (re #8545)
[ghc.git] / sync-all
index 469dabe..70c9639 100755 (executable)
--- a/sync-all
+++ b/sync-all
@@ -7,6 +7,7 @@ use English;
 $| = 1; # autoflush stdout after each print, to avoid output after die
 
 my $initial_working_directory;
+my $exit_via_die;
 
 my $defaultrepo;
 my @packages;
@@ -19,6 +20,8 @@ my $bare_flag = ""; # NOT the opposite of checked_out_flag (describes local repo
 
 my %tags;
 
+my $GITHUB = qr!(?:git@|git://|https://|http://)github.com!;
+
 sub inDir {
     my $dir = shift;
     my $code = shift;
@@ -262,7 +265,7 @@ sub gitall {
 
     my ($repo_base, $checked_out_tree, $repo_local) = getrepo();
 
-    my $is_github_repo = $repo_base =~ m/(git@|git:\/\/|https:\/\/)github.com/;
+    my $is_github_repo = $repo_base =~ $GITHUB;
 
     @args = ();
 
@@ -584,8 +587,8 @@ sub gitInitSubmodules {
 
     my $submodulespaths = &readgit(".", "config", "--get-regexp", "^submodule[.].*[.]url");
     # if we came from github, change the urls appropriately
-    while ($submodulespaths =~ m!^(submodule.libraries/[a-zA-Z0-9]+.url) git://github.com/ghc/packages/([a-zA-Z0-9]+).git$!gm) {
-        &git(".", "config", $1, "git://github.com/ghc/packages-$2");
+    while ($submodulespaths =~ m!^(submodule.libraries/[a-zA-Z0-9]+.url) ($GITHUB)/ghc/packages/([a-zA-Z0-9]+).git$!gm) {
+        &git(".", "config", $1, "$2/ghc/packages-$3");
     }
 
     # if we came from a local repository, grab our submodules from their
@@ -954,6 +957,11 @@ BEGIN {
     }
     $initial_working_directory = getcwd();
 
+    $SIG{__DIE__} = sub {
+      die @_ if $^S;
+      $exit_via_die = 1;
+    };
+
     #message "== Checking for left-over testsuite/.git folder";
     if (-d "testsuite/.git") {
         print <<EOF;
@@ -972,6 +980,7 @@ EOF
 }
 
 END {
+    return if $exit_via_die;
     my $ec = $?;
 
     chdir($initial_working_directory);