##// END OF EJS Templates
packaging: blindly factor out trap's cleanup function in builddeb...
muxator -
r40140:33823055 default
parent child Browse files
Show More
@@ -1,106 +1,113 b''
1 #!/bin/sh -e
1 #!/bin/sh -e
2 #
2 #
3 # Build a Mercurial debian package from the current repo
3 # Build a Mercurial debian package from the current repo
4 #
4 #
5 # Tested on Jessie (stable as of original script authoring.)
5 # Tested on Jessie (stable as of original script authoring.)
6
6
7 . $(dirname $0)/packagelib.sh
7 . $(dirname $0)/packagelib.sh
8
8
9 ROOTDIR=$(cd $(dirname $0)/../.. > /dev/null; pwd)
9 ROOTDIR=$(cd $(dirname $0)/../.. > /dev/null; pwd)
10
10
11 BUILD=1
11 BUILD=1
12 CLEANUP=1
12 CLEANUP=1
13 DISTID=`(lsb_release -is 2> /dev/null | tr '[:upper:]' '[:lower:]') || echo debian`
13 DISTID=`(lsb_release -is 2> /dev/null | tr '[:upper:]' '[:lower:]') || echo debian`
14 CODENAME=`lsb_release -cs 2> /dev/null || echo unknown`
14 CODENAME=`lsb_release -cs 2> /dev/null || echo unknown`
15 DEBFLAGS=-b
15 DEBFLAGS=-b
16
17 cleanup() {
18 if [ '$CLEANUP' ]; then
19 rm -r '$PWD/debian';
20 fi
21 }
22
16 while [ "$1" ]; do
23 while [ "$1" ]; do
17 case "$1" in
24 case "$1" in
18 --distid )
25 --distid )
19 shift
26 shift
20 DISTID="$1"
27 DISTID="$1"
21 shift
28 shift
22 ;;
29 ;;
23 --codename )
30 --codename )
24 shift
31 shift
25 CODENAME="$1"
32 CODENAME="$1"
26 shift
33 shift
27 ;;
34 ;;
28 --cleanup )
35 --cleanup )
29 shift
36 shift
30 BUILD=
37 BUILD=
31 ;;
38 ;;
32 --build )
39 --build )
33 shift
40 shift
34 CLEANUP=
41 CLEANUP=
35 ;;
42 ;;
36 --source-only )
43 --source-only )
37 shift
44 shift
38 DEBFLAGS=-S
45 DEBFLAGS=-S
39 ;;
46 ;;
40 * )
47 * )
41 echo "Invalid parameter $1!" 1>&2
48 echo "Invalid parameter $1!" 1>&2
42 exit 1
49 exit 1
43 ;;
50 ;;
44 esac
51 esac
45 done
52 done
46
53
47 trap "if [ '$CLEANUP' ] ; then rm -r '$PWD/debian' ; fi" EXIT
54 trap 'cleanup' EXIT
48
55
49 set -u
56 set -u
50
57
51 if [ ! -d .hg ]; then
58 if [ ! -d .hg ]; then
52 printf "You are inside %s, which is not the root of a Mercurial repository\n" $(pwd) 1>&2
59 printf "You are inside %s, which is not the root of a Mercurial repository\n" $(pwd) 1>&2
53 exit 1
60 exit 1
54 fi
61 fi
55
62
56 gethgversion
63 gethgversion
57 debver="$version"
64 debver="$version"
58 if [ -n "$type" ] ; then
65 if [ -n "$type" ] ; then
59 debver="$debver~$type"
66 debver="$debver~$type"
60 fi
67 fi
61 if [ -n "$distance" ] ; then
68 if [ -n "$distance" ] ; then
62 debver="$debver+$distance-$CODENAME-$node"
69 debver="$debver+$distance-$CODENAME-$node"
63 elif [ "$DEBFLAGS" = "-S" ] ; then
70 elif [ "$DEBFLAGS" = "-S" ] ; then
64 # for building a ppa (--source-only) for a release (distance == 0), we need
71 # for building a ppa (--source-only) for a release (distance == 0), we need
65 # to version the distroseries so that we can upload to launchpad
72 # to version the distroseries so that we can upload to launchpad
66 debver="$debver~${CODENAME}1"
73 debver="$debver~${CODENAME}1"
67 fi
74 fi
68
75
69 control=debian/control
76 control=debian/control
70 changelog=debian/changelog
77 changelog=debian/changelog
71
78
72 if [ "$BUILD" ]; then
79 if [ "$BUILD" ]; then
73 if [ -d debian ] ; then
80 if [ -d debian ] ; then
74 printf "Error! debian control directory already exists at %s/debian\n" $(pwd)
81 printf "Error! debian control directory already exists at %s/debian\n" $(pwd)
75 exit 1
82 exit 1
76 fi
83 fi
77
84
78 cp -r "$ROOTDIR"/contrib/packaging/debian debian
85 cp -r "$ROOTDIR"/contrib/packaging/debian debian
79
86
80 sed -i.tmp "s/__VERSION__/$debver/" $changelog
87 sed -i.tmp "s/__VERSION__/$debver/" $changelog
81 sed -i.tmp "s/__DATE__/$(date --rfc-2822)/" $changelog
88 sed -i.tmp "s/__DATE__/$(date --rfc-2822)/" $changelog
82 sed -i.tmp "s/__CODENAME__/$CODENAME/" $changelog
89 sed -i.tmp "s/__CODENAME__/$CODENAME/" $changelog
83 rm $changelog.tmp
90 rm $changelog.tmp
84
91
85 # remove the node from the version string
92 # remove the node from the version string
86 SRCFILE="mercurial_$(echo $debver | sed "s,-$node,,").orig.tar.gz"
93 SRCFILE="mercurial_$(echo $debver | sed "s,-$node,,").orig.tar.gz"
87 "$ROOTDIR/hg" archive $SRCFILE
94 "$ROOTDIR/hg" archive $SRCFILE
88 mv $SRCFILE ..
95 mv $SRCFILE ..
89 debuild -us -uc -i -I $DEBFLAGS
96 debuild -us -uc -i -I $DEBFLAGS
90 if [ $? != 0 ]; then
97 if [ $? != 0 ]; then
91 echo 'debuild failed!'
98 echo 'debuild failed!'
92 exit 1
99 exit 1
93 fi
100 fi
94
101
95 fi
102 fi
96 if [ "$CLEANUP" ] ; then
103 if [ "$CLEANUP" ] ; then
97 echo
104 echo
98 OUTPUTDIR=${OUTPUTDIR:=packages/$DISTID-$CODENAME}
105 OUTPUTDIR=${OUTPUTDIR:=packages/$DISTID-$CODENAME}
99 mkdir -p "$OUTPUTDIR"
106 mkdir -p "$OUTPUTDIR"
100 find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \
107 find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \
101 ../mercurial*.dsc ../mercurial*.gz \
108 ../mercurial*.dsc ../mercurial*.gz \
102 -type f -newer $control -print0 2>/dev/null | \
109 -type f -newer $control -print0 2>/dev/null | \
103 xargs -Inarf -0 mv narf "$OUTPUTDIR"
110 xargs -Inarf -0 mv narf "$OUTPUTDIR"
104 echo "Built packages for $debver:"
111 echo "Built packages for $debver:"
105 find "$PWD"/"$OUTPUTDIR" -type f -newer $control -name '*.deb'
112 find "$PWD"/"$OUTPUTDIR" -type f -newer $control -name '*.deb'
106 fi
113 fi
General Comments 0
You need to be logged in to leave comments. Login now