#!/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)" -a -z "$(git log master..origin/master)" ] ; then echo 'No source changes => skipping build' return 1 fi git tag -f pre-merge master git merge origin/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 --no-auto-nmu --no-multimaint } version_set() { local upstream_version="$(git tag|grep ^v|tr -d v|sort -t . -n|tail -n 1)" local pkg_name="$(grep ^Source: debian/control.in |head -n 1 |sed -e 's/^Source: *//')" cat - debian/changelog > debian/changelog.tmp << EOT ${pkg_name} (${upstream_version}-git$(date +%Y%m%d)-1) testing; urgency=low * Nightly snapshot package -- maintainer $(date -R) EOT mv debian/changelog.tmp debian/changelog 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)" . "${MYDIR}/packages.conf" for package_info in ${PACKAGES} ; do ( set -e parse_package_info "${package_info}" package_apply "${debian_name}" repo_clean package_apply "${debian_name}" repo_update package_apply "${debian_name}" autoregen package_apply "${debian_name}" version_set package_apply "${debian_name}" build # package_apply "${debian_name}" upload ) done upload_all