X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=darcs-all;h=69e0ff9406be1f4f6d1ab5d6f37c294aa41f7744;hp=544d9cc91cd195793cfda78a2fdd85e44f8ba8c8;hb=b88025eabcd83f65d1d81f09272f5172f06a60e7;hpb=6b16111d35e8e4c2a32cf9a3c7c855efb32d5b1b diff --git a/darcs-all b/darcs-all index 544d9cc..69e0ff9 100644 --- a/darcs-all +++ b/darcs-all @@ -1,64 +1,98 @@ #!/bin/sh +set -e + top_dirs="nofib testsuite" -default_repo_root="http://darcs.haskell.org/" -default_lib_repo_root=$default_repo_root/packages +# Figure out where to get the other repositories from, +# based on where this GHC repo came from. +defaultrepo=`cat _darcs/prefs/defaultrepo` +case $defaultrepo in + http://* | *@*:*) + defaultrepo_lib=`echo $defaultrepo | sed 's!/ghc$!!'`/packages;; + /*) + defaultrepo_lib=$defaultrepo/libraries;; +esac + +quiet=NO + +message() +{ + if [ "$quiet" = "NO" ]; then + echo $* + fi +} -function darcsall() +darcsall() { - echo == running darcs $* at the top level + message "== running darcs $* at the top level" darcs $* for dir in $top_dirs; do if test -d $dir -a -d $dir/_darcs; then - echo "== running darcs $* in $dir" + message "== running darcs $* in $dir" darcs $* --repodir $dir else - echo "== $dir not present or not a repository; skipping" + message "== $dir not present or not a repository; skipping" fi done - for pkg in `cat libraries/default-packages`; do + for pkg in `cat libraries/core-packages libraries/extra-packages`; do if test -d libraries/$pkg; then - echo "== running darcs $* in libraries/$pkg" + message "== running darcs $* in libraries/$pkg" darcs $* --repodir libraries/$pkg else - echo "warning: $dir doesn't seem to exist, use 'darcs-all get' to get it" + echo "warning: $pkg doesn't seem to exist, use 'darcs-all get' to get it" fi done } -function darcsget() +darcsget() { case $* in - *--partial*) ;; - *) echo "warning: adding --partial, to override use --complete" - esac - - repo_root=`cat _darcs/prefs/defaultrepo` - case $repo_root in - /*) lib_repos=$repo_root/libraries;; - *) lib_repos=$default_lib_repo_root;; + *--complete*|*--partial*) + additional_flag="" ;; + *) + echo "warning: adding --partial, to override use --complete" + additional_flag="--partial" ;; esac cd libraries - for pkg in `cat default-packages`; do + + if test "$extra" = "YES"; then + packages=`cat core-packages extra-packages` + else + packages=`cat core-packages` + fi + + for pkg in $packages; do if test -d $pkg; then echo "warning: $pkg already present; omitting" else - repo=$lib_repos/$pkg - echo "== running darcs get --partial $* $repo" - darcs get --partial $* $repo + repo=$defaultrepo_lib/$pkg + message "== running darcs get $additional_flag $* $repo" + darcs get $additional_flag $* $repo fi done } -if test ! -d _darcs -o ! -d ghc; then +if test ! -d _darcs -o ! -d compiler; then echo "error: darcs-all must be run from the top level of the ghc tree." exit 1; fi +case $* in + *-q*) quiet=YES;; +esac + +# --extra says we grab the extra libs with 'get'. It has no effect on +# the other commands. +extra=NO; +case $1 in + --extra) shift; extra=YES; +esac + case $1 in - push|pull|wh*) darcsall $*;; get) shift; darcsget $*;; - *) echo "syntax: ./darcs-all push|pull|whatsnew|get"; exit 1;; + # Hack around whatsnew failing if there are no changes + w|wh|wha|what|whats|whatsn|whatsne|whatsnew) set +e; darcsall $*;; + *) darcsall $*;; esac