Updated the build system for better consistency. Also make it easier to do source builds for things like launchpad PPAs.

This commit is contained in:
Adam Sutton 2012-10-02 12:13:36 +01:00
parent 48bc79843a
commit de85fef7c2
14 changed files with 122 additions and 48 deletions

2
.gitignore vendored
View file

@ -1,6 +1,8 @@
build.*
.config.mk
src/version.c
.cproject
.project
.settings

View file

@ -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 <andreas@lonelycoder.com> ${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}
}

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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.

View file

@ -1,4 +0,0 @@
#include "buildversion.h"
#include "config.h"
const char *tvheadend_version = BUILD_VERSION;

25
support/changelog Executable file
View file

@ -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}"

View file

@ -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

46
support/launchpad-ppa Executable file
View file

@ -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 .

View file

@ -1,5 +0,0 @@
#!/bin/bash
sh debian/createcopyright.sh >debian/copyright
dpkg-buildpackage -rfakeroot -b -us -uc
dh_clean

30
support/version Executable file
View file

@ -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

View file

@ -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