Skip to content

Instantly share code, notes, and snippets.

@ustbgaofan
Forked from DamienCassou/update-emacs-ppa.sh
Created October 23, 2013 23:46
Show Gist options
  • Save ustbgaofan/7128849 to your computer and use it in GitHub Desktop.
Save ustbgaofan/7128849 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Author: Damien Cassou
#
# This is the script I use to build https://launchpad.net/~cassou/+archive/emacs/
# from http://emacs.naquadah.org/.
MAIN_VERSION=20130527
SUB_VERSION=1
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
# 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
}
function packageForDistribution() {
distrib="$1"
mkdir build_$distrib
cp --link *.tar.gz build_$distrib
cp --link *.tar.bz2 build_$distrib
cd build_$distrib
tar xfz *.tar.gz
tar xfj *.tar.bz2
BUILD_DIR=${PACKAGE}-${MAIN_VERSION}*
mv debian $BUILD_DIR/
cd $BUILD_DIR
cd debian
$PATCH_FUNCTION
cd ..
[email protected] dch --distribution "$distrib" --local "~ppa$SUB_VERSION~$distrib" "Build for $distrib"
# read -p "PAUSED. Press any key"
debuild -S -sa --changes-option='-DDistribution='${distrib}
cd ..
dput ppa:cassou/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 prepareBuildFromDebianUnstable() {
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
convertFromXz
}
function prepareBuildFromDebianStable() {
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 prepareBuildFromDebianRelease() {
cleanTempDirectory
SERVER=http://ftp.fr.debian.org/debian/pool/main/e/emacs24/
MAIN_VERSION=24.3+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.gz
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
#packageForDistribution oneiric
# prepareBuildFromDebianNondfsgRelease
# packageForDistribution precise # 12.04 LTS
# packageForDistribution quantal # 12.10 LTS
# packageForDistribution raring # 13.04 LTS
# prepareBuildFromDebianStable
# packageForDistribution lucid # 10.04 LTS
# packageForDistribution oneiric # 11.10
# packageForDistribution natty # 11.04
# packageForDistribution maverick # 10.10 -- no longer supported
# prepareBuildFromDebianRelease
# packageForDistribution precise # 12.04 LTS
# packageForDistribution quantal # 12.10
# packageForDistribution raring # 13.04
prepareBuildFromDebianUnstable
packageForDistribution precise # 12.04 LTS
packageForDistribution quantal # 12.10
packageForDistribution raring # 13.04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment