#!/bin/bash repo_clean() { git reset --hard git clean -d -f -q -x } repo_update() { git fetch origin git fetch upstream git checkout upstream git merge upstream/master git checkout master if [ -z "$(git log master..upstream)" ] ; then echo 'No source changes => skipping build' return 1 fi git tag -f pre-merge master git merge upstream } append_git_changelog() { local range="${1}" git log --no-merges --pretty=format:'[%h] %s (%an)' "${range}" |xargs -L 1 -d '\n' --no-run-if-empty dch } version_set() { local upstream_version="$(git tag|grep ^v|tr -d v|sort -t . -n|tail -n 1)" dch --newversion "${upstream_version}-git$(date +%Y%m%d)-1" --preserve --distribution testing "Nightly snapshot package" append_git_changelog pre-merge..master git commit -m "Add changelog entry for nightly snapshot build" debian/changelog } gen_and_import_tarball() { local package="${1}" git checkout upstream ./autogen.sh make dist-gzip local version="$(grep '^VERSION = ' Makefile |sed -e 's/^VERSION = //')" mv "${package}-${version}".tar.gz ../tarballs/"${package}-${version}~git$(date +%Y%m%d).tar.gz" repo_clean git-import-orig "${package}-${version}".tar.gz } autoregen() { if [ -x autogen.sh ] ; then ./autogen.sh else grep -q IT_PROG_INTLTOOL configure.ac && intltoolize -c autoreconf -i automake fi if [ -n "$(git status --porcelain --untracked-files=no)" ] ; then git commit -a -m "regenerate autofoo" fi } build() { git-buildpackage --git-builder="pdebuild --configfile ${MYDIR}/pbuilderrc --debbuildopts '-I.git -i\.git'" --git-cleaner="fakeroot debian/rules clean" --git-no-pristine-tar --git-export-dir=../build } upload_all() { "${MYDIR}"/upload-snapshots } package_apply() { local package="${1}" shift ( set -e ; cd "${package}" ; "$@" ) } MYDIR="$(readlink -f "$(dirname "${0}")")" export COWBUILDERBASE="${MYDIR}/cowbuilder" export DISTRIBUTION="$(tr -cd A-Za-z0-9._- < "${MYDIR}"/config.distro)" for package in sugar sugar-artwork sugar-base sugar-datastore sugar-presence-service sugar-toolkit; do #for package in sugar; do ( set -e package_apply "${package}" repo_clean package_apply "${package}" repo_update package_apply "${package}" autoregen package_apply "${package}" version_set package_apply "${package}" build # package_apply "${package}" upload ) done upload_all