[arch-haskell] ghc-7.0.3 & haskell-platform
Magnus Therning
magnus at therning.org
Fri Jun 24 14:03:11 CEST 2011
On Thu, Jun 23, 2011 at 07:36:39PM +0200, Rémy Oudompheng wrote:
> On 2011/6/23 Vesa Kaihlavirta <vpkaihla at gmail.com> wrote:
> > Rémy was doing some work on automating the whole rebuild process
> > (which is currently about 20-30 separate build & install steps when
> > doing manually), but I don't know how that went.
>
> Actually I did not find the time to do that. I was planning to use a
> simplified version of the arch-haskell scripts. I can really do the
> rebuilds by hand in the meanwhile, there are not so many GHC releases
> and I have enough patience to help.
I've attached a script I use for [h4a]. Maybe you'll find it useful.
It doesn't try to work out dependencies, but instead you need to
provide a good build order. It sounds like that shouldn't be too much
of a problem for a rather static set of 20 or so packages though.
/M
--
Magnus Therning OpenPGP: 0xAB4DFBA4
email: magnus at therning.org jabber: magnus at therning.org
twitter: magthe http://therning.org/magnus
I invented the term Object-Oriented, and I can tell you I did not have
C++ in mind.
-- Alan Kay
-------------- next part --------------
#! /bin/zsh
source $(dirname $0)/funcs
set -eu
# default values
arch=$(uname -m)
chrootdir=.
pristine_chrootdir=root
build_chrootdir=build
habs_dir=.
clean_build_first=0
update_pristine_first=0
usage() {
cat << EOF
Usage $0 [options] -- [packages]
Run this script in your HABS dir to build the named packages inside a
chroot.
The chroot dir consists of two dirs, a pristine chroot (root), and a build
chroot (build). This script handles both of them.
Options:
-h This help
-c Clean the build chroot before building
-x Update the pristine chroot first (implies -c)
-l <dir> Location of chroot (default .)
-a <arch> Architecture to build for i686 or x86_64 (default is local arch)
-b <dir> Location of your HABS dir (default .)
EOF
}
buildpkg() {
if [[ -z "$(ls|grep .pkg.tar.xz)" ]]; then
msg "Building in $PWD"
sudo setarch ${arch} makechrootpkg -u -d -l ${build_chrootdir} -r ${CHROOT_DIR} -- -i
else
msg "Skipping build in $PWD"
fi
}
while getopts hcxa:l:b: opt; do
case "${opt}" in
h) usage; exit 0;;
c) clean_build_first=1;;
x) update_pristine_first=1;;
a) arch=${OPTARG};;
l) chrootdir="${OPTARG}";;
b) habs_dir="${OPTARG}";;
esac
done
shift $((OPTIND - 1))
CHROOT_DIR=$(readlink -f ${chrootdir}/${arch}-chroot)
CHROOT_ROOTDIR=${CHROOT_DIR}/${pristine_chrootdir}
CHROOT_BUILDDIR=${CHROOT_DIR}/${build_chrootdir}
if [ ! -d ${CHROOT_ROOTDIR} ]; then
msg "Creating the pristine chroot ${CHROOT_DIR} ..."
mkdir -p "${CHROOT_DIR}" || die "Couldn't create ${CHROOT_DIR}"
pacman_conf=$(mktemp "/tmp/pacman-habs.XXXXXXXX.conf")
trap 'rm -f "${pacman_conf}"' 0
cat > "${pacman_conf}" << EOF
[options]
HoldPkg = pacman libc
SyncFirst = pacman
Architecture = auto
[repo]
Server = file:///repo
[h4a]
Server = http://www.kiwilight.com/~magnus/\$repo
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
[community]
Include = /etc/pacman.d/mirrorlist
EOF
sudo setarch ${arch} mkarchroot -f -C ${pacman_conf} \
-M /usr/share/devtools/makepkg-${arch}.conf ${CHROOT_ROOTDIR} \
util-linux-ng pacman sudo wget file grep base-devel ghc
# are there more packages that should be installed in the pristine?
# no point in updating the newly built pristine
update_pristine_first=0
msg "Done"
fi
if [[ "${update_pristine_first}" == "1" ]]; then
msg "Updating the the pristine chroot..."
sudo setarch ${arch} mkarchroot -u ${CHROOT_ROOTDIR}
clean_build_first=1
msg " Done"
fi
if [[ "${clean_build_first}" == "1" ]]; ;then
msg "Cleaning up the build chroot..."
sudo rsync -a --delete -q -W -x "${CHROOT_ROOTDIR}/" "${CHROOT_BUILDDIR}"
msg " Done"
fi
for pkg0 in $@; do
#pkg1=$(print $pkg0 | tr 'A-Z' 'a-z')
pkg1=${(L)pkg0}
[ -d ${habs_dir}/${pkg1} ] && pkg=${pkg1}
[ -d ${habs_dir}/haskell-${pkg1} ] && pkg=haskell-${pkg1}
if [[ "x${pkg}" != "x" ]]; then
(cd ${habs_dir}/$pkg; buildpkg )
else
die "No such package: $pkg0"
fi
pkg=
done
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://www.haskell.org/pipermail/arch-haskell/attachments/20110624/0b2862c1/attachment.pgp>
More information about the arch-haskell
mailing list