diff options
-rwxr-xr-x | Tools/portbuild/scripts/buildscript | 141 |
1 files changed, 110 insertions, 31 deletions
diff --git a/Tools/portbuild/scripts/buildscript b/Tools/portbuild/scripts/buildscript index 9b62d7ddc6df..3d2bc669942c 100755 --- a/Tools/portbuild/scripts/buildscript +++ b/Tools/portbuild/scripts/buildscript @@ -1,43 +1,122 @@ #!/bin/sh -# usage: $0 DIRNAME +# usage: $0 DIRNAME PHASE +# PHASE is 1 (checksum) or 2 (package) dir=$1 +phase=$2 -cd /tmp/depends -if [ "$(echo $(/bin/ls | wc -c))" != 0 ]; then - for i in *.tgz; do - pkg_add -f $i >/dev/null 2>&1 || exit 1 - done -fi +if [ $phase = 1 ]; then -cd $dir || exit 1 -echo "maintained by: $(make maintainer)" -echo "build started at $(date)" -echo "================================================================" - -xvfb=0 -if which -s Xvfb; then - xvfb=1 - pid=$$ - X11BASE=$(which Xvfb | sed -e 's./bin/Xvfb..') - Xvfb :${pid} -fp ${X11BASE}/lib/X11/fonts/misc & - DISPLAY=:${pid} - export DISPLAY -fi + cd $dir || exit 1 + echo "maintained by: $(make maintainer)" + echo "build started at $(date)" + + cd /tmp/depends + if [ "$(echo $(/bin/ls | wc -c))" != 0 ]; then + echo "adding dependencies" + for i in *.tgz; do + echo "pkg_add -f $i" + if ! pkg_add -f $i; then + echo "error in dependency $i, exiting" + echo "1" > /tmp/status + exit 1 + fi + done + fi + + cd $dir || exit 1 + echo "================================================================" + echo "====================<phase 1: make checksum>====================" + + if make checksum; then + echo "0" > /tmp/status + else + echo "1" > /tmp/status + echo "================================================================" + echo -n "build ended at " + date + fi -if make package; then - echo "0" > /tmp/status else - echo "1" > /tmp/status -fi -if [ ${xvfb} = 1 ]; then - kill $(jobid %1) -fi + echo "====================<phase 2: make package>=====================" + xvfb=0 + if which -s Xvfb; then + xvfb=1 + pid=$(echo $$ % 32768 | bc) + X11BASE=$(which Xvfb | sed -e 's./bin/Xvfb..') + Xvfb :${pid} -fp ${X11BASE}/lib/X11/fonts/misc & + DISPLAY=:${pid} + export DISPLAY + fi + + cd $dir || exit 1 + if make package; then + echo "0" > /tmp/status + pkgname=$(make package-name) + prefix=$(make -V PREFIX) + mtreefile=$(make -V MTREE_FILE) + echo "================================================================" + echo "checking installed files" + find ${prefix} -perm -2000 -o -perm -4000 -o -perm -0002 -ls | sort > /tmp/list1 + echo "pkg_delete ${pkgname}" + pkg_delete ${pkgname} + find ${prefix} -perm -2000 -o -perm -4000 -o -perm -0002 -ls | sort > /tmp/list2 + if ! diff -qb /tmp/list1 /tmp/list2 2>/dev/null; then + echo "================================================================" + echo "found set[ug]id or world-writable files and directories" + diff -b /tmp/list2 /tmp/list1 | grep '^>' + fi + cd /var/db/pkg + if [ $(echo $(echo * | wc -c)) != 2 ]; then + echo "================================================================" + echo "deleting dependencies" + prevlist="" + count=1 + while [ $(echo $(echo * | wc -c)) != 2 -a $(echo $(echo * | wc -c)) != $(echo $(echo $prevlist | wc -c)) ]; do + echo "== phase $count ==" + prevlist="$(echo *)" + for i in *; do + echo "pkg_delete $i" + pkg_delete $i + done + count=$(($count + 1)) + done + if [ $(echo $(echo * | wc -c)) != 2 ]; then + echo "leftover packages:" * +# for i in *; do +# echo "pkg_delete -f $i" +# pkg_delete -f $i +# done + fi + fi + cd /var/db/pkg + if [ "x${mtreefile}" != "x" ]; then + mtree -f ${mtreefile} -p ${prefix} > /tmp/list3 + if [ -s /tmp/list3 ]; then + echo "================================================================" + echo "list of extra files and directories in ${prefix}" + cat /tmp/list3 + echo "list of all files and directories in ${prefix}" + cd ${prefix} + find . -exec echo -n 'path: ' \; -exec ls -1d \{} \; | sort + echo "ls -lR ${prefix}" + ls -lR ${prefix} + fi + fi + else + echo "1" > /tmp/status + fi + + if [ ${xvfb} = 1 ]; then + kill $(jobid %1) + fi -echo "================================================================" -echo -n "build ended at " -date + echo "================================================================" + echo -n "build ended at " + date + +fi exit 0 |