#!/bin/sh # these are common variables for the auto-build scripts SYSTEM=$(uname -s | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|') DATE=$(date +%Y-%m-%d) TIME=$(date +%H.%M.%S) HOSTNAME=$(hostname | sed 's|\([a-zA-Z0-9-]\)\..*|\1|' | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|') RSYNC_SERVER=apt@puredata.info # use the hostname from /etc/hostname in case we are a chroot build enviroment if [ -e /etc/hostname ]; then HOSTNAME=`cat /etc/hostname` else HOSTNAME=$(hostname | sed 's|\([a-zA-Z0-9-]\)\..*|\1|' | sed 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|') fi ## the following creates a spam-bot that sends emails to an address that has not asked for it ## because of the spam-problem, i (jmz) have disabled it # recipient of any emails set from the scripts #RECIPIENT=pd-cvs@iem.at ## if you want to send emails about the success of your build, ## please create a file "auto-build-common.local" in this directory ## and set the "RECIPIENT" address to some valid email-address # ## please do NOT check your auto-build-common.local into the CVS # ## another possibility is to set the "RECIPIENT" environmental variable before running ## the autobuilder if [ -e ${HOME}/auto-build-common.local ]; then . ${HOME}/auto-build-common.local running_on_server=yes else running_on_server=no echo "Could not find local configuration in \"${HOME}/auto-build-common.local\"" echo "Skipping... (see ${HOME}/auto-build-common for instructions)" echo fi # cygwin/Mingw don't have 'mail', but do have 'email' which is close enough. # To get around the troubles with mail servers, we'll contact the SMTP server # of the mailing lists directly (mail.iem.at). if [ -x /usr/bin/mail ]; then MAIL_COMMAND=/usr/bin/mail elif [ -x /bin/mail ]; then MAIL_COMMAND=/bin/mail else MAIL_COMMAND="email --smtp-server mail.iem.at" fi #------------------------------------------------------------------------------# # print out ip addresses for debugging print_ip_address() { echo -n "hostname: " hostname echo "---------------------------" if [ -x /sbin/ifconfig ]; then /sbin/ifconfig else ipconfig fi } rsync_file() { file=$1 subdir_file=$2 # if the rsync fails, ignore and carry on (rsync -a --chmod=a+r -e ssh ${file} ${RSYNC_SERVER}:/home/apt/www/auto-build/$subdir_file && \ echo "successfully uploaded: $(basename $file)") || \ true } rsync_distro() { # let rsync handle the cleanup with --delete DISTRO=$(basename $1) echo "rsyncing $DISTRO to ${1}:" rsync -a --delete-before rsync://${RSYNC_SERVER}/distros/${DISTRO}/ ${1}/ } # Mac OS X's included git or svn might be really old, so try Fink first find_git() { if [ -x /sw/bin/git ]; then echo /sw/bin/git elif [ -x /usr/bin/git ]; then echo /usr/bin/git else echo git fi } find_svn() { if [ -x /sw/bin/svn ]; then echo /sw/bin/svn --non-interactive elif [ -x /usr/bin/svn ]; then echo /usr/bin/svn --non-interactive else echo svn --non-interactive fi } remove_dead_svn_externals() { cd "$1" svn=$(find_svn) svn_externals=`$svn propget -R svn:externals . | sed 's|^.* - ||' | awk '{print $1}'` for external in `$svn status --no-ignore . | grep '^[X]' | awk '{print $2}'`; do name=$(basename $external) if [ -z "$(echo $svn_externals | grep $name)" ]; then echo "TODO: remove defunct svn:external '$name' at '$external'" $svn revert -R "$external" $svn update "$external" fi done } clean_and_update_folder() { cd "$1" if [ -d ".git" ]; then git=$(find_git) $git reset --hard $git clean -fdx $git pull elif [ -d ".svn" ]; then svn=$(find_svn) $svn cleanup . $svn revert -R . $svn status --no-ignore | \ grep -v '^X' | \ awk '{print $2}' | \ xargs rm -rf $svn update $svn update -N . else echo "no cleaning or updating done, unknown SCM" fi } get_pd_version() { PD_MAJOR_VERSION=$(grep PD_MAJOR_VERSION $1/pd/src/m_pd.h | \ sed 's|^.define *PD_MAJOR_VERSION *\([0-9]*\).*|\1|' ) PD_MINOR_VERSION=$(grep PD_MINOR_VERSION $1/pd/src/m_pd.h | \ sed 's|^.define *PD_MINOR_VERSION *\([0-9]*\).*|\1|' ) PD_BUGFIX_VERSION=$(grep PD_BUGFIX_VERSION $1/pd/src/m_pd.h | \ sed 's|^.define *PD_BUGFIX_VERSION *\([0-9]*\).*|\1|' ) PD_TEST_VERSION=$(grep PD_TEST_VERSION $1/pd/src/m_pd.h | \ sed 's|^.define *PD_TEST_VERSION *"\(.*\)".*|\1|' | \ sed 's|extended-||') if [ -z $PD_TEST_VERSION ]; then echo $PD_MAJOR_VERSION.$PD_MINOR_VERSION.$PD_BUGFIX_VERSION else echo $PD_MAJOR_VERSION.$PD_MINOR_VERSION.$PD_BUGFIX_VERSION~$PD_TEST_VERSION fi } make_source_tarball() { rootdir=$1 tardir=$(basename $1) tarballname=$2 debian_tarballname=`echo $2 | sed 's|\.tar\.|.debian.tar.|'` # make source tarball without debian/ tar --directory $rootdir/.. \ --exclude-vcs --exclude=$tardir/debian \ -cjpf /tmp/$tarballname $tardir # make separate tarball of debian/ tar --directory $rootdir --exclude-vcs \ -cjpf /tmp/$debian_tarballname debian } set_debian_changelog_version() { version=$1 rootdir=$2 sed -i "s|^pd-extended (.*)|pd-extended ($version-1)|" \ $rootdir/debian/changelog }