annotate contrib/packaging/builddeb @ 40105:d3780c8f3180

packaging: builddeb's cleanup needs to expand PWD, safely Single quotes would not expand the variable.
author muxator <a.mux@inwind.it>
date Tue, 09 Oct 2018 22:18:35 +0200
parents 338230555429
children 930bce0741de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
1 #!/bin/sh -e
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
2 #
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
3 # Build a Mercurial debian package from the current repo
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
4 #
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
5 # Tested on Jessie (stable as of original script authoring.)
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
6
38006
64b086f0ebb5 packaging: move builddeb into contrib/packaging/
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38005
diff changeset
7 . $(dirname $0)/packagelib.sh
24972
56c64c91b429 packaging: extract packagelib for common code from builddeb and buildrpm
Augie Fackler <augie@google.com>
parents: 24971
diff changeset
8
38013
917f635b5c6a packaging: make packaging scripts less reliant on pwd
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38009
diff changeset
9 ROOTDIR=$(cd $(dirname $0)/../.. > /dev/null; pwd)
917f635b5c6a packaging: make packaging scripts less reliant on pwd
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38009
diff changeset
10
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
11 BUILD=1
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
12 CLEANUP=1
27212
ef9301ce6046 builddeb: read default distribution and codename from lsb_release
Anton Shestakov <av6@dwimlabs.net>
parents: 27211
diff changeset
13 DISTID=`(lsb_release -is 2> /dev/null | tr '[:upper:]' '[:lower:]') || echo debian`
ef9301ce6046 builddeb: read default distribution and codename from lsb_release
Anton Shestakov <av6@dwimlabs.net>
parents: 27211
diff changeset
14 CODENAME=`lsb_release -cs 2> /dev/null || echo unknown`
28994
8797f03db5b6 builddeb: add flag for a source-only deb
Sean Farley <sean@farley.io>
parents: 28993
diff changeset
15 DEBFLAGS=-b
40104
338230555429 packaging: blindly factor out trap's cleanup function in builddeb
muxator <a.mux@inwind.it>
parents: 40103
diff changeset
16
338230555429 packaging: blindly factor out trap's cleanup function in builddeb
muxator <a.mux@inwind.it>
parents: 40103
diff changeset
17 cleanup() {
338230555429 packaging: blindly factor out trap's cleanup function in builddeb
muxator <a.mux@inwind.it>
parents: 40103
diff changeset
18 if [ '$CLEANUP' ]; then
40105
d3780c8f3180 packaging: builddeb's cleanup needs to expand PWD, safely
muxator <a.mux@inwind.it>
parents: 40104
diff changeset
19 rm -r "$PWD/debian";
40104
338230555429 packaging: blindly factor out trap's cleanup function in builddeb
muxator <a.mux@inwind.it>
parents: 40103
diff changeset
20 fi
338230555429 packaging: blindly factor out trap's cleanup function in builddeb
muxator <a.mux@inwind.it>
parents: 40103
diff changeset
21 }
338230555429 packaging: blindly factor out trap's cleanup function in builddeb
muxator <a.mux@inwind.it>
parents: 40103
diff changeset
22
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
23 while [ "$1" ]; do
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
24 case "$1" in
27210
9b86d29867a5 builddeb: add --distid option to specify Distributor ID
Anton Shestakov <av6@dwimlabs.net>
parents: 27209
diff changeset
25 --distid )
9b86d29867a5 builddeb: add --distid option to specify Distributor ID
Anton Shestakov <av6@dwimlabs.net>
parents: 27209
diff changeset
26 shift
9b86d29867a5 builddeb: add --distid option to specify Distributor ID
Anton Shestakov <av6@dwimlabs.net>
parents: 27209
diff changeset
27 DISTID="$1"
9b86d29867a5 builddeb: add --distid option to specify Distributor ID
Anton Shestakov <av6@dwimlabs.net>
parents: 27209
diff changeset
28 shift
9b86d29867a5 builddeb: add --distid option to specify Distributor ID
Anton Shestakov <av6@dwimlabs.net>
parents: 27209
diff changeset
29 ;;
27209
7fbab10f812f builddeb: rename --release option to --codename
Anton Shestakov <av6@dwimlabs.net>
parents: 26833
diff changeset
30 --codename )
26108
05306b9359d3 builddeb: rework how output dir and platform are specified
Augie Fackler <augie@google.com>
parents: 26090
diff changeset
31 shift
27209
7fbab10f812f builddeb: rename --release option to --codename
Anton Shestakov <av6@dwimlabs.net>
parents: 26833
diff changeset
32 CODENAME="$1"
26108
05306b9359d3 builddeb: rework how output dir and platform are specified
Augie Fackler <augie@google.com>
parents: 26090
diff changeset
33 shift
05306b9359d3 builddeb: rework how output dir and platform are specified
Augie Fackler <augie@google.com>
parents: 26090
diff changeset
34 ;;
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
35 --cleanup )
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
36 shift
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
37 BUILD=
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
38 ;;
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
39 --build )
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
40 shift
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
41 CLEANUP=
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
42 ;;
28994
8797f03db5b6 builddeb: add flag for a source-only deb
Sean Farley <sean@farley.io>
parents: 28993
diff changeset
43 --source-only )
8797f03db5b6 builddeb: add flag for a source-only deb
Sean Farley <sean@farley.io>
parents: 28993
diff changeset
44 shift
8797f03db5b6 builddeb: add flag for a source-only deb
Sean Farley <sean@farley.io>
parents: 28993
diff changeset
45 DEBFLAGS=-S
8797f03db5b6 builddeb: add flag for a source-only deb
Sean Farley <sean@farley.io>
parents: 28993
diff changeset
46 ;;
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
47 * )
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
48 echo "Invalid parameter $1!" 1>&2
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
49 exit 1
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
50 ;;
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
51 esac
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
52 done
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
53
40104
338230555429 packaging: blindly factor out trap's cleanup function in builddeb
muxator <a.mux@inwind.it>
parents: 40103
diff changeset
54 trap 'cleanup' EXIT
26108
05306b9359d3 builddeb: rework how output dir and platform are specified
Augie Fackler <augie@google.com>
parents: 26090
diff changeset
55
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
56 set -u
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
57
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
58 if [ ! -d .hg ]; then
40102
f9c5f7b048b0 packaging: print more specific error messages when builddeb fails
muxator <a.mux@inwind.it>
parents: 38013
diff changeset
59 printf "You are inside %s, which is not the root of a Mercurial repository\n" $(pwd) 1>&2
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
60 exit 1
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
61 fi
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
62
24972
56c64c91b429 packaging: extract packagelib for common code from builddeb and buildrpm
Augie Fackler <augie@google.com>
parents: 24971
diff changeset
63 gethgversion
26833
6474b64045fb packaging: rework version detection and declaration (issue4912)
Augie Fackler <augie@google.com>
parents: 26148
diff changeset
64 debver="$version"
6474b64045fb packaging: rework version detection and declaration (issue4912)
Augie Fackler <augie@google.com>
parents: 26148
diff changeset
65 if [ -n "$type" ] ; then
6474b64045fb packaging: rework version detection and declaration (issue4912)
Augie Fackler <augie@google.com>
parents: 26148
diff changeset
66 debver="$debver~$type"
6474b64045fb packaging: rework version detection and declaration (issue4912)
Augie Fackler <augie@google.com>
parents: 26148
diff changeset
67 fi
6474b64045fb packaging: rework version detection and declaration (issue4912)
Augie Fackler <augie@google.com>
parents: 26148
diff changeset
68 if [ -n "$distance" ] ; then
29045
52f71214efce builddeb: use codename in version
Sean Farley <sean@farley.io>
parents: 28994
diff changeset
69 debver="$debver+$distance-$CODENAME-$node"
29093
c4f0e764b231 builddeb: add distroseries to tagged versions
Sean Farley <sean@farley.io>
parents: 29046
diff changeset
70 elif [ "$DEBFLAGS" = "-S" ] ; then
c4f0e764b231 builddeb: add distroseries to tagged versions
Sean Farley <sean@farley.io>
parents: 29046
diff changeset
71 # for building a ppa (--source-only) for a release (distance == 0), we need
c4f0e764b231 builddeb: add distroseries to tagged versions
Sean Farley <sean@farley.io>
parents: 29046
diff changeset
72 # to version the distroseries so that we can upload to launchpad
c4f0e764b231 builddeb: add distroseries to tagged versions
Sean Farley <sean@farley.io>
parents: 29046
diff changeset
73 debver="$debver~${CODENAME}1"
26833
6474b64045fb packaging: rework version detection and declaration (issue4912)
Augie Fackler <augie@google.com>
parents: 26148
diff changeset
74 fi
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
75
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
76 control=debian/control
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
77 changelog=debian/changelog
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
78
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
79 if [ "$BUILD" ]; then
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
80 if [ -d debian ] ; then
40102
f9c5f7b048b0 packaging: print more specific error messages when builddeb fails
muxator <a.mux@inwind.it>
parents: 38013
diff changeset
81 printf "Error! debian control directory already exists at %s/debian\n" $(pwd)
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
82 exit 1
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
83 fi
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
84
38013
917f635b5c6a packaging: make packaging scripts less reliant on pwd
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38009
diff changeset
85 cp -r "$ROOTDIR"/contrib/packaging/debian debian
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
86
28988
4f1dac94b53f builddeb: use sed -i
Sean Farley <sean@farley.io>
parents: 27212
diff changeset
87 sed -i.tmp "s/__VERSION__/$debver/" $changelog
4f1dac94b53f builddeb: use sed -i
Sean Farley <sean@farley.io>
parents: 27212
diff changeset
88 sed -i.tmp "s/__DATE__/$(date --rfc-2822)/" $changelog
28989
a8256e3701be builddeb: use the os codename instead of 'unstable'
Sean Farley <sean@farley.io>
parents: 28988
diff changeset
89 sed -i.tmp "s/__CODENAME__/$CODENAME/" $changelog
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
90 rm $changelog.tmp
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
91
28993
837119bf7f01 builddeb: create source archive for ubuntu
Sean Farley <sean@farley.io>
parents: 28992
diff changeset
92 # remove the node from the version string
837119bf7f01 builddeb: create source archive for ubuntu
Sean Farley <sean@farley.io>
parents: 28992
diff changeset
93 SRCFILE="mercurial_$(echo $debver | sed "s,-$node,,").orig.tar.gz"
38013
917f635b5c6a packaging: make packaging scripts less reliant on pwd
Gregory Szorc <gregory.szorc@gmail.com>
parents: 38009
diff changeset
94 "$ROOTDIR/hg" archive $SRCFILE
28993
837119bf7f01 builddeb: create source archive for ubuntu
Sean Farley <sean@farley.io>
parents: 28992
diff changeset
95 mv $SRCFILE ..
28994
8797f03db5b6 builddeb: add flag for a source-only deb
Sean Farley <sean@farley.io>
parents: 28993
diff changeset
96 debuild -us -uc -i -I $DEBFLAGS
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
97 if [ $? != 0 ]; then
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
98 echo 'debuild failed!'
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
99 exit 1
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
100 fi
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
101
24971
ab75baaf81d5 builddeb: new script for building a deb package
Augie Fackler <augie@google.com>
parents:
diff changeset
102 fi
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
103 if [ "$CLEANUP" ] ; then
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
104 echo
27210
9b86d29867a5 builddeb: add --distid option to specify Distributor ID
Anton Shestakov <av6@dwimlabs.net>
parents: 27209
diff changeset
105 OUTPUTDIR=${OUTPUTDIR:=packages/$DISTID-$CODENAME}
27212
ef9301ce6046 builddeb: read default distribution and codename from lsb_release
Anton Shestakov <av6@dwimlabs.net>
parents: 27211
diff changeset
106 mkdir -p "$OUTPUTDIR"
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
107 find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \
28991
1967c6b714e6 builddeb: copy over .gz and .dsc files
Sean Farley <sean@farley.io>
parents: 28990
diff changeset
108 ../mercurial*.dsc ../mercurial*.gz \
28990
62c245c59433 builddeb: ignore errors about find not finding files
Sean Farley <sean@farley.io>
parents: 28989
diff changeset
109 -type f -newer $control -print0 2>/dev/null | \
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
110 xargs -Inarf -0 mv narf "$OUTPUTDIR"
26833
6474b64045fb packaging: rework version detection and declaration (issue4912)
Augie Fackler <augie@google.com>
parents: 26148
diff changeset
111 echo "Built packages for $debver:"
40103
01425e3c2645 packaging: print full path to the packages when builddeb finishes successfully
muxator <a.mux@inwind.it>
parents: 40102
diff changeset
112 find "$PWD"/"$OUTPUTDIR" -type f -newer $control -name '*.deb'
26148
7f49efcaa9b4 debian: switch to using debhelper and dh_python2 to build debs
Augie Fackler <augie@google.com>
parents: 26108
diff changeset
113 fi