#! /bin/sh set -e libraries= # We do the sed in 3 steps, as the -snapshot may or may not be there, # and I can't see a way to optionally match it with POSIX BREs tarred=`ls -1 libraries/tarballs | sed -e 's/\.tar\.gz$//' -e 's/-snapshot$//' -e 's/-[0-9.]*$//'` for p in $tarred do libraries="$libraries libraries/$p" if [ -d "libraries/$p/_darcs" ] then echo Ignoring libraries/$p as it looks like a darcs checkout else tarball=libraries/tarballs/$p-*.tar.gz stamp="libraries/stamp/$p" if [ ! -d "libraries/$p" ] || [ ! -f "$stamp" ] || [ "libraries/stamp/$p" -ot $tarball ] then rm -rf "libraries/$p" mkdir "libraries/$p" ( cd "libraries/$p" cat ../../$tarball | gzip -d | tar xf - mv */* . ) touch "$stamp" fi fi done for f in libraries/*; do pkgs=$f/ghc-packages if test -f $pkgs; then for p in `cat $pkgs`; do libraries="$libraries $f/$p" done else libraries="$libraries $f" fi done for f in $libraries; do dir=`basename $f` cabals=`echo $f/*.cabal` if test -f $cabals; then echo "Creating $f/ghc.mk" rm -f $f/ghc.mk pkg=`echo "$cabals" | sed -e 's#.*/##' -e 's#\.cabal$##'` if test -f $f/ghc-stage; then stage=`cat $f/ghc-stage` else stage=1 fi top=`echo $f | sed 's#[^/][^/]*#..#g'` echo "${f}_PACKAGE = ${pkg}" >> $f/ghc.mk echo "${f}_dist-install_GROUP = libraries" >> $f/ghc.mk echo "\$(eval \$(call build-package,${f},dist-install,${stage}))" >> $f/ghc.mk rm -f $f/GNUmakefile echo "Creating $f/GNUmakefile" echo "dir = ${f}" >> $f/GNUmakefile echo "TOP = ${top}" >> $f/GNUmakefile echo "include \$(TOP)/mk/sub-makefile.mk" >> $f/GNUmakefile fi done