From de85fef7c26faed9314aaeda63a86b65bacff78d Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Tue, 2 Oct 2012 12:13:36 +0100 Subject: [PATCH] Updated the build system for better consistency. Also make it easier to do source builds for things like launchpad PPAs. --- .gitignore | 2 ++ Autobuild/debian.sh | 22 ++++++++---------- Autobuild/lucid-amd64.sh | 3 ++- Autobuild/lucid-i386.sh | 3 ++- Autobuild/precise-amd64.sh | 3 ++- Autobuild/precise-i386.sh | 3 ++- Makefile | 5 ++--- src/version.c | 4 ---- support/changelog | 25 +++++++++++++++++++++ support/getver.sh | 8 ------- support/launchpad-ppa | 46 ++++++++++++++++++++++++++++++++++++++ support/mkrelease | 5 ----- support/version | 30 +++++++++++++++++++++++++ support/version.sh | 11 --------- 14 files changed, 122 insertions(+), 48 deletions(-) delete mode 100644 src/version.c create mode 100755 support/changelog delete mode 100755 support/getver.sh create mode 100755 support/launchpad-ppa delete mode 100755 support/mkrelease create mode 100755 support/version delete mode 100755 support/version.sh diff --git a/.gitignore b/.gitignore index 007b2872..cfafd9a2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ build.* .config.mk +src/version.c + .cproject .project .settings diff --git a/Autobuild/debian.sh b/Autobuild/debian.sh index f10c8697..d7a2c2c0 100755 --- a/Autobuild/debian.sh +++ b/Autobuild/debian.sh @@ -1,16 +1,12 @@ BUILD_DEPS=`awk 'BEGIN {cnt = 1;} /^Build-Depends:/ {split($0, line, ":");split(line[2], deps, ",");for (i in deps) {d = deps[i];sub(/^ */, "", d);sub(/ *$/, "", d);split(d, tokens, " ");packages[cnt] = tokens[1];cnt++;}} END {out = ""; for(i = 1; i <= cnt; i++) {out = out packages[i] " ";} print out; }' debian/control` CHANGELOG=debian/changelog NOW=`date -R` -VER=`git describe | sed "s/\([0-9]*\)\.\([0-9]*\)-\([0-9]*\)-.*/\1.\2.\3/"` +VER=`$(dirname $0)/support/version` +[ -z "${DEBDIST:-}" ] && DEBDIST="" build() { - echo >${CHANGELOG} "tvheadend (${VER}) unstable; urgency=low" - echo >>${CHANGELOG} - echo >>${CHANGELOG} " * The full changelog can be found at " - echo >>${CHANGELOG} " http://www.lonelycoder.com/tvheadend/download" - echo >>${CHANGELOG} - echo >>${CHANGELOG} " -- Andreas Öman ${NOW}" + $(dirname $0)/support/changelog "$CHANGELOG" "$DEBDIST" "$VER" export JOBSARGS export JARGS @@ -18,22 +14,22 @@ build() dpkg-buildpackage -b -us -uc for a in ../tvheadend*${VER}*.deb; do - versioned_artifact "$a" deb application/x-deb `basename $a` + versioned_artifact "$a" deb application/x-deb `basename $a` done for a in ../tvheadend*${VER}*.changes; do - versioned_artifact "$a" changes text/plain `basename $a` + versioned_artifact "$a" changes text/plain `basename $a` done } clean() { for a in ../tvheadend*${VER}*.deb; do - rm -f "$a" + rm -f "$a" done for a in ../tvheadend*${VER}*.changes; do - rm -f "$a" + rm -f "$a" done rm -f ${CHANGELOG} @@ -43,8 +39,8 @@ clean() deps() { if [[ $EUID -ne 0 ]]; then - echo "Build dependencies must be installed as root" - exit 1 + echo "Build dependencies must be installed as root" + exit 1 fi apt-get -y install ${BUILD_DEPS} } diff --git a/Autobuild/lucid-amd64.sh b/Autobuild/lucid-amd64.sh index cb5b4964..cd2820fa 100644 --- a/Autobuild/lucid-amd64.sh +++ b/Autobuild/lucid-amd64.sh @@ -1,2 +1,3 @@ -AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-_} --arch=x86_64" +AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-} --arch=x86_64" +DEBDIST=lucid source Autobuild/debian.sh diff --git a/Autobuild/lucid-i386.sh b/Autobuild/lucid-i386.sh index 0de4e380..2e40b376 100644 --- a/Autobuild/lucid-i386.sh +++ b/Autobuild/lucid-i386.sh @@ -1,2 +1,3 @@ -AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-_} --arch=i686" +AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-} --arch=i686" +DEBDIST=lucid source Autobuild/debian.sh diff --git a/Autobuild/precise-amd64.sh b/Autobuild/precise-amd64.sh index cb5b4964..48864d98 100644 --- a/Autobuild/precise-amd64.sh +++ b/Autobuild/precise-amd64.sh @@ -1,2 +1,3 @@ -AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-_} --arch=x86_64" +AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-} --arch=x86_64" +DEBDIST=precise source Autobuild/debian.sh diff --git a/Autobuild/precise-i386.sh b/Autobuild/precise-i386.sh index 0de4e380..bab14930 100644 --- a/Autobuild/precise-i386.sh +++ b/Autobuild/precise-i386.sh @@ -1,2 +1,3 @@ -AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-_} --arch=i686" +AUTOBUILD_CONFIGURE_EXTRA="${AUTOBUILD_CONFIGURE_EXTRA:-} --arch=i686" +DEBDIST=precise source Autobuild/debian.sh diff --git a/Makefile b/Makefile index ae40e5cb..76004c65 100644 --- a/Makefile +++ b/Makefile @@ -232,9 +232,8 @@ distclean: clean rm -f ${CURDIR}/.config.mk # Create buildversion.h -src/version.c: $(BUILDDIR)/buildversion.h -$(BUILDDIR)/buildversion.h: FORCE - @$(CURDIR)/support/version.sh $(CURDIR) $@ +src/version.c: FORCE + @$(CURDIR)/support/version $@ > /dev/null FORCE: # Include dependency files if they exist. diff --git a/src/version.c b/src/version.c deleted file mode 100644 index 9aebe049..00000000 --- a/src/version.c +++ /dev/null @@ -1,4 +0,0 @@ -#include "buildversion.h" -#include "config.h" - -const char *tvheadend_version = BUILD_VERSION; diff --git a/support/changelog b/support/changelog new file mode 100755 index 00000000..dcfc8788 --- /dev/null +++ b/support/changelog @@ -0,0 +1,25 @@ +#!/bin/bash +# +# Create the Tvheadend changelog +# + +# Arguments +CHANGELOG=$1 +DIST=$2 +VER=$3 + +# Defaults +[ -z "$DEBEMAIL" ] && DEBEMAIL="andreas@lonelycoder.com" +[ -z "$DEBFULLNAME" ] && DEBFULLNAME="Andreas Öman" +[ -z "$VER" ] && VER=$($(dirname $0)/version) +[ ! -z "$DIST" ] && VER=${VER}~${DIST} +[ -z "$DIST" ] && DIST=unstable + +# Output +NOW=$(date -R) +echo >${CHANGELOG} "tvheadend (${VER}) ${DIST}; urgency=low" +echo >>${CHANGELOG} +echo >>${CHANGELOG} " * The full changelog can be found at " +echo >>${CHANGELOG} " http://www.lonelycoder.com/tvheadend/download" +echo >>${CHANGELOG} +echo >>${CHANGELOG} " -- ${DEBFULLNAME} <${DEBEMAIL}> ${NOW}" diff --git a/support/getver.sh b/support/getver.sh deleted file mode 100755 index 938b5a5f..00000000 --- a/support/getver.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -revision=`cd "$1" && git describe --dirty --abbrev=5 2>/dev/null | sed -e 's/-/./g'` - -if ! test $revision; then - test $revision || revision=`cd "$1" && git describe --abbrev=5 2>/dev/null | sed -e 's/-/./g'` -fi - -echo $revision diff --git a/support/launchpad-ppa b/support/launchpad-ppa new file mode 100755 index 00000000..fa4cd352 --- /dev/null +++ b/support/launchpad-ppa @@ -0,0 +1,46 @@ +#!/bin/bash +# +# Upload packages to launchpad. Note: you must configure dput for tvh-X +# as target PPA, and you should also define DEBFULLNAME and DEBEMAIL +# environment variables +# + +# Configuration +TVH_ROOT=$(cd $(dirname $0)/..; pwd) +TVH_DIST="lucid natty oneiric precise" +TVH_ARCH="i386 amd64" + +# Options +[ ! -z "$1" ] && REL=$1 || REL=master +[ ! -z "$2" ] && PPA=$2 || PPA=unstable + +# Setup +cd $TVH_ROOT || exit 1 +git checkout $1 && git checkout . || exit 1 +NOW=`date -R` +CHANGELOG=$TVH_ROOT/debian/changelog +VERFILE=$TVH_ROOT/src/version.c + +# Create version file +VER=$($TVH_ROOT/support/version $VERFILE) + +# Fetch scan files +./support/getmuxlist + +# For each distro +for d in $TVH_DIST; do + V=${VER}~${d} + echo $V + + # Create changelog + $TVH_ROOT/support/changelog "$CHANGELOG" "$d" "$VER" + + # Build source package + dpkg-buildpackage -I.git* -S -sgpg -pgpg || exit 1 + + # Upload + dput tvh-$PPA ../tvheadend_${V}_source.changes || exit 1 +done + +# Cleanup +git checkout . diff --git a/support/mkrelease b/support/mkrelease deleted file mode 100755 index df3b2e44..00000000 --- a/support/mkrelease +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -sh debian/createcopyright.sh >debian/copyright -dpkg-buildpackage -rfakeroot -b -us -uc -dh_clean diff --git a/support/version b/support/version new file mode 100755 index 00000000..cfda9430 --- /dev/null +++ b/support/version @@ -0,0 +1,30 @@ +#!/bin/bash +# +# Update Tvheadend version file (if required) +# + +# Path to version file +FILE=$1 + +# Calculate version +VER=$(cd $(dirname $0); git describe --dirty 2> /dev/null | sed "s/-\([0-9]*\)-\(g[0-9a-f]*\)/.\1~\2/") + +# Output +if [ -z "$FILE" ]; then + echo $VER + exit +fi + +# Leave (probably ppa build) +if [ -z "$VER" -a -s "$FILE" ]; then + cat $FILE + exit +fi + +# Update? +NEW_VER="const char *tvheadend_version = \"$VER\";" +OLD_VER=$(cat $FILE 2> /dev/null) +if [ "$NEW_VER" != "$OLD_VER" ]; then + echo $NEW_VER > $FILE +fi +echo $VER diff --git a/support/version.sh b/support/version.sh deleted file mode 100755 index cee64950..00000000 --- a/support/version.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh - -revision=`$1/support/getver.sh` - -NEW_REVISION="#define BUILD_VERSION \"$revision\"" -OLD_REVISION=`cat $2 2> /dev/null` - -# Update version.h only on revision changes to avoid spurious rebuilds -if test "$NEW_REVISION" != "$OLD_REVISION"; then - echo "$NEW_REVISION" > "$2" -fi