#!/bin/sh set -e top_dirs="nofib testsuite" # 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 message() { if [ "$quiet" = "NO" ]; then echo $* fi } darcsall() { 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 else message "== $dir not present or not a repository; skipping" fi done 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 else echo "warning: $pkg doesn't seem to exist, use 'darcs-all get' to get it" fi done } darcsget() { case $* in *--complete*|*--partial*) additional_flag="" ;; *) echo "warning: adding --partial, to override use --complete" additional_flag="--partial" ;; 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 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=$defaultrepo_lib/$pkg message "== running darcs get $additional_flag $* $repo" darcs get $additional_flag $* $repo fi done } 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 # --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 $*;; # Hack around whatsnew failing if there are no changes w|wh|wha|what|whats|whatsn|whatsne|whatsnew) set +e; darcsall $*;; *) darcsall $*;; esac