[SCM] Debian package checker branch, master, updated. 2.0.0-67-g6e0646e
The following commit has been merged in the master branch:
commit 8521701e83994410d09a2d6179d99358ddeef957
Author: Raphael Geissert <atomo64@gmail.com>
Date: Fri Nov 28 15:48:17 2008 +0100
private/refresh-debhelper-data: New script to update debhelper related data
- data/debhelper/miscDepends_commands: debhelper commands that set
misc:Depends
- data/debhelper/maint_commands: debhelper commands that edit
maintainer scripts
- data/debhelper/dh_packages: packages that contain debhelper commands
- data/debhelper/dh_commands: mapping of debhelper commands to
packages they are contained in
diff --git a/debian/changelog b/debian/changelog
index 32c9a0c..f1ab9f0 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -102,6 +102,16 @@ lintian (2.1.0) unstable; urgency=low
+ [FL] Convert to use Lintian::Output.
+ [FL] Add some new utility functions: delete_dir copy_dir gunzip_file
touch_file.
+
+ * private/refresh-debhelper-data:
+ + [FL] New script to update debhelper related data by Raphael Geissert.
+ - data/debhelper/miscDepends_commands: debhelper commands that set
+ misc:Depends
+ - data/debhelper/maint_commands: debhelper commands that edit
+ maintainer scripts
+ - data/debhelper/dh_packages: packages that contain debhelper commands
+ - data/debhelper/dh_commands: mapping of debhelper commands to
+ packages they are contained in
* testset/files:
+ [ADB] Generate the file "files/'\ " at build time instead of
diff --git a/debian/copyright b/debian/copyright
index 449c970..cf701aa 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -35,6 +35,7 @@ Portions Copyright (C) 2006 Adeodato Simó
Portions Copyright (C) 2007, 2008 Russ Allbery
Portions Copyright (C) 2008 Patrick Schoenfeld
Portions Copyright (C) 2008 Niko Tyni
+Portions Copyright (C) 2008 Raphael Geissert
This program is free software; you may redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/private/refresh-debhelper-data b/private/refresh-debhelper-data
new file mode 100755
index 0000000..a73a24a
--- /dev/null
+++ b/private/refresh-debhelper-data
@@ -0,0 +1,142 @@
+#!/bin/sh
+
+####################
+# Copyright (C) 2008 by Raphael Geissert <atomo64@gmail.com>
+#
+#
+# This file is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This file is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this file. If not, see <http://www.gnu.org/licenses/>.
+####################
+
+set -e
+
+if [ -z "$1" ]; then
+ printf "Usage: %s path/to/lintian/data [Contents-arch.(gz|bz2|)]\n" \
+ "$(basename "$0")"
+ cat <<INFO
+
+If the Contents file is specified, the list of dh_ commands found there will
+be compared with the list at lintian/data/debhelper/dh_commands and will
+indicate if the list is up to date with an exit status of zero.
+
+If the Contents file is not specified, the script will download the following
+files from a mirror (which should be specified via the DEB_MIRROR env var,
+which defaults to http://i386-geomirror.debian.net/debian and is used directly
+without any kind of parsing so one can play with it):
+* Contents-i386.gz, main/binary-i386/Packages.gz
+* Binary packages found at Contents shipping dh_ commands
+Any special parameter can be passed to wget via WGET_ARGS, if needed.
+
+Other options:
+Other variables such as GREP_OPTIONS can be used to enable things like --mmap.
+INFO
+ exit
+fi
+
+readonly lintian_data="$(readlink -f "$1")"
+readonly contents="$(readlink -f "$2")"
+readonly dh_regex='^usr/bin/dh_.'
+readonly dh_perl_regex='^usr/bin/(dh_[^\s]+)\s+\w+/([^,]+).*'
+offline=0
+
+[ -d "$lintian_data" ] || {
+ printf "%s is not a directory, aborting" "$lintiandata" >&2
+ exit 1
+}
+
+[ ! -z "$contents" -a ! -f "$contents" ] && {
+ printf "%s is not a file, aborting" "$contents" >&2
+ exit 1
+}
+
+[ -z "$contents" ] || offline=1
+
+readonly workdir="$(mktemp -d)"
+
+cleanup () {
+ [ ! -d "$workdir" ] || rm -rf "$workdir"
+}; trap cleanup EXIT
+
+if [ $offline -eq 1 ]; then
+ known_commands="$lintian_data/debhelper/dh_commands"
+ [ -f "$known_commands" ] || exit 1
+ new_commands="$workdir/new"
+
+ case "$contents" in
+ *.gz)
+ command="zgrep"
+ ;;
+ *.bz2)
+ command="bzgrep"
+ ;;
+ *)
+ command="grep"
+ ;;
+ esac
+ which "$command" 2>&1 1>/dev/null || exit 2
+
+ $command -E "$dh_regex" "$contents" \
+ | perl -p -w -E 's#'"$dh_perl_regex"'#$1=$2#g;' \
+ | sort > "$new_commands"
+ cmp -s "$known_commands" "$new_commands"
+ exit
+else
+ mirror="${DEB_MIRROR:=http://i386-geomirror.debian.net/debian}"
+ WGET_ARGS="${WGET_ARGS:=-nv}"
+ wget() {
+ echo wget "$mirror"/"$1"
+ /usr/bin/wget $WGET_ARGS "$mirror"/"$1"
+ }
+ mkdir -p "$lintian_data/debhelper"
+
+ cd "$workdir"
+ wget dists/sid/Contents-i386.gz
+ zgrep -E "$dh_regex" Contents-i386.gz > dh_entries
+ cat dh_entries \
+ | perl -p -w -E 's#'"$dh_perl_regex"'#$1=$2#g;' \
+ | sort > dh_commands
+ cat dh_entries \
+ | perl -p -w -E 's#'"$dh_perl_regex"'#$2#g;' \
+ | sort -u > dh_packages
+
+ for f in commands packages; do
+ rf="$lintian_data/debhelper/dh_$f"
+ [ ! -f "$rf" ] ||
+ mv "$rf" "${rf}.old"
+ cp -a "dh_$f" "$rf"
+ done
+
+ wget dists/sid/main/binary-i386/Packages.gz
+ gunzip Packages.gz
+ for package in $(cat dh_packages); do
+ fn="$(grep-dctrl -n -P -X "$package" -sFilename Packages)"
+ wget "$fn"
+ file="$(basename "$fn")"
+ dpkg-deb -x "$file" "$(mktemp -d -p .)"
+ rm -rf "$file"
+ find */ | grep -Ev '^[^/]+/usr/bin/dh_.+$' \
+ | xargs rm >/dev/null 2>&1 || true
+ done
+
+ grep -lr autoscript */ \
+ | sed 's,.*/usr/bin/,,g' | sort -u > maint_commands
+ grep -lr misc:Depends */ \
+ | sed 's,.*/usr/bin/,,g' | sort -u > miscDepends_commands
+
+ for f in maint miscDepends; do
+ rf="$lintian_data/debhelper/${f}_commands"
+ [ ! -f "$rf" ] ||
+ mv "$rf" "${rf}.old"
+ cp -a "${f}_commands" "$rf"
+ done
+fi
--
Debian package checker
Reply to: