aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/auto-build/pd-double-auto-builder.sh98
1 files changed, 56 insertions, 42 deletions
diff --git a/scripts/auto-build/pd-double-auto-builder.sh b/scripts/auto-build/pd-double-auto-builder.sh
index 4c8e8801..30db2f33 100755
--- a/scripts/auto-build/pd-double-auto-builder.sh
+++ b/scripts/auto-build/pd-double-auto-builder.sh
@@ -2,10 +2,12 @@
# this script is the first attempt to have an automated updater and builder
# the source dir where this script is
+## this could be done more easily with ${0%/*}
SCRIPT_DIR=$(echo $0 | sed 's|\(.*\)/.*$|\1|')
. $SCRIPT_DIR/auto-build-common
# the name of this script
+## this could be done more easily with ${0##*/}
SCRIPT=$(echo $0| sed 's|.*/\(.*\)|\1|g')
BUILD_DIR=.
@@ -34,74 +36,86 @@ esac
# convert into absolute path
-cd $(echo $0 | sed 's|\(.*\)/.*$|\1|')/../..
-auto_build_root_dir=$(pwd)
-echo "root: $auto_build_root_dir"
+cd "${SCRIPT_DIR}/../.."
+auto_build_root_dir=`pwd`
+echo "build root: $auto_build_root_dir"
-# let rsync handle the cleanup with --delete
-case $SYSTEM in
- mingw*)
- /c/cygwin/bin/sh -c \
- "rsync --archive --no-links --copy-links --delete rsync://${RSYNC_SERVER}/distros/pd-double/ ${auto_build_root_dir}/"
- ;;
- *)
- rsync -a --delete rsync://${RSYNC_SERVER}/distros/pd-double/ ${auto_build_root_dir}/
- ;;
-esac
+# clean up and update
+# run 'make distclean' first so the autotools Makefiles still exist
+echo "--- make distclean -------------------------------------"
+make -C ${auto_build_root_dir}/packages/$BUILD_DIR distclean
+
+echo "--- use SCM to clean and update ------------------------"
+svn=`find_svn`
+# first pass at the root without externals
+$svn up --ignore-externals $auto_build_root_dir
+# then each folder in the root
+for dir in $auto_build_root_dir/*; do
+ clean_and_update_folder $dir
+ remove_dead_svn_externals $dir
+done
+remove_dead_svn_externals $auto_build_root_dir
+
+# kludge to restore folders when they've been converted from svn:externals to
+# directly checked in
+lib_targets=`sed -n 's|^ *LIB_TARGETS +*= *||p' $auto_build_root_dir/externals/Makefile`
+cd $auto_build_root_dir/externals
+$svn update $lib_targets
+echo "--- setting up build -----------------------------------"
cd "${auto_build_root_dir}/packages/$BUILD_DIR"
make -C "${auto_build_root_dir}/packages" set_version PD-EXTENDED_VERSION_PREFIX=double
make test_locations
+echo "--- environment ----------------------------------------"
+set
+echo "--- mounts ----------------------------------------"
mount
-make package_clean
+print_ip_address
+
+echo "--- compiling binary package ---------------------------"
make install PD-EXTENDED_VERSION_PREFIX=double
make package PD-EXTENDED_VERSION_PREFIX=double
+echo "--- uploading build results ----------------------------"
upload_build ()
{
platform_folder=$1
build_folder=$2
archive_format=$3
-
- archive="${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format}"
+
+ archive=$(ls -1 ${auto_build_root_dir}/packages/${platform_folder}/${build_folder}/Pd*.${archive_format} | tail -1)
echo "upload specs $1 $2 $3"
echo "Uploading $archive"
upload_filename=$(ls -1 ${archive} | sed "s|.*/\(.*\)\.${archive_format}|\1-${HOSTNAME}.${archive_format}|")
- case $SYSTEM in
- mingw*)
- test -e ${archive} && /c/cygwin/bin/sh -c \
- "rsync --archive --no-links --copy-links ${archive} rsync://${RSYNC_SERVER}/upload/${DATE}/${upload_filename}" && \
- echo "successfully uploaded: ${upload_filename}" && \
- echo SUCCESS
- ;;
- *)
- test -e ${archive} && rsync -a ${archive} \
- rsync://${RSYNC_SERVER}/upload/${DATE}/${upload_filename} && \
- echo "successfully uploaded: ${upload_filename}" && \
- echo SUCCESS
- ;;
- esac
+ if [ -e ${archive} ]; then
+ rsync -a --chmod=a+r ${archive} -e ssh ${RSYNC_SERVER}:/home/apt/www/auto-build/${DATE}/${upload_filename} && \
+ md5sum ${archive} | sed "s|^\([0-9a-f][0-9a-f]* \).*|\1${archive}|" > ${archive}.md5 && \
+ rsync -a --chmod=a+r ${archive}.md5 -e ssh ${RSYNC_SERVER}:/home/apt/www/auto-build/${DATE}/${upload_filename}.md5 && \
+ echo "successfully uploaded: ${upload_filename}" && \
+ echo SUCCESS
+ fi
}
case $SYSTEM in
linux)
- if [ -x /usr/bin/dpkg-deb ]; then
- upload_build linux_make . deb
- else
- upload_build linux_make build tar.bz2
- fi
- ;;
+ if [ -x /usr/bin/dpkg-deb ]; then
+ upload_build linux_make . deb
+ else
+ upload_build linux_make build tar.bz2
+ fi
+ ;;
darwin)
- upload_build darwin_app . dmg
- ;;
+ upload_build darwin_app . dmg
+ ;;
mingw*)
- upload_build win32_inno Output exe
- ;;
+ upload_build win32_inno Output exe
+ upload_build win32_inno zip zip
+ ;;
cygwin*)
- upload_build win32_inno Output exe
- ;;
+ upload_build win32_inno Output exe
+ ;;
esac