X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=darcs-all;h=f4642c0ece05033f542879f05598a694fff7ec7f;hb=36f77deda25312534200f10ccdb18528b6ee6e27;hp=40460c06102b2959deefbcc8f689f69650d6120c;hpb=1d13ee6dea8009d989af3b32272a6e432f5858b5;p=ghc-hetmet.git diff --git a/darcs-all b/darcs-all index 40460c0..f4642c0 100644 --- a/darcs-all +++ b/darcs-all @@ -4,66 +4,99 @@ 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_base="`echo $defaultrepo | sed 's!/ghc$!!'`" + defaultrepo_lib="$defaultrepo_base"/packages;; + /*) + defaultrepo_base="$defaultrepo" + defaultrepo_lib="$defaultrepo"/libraries;; +esac quiet=NO -function message() +message() { if [ "$quiet" = "NO" ]; then - echo $* + echo "$@" fi } -function darcsall() +darcsall() { - message "== running darcs $* at the top level" - darcs $* + message "== running darcs $@ at the top level" + darcs "$@" for dir in $top_dirs; do if test -d $dir -a -d $dir/_darcs; then - message "== running darcs $* in $dir" - darcs $* --repodir $dir + message "== running darcs $@ in $dir" + darcs "$@" --repodir $dir else 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 - message "== running darcs $* in libraries/$pkg" - darcs $* --repodir libraries/$pkg + message "== running darcs $@ in libraries/$pkg" + darcs "$@" --repodir libraries/$pkg else 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" + *--complete*|*--partial*) + additional_flag="" ;; + *) + echo "warning: adding --partial, to override use --complete" + additional_flag="--partial" ;; esac - repo_root=`cat _darcs/prefs/defaultrepo` - case $repo_root in - /*) lib_repos=$repo_root/libraries;; - *) lib_repos=$default_lib_repo_root;; - esac + if test "$nofib" = "YES"; then + if test -d nofib; then + echo "warning: nofib already present; omitting" + else + repo="$defaultrepo_base"/nofib + message "== running darcs get $additional_flag $@ $repo" + darcs get $additional_flag "$@" $repo + fi + fi + + if test "$testsuite" = "YES"; then + if test -d testsuite; then + echo "warning: testsuite already present; omitting" + else + repo="$defaultrepo_base"/testsuite + message "== running darcs get $additional_flag $@ $repo" + darcs get $additional_flag "$@" $repo + fi + fi 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 - message "== 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 @@ -72,9 +105,29 @@ 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 +# --nofib/--testsuite tell get to also grab the respective repos. +# They have no effect on the other commands. +nofib=NO +testsuite=NO + +args_done=NO + +while [ "$args_done" = NO ] +do + case $1 in + --extra) shift; extra=YES;; + --nofib) shift; nofib=YES;; + --testsuite) shift; testsuite=YES;; + *) args_done=YES;; + esac +done + case $1 in - get) shift; darcsget $*;; + get) shift; darcsget "$@";; # Hack around whatsnew failing if there are no changes - w|wh|wha|what|whats|whatsn|whatsne|whatsnew) set +e; darcsall $*;; - *) darcsall $*;; + w|wh|wha|what|whats|whatsn|whatsne|whatsnew) set +e; darcsall "$@";; + *) darcsall "$@";; esac