#!/bin/sh # Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. # # This file is free software; as a special exception the author gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY, to the extent permitted by law; without even the # implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # Please note that this script is now maintained outside of GNUPG. # To get the most up to date version use # cvs -d :pserver:anoncvs@cvs.gnupg.org:/cvs/wk checkout misc-scripts/mkdiff if [ $# != 1 ] ; then echo "usage: mkdiff package-name" >&2 exit 1 fi pack="$1" set -e curr_ver=$(ls $pack-*.tar.gz 2>/dev/null | sed "s/^$pack-\(.*\)\.tar\.gz/\1/"\ | sort -r -t '.' -n +0 -1 +1 -2 +2 | head -1 ) if [ ! -f $pack-$curr_ver.tar.gz ]; then echo "mkdiff: no current version of package $pack found" >&2 exit 1 fi prev_ver=$(ls $pack-*.tar.gz 2>/dev/null | sed "s/^$pack-\(.*\)\.tar\.gz/\1/"\ | sort -r -t '.' -n +0 -1 +1 -2 +2 | head -2 | tail -1 ) if [ "$prev_ver" = "$curr_ver" ]; then echo "mkdiff: no previous version of package $pack found" >&2 exit 1 fi echo "Current is: $pack-$curr_ver" echo "Previous is: $pack-$prev_ver" echo "Removing old directories" [ -d "$pack-$curr_ver" ] && rm -rf "$pack-$curr_ver" [ -d "$pack-$prev_ver" ] && rm -rf "$pack-$prev_ver" echo "Unpacking previous and current tar" tar xzf "$pack-$curr_ver.tar.gz" rm -f $pack-${curr_ver}/po/*.gmo tar xzf "$pack-$prev_ver.tar.gz" rm -f $pack-${prev_ver}/po/*.gmo echo "Diffing" tmp_name="$pack-$prev_ver-$curr_ver.diff.tmp" diff_name="$pack-$prev_ver-$curr_ver.diff" diff -urN "$pack-$prev_ver/" "$pack-$curr_ver/" > $tmp_name || true echo "Making patch file" cat < $diff_name This is a patch file to create version $curr_ver from $prev_ver. Please check the signature of this patch file: zcat somepath/$pack-$prev_ver-$curr_ver.diff.gz | gpg --verify Change to directory $pack-$prev_ver (or however you renamed it) and give this command: zcat somepath/$pack-$prev_ver-$curr_ver.diff.gz | patch -p1 It is a good idea to rename your current directory to $pack-$curr_ver now. Prereq: $prev_ver EOF sed -ne '/^diff.*VERSION/,/^+[0-9][0-9]*/ p' $tmp_name >> $diff_name echo >> $diff_name sed -e '/^diff.*VERSION/,/^+[0-9][0-9]*/ d' $tmp_name >> $diff_name rm $tmp_name echo "Signing and compressing patch file" gpg --clearsign --not-dash-escaped -u 57548DCD \ < $diff_name | gzip --best > $diff_name.gz rm $diff_name echo "Checking patch file" cd $pack-$prev_ver zcat ../$diff_name.gz | patch -s -p1 rm $(find . -name "*.orig") 2>/dev/null || true cd .. if ! diff -urN "$pack-$prev_ver/" "$pack-$curr_ver/" >/dev/null ; then echo "compare failed" exit 1 fi if ! zcat $diff_name.gz | gpg --batch --verify ; then exit 1 fi echo "cleaning up" rm -rf "$pack-$curr_ver" rm -rf "$pack-$prev_ver" echo "Patch file $diff_name.gz is good."