merged from the debian-sid branch
[ntk/apt.git] / prepare-release
CommitLineData
3a496cd2
DK
1#!/bin/sh
2
3VERSION=$(dpkg-parsechangelog | sed -n -e '/^Version:/s/^Version: //p')
4DISTRIBUTION=$(dpkg-parsechangelog | sed -n -e '/^Distribution:/s/^Distribution: //p')
5
5ca28ebd
DK
6LIBAPTPKGVERSION="$(awk -v ORS='.' '/^\#define APT_PKG_M/ {print $3}' apt-pkg/init.h | sed 's/\.$//')"
7LIBAPTINSTVERSION="$(egrep '^MAJOR=' apt-inst/makefile |cut -d '=' -f 2)"
8
3a496cd2 9if [ "$1" = 'pre-export' ]; then
154fd04e 10 libraryversioncheck() {
58921d7d
DK
11 local LIBRARY="$1"
12 local VERSION="$2"
154fd04e
DK
13 if [ ! -e "debian/${LIBRARY}${VERSION}.symbols" ]; then
14 echo >&2 "Library ${LIBRARY} in version ${VERSION} has no symbols file! (maybe forgot to rename?)"
15 exit 1
16 fi
17 if [ "$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")" != "${LIBRARY}.so.${VERSION} ${LIBRARY}${VERSION} #MINVER#" ]; then
18 echo >&2 "Library ${LIBRARY}${VERSION} has incorrect version in symbol header! (»$(head -n1 "debian/${LIBRARY}${VERSION}.symbols")«)"
19 exit 2
20 fi
21 }
22
5ca28ebd
DK
23 libraryversioncheck 'libapt-pkg' "$LIBAPTPKGVERSION"
24 libraryversioncheck 'libapt-inst' "$LIBAPTINSTVERSION"
154fd04e
DK
25
26
3a496cd2
DK
27 if [ "$DISTRIBUTION" = 'sid' ]; then
28 echo >&2 '»sid« is not a valid distribution. Replace it with »unstable« for you'
29 sed -i -e 's/) sid; urgency=/) unstable; urgency=/' debian/changelog
30 DISTRIBUTION='unstable'
31 elif [ "$DISTRIBUTION" = 'UNRELEASED' ]; then
32 echo >&2 'WARNING: Remember to change to a valid distribution for release'
33 VERSION="$VERSION~$(date +%Y%m%d)"
34 fi
35
36 if [ "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' po/apt-all.pot | cut -d' ' -f 2)" -o \
37 "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' doc/po/apt-doc.pot | cut -d' ' -f 2)" ]; then
38 echo >&2 'POT files are not up-to-date. Execute »make update-po« for you…'
39 make update-po
40 fi
41
42 sed -i -e "s/^PACKAGE_VERSION=\".*\"$/PACKAGE_VERSION=\"${VERSION}\"/" configure.in
aa9de3cd 43 sed -i -e "s/^<!ENTITY apt-product-version \".*\">$/<!ENTITY apt-product-version \"${VERSION}\">/" doc/apt-verbatim.ent
3a496cd2
DK
44elif [ "$1" = 'post-build' ]; then
45 if [ "$DISTRIBUTION" != "UNRELEASED" ]; then
46 echo >&2 "REMEMBER: Tag this release with »bzr tag ${VERSION}« if you are satisfied"
47 else
48 echo >&2 'REMEMBER: Change to a valid distribution before release'
49 fi
372c2a2d
DK
50 if ! xmllint --nonet --valid --noout $(find doc/ -maxdepth 1 -name '*.xml'); then
51 echo >&2 'WARNING: original docbook manpages have errors!'
52 elif ! xmllint --nonet --valid --noout $(find doc/ -mindepth 2 -maxdepth 2 -name '*.xml'); then
53 echo >&2 'WARNING: translated docbook manpages have errors, but originals are okay!'
54 fi
5ca28ebd
DK
55elif [ "$1" = 'library' ]; then
56 librarysymbols() {
57 echo "Checking $1 in version $2"
58921d7d 58 local tmpfile=$(mktemp)
5ca28ebd
DK
59 dpkg-gensymbols -p${1}${2} -ebuild/bin/${1}.so.${2} -Idebian/${1}${2}.symbols -O/dev/null 2> /dev/null > $tmpfile
60 echo '=== Missing symbols:'
61 grep '^+#MISSING' $tmpfile
62 echo '=== New symbols:'
63 grep '^+ ' $tmpfile | cut -d' ' -f 2 | cut -d'@' -f 1 | c++filt | while read line; do
64 echo " (c++)\"${line}@Base\" $VERSION"
65 done | sort -u
66 rm $tmpfile
67 }
68 librarysymbols 'libapt-pkg' "${LIBAPTPKGVERSION}"
69 echo
70 librarysymbols 'libapt-inst' "${LIBAPTINSTVERSION}"
3a496cd2
DK
71else
72 echo >&1 "Usage:\t$0 pre-export
73\t$0 post-build
5ca28ebd 74\t$0 library
3a496cd2
DK
75
76If you use »bzr builddeb« you can leave this script alone as it will
77be run at the right places auto-magically. Otherwise you should use
78»pre-export« to update po and pot files as well as version numbering.
5ca28ebd
DK
79»post-build« can be used to run some more or less useful checks later on.
80
81»library« isn't run automatically but can be useful for maintaining the
82(more or less experimental) symbols files we provide"
3a496cd2 83fi