[SCM] Debian Qt/KDE packaging tools branch, master, updated. debian/0.6.8-7-g821e1f9

Modestas Vainius modax at alioth.debian.org
Sat Mar 13 17:39:34 UTC 2010


The following commit has been merged in the master branch:
commit 03fd00ec9379dbee49513a925bc8637e9c95f1a8
Author: Modestas Vainius <modestas at vainius.eu>
Date:   Sat Mar 13 18:56:40 2010 +0200

    Add a new tool `pkgkde-getbuildlogs`.
    
    It can be used to get build logs from https://buildd.debian.org for the
    specified package.
---
 Makefile                          |    1 +
 debian/changelog                  |    2 +
 symbolshelper/pkgkde-getbuildlogs |  134 +++++++++++++++++++++++++++++++++++++
 3 files changed, 137 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index 36bdfb8..4d79187 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,7 @@ install:
 	    install -D -m 0644 {} $(DESTDIR)/$(PERLLIBDIR)/{} \;
 	install -m 0755 $(SYMBOLSHELPER_DIR)/pkgkde-symbolshelper $(BINDIR)/pkgkde-symbolshelper
 	install -m 0755 $(SYMBOLSHELPER_DIR)/pkgkde-debs2symbols $(BINDIR)/pkgkde-debs2symbols
+	install -m 0755 $(SYMBOLSHELPER_DIR)/pkgkde-getbuildlogs $(BINDIR)/pkgkde-getbuildlogs
 	
 	# Improved Dpkg::Shlibs and dpkg-gensymbols
 	cd $(SYMBOLSHELPER_DIR) && find Dpkg -type f -name "*.pm" -exec \
diff --git a/debian/changelog b/debian/changelog
index 5224a18..11674fc 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -4,6 +4,8 @@ pkg-kde-tools (0.6.9~pre1) UNRELEASED; urgency=low
     been detected but symbols differences still remain (rare variant of
     "possible incomplete subst detection"). libakonadi-kde4 in kdepimlibs was
     hit by this bug.
+  * Add a new tool `pkgkde-getbuildlogs` that can be used to get
+    build logs from https://buildd.debian.org for the specified package.
 
  -- Modestas Vainius <modax at debian.org>  Wed, 03 Mar 2010 23:43:10 +0200
 
diff --git a/symbolshelper/pkgkde-getbuildlogs b/symbolshelper/pkgkde-getbuildlogs
new file mode 100755
index 0000000..75bb7c2
--- /dev/null
+++ b/symbolshelper/pkgkde-getbuildlogs
@@ -0,0 +1,134 @@
+#!/bin/sh
+
+set -e
+
+info() {
+    echo "* $@" >&2
+}
+
+info2() {
+    echo "  -" "$@" >&2
+}
+
+error() {
+    echo "$PROGNAME: error:" "$@" >&2
+    exit 1
+}
+
+warning() {
+    echo "$PROGNAME: warning:" "$@" >&2
+}
+
+usage() {
+    echo "$PROGNAME: usage:" "$0" "[ -d destdir ]" "[ -v version ]" "[ package ]" "[ distribution ]" >&2
+}
+
+
+download_logs() {
+    local destdir pkg distro ver url
+    destdir="$1"
+    pkg="$2"
+    distro="$3"
+    ver="$4"
+    # Download debs
+    url="https://buildd.debian.org/pkg.cgi?pkg=$pkg"
+    if [ -n "$ver" ]; then
+        url="${url}&ver=$ver"
+    elif [ -n "$distro" ]; then
+        url="${url}&dist=$distro"
+    fi
+
+    info "Downloading referenced build logs from $url ..."
+    wget -e robots=off --timestamping --no-directories --directory-prefix="$destdir" \
+         --recursive --level=1 --no-parent --accept 'fetch.cgi*' "$url"
+}
+
+rename_logs() {
+    local destdir pkg
+    local IFS f files old
+    destdir="$1"
+    pkg="$2"
+    files="`ls -1 "$destdir" 2>/dev/null |
+        sed -n "/^fetch\.cgi?.*pkg=${pkg}/ {"'
+            p;
+            s/fetch\.cgi//;
+            s/[?;&][^=]\+=\([^?;&]\+\)/_\1/g;
+            s/^_//;
+            s/$/.build/;
+            p;
+        }'`";
+    IFS='
+'
+
+    if [ -n "$files" ]; then
+        for f in $files; do
+            if [ -n "$old" ]; then
+                info2 "$f"
+                mv "$destdir/$old" "$destdir/$f"
+                old=""
+            else
+                old="$f"
+            fi
+        done
+
+        return 0
+    else
+        return 1
+    fi
+}
+
+# Process options
+VERSION=""
+DESTDIR=""
+while getopts "d:v:" name; do
+    case "$name" in
+	d)  DESTDIR="$OPTARG" ;;
+	v)  VERSION="$OPTARG" ;;
+	\?)  usage; exit 2 ;;
+    esac
+done
+
+shift `expr $OPTIND - 1`
+
+PACKAGE="$1"
+DISTRO="$2"
+
+PROGNAME=`basename "$0"`
+
+if [ -f debian/changelog ]; then
+    _parsechangelog=`dpkg-parsechangelog`
+    if [ -z "$PACKAGE" ]; then
+        PACKAGE=$(echo "$_parsechangelog" | sed -n '/^Source:/ {s/[^:]\+:[[:space:]]*\(.\+\)/\1/; p; q}')
+    fi
+    if [ -n "$PACKAGE" ] && [ -z "$VERSION" ] && [ -z "$DISTRO" ]; then
+        DISTRO=$(echo "$_parsechangelog" | sed -n '/^Distribution:/ {s/[^:]\+:[[:space:]]*\(.\+\)/\1/; p; q}')
+        if [ "$DISTRO" = "UNRELEASED" ]; then
+            # Get distro from the next to current entry
+            _parsechangelog=`dpkg-parsechangelog -c1 -o1`
+            DISTRO=$(echo "$_parsechangelog" | sed -n '/^Distribution:/ {s/[^:]\+:[[:space:]]*\(.\+\)/\1/; p; q}')
+        fi
+    fi
+fi
+
+if [ -z "$PACKAGE" ] || ( [ -z "$VERSION" ] && [ -z "$DISTRO" ] ); then
+    usage
+    exit 2
+fi
+
+# Determine destination directory to store logs
+destdir="${DESTDIR:-${PACKAGE}_${VERSION:-${DISTRO}}_logs}"
+
+info "Selected output directory for logs:" "$destdir/"
+if [ ! -d "$destdir" ]; then
+    mkdir "$destdir"
+fi
+
+download_logs "$destdir" "$PACKAGE" "$DISTRO" "$VERSION"
+rmdir "$destdir" 2>/dev/null || true
+
+info "Downloaded build logs (stored to $destdir):"
+if ! rename_logs "$destdir" "$PACKAGE"; then
+    error "no build logs has been downloaded"
+fi
+
+exit 0

-- 
Debian Qt/KDE packaging tools



More information about the pkg-kde-commits mailing list