[SCM] mplayer/master: Add repack script

mati75-guest at users.alioth.debian.org mati75-guest at users.alioth.debian.org
Fri Apr 15 09:48:36 UTC 2016


The following commit has been merged in the master branch:
commit 19060a6916cd1f41ed6fe6e9065bc31ec29d6a09
Author: Mateusz Łukasik <mati75 at linuxmint.pl>
Date:   Fri Apr 15 11:48:33 2016 +0200

    Add repack script

diff --git a/debian/copyright b/debian/copyright
index 39caa94..5f38dd6 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -265,6 +265,19 @@ Copyright:
 License: other-2
  "license: i don't care ;)"
 
+Files: debian/repack.stub
+Copyright: 2009, Ryan Niebur <ryan at debian.org>
+License: Artistic or GPL-1+
+
+License: GPL-1+
+ This program 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 1, or (at your option)
+ any later version.
+ .
+ On Debian systems, the complete text of version 1 of the GNU General
+ Public License can be found in `/usr/share/common-licenses/GPL-1'.
+
 License: GPL-2+
  This package is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
diff --git a/debian/repack.local b/debian/repack.local
new file mode 100644
index 0000000..c585946
--- /dev/null
+++ b/debian/repack.local
@@ -0,0 +1,2 @@
+SUFFIX=
+rm -rf debian
diff --git a/debian/repack.sh b/debian/repack.sh
new file mode 100755
index 0000000..b41fe9b
--- /dev/null
+++ b/debian/repack.sh
@@ -0,0 +1,219 @@
+#!/bin/sh
+
+# see the repack.stub for how to use
+
+# Copyright 2009, Ryan Niebur <ryan at debian.org>
+# Copyright 2009-2011, gregor herrmann <gregoa at debian.org>
+# License: Artistic or GPL-1+
+
+# TODO: provide example watch files and repack.locals
+# TODO: test suite. problems fixed that need to be tested:
+# * globbing
+# * whitespace and then comments in the MANIFEST
+# TODO: does / in weird places work? test suite too.
+# TODO: I actually broke stuff with the MANIFEST change not thinking..
+# TODO: allow for a sepearate (and multiple) MANIFEST files, then
+# de-uglify libsyntax-highlight-engine-kate-perl.
+# TODO: have each mv and rm check that something actually changed, and
+# if not, die
+
+set -e
+set -u
+
+usage() {
+    echo "Usage: repack.sh --upstream-version <ver> <downloaded file>"
+    exit 1
+}
+
+if [ "$#" != "3" ]; then
+    usage
+fi
+if [ "$1" != "--upstream-version" ]; then
+    usage
+fi
+if [ ! -f "$3" ]; then
+    if [ -n "$3" ]; then
+        echo "$3 doesn't exist"
+    fi
+    usage
+fi
+VER="$2"
+FILE="$3"
+PKG=`dpkg-parsechangelog --show-field Source`
+
+SUFFIX="+dfsg"
+
+echo
+echo "Repackaging $FILE"
+echo
+
+DIR=`mktemp -d ./tmpRepackXXXXXX`
+DIR=$(readlink -f "$DIR")
+trap "/bin/rm -rf \"$DIR\"" QUIT INT EXIT
+
+# Create an extra directory to cope with rootless tarballs
+UP_BASE="$DIR/unpack"
+mkdir "$UP_BASE"
+tar xf "$FILE" -C "$UP_BASE" || unzip "$FILE" -d "$UP_BASE"
+
+if [ `ls -1 "$UP_BASE" | wc -l` -eq 1 ]; then
+	# Tarball does contain a root directory
+	UP_BASE="$UP_BASE/`ls -1 "$UP_BASE"`"
+fi
+
+RM_OPTS="-vrf"
+
+real_rm(){
+    /bin/rm "$@"
+}
+
+real_mv(){
+    /bin/mv "$@"
+}
+
+rm(){
+    set +f
+    MYOLDPWD=$(pwd)
+    cd "$UP_BASE"
+    if [ "$MANIFEST" = "1" ]; then
+        PERM=$(stat --format=%a "MANIFEST")
+        chmod u+w "MANIFEST"
+    fi
+    for i in $@; do
+        if [ "$MANIFEST" = "1" ]; then
+            PATTERN="^$i"
+            if [ -d "$i" ]; then
+                if ! { echo "$PATTERN" | grep -q "/$" ; }; then
+                    PATTERN="${PATTERN}/"
+                fi
+            else
+                PATTERN="${PATTERN}\s?"
+            fi
+            grep -Ev "$PATTERN" "MANIFEST" > "$DIR/MANIFEST"
+            real_mv "$DIR/MANIFEST" "MANIFEST"
+        fi
+        real_rm "$RM_OPTS" "$i"
+    done
+    if [ "$MANIFEST" = "1" ]; then
+        chmod $PERM "MANIFEST"
+    fi
+    cd $MYOLDPWD
+    set -f
+}
+
+mv(){
+    set +f
+    OLD=$(pwd)
+    cd $UP_BASE
+    real_mv "$@"
+    cd $OLD
+    if [ "$MANIFEST" = "1" ]; then
+        echo "MANIFEST cannot be manipulated with mv yet, patches welcome"
+        exit 1
+    fi
+    set -f
+}
+
+# bump with incompatible changes
+REPACK_VERSION=4
+
+requires_version(){
+    if [ $REPACK_VERSION -lt $1 ]; then
+        echo "repack.sh is not up to date enough for this package. you need at least version $1, while this script is only version $REPACK_VERSION"
+        exit 1
+    fi
+}
+
+MANIFEST=0
+## Remove stuff
+set -f
+MYORIGPWD=$(pwd)
+cd "$UP_BASE"
+. "$MYORIGPWD/debian/repack.local"
+cd $MYORIGPWD
+set +f
+## End
+
+REPACK_DIR="$PKG-${VER}${SUFFIX}.orig" # DevRef § 6.7.8.2
+DFSG_TAR="$(dirname $FILE)/${PKG}_${VER}${SUFFIX}.orig.tar"
+
+real_mv "$UP_BASE" "$DIR/$REPACK_DIR"
+
+# .gz or .bz2?
+FILETYPE=$(file --brief --mime-type --dereference "$FILE")
+case "$FILETYPE" in
+    application/x-gzip|application/gzip|application/zip)
+        C_PROGRAM="gzip"
+        C_SUFFIX="gz"
+        ;;
+    application/x-bzip2|application/bzip2)
+        C_PROGRAM="bzip2"
+        C_SUFFIX="bz2"
+        ;;
+    application/x-xz|application/xz)
+        C_PROGRAM="xz"
+        C_SUFFIX="xz"
+        ;;
+    *)
+        echo "E: Unknown filetye $FILETYPE"
+        exit 1
+        ;;
+esac
+    
+# Using a pipe hides tar errors!
+tar cfC "$DIR/repacked.tar" "$DIR" "$REPACK_DIR"
+$C_PROGRAM -9 < "$DIR/repacked.tar" > "$DIR/repacked.tar.$C_SUFFIX"
+
+real_mv "$DIR/repacked.tar.$C_SUFFIX" "$DFSG_TAR.$C_SUFFIX"
+
+echo "*** $DFSG_TAR.$C_SUFFIX ready"
+
+exit 0
+POD=<<EOF
+=head1 NAME
+
+dpt-repack -- repackaging helper
+
+=head1 SYNOPSIS
+
+B<dpt repack> --upstream-version I<version> I<downloaded file>"
+
+=head1 DESCRIPTION
+
+B<dpt repack> helps creating repackaged tarballs, suitable for feeding
+L<dpkg-source(1)>.
+
+Work is commenced in three stages:
+
+=over
+
+=item
+
+B<dpt repack> unpacks the provided upstream tarball.
+
+=item
+
+F<debian/repack.local> is sourced to remove unsuitable content.
+
+=item
+
+B<dpt repack> packs the sources again, under a suitable file name in the
+form C<package_ver.orig.tar.gz> (suffix depending on initial compression).
+
+=back
+
+B<dpt repack> invokes F<debian/repack.local> in an environment where B<rm> and
+B<mv> are replaced with functions that reflect the operations in the
+F<MANIFEST> file, if present.
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2009, Ryan Niebur L<ryan at debian.org>
+
+Copyright 2009-2011, gregor herrmann L<gregoa at debian.org>
+
+This program is free software and can be distributed under the same terms as
+Perl.
+
+=cut
+EOF
diff --git a/debian/repack.stub b/debian/repack.stub
new file mode 100644
index 0000000..7e36f5f
--- /dev/null
+++ b/debian/repack.stub
@@ -0,0 +1,91 @@
+#!/bin/sh
+
+: <<=cut
+=pod
+
+=head1 NAME
+
+repack.stub - script to repack upstream tarballs from uscan
+
+=head1 INSTRUCTIONS
+
+put this in debian/repack.stub and add "debian sh debian/repack.stub" to
+the end of the line in debian/watch. you will also need to add a version
+mangle to debian/watch.
+
+then create a debian/repack.local. this is a shell script that is
+sourced under "set -e", so be careful to check returns codes.
+
+=head1 FUNCTIONS
+
+=over 4
+
+=item rm
+
+rm is replaced by a function that does some magic ("rm -rv" by default), but also changes MANIFEST if $MANIFEST is 1
+
+=item mv
+
+mv is replaced by a function that just does mv (by default), but also changes MANIFEST if $MANIFEST is 1
+
+=item requires_version
+
+requires_version is there for future usage for requiring certain versions of the script
+
+=back
+
+=head1 VARIABLES
+
+=over 4
+
+=item SUFFIX
+
+defaults to +dfsg
+
+what to append to the upstream version
+
+=item RM_OPTS
+
+defaults to -vrf
+
+options to pass to rm
+
+=item MANIFEST
+
+defaults to 0, set to 1 to turn on.
+
+this will manipulate MANIFEST files in CPAN tarballs.
+
+=item UP_BASE
+
+this is the directory where the upstream source is.
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright 2009, Ryan Niebur <ryan at debian.org>
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=cut
+
+if [ -z "$REPACK_SH" ]; then
+    if [ -x /usr/share/pkg-perl-tools/repack.sh ]; then
+        REPACK_SH='/usr/share/pkg-perl-tools/repack.sh'
+    elif [ -f ../../scripts/repack.sh ]; then
+        REPACK_SH=../../scripts/repack.sh
+    fi
+    if [ -z "$REPACK_SH" ] && which repack.sh > /dev/null; then
+        REPACK_SH=$(which repack.sh)
+    fi
+fi
+
+if [ ! -f "$REPACK_SH" ]; then
+    echo "Couldn't find a repack.sh. please put it in your PATH, put it at ../../scripts/repack.sh, or put it somewhere else and set the REPACK_SH variable"
+    echo "You can get it from http://anonscm.debian.org/gitweb/?p=pkg-perl/packages/pkg-perl-tools.git;a=blob_plain;f=scripts/repack.sh;hb=HEAD"
+    exit 1
+fi
+
+exec "$REPACK_SH" "$@"
diff --git a/debian/watch b/debian/watch
index 0827bbd..ff9bb4b 100644
--- a/debian/watch
+++ b/debian/watch
@@ -1,2 +1,3 @@
 version=3
-opts=pgpsigurlmangle=s/$/.asc/ http://www.mplayerhq.hu/MPlayer/releases/ MPlayer-(.+)\.tar\.xz
+#opts=pgpsigurlmangle=s/$/.asc/ \
+http://www.mplayerhq.hu/MPlayer/releases/ MPlayer-(.+)\.tar\.xz debian sh debian/repack.stub

-- 
mplayer packaging



More information about the pkg-multimedia-commits mailing list