From 0d33183f0f6da97984bbc81dfe6d88014f6489ac Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 18 Jul 2014 12:28:21 +0200 Subject: parse debian/tests/control for test dependencies Our integration tests need some additional dependencies to run and function correctly, but while multiple places run them, there is no need to also specify the these dependencies in multiple places. Git-Dch: Ignore --- prepare-release | 1 + 1 file changed, 1 insertion(+) (limited to 'prepare-release') diff --git a/prepare-release b/prepare-release index 3c81a21cb..0b7acc165 100755 --- a/prepare-release +++ b/prepare-release @@ -105,6 +105,7 @@ elif [ "$1" = 'buildlog' ]; then done elif [ "$1" = 'travis-ci' ]; then apt-get install -q --no-install-recommends $(sed -n -e '/^Build-Depends: /,/^Build-Depends-Indep: / {p}' debian/control | sed -e 's#([^)]*)##g' -e 's#^Build-Depends\(-Indep\)\?: ##' | tr -d ',') + apt-get install -q --no-install-recommends $(sed -n 's#^Depends: .*@, \(.*\)$#\1#p' debian/tests/control | tr -d ',') else echo >&1 "Usage:\t$0 pre-export \t$0 post-build -- cgit v1.2.3 From 5abbf5bbb5ee8717f89cac6ef409c4cec79259f6 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 18 Jul 2014 16:42:40 +0200 Subject: ensure that all docs use all entities files Not all are needed for all files at the moment, but the new docbook building hadn't available some of the entities it used as the files weren't correctly copied around in all cases and having the same across the bord makes working with all of them a little easier. Git-Dch: Ignore --- prepare-release | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'prepare-release') diff --git a/prepare-release b/prepare-release index 0b7acc165..1b8f1e49e 100755 --- a/prepare-release +++ b/prepare-release @@ -69,6 +69,23 @@ elif [ "$1" = 'post-build' ]; then dpkg-checkbuilddeps -d 'libxml2-utils' + HEADERBLUEPRINT="$(mktemp)" + sed -n '1,/^$/p' doc/apt.8.xml > "$HEADERBLUEPRINT" + find doc -mindepth 1 -maxdepth 1 -type f -name '*.xml' | while read FILE; do + if ! sed -n '1,/^$/p' "$FILE" | cmp "$HEADERBLUEPRINT" - >/dev/null 2>&1; then + echo >&2 "WARNING: Manpage $FILE has not the usual header! (see diff below)" + sed -n '1,/^$/p' "$FILE" | diff -u "$HEADERBLUEPRINT" - || true + fi + done + sed -n '1,/^$/p' doc/guide.dbk > "$HEADERBLUEPRINT" + find doc -mindepth 1 -maxdepth 1 -type f -name '*.dbk' | while read FILE; do + if ! sed -n '1,/^$/p' "$FILE" | cmp "$HEADERBLUEPRINT" - >/dev/null 2>&1; then + echo >&2 "WARNING: Documentation $FILE has not the usual header (see diff below)!" + sed -n '1,/^$/p' "$FILE" | diff -u "$HEADERBLUEPRINT" - || true + fi + done + rm "$HEADERBLUEPRINT" + # check the manpages with each vendor for vendor-specific errors… find vendor -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 2 | while read DISTRO; do ln -sf ../vendor/${DISTRO}/apt-vendor.ent doc -- cgit v1.2.3 From 13fe505ceed4cee05667c05cf07896386310ebbc Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sun, 14 Sep 2014 22:48:01 +0200 Subject: add a 'coverage' command to generate reports Builds, runs and generates everything needed to have a coverage report at the end for apt. The report isn't perfect as most childs apt forks do not have a regular exit and so data is never written for them, which results in e.g. most methods to have zero coverage reported. Git-Dch: Ignore --- prepare-release | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 51 insertions(+), 4 deletions(-) (limited to 'prepare-release') diff --git a/prepare-release b/prepare-release index 1b8f1e49e..e61266eef 100755 --- a/prepare-release +++ b/prepare-release @@ -123,16 +123,63 @@ elif [ "$1" = 'buildlog' ]; then elif [ "$1" = 'travis-ci' ]; then apt-get install -q --no-install-recommends $(sed -n -e '/^Build-Depends: /,/^Build-Depends-Indep: / {p}' debian/control | sed -e 's#([^)]*)##g' -e 's#^Build-Depends\(-Indep\)\?: ##' | tr -d ',') apt-get install -q --no-install-recommends $(sed -n 's#^Depends: .*@, \(.*\)$#\1#p' debian/tests/control | tr -d ',') +elif [ "$1" = 'coverage' ]; then + DIR="${2:-./coverage}" + git clean -dfX # remove ignored build artefacts for a clean start + make CFLAGS+='--coverage' CXXFLAGS+='--coverage' + LCOVRC='--rc geninfo_checksum=1 --rc lcov_branch_coverage=1' + mkdir "$DIR" + lcov --no-external --directory . --capture --initial --output-file "${DIR}/apt.coverage.init" ${LCOVRC} + make test + ./test/integration/run-tests -q + lcov --no-external --directory . --capture --output-file "${DIR}/apt.coverage.run" ${LCOVRC} + lcov -a "${DIR}/apt.coverage.init" -a "${DIR}/apt.coverage.run" -o "${DIR}/apt.coverage.total" ${LCOVRC} + cp "${DIR}/apt.coverage.total" "${DIR}/apt.coverage.fixed" + rewritefile() { + file="$1" + shift + name="$(basename "$file")" + while [ -n "$1" ]; do + if [ -r "$1/$name" ]; then + sed -i "s#$file#$1/$name#" "${DIR}/apt.coverage.fixed" + break + fi + shift + done + if [ -z "$1" ]; then + echo >&2 "Coverage data captured for unknown file $file" + fi + } + grep 'build/include/' "${DIR}/apt.coverage.fixed" | sed "s#^SF:$(pwd)/##" | while read file; do + rewritefile "$file" 'apt-pkg' 'apt-pkg/deb' 'apt-pkg/edsp' 'apt-pkg/contrib' \ + 'apt-inst' 'apt-inst/deb' 'apt-inst/contrib' 'apt-private' + done + genhtml --output-directory "${DIR}" "${DIR}/apt.coverage.fixed" ${LCOVRC} else echo >&1 "Usage:\t$0 pre-export \t$0 post-build -\t$0 library -If you use »git buildpackage« you can leave this script alone as it will +If you use »git buildpackage« you can leave these alone as they will be run at the right places auto-magically. Otherwise you should use »pre-export« to update po and pot files as well as version numbering. »post-build« can be used to run some more or less useful checks later on. -»library« isn't run automatically but can be useful for maintaining the -(more or less experimental) symbols files we provide" +\t$0 library +\t$0 buildlog filename… + +»library« and »buildlog« aren't run automatically but can be useful for +maintaining the (more or less experimental) symbols files we provide. +»library« displays the diff between advertised symbols and the once provided +by the libraries, while »buildlog« extracts this diff from the buildlogs. +Both will format the diff properly. + +\t$0 travis-ci +\t$0 coverage [output-dir] + +»travis-ci« is a shortcut to install all build- as well as test-dependencies +used by .travis.yml. +»coverage« does a clean build with the right flags for coverage reporting, +runs all tests and generates a html report in the end. +" + fi -- cgit v1.2.3 From ad7e0941b376d792911f240377094a2e78ca8756 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Sat, 8 Nov 2014 18:14:46 +0100 Subject: streamline display of --help in all tools By convention, if I run a tool with --help or --version I expect it to exit successfully with the usage, while if I do call it wrong (like without any parameters) I expect the usage message shown with a non-zero exit. --- prepare-release | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'prepare-release') diff --git a/prepare-release b/prepare-release index e61266eef..67f4638d6 100755 --- a/prepare-release +++ b/prepare-release @@ -130,8 +130,8 @@ elif [ "$1" = 'coverage' ]; then LCOVRC='--rc geninfo_checksum=1 --rc lcov_branch_coverage=1' mkdir "$DIR" lcov --no-external --directory . --capture --initial --output-file "${DIR}/apt.coverage.init" ${LCOVRC} - make test - ./test/integration/run-tests -q + make test || true + ./test/integration/run-tests -q || true lcov --no-external --directory . --capture --output-file "${DIR}/apt.coverage.run" ${LCOVRC} lcov -a "${DIR}/apt.coverage.init" -a "${DIR}/apt.coverage.run" -o "${DIR}/apt.coverage.total" ${LCOVRC} cp "${DIR}/apt.coverage.total" "${DIR}/apt.coverage.fixed" -- cgit v1.2.3 From fe1f85118e0787ef5df28a045fd12d9133424b3f Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 9 Mar 2015 16:09:39 +0100 Subject: set version before updating po files This way the 'correct' version is carried over into the po files to reflect which version they were built for rather than the version before the current one. Git-Dch: Ignore --- prepare-release | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'prepare-release') diff --git a/prepare-release b/prepare-release index 67f4638d6..8a3743ad7 100755 --- a/prepare-release +++ b/prepare-release @@ -52,14 +52,14 @@ if [ "$1" = 'pre-export' ]; then VERSION="$VERSION~$(date +%Y%m%d)" fi + sed -i -e "s/^PACKAGE_VERSION=\".*\"$/PACKAGE_VERSION=\"${VERSION}\"/" configure.ac + sed -i -e "s/^$//" doc/apt-verbatim.ent + if [ "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' po/apt-all.pot | cut -d' ' -f 2)" -o \ "$(date +%Y-%m-%d)" != "$(grep --max-count=1 '^"POT-Creation-Date: .*\n"$' doc/po/apt-doc.pot | cut -d' ' -f 2)" ]; then echo >&2 'POT files are not up-to-date. Execute »make update-po« for you…' make update-po fi - - sed -i -e "s/^PACKAGE_VERSION=\".*\"$/PACKAGE_VERSION=\"${VERSION}\"/" configure.ac - sed -i -e "s/^$//" doc/apt-verbatim.ent elif [ "$1" = 'post-build' ]; then if [ "$DISTRIBUTION" != "UNRELEASED" ]; then echo >&2 "REMEMBER: Tag this release with »git tag ${VERSION}« if you are satisfied" -- cgit v1.2.3