diff options
author | periapt <periapt@bb5a2ed9-75f0-0310-a2b8-e46d7b0922c1> | 2012-06-16 12:53:08 +0000 |
---|---|---|
committer | periapt <periapt@bb5a2ed9-75f0-0310-a2b8-e46d7b0922c1> | 2012-06-16 12:53:08 +0000 |
commit | 8601ce6f25dbca2caa142f43c0ea6ad6a49345f5 (patch) | |
tree | 43bf5f1d5a3c55b0f6a6c803f340bc1ad516a79a | |
parent | 1b55a50f0546954ef15fefb15811366b2532207c (diff) | |
download | mysql-5.5-8601ce6f25dbca2caa142f43c0ea6ad6a49345f5.tar.gz |
improved DFSG doc
git-svn-id: svn://svn.debian.org/svn/pkg-mysql/mysql-5.5/branches/unstable@2160 bb5a2ed9-75f0-0310-a2b8-e46d7b0922c1
-rw-r--r-- | debian/README.source | 21 | ||||
-rw-r--r-- | debian/copyright | 1 | ||||
-rw-r--r-- | debian/repack.sh | 161 | ||||
-rw-r--r-- | debian/repack.stub | 82 | ||||
-rw-r--r-- | debian/watch | 7 |
5 files changed, 186 insertions, 86 deletions
diff --git a/debian/README.source b/debian/README.source index 15264b3..dfeb755 100644 --- a/debian/README.source +++ b/debian/README.source @@ -1,3 +1,24 @@ +DFSG and repacking +================== +The upstream source tarball from dev.mysql.com contains one file, +Docs/mysq.info, that is not DFSG-compliant. We are currently using +the mechanism that appears to be the closest thing to a Debian-wide +DFSG-repacking mechanism - i.e. the scripts used by the Debian Perl +Group. See #677270 for a request to make this (or something based +upon it) a standard within Debian. + +To use this to download the current tarball (as indicated by debian/changelog) +run 'fakeroot debian/rules get-orig-source' from within the top-level +directory. If you are trying to build directly from the repository you +will also need to unpack the tarball into the same top-level directory. + +Bugs: Beware of having upstream tarballs (with or without the +non-DFSG material) in .. befrore running get-orig-source. It first downloads +the unaltered file and then repacks to the new one. The process +will stop if either file is present. + +MySQL source package +==================== The question arises why we have the mysql-source-* packages and why they are arch:any wasting so much space. This conversation covered the issue although it should probably be looked at again. diff --git a/debian/copyright b/debian/copyright index b42b213..54ffa5f 100644 --- a/debian/copyright +++ b/debian/copyright @@ -5,6 +5,7 @@ Source: http://dev.mysql.com/downloads/mysql/5.5.html Comments: The file Docs/mysql.info is removed from the upstream source because it is incompatible with the Debian Free Software Guidelines. + See debian/README.source for how this repacking was done. . Originally produced by a modified version of licensecheck2dep5 from CDBS by Clint Byrum <clint@ubuntu.com>. Hand modified to reduce diff --git a/debian/repack.sh b/debian/repack.sh new file mode 100644 index 0000000..ae71ef5 --- /dev/null +++ b/debian/repack.sh @@ -0,0 +1,161 @@ +#!/bin/sh + +# see the repack.stub for how to use + +# 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|grep ^Source:|sed 's/^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=3 + +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/zip) + C_PROGRAM="gzip" + C_SUFFIX="gz" + ;; + application/x-bzip2) + C_PROGRAM="bzip2" + C_SUFFIX="bz2" + ;; + *) + 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" diff --git a/debian/repack.stub b/debian/repack.stub deleted file mode 100644 index 76b65bd..0000000 --- a/debian/repack.stub +++ /dev/null @@ -1,82 +0,0 @@ -#!/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 - -=cut - -if [ -z "$REPACK_SH" ]; then - if [ -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/scripts.git;a=blob_plain;f=repack.sh;hb=HEAD" - exit 1 -fi - -exec "$REPACK_SH" "$@" diff --git a/debian/watch b/debian/watch index fe38b00..4bad059 100644 --- a/debian/watch +++ b/debian/watch @@ -1,9 +1,8 @@ -# This watch file depends on repack.sh being in your PATH. -# See http://anonscm.debian.org/gitweb/?p=pkg-perl/scripts.git;a=blob_plain;f=repack.sh;hb=HEAD +# See debian/README.source for more information about the DFSG repacking here. version=3 opts=dversionmangle=s/\+dfsg\d*$// \ http://mysql.linux.cz/Downloads/MySQL-5.5/mysql-([\d\.]+).tar.gz \ - debian sh debian/repack.stub + debian sh debian/repack.sh opts=dversionmangle=s/\+dfsg\d*$// \ http://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQL-5.5/mysql-([\d\.]+).tar.gz \ - debian sh debian/repack.stub + debian sh debian/repack.sh |