Created
August 20, 2015 20:09
-
-
Save andreas-h/1d6a8593faa051ddedfd to your computer and use it in GitHub Desktop.
Script to build Ubuntu packages for Emacs 24.X
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/bin/env bash | |
# Author: Andreas Hilboll | |
# | |
# based on original by Damien Cassou | |
# | |
# This is the script I use to build Emacs packages for Ubuntu. These | |
# packages are based on Debian packages, and uploaded to | |
# https://launchpad.net/~andreas-h/+archive/emacs/. | |
[email protected] | |
GPGKEY=0xA1B1A9A0 | |
set -e | |
MAIN_VERSION=20140101 | |
SUB_VERSION=3 | |
PATCH_FUNCTION=noPatch | |
function noPatch() { | |
echo nothing to do | |
} | |
function patchForOldDistribution() { | |
# Change compression from xz to bzip2 | |
sed --in-place 's/\(dh_builddeb .* \)-Z xz/\1-Z bzip2/' rules | |
# Lower dependency requirements for older ubuntu distributions | |
sed --in-place 's/\(dpkg.* \)(>= 1.15.6)/\1(>= 1.15.5)/' control | |
sed --in-place 's/\(dpkg.* \)(>= 1.15.6)/\1(>= 1.15.5)/' control.in | |
sed --in-place 's/debhelper (>= .*)/debhelper (>= 5.0.0)/' control | |
sed --in-place 's/debhelper (>= .*)/debhelper (>= 5.0.0)/' control.in | |
sed --in-place 's/Standards-Version: .*/Standards-Version: 3.9.1/' control | |
sed --in-place 's/Standards-Version: .*/Standards-Version: 3.9.1/' control.in | |
echo 7 > compat | |
} | |
function patchForEmacsRelease() { | |
# Replace use of backquote '`' by $(shell ...) | |
sed --in-place 's/`\([^`]\+\)`/$(shell \1)/g' rules | |
# - Add missing LDFLAGS=$(LDFLAGS) | |
# - Add the final "cat config.log" so that all log is sent to stdout | |
sed --in-place 'sXCFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" ./configure \(.*\)$XCFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure \1 || cat config.logX' rules | |
# Insert missing override_dh_auto_test (I don't know why tests are not working) | |
sed --in-place 's/^override_dh_auto_configure: debian/override_dh_auto_test:\n\ttrue\n\noverride_dh_auto_configure: debian/' rules | |
# fix wrong path in patch-to-news call, see https://gist.github.com/DamienCassou/2360655#comment-1335973 | |
sed --in-place 's/debian\/patch-to-news "$$p"/debian\/patch-to-news "debian\/patches\/$$p"/' rules | |
# Don't depend on libtiff4-dev explicitly as there is now libtiff5-dev | |
sed --in-place 's/libtiff4-dev | //g' control | |
sed --in-place 's/libtiff4-dev | //g' control.in | |
sed --in-place 's/emacsen-common (>= 2.0.8),/emacsen-common (>= 2.0.8~ubuntu14.04.1~ppa1),/g' control | |
sed --in-place 's/emacsen-common (>= 2.0.8),/emacsen-common (>= 2.0.8~ubuntu14.04.1~ppa1),/g' control.in | |
# Don't give the full path of the icon | |
sed --in-place 'sX^Icon=/usr/share/icons/.*$XIcon=@DEB_FLAVOR@Xg' emacsVER.desktop | |
} | |
function packageForDistribution() { | |
distrib="$1" | |
mkdir build_$distrib | |
cp --link *.tar.gz build_$distrib 2>/dev/null || echo | |
cp --link *.tar.bz2 build_$distrib | |
cp --link *.tar.xz build_$distrib 2>/dev/null || echo | |
cp --link *.dsc build_$distrib | |
cd build_$distrib | |
dpkg-source -x *.dsc | |
cd ${PACKAGE}-${MAIN_VERSION}* | |
cd debian | |
$PATCH_FUNCTION | |
cd .. | |
dch --distribution "$distrib" --local "~ppa$SUB_VERSION~$distrib" "Build for $distrib" | |
debuild -k${GPGKEY} -S -sa --changes-option='-DDistribution='${distrib} | |
cd .. | |
dput ppa:andreas-h/emacs ${PACKAGE}_${MAIN_VERSION}*.changes | |
cd .. | |
} | |
function cleanTempDirectory() { | |
cd ~/tmp && rm -rf emacs && mkdir emacs && cd emacs | |
} | |
function convertFromXz() { | |
# Convert from tar.xz to tar.bz2 to support Ubuntu lucid and its dpkg < 1.15.6 | |
file=${PACKAGE}_${MAIN_VERSION}.orig.tar | |
unxz --stdout $file.xz | bzip2 --compress --stdout > $file.bz2 | |
rm -f $file.xz | |
} | |
function prepareBuildFromNaquadahUnstable() { | |
cleanTempDirectory | |
SERVER=http://emacs.naquadah.org/unstable | |
PKG_VERSION=-1 | |
VERSION=${MAIN_VERSION}${PKG_VERSION} | |
PACKAGE=emacs-snapshot | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.dsc | |
wget --no-clobber ${SERVER}/${PACKAGE}_${MAIN_VERSION}.orig.tar.xz | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.debian.tar.gz | |
} | |
function prepareBuildFromNaquadahStable() { | |
cleanTempDirectory | |
SERVER=http://emacs.naquadah.org/stable | |
PKG_VERSION=-1+squeeze | |
VERSION=${MAIN_VERSION}${PKG_VERSION} | |
PACKAGE=emacs-snapshot | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.dsc | |
wget --no-clobber ${SERVER}/${PACKAGE}_${MAIN_VERSION}.orig.tar.xz | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.debian.tar.gz | |
convertFromXz | |
} | |
function prepareBuildFromUbuntuRelease() { | |
cleanTempDirectory | |
SERVER=http://de.archive.ubuntu.com/ubuntu/pool/main/e/emacs24 | |
MAIN_VERSION=24.4+1 | |
PKG_VERSION=-4ubuntu1 | |
VERSION=${MAIN_VERSION}${PKG_VERSION} | |
PACKAGE=emacs24 | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.dsc | |
wget --no-clobber ${SERVER}/${PACKAGE}_${MAIN_VERSION}.orig.tar.bz2 | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.debian.tar.xz | |
PATCH_FUNCTION=patchForEmacsRelease | |
} | |
function prepareBuildFromDebianRelease() { | |
cleanTempDirectory | |
SERVER=http://ftp.de.debian.org/debian/pool/main/e/emacs24 | |
MAIN_VERSION=24.5+1 | |
PKG_VERSION=-1 | |
VERSION=${MAIN_VERSION}${PKG_VERSION} | |
PACKAGE=emacs24 | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.dsc | |
wget --no-clobber ${SERVER}/${PACKAGE}_${MAIN_VERSION}.orig.tar.bz2 | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.debian.tar.xz | |
PATCH_FUNCTION=patchForEmacsRelease | |
} | |
function prepareBuildFromDebianNondfsgRelease() { | |
cleanTempDirectory | |
SERVER=http://cdn.debian.net/debian/pool/non-free/e/emacs24-non-dfsg/ | |
MAIN_VERSION=24.3+1 | |
PKG_VERSION=-1 | |
VERSION=${MAIN_VERSION}${PKG_VERSION} | |
PACKAGE=emacs24-non-dfsg | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.dsc | |
wget --no-clobber ${SERVER}/${PACKAGE}_${MAIN_VERSION}.orig.tar.bz2 | |
wget --no-clobber ${SERVER}/${PACKAGE}_${VERSION}.debian.tar.gz | |
} | |
function prepareBuildFromOld() { | |
cleanTempDirectory | |
SERVER=https://launchpad.net/~cassou/+archive/emacs/+files | |
PACKAGE=emacs-snapshot | |
MAIN_VERSION=20120823 | |
PKG_VERSION=-1~ppa~oneiric1 | |
VERSION=${MAIN_VERSION}${PKG_VERSION} | |
wget --no-clobber http://emacs.naquadah.org/stable/emacs-snapshot_20120823.orig.tar.xz | |
wget --no-clobber https://launchpad.net/~cassou/+archive/emacs/+files/emacs-snapshot_20120728-fake2-1~ppa~oneiric1.debian.tar.gz | |
convertFromXz | |
} | |
#prepareBuildFromOld | |
prepareBuildFromDebianRelease | |
#prepareBuildFromUbuntuRelease | |
# prepareBuildFromDebianNondfsgRelease | |
# prepareBuildFromNaquadahStable | |
# prepareBuildFromNaquadahUnstable | |
#packageForDistribution precise # 12.04 LTS | |
#packageForDistribution quantal # 12.10 | |
#packageForDistribution saucy # 13.10 | |
packageForDistribution trusty # 14.04 LTS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment