diff options
-rwxr-xr-x | boot | 2 | ||||
-rw-r--r-- | packages | 97 | ||||
-rwxr-xr-x | sync-all | 102 |
3 files changed, 96 insertions, 105 deletions
@@ -58,7 +58,7 @@ sub sanity_check_tree { if (/^#/) { # Comment; do nothing } - elsif (/^([a-zA-Z0-9\/.-]+) +([^ ]+) +[^ ]+ +[^ ]+$/) { + elsif (/^([a-zA-Z0-9\/.-]+) +([^ ]+) +[^ ]+$/) { $dir = $1; $tag = $2; @@ -1,4 +1,4 @@ -# Despite the name "package", this file contains the master list of +# Despite the name "package", this file contains the master list of # the *repositories* that make up GHC. It is parsed by # * boot # * sync-all @@ -14,18 +14,17 @@ # - The main GHC source repo # - Each boot package lives in a repo # - DPH is a repo that contains several packages -# - Haddock and hsc2hs are applications, built on top of GHC, +# - Haddock and hsc2hs are applications, built on top of GHC, # and in turn needed to bootstrap GHC # - ghc-tarballs is need to build GHC # - nofib and testsuite are optional helpers # # The format of the lines in this file is: -# localpath tag remotepath VCS +# localpath tag remotepath # where # * 'localpath' is where to put the repository in a checked out tree. # * 'remotepath' is where the repository is in the central repository. # It is - for submodules. -# * 'VCS' is what version control system the repo uses. # # * The 'tag' determines when "darcs-all get" will get the # repo. If the tag is "-" then it will always get it, but if there @@ -33,53 +32,53 @@ # 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. -# +# # 'tag' is also used to determine which packages the build system -# deems to have the EXTRA_PACKAGE property: tags 'dph' and 'extra' +# deems to have the EXTRA_PACKAGE property: tags 'dph' and 'extra' # both give this property # # Lines that start with a '#' are comments. # -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# localpath tag remotepath VCS -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -ghc-tarballs - ghc-tarballs.git git -utils/hsc2hs - hsc2hs.git git -utils/haddock - haddock.git git -libraries/array - packages/array.git git -libraries/base - packages/base.git git -libraries/binary - - git -libraries/bytestring - - git -libraries/Cabal - - git -libraries/containers - - git -libraries/deepseq - packages/deepseq.git git -libraries/directory - packages/directory.git git -libraries/filepath - packages/filepath.git git -libraries/ghc-prim - packages/ghc-prim.git git -libraries/haskeline - - git -libraries/haskell98 - packages/haskell98.git git -libraries/haskell2010 - packages/haskell2010.git git -libraries/hoopl - packages/hoopl.git git -libraries/hpc - packages/hpc.git git -libraries/integer-gmp - packages/integer-gmp.git git -libraries/integer-simple - packages/integer-simple.git git -libraries/old-locale - packages/old-locale.git git -libraries/old-time - packages/old-time.git git -libraries/pretty - - git -libraries/process - packages/process.git git -libraries/template-haskell - packages/template-haskell.git git -libraries/terminfo - - git -libraries/time - - git -libraries/transformers - - git -libraries/unix - packages/unix.git git -libraries/Win32 - - git -libraries/xhtml - - git -testsuite testsuite testsuite.git git -nofib nofib nofib.git git -libraries/parallel extra packages/parallel.git git -libraries/stm extra packages/stm.git git -libraries/random dph - git -libraries/primitive dph - git -libraries/vector dph - git -libraries/dph dph packages/dph.git git -. - ghc.git git +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# localpath tag remotepath +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +ghc-tarballs - ghc-tarballs.git +utils/hsc2hs - hsc2hs.git +utils/haddock - haddock.git +libraries/array - packages/array.git +libraries/base - packages/base.git +libraries/binary - - +libraries/bytestring - - +libraries/Cabal - - +libraries/containers - - +libraries/deepseq - packages/deepseq.git +libraries/directory - packages/directory.git +libraries/filepath - packages/filepath.git +libraries/ghc-prim - packages/ghc-prim.git +libraries/haskeline - - +libraries/haskell98 - packages/haskell98.git +libraries/haskell2010 - packages/haskell2010.git +libraries/hoopl - packages/hoopl.git +libraries/hpc - packages/hpc.git +libraries/integer-gmp - packages/integer-gmp.git +libraries/integer-simple - packages/integer-simple.git +libraries/old-locale - packages/old-locale.git +libraries/old-time - packages/old-time.git +libraries/pretty - - +libraries/process - packages/process.git +libraries/template-haskell - packages/template-haskell.git +libraries/terminfo - - +libraries/time - - +libraries/transformers - - +libraries/unix - packages/unix.git +libraries/Win32 - - +libraries/xhtml - - +testsuite testsuite testsuite.git +nofib nofib nofib.git +libraries/parallel extra packages/parallel.git +libraries/stm extra packages/stm.git +libraries/random dph - +libraries/primitive dph - +libraries/vector dph - +libraries/dph dph packages/dph.git +. - ghc.git @@ -105,12 +105,11 @@ sub parsePackages { foreach (@repos) { chomp; $lineNum++; - if (/^([^# ]+) +([^ ]+) +([^ ]+) +([^ ]+)$/) { + if (/^([^# ]+) +([^ ]+) +([^ ]+)$/) { my %line; $line{"localpath"} = $1; $line{"tag"} = $2; $line{"remotepath"} = $3; - $line{"vcs"} = $4; push @packages, \%line; } elsif (! /^(#.*)?$/) { @@ -164,9 +163,8 @@ sub gitNewWorkdir { sub configure_repository { my $localpath = shift; - my $scm = shift; - &scm($localpath, $scm, "config", "--local", "core.ignorecase", "true"); + &git($localpath, "config", "--local", "core.ignorecase", "true"); chdir($localpath); open my $git_autocrlf, '-|', 'git', 'config', '--get', 'core.autocrlf' @@ -177,39 +175,36 @@ sub configure_repository { close($git_autocrlf); chdir($initial_working_directory); if ($autocrlf eq "true") { - &scm($localpath, $scm, - "config", "--local", "core.autocrlf", "false"); - &scm($localpath, $scm, "reset", "--hard"); + &git($localpath, "config", "--local", "core.autocrlf", "false"); + &git($localpath, "reset", "--hard"); } } -sub scm { +sub git { my $dir = shift; - my $scm = shift; if ($dir eq '.') { - message "== running $scm @_"; + message "== running git @_"; } else { - message "== $dir: running $scm @_"; + message "== $dir: running git @_"; chdir($dir); } - system ($scm, @_) == 0 + system ("git", @_) == 0 or $ignore_failure - or die "$scm failed: $?"; + or die "git failed: $?"; if ($dir ne '.') { chdir($initial_working_directory); } } -sub scmall { +sub gitall { my $command = shift; my $localpath; my $tag; my $remotepath; - my $scm; my $line; my $branch_name; my $subcommand; @@ -282,7 +277,6 @@ sub scmall { for $line (@packages) { $tag = $$line{"tag"}; - $scm = $$line{"vcs"}; # Use the "remote" structure for bare git repositories $localpath = ($bare_flag) ? $$line{"remotepath"} : $$line{"localpath"}; @@ -304,9 +298,6 @@ sub scmall { close RESUME; rename "resume.tmp", "resume"; - # Check the SCM is OK as early as possible - die "Unknown SCM: $scm" if ($scm ne "git"); - # We can't create directories on GitHub, so we translate # "packages/foo" into "package-foo". if ($is_github_repo) { @@ -330,7 +321,7 @@ sub scmall { if (-d $localpath) { warning("$localpath already present; omitting") if $localpath ne "."; - &configure_repository($localpath, $scm); + &configure_repository($localpath); next; } @@ -338,29 +329,30 @@ sub scmall { # doesn't exist yet. my @argsWithBare = @args; push @argsWithBare, $bare_flag if $bare_flag; - scm (".", $scm, "clone", $path, $localpath, @argsWithBare); - &configure_repository($localpath, $scm); + &git(".", "clone", $path, $localpath, @argsWithBare); + &configure_repository($localpath); next; } my $git_repo_present = 1 if -e "$localpath/.git" || ($bare_flag && -d "$localpath"); - if ($git_repo_present) { - $scm = "git"; - } elsif ($tag eq "") { - die "Required repo $localpath is missing"; - } else { - message "== $localpath repo not present; skipping"; - next; + if (not $git_repo_present) { + if ($tag eq "") { + die "Required repo $localpath is missing"; + } + else { + message "== $localpath repo not present; skipping"; + next; + } } # Work out the arguments we should give to the SCM if ($command eq "status") { - scm ($localpath, $scm, $command, @args); + &git($localpath, $command, @args); } elsif ($command eq "commit") { # git fails if there is nothing to commit, so ignore failures $ignore_failure = 1; - scm ($localpath, $scm, "commit", @args); + &git($localpath, "commit", @args); } elsif ($command eq "check_submodules") { # If we have a submodule then check whether it is up-to-date @@ -404,7 +396,7 @@ sub scmall { # described on # http://hackage.haskell.org/trac/ghc/wiki/Repositories/Upstream if ($remotepath ne "-") { - scm ($localpath, $scm, "push", @args); + &git($localpath, "push", @args); } } elsif ($command eq "pull") { @@ -421,24 +413,24 @@ sub scmall { $realcmd = "pull"; @realargs = @args; } - scm ($localpath, $scm, $realcmd, @realargs); + &git($localpath, $realcmd, @realargs); } elsif ($command eq "new-workdir") { gitNewWorkdir ($localpath, @args); } elsif ($command eq "send") { $command = "send-email"; - scm ($localpath, $scm, $command, @args); + &git($localpath, $command, @args); } elsif ($command eq "fetch") { - scm ($localpath, $scm, "fetch", @args); + &git($localpath, "fetch", @args); } elsif ($command eq "new") { my @scm_args = ("log", "$branch_name.."); - scm ($localpath, $scm, @scm_args, @args); + &git($localpath, @scm_args, @args); } elsif ($command eq "log") { - scm ($localpath, $scm, "log", @args); + &git($localpath, "log", @args); } elsif ($command eq "remote") { my @scm_args; @@ -458,44 +450,44 @@ sub scmall { } elsif ($subcommand eq 'set-url') { @scm_args = ("remote", "set-url", $branch_name, $rpath); } - scm ($localpath, $scm, @scm_args, @args); + &git($localpath, @scm_args, @args); } elsif ($command eq "checkout") { # Not all repos are necessarily branched, so ignore failure $ignore_failure = 1; - scm ($localpath, $scm, "checkout", @args); + &git($localpath, "checkout", @args); } elsif ($command eq "grep") { # Hack around 'git grep' failing if there are no matches $ignore_failure = 1; - scm ($localpath, $scm, "grep", @args); + &git($localpath, "grep", @args); } elsif ($command eq "diff") { - scm ($localpath, $scm, "diff", @args); + &git($localpath, "diff", @args); } elsif ($command eq "clean") { - scm ($localpath, $scm, "clean", @args); + &git($localpath, "clean", @args); } elsif ($command eq "reset") { - scm ($localpath, $scm, "reset", @args); + &git($localpath, "reset", @args); } elsif ($command eq "branch") { - scm ($localpath, $scm, "branch", @args); + &git($localpath, "branch", @args); } elsif ($command eq "config") { - scm ($localpath, $scm, "config", @args); + &git($localpath, "config", @args); } elsif ($command eq "repack") { - scm ($localpath, $scm, "repack", @args); + &git($localpath, "repack", @args); } elsif ($command eq "format-patch") { - scm ($localpath, $scm, "format-patch", @args); + &git($localpath, "format-patch", @args); } elsif ($command eq "gc") { - scm ($localpath, $scm, "gc", @args); + &git($localpath, "gc", @args); } elsif ($command eq "tag") { - scm ($localpath, $scm, "tag", @args); + &git($localpath, "tag", @args); } else { die "Unknown command: $command"; @@ -793,28 +785,28 @@ sub main { } if ($command eq "push") { - scmall ("check_submodules", @_); + &gitall("check_submodules", @_); } - scmall ($command, @_); + &gitall($command, @_); my @submodule_args = grep(/^-q/,@_); if ($command eq "get") { - &scm(".", "git", "submodule", "init", @submodule_args); + &git(".", "submodule", "init", @submodule_args); } if ($command eq "pull") { my $gitConfig = &tryReadFile(".git/config"); if ($gitConfig !~ /submodule/) { - &scm(".", "git", "submodule", "init", @submodule_args); + &git(".", "submodule", "init", @submodule_args); } } if ($command eq "get" or $command eq "pull") { my $gitConfig = &tryReadFile(".git/config"); if ($gitConfig !~ /submodule/) { - &scm(".", "git", "submodule", "init", @submodule_args); + &git(".", "submodule", "init", @submodule_args); } - &scm(".", "git", "submodule", "update", @submodule_args); + &git(".", "submodule", "update", @submodule_args); } } } |