Mercurial > hg > control-images
diff common/bootstrap/build-one-package.sh @ 0:bcd2e358d57f
Start by copying the existing control image building infrastructure from Aboriginal Linux, and shuffling the layout around a bit.
author | Rob Landley <rob@landley.net> |
---|---|
date | Sun, 03 Jul 2011 17:23:26 -0500 |
parents | |
children | a90ac7ed5d64 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common/bootstrap/build-one-package.sh Sun Jul 03 17:23:26 2011 -0500 @@ -0,0 +1,64 @@ +#!/bin/ash + +# Yes, ash. Because neither bash 2 nor hush support -o pipefail + +set -o pipefail + +source /mnt/functions.sh || exit 1 + +# build $1 + +set_titlebar "$1" + +# Three types of /mnt/build scripts: +# +# $1.nosrc - no source code in /mnt/build, perform no setup/cleanup. +# $1.sh - source is symlink tree to "/mnt/build/$1". This is faster and uses +# less disk space but confuses some packages. +# $1.nolink - source is conventional copy of /mnt/build/$1 + +if [ ! -e "/mnt/build/$1.nosrc" ] +then + [ -e "/mnt/build/$1.nolink" ] && LINKTYPE=dp || LINKTYPE=s + + # Snapshot source from /mnt/build/$1 to /home/$1 + + cd /home && + rm -rf "/home/$1" && + cp -${LINKTYPE}fR "/mnt/packages/$1" "$1" && + cd "$1" || exit 1 + + # Lobotomize config.guess so it won't complain about unknown target types. + # 99% of packages do not care, but autoconf throws a temper tantrum if + # the version of autoconf that created this back when the package shipped + # didn't know what a microblaze or hexagon was. Repeat after me: + # "Autoconf is useless" + + for guess in $(find . -name config.guess) + do + rm "$guess" && + echo -e "#!/bin/sh\ngcc -dumpmachine" > "$guess" || exit 1 + done + EXT=sh +else + EXT=nosrc +fi + +# Call package build script + +mkdir -p /home/log +time "/mnt/build/$1".* 2>&1 | tee "/home/log/$1.log" +if [ $? -ne 0 ] +then + echo "$1" died >&2 + exit 1 +fi + +# Delete copy of source if build succeeded + +if [ ! -z "$LINKTYPE" ] +then + cd /home && + rm -rf "$1" && + sync || exit 1 +fi