diff options
-rwxr-xr-x | scripts/auto-build/pd-double-auto-builder.sh | 98 |
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 |