blob: 2eb6b0562eaffb8aa328a89b86b87f389394dacf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/bash
# Script to automate backporting for CRAN
# Creates a source package and binary packages for the following architecture
ARCH=i386
export ARCH
# R version against which the software is compiled
Rversion=3.2.3
reposversion="cran3"
# Where the buildresults should be stored
rcrandir=/home/jranke/svn/website/www/ranke/r-cran
# Author: Johannes Ranke <jranke@uni-bremen.de>
# Preconditions:
# - up to date R version specified above, for packages depending on R
# - sudo and pbuilder configuration (see README)
# - sid sources in /etc/apt/sources/list
# - cdbs installed (and maybe more)
# - shell variables DEBEMAIL and DEBFULLNAME
usage()
{
echo "Usage: ./backport [options] sourcepackage squeeze|wheezy|jessie"
echo "Options:"
echo " -k, --keep Keep copied source package and directory used for package building"
echo " -s, --skip Skip apt-get update/upgrade and pbuilder update"
}
# Loop over options
skip=false
keep=false
while test -n "${1}"; do
case "$1" in
-k | --keep)
keep=true
shift
;;
-s | --skip)
skip=true
shift
;;
-*)
echo "Error: Unknown option: $1" >&2
exit 1
;;
*) # No more options
break
;;
esac
done
# Positional arguments
if [ $# -lt 2 ]; then usage; exit 1; fi
pkg=$1
DIST=$2
# Validate distribution argument
if [ $DIST != "squeeze" ] && [ $DIST != "wheezy" ] && [ $DIST != "jessie" ]; then usage; exit 1; fi
export DIST
# Set required r-base-dev version for packages build-depending on R
rbasedev="r-base-dev (>= $Rversion)"
# Remove previously extracted sources
if [ -d $pkg-* ]
then
sudo rm -rf `ls -d $pkg-*`
fi
# Get current source from unstable
if [ "$skip" = false ]
then
sudo apt-get update
sudo apt-get upgrade
fi
sudo apt-get source $pkg
# Copy sources to $DIST directory to enable parallel builds
mkdir -p $DIST
cp -r $pkg\_* $DIST
cp -r $pkg-* $DIST
# Go to package building directory
cd $DIST/$pkg-*
# Determine the version of the Debian package
oldversion=`dpkg-parsechangelog | grep ^Version | cut -f2 -d " "`
cranversion=$oldversion"~"$DIST"cran.0"
echo Old version is $oldversion
echo CRAN version is $cranversion
# Add new version to changelog
dch -v "${cranversion}" --force-distribution -D $DIST-cran -b "Backport from Debian unstable to Debian $DIST"
# Adapt build dependency on r-base-dev if present
if grep -q "^Build-Depends.*r-base-dev" debian/control
then
echo "Lowering Build-Depends to $rbasedev"
ssed -i -R "/^Build-Depends/s/r-base-dev \(>= .*?\)/$rbasedev/" debian/control
ssed -i -R "/^Build-Depends-Indep/s/r-base-dev \(>= .*?\)/$rbasedev/" debian/control
dch -a "debian/control: adapt build dependencies on r-base-dev to current backport"
fi
# Check for a script doing modifications required for backporting
script=../$pkg-reverts.sh
if [ -f $script ]; then source $script; fi
if [ "$skip" = false ]
then
sudo -E pbuilder update
fi
sudo -E pdebuild --debbuildopts '-sa' \
--buildresult $rcrandir/$DIST-cran3/ \
-- --distribution $DIST --basetgz /var/cache/pbuilder/$DIST-$ARCH-base.tgz \
--aptcache /var/cache/pbuilder/$DIST-$ARCH/aptcache \
--buildplace /var/cache/pbuilder/$DIST-$ARCH/build
if [ $? -ne 0 ]; then
exit
fi
cd ../..
# Clean sources from $DIST directory
if [ "$keep" = false ]
then
rm -f $DIST/$pkg\_*
rm -rf $DIST/$pkg-*
fi
|