rpms/wiggle/EL-5 wiggle-fix-build.patch, NONE, 1.1 wiggle-various-changes.patch, NONE, 1.1 wiggle.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Andy Gospodarek (gospo) fedora-extras-commits at redhat.com
Fri Jan 18 21:05:00 UTC 2008


Author: gospo

Update of /cvs/pkgs/rpms/wiggle/EL-5
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv29158/EL-5

Modified Files:
	.cvsignore sources 
Added Files:
	wiggle-fix-build.patch wiggle-various-changes.patch 
	wiggle.spec 
Log Message:
Create wiggle for EL-5.


wiggle-fix-build.patch:

--- NEW FILE wiggle-fix-build.patch ---
--- wiggle-0.6.orig/Makefile
+++ wiggle-0.6/Makefile
@@ -3,7 +3,7 @@
 #OptDbg=-O3
 #OptDbg=-O3 -march=pentium2
 OptDbg=-ggdb
-CFLAGS=$(OptDbg) -Wall -Werror
+#CFLAGS=$(OptDbg) -Wall -Werror
 
 # STRIP = -s
 INSTALL = /usr/bin/install
@@ -13,13 +13,13 @@ MANDIR  = /usr/share/man
 MAN1DIR = $(MANDIR)/man1
 MAN5DIR = $(MANDIR)/man5
 
-all: wiggle wiggle.man test
+all: wiggle wiggle.man
 
 
 wiggle : wiggle.o load.o split.o extract.o diff.o bestmatch.o ReadMe.o merge.o
 wiggle.o load.o split.o extract.o diff.o bestmatch.o ReadMe.o merge.o : wiggle.h
 
-test: wiggle dotest
+check: wiggle dotest
 	sh dotest
 
 wiggle.man : wiggle.1

wiggle-various-changes.patch:

--- NEW FILE wiggle-various-changes.patch ---
--- wiggle-0.6.orig/ANNOUNCE
+++ wiggle-0.6/ANNOUNCE
@@ -1,4 +1,4 @@
-ANNOUNCE: wiggle - a tools for applying patches with conflicts
+ANNOUNCE: wiggle - a tool for applying patches with conflicts
 
 I am pleased to announce the first public release of 'wiggle'.
 
@@ -7,7 +7,7 @@
 
 Wiggle will always apply all changes in the patch to the original.
 If it cannot find a way to cleanly apply a patch, it inserts it
-in the original in a manner similar to 'merge', and report an
+in the original in a manner similar to 'merge', and reports an
 unresolvable conflict.  Such a conflict will look like:
 
 <<<<<<<
@@ -19,9 +19,9 @@
 Some text that is the result of the patch
 >>>>>>>
 
-with the meaning that the "text that the patch
-changes" was expected somewhere in the "text from the original 
-file" and should be replaced with "the result of the patch".
+with the meaning that the "text that the patch changes"
+was expected somewhere in the "text from the original file"
+and should be replaced with "the result of the patch".
 
 wiggle analyses the file and the patch in terms of words rather than
 whole lines and so is able to find matches that patch is
--- wiggle-0.6.orig/bestmatch.c
+++ wiggle-0.6/bestmatch.c
@@ -346,7 +346,10 @@
 	int pa,pb;
 	pa=pb=0;
 
-	for (b=1; b<cnt; b++) {
+	if (a1.elcnt == 0 && a2.elcnt == 0) return;
+
+	for (b=1; b<cnt; b++)
+	   if (best[b].val>0) {
 #if 0
 		printf("best %d,%d  %d,%d\n",
 		       best[b].xlo,best[b].ylo,
--- wiggle-0.6.orig/dotest
+++ wiggle-0.6/dotest
@@ -34,47 +34,47 @@
     case $base in 
 	script ) ./script ;;
 	diff ) if [ -f new ]
-		then /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -dw orig new | diff -u diff - ; xit=$?
-		else /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -dwp1 orig patch | diff -u diff - ; xit=$?
+		then /usr/bin/time -o .time -f '%U' $WIGGLE -dw orig new | diff -u diff - ; xit=$?
+		else /usr/bin/time -o .time -f '%U' $WIGGLE -dwp1 orig patch | diff -u diff - ; xit=$?
 		fi
 		;;
 	ldiff ) if [ -f new ]
-		then /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -dl orig new | diff -u ldiff - ; xit=$?
-		else /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -dlp1 orig patch | diff -u ldiff - ; xit=$?
+		then /usr/bin/time -o .time -f '%U' $WIGGLE -dl orig new | diff -u ldiff - ; xit=$?
+		else /usr/bin/time -o .time -f '%U' $WIGGLE -dlp1 orig patch | diff -u ldiff - ; xit=$?
 		fi
 		;;
-	reldiff ) /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -dl patch | diff -u reldiff - ; xit=$?
+	reldiff ) /usr/bin/time -o .time -f '%U' $WIGGLE -dl patch | diff -u reldiff - ; xit=$?
 		;;
-	rediff ) /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -dw patch | diff -u rediff - ; xit=$?
+	rediff ) /usr/bin/time -o .time -f '%U' $WIGGLE -dw patch | diff -u rediff - ; xit=$?
 		;;
 	merge )  if [ -f patch ]
-		 then /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -m orig patch | diff -u merge - ; xit=$?
+		 then /usr/bin/time -o .time -f '%U' $WIGGLE -m orig patch | diff -u merge - ; xit=$?
 		 elif [ -f new ] 
-                 then /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -m orig new new2 | diff -u merge - ; xit=$?
-		 else /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -m orig | diff -u merge - ; xit=$?
+                 then /usr/bin/time -o .time -f '%U' $WIGGLE -m orig new new2 | diff -u merge - ; xit=$?
+		 else /usr/bin/time -o .time -f '%U' $WIGGLE -m orig | diff -u merge - ; xit=$?
 		 fi
 		;;
 	replace ) cp orig orig.tmp
 		 if [ -f patch ]
-		 then /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -mr orig.tmp patch 
-		 else /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -mr orig.tmp new new2
+		 then /usr/bin/time -o .time -f '%U' $WIGGLE -mr orig.tmp patch 
+		 else /usr/bin/time -o .time -f '%U' $WIGGLE -mr orig.tmp new new2
 		 fi
 		 diff -u merge orig.tmp ; xit=$?
 		 rm  orig.tmp orig.tmp.porig
 		;;
 	lmerge )  if [ -f patch ]
-		 then /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -ml orig patch | diff -u lmerge - ; xit=$?
-		 else /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -ml orig new new2 | diff -u lmerge - ; xit=$?
+		 then /usr/bin/time -o .time -f '%U' $WIGGLE -ml orig patch | diff -u lmerge - ; xit=$?
+		 else /usr/bin/time -o .time -f '%U' $WIGGLE -ml orig new new2 | diff -u lmerge - ; xit=$?
 		 fi
 		 ;;
 	wmerge )  if [ -f patch ]
-		 then /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -mw orig patch | diff -u wmerge - ; xit=$?
-		 else /usr/bin/time --quiet -o .time -f '%U' $WIGGLE -mw orig new new2 | diff -u wmerge - ; xit=$?
+		 then /usr/bin/time -o .time -f '%U' $WIGGLE -mw orig patch | diff -u wmerge - ; xit=$?
+		 else /usr/bin/time -o .time -f '%U' $WIGGLE -mw orig new new2 | diff -u wmerge - ; xit=$?
 		 fi
 		 ;;
    esac
    if [ $xit = 0 ]; then msg=SUCCEEDED; else msg=FAILED; fi
-   echo $path $msg `cat .time 2> /dev/null`
+   echo $path $msg `grep -v 'Command exited' .time 2> /dev/null`
    rm -f .time
    exit $xit
   ) 
--- wiggle-0.6.orig/extract.c
+++ wiggle-0.6/extract.c
@@ -207,7 +207,7 @@
 		lineno++;
 		switch(state) {
 		case 0:
-			if (len>8 &&
+			if (len>=8 &&
 			    strncmp(cp, "<<<<<<<", 7)==0 &&
 			    (cp[7] == ' ' || cp[7] == '\n')
 				) {
@@ -222,7 +222,7 @@
 			}
 			break;
 		case 1:
-			if (len>8 &&
+			if (len>=8 &&
 			    strncmp(cp, "|||||||", 7)==0 &&
 			    (cp[7] == ' ' || cp[7] == '\n')
 				) {
@@ -232,7 +232,7 @@
 				copyline(&r1, &cp, end);
 			break;
 		case 2:
-			if (len>8 &&
+			if (len>=8 &&
 			    strncmp(cp, "=======", 7)==0 &&
 			    (cp[7] == ' ' || cp[7] == '\n')
 				) {
@@ -242,7 +242,7 @@
 				copyline(&r2, &cp, end);
 			break;
 		case 3:
-			if (len>8 &&
+			if (len>=8 &&
 			    strncmp(cp, ">>>>>>>", 7)==0 &&
 			    (cp[7] == ' ' || cp[7] == '\n')
 				) {
--- wiggle-0.6.orig/merge.c
+++ wiggle-0.6/merge.c
@@ -422,6 +422,15 @@
 		if (c1[p->c1].len == 0 ||
 		    a < c1[p->c1].a + c1[p->c1].len) {
 			p->in_a = 0;
+			/*
+			 * if we've slid, make sure not to skip over
+			 * the stuff in c2.
+			 */
+			if(slid && p->c2 != -1 && c2[p->c2].a == b && 
+			   c2[p->c2].b > c2[p->c2].a) {
+				c -= c2[p->c2].b - c2[p->c2].a;
+			}
+
 			p->pos = c;
 			slid = 1;
 			goto retry;
--- wiggle-0.6.orig/p
+++ wiggle-0.6/p
@@ -89,7 +89,7 @@
 
 forget_one()
 {
-	if cmp -s "$1" "$1~current~" && cmp -s "$1" "$1~orig~"
+	if true # || cmp -s "$1" "$1~current~" && cmp -s "$1" "$1~orig~"
 	then
             rm -f "$1~current~" "$1~orig~"
 	    chmod -w "$1"
@@ -140,18 +140,23 @@
 {
         >> .patches/files
 	while read file
-	do eval $1 $file
+	do eval $1 $file $2
 	done < .patches/files
 }
 
 diff_one()
 {
-	if cmp -s "$1~current~" "$1"
+	if cmp -s "$1~current~" "$1" || [ ! -f "$1" -a ! -f "$1~current~" ]
 	then :
 	else
 		echo
 		echo "diff ./$1~current~ ./$1"
-		diff --show-c-function -u ./$1~current~ ./$1
+		if [ " $2" = " -R" ]
+		then
+		  diff -N --show-c-function -u ./$1 ./$1~current~
+		else
+		  diff -N --show-c-function -u ./$1~current~ ./$1
+		fi
 	fi
 }
 
@@ -168,16 +173,17 @@
 
 commit_one()
 {
-	rm -f "$1~current~"
+    rm -f "$1~current~"
+    if [  -f "$1" ] ; then
 	mv "$1" "$1~current~"
-	cp "$1~current~" $1
+	cp -p "$1~current~" $1
 	chmod u+w $1
+    fi
 }
 
 discard_one()
 {
-	rm -f "$1"
-	cp "$1~current~" $1
+	cmp -s "$1~current~" $1 || { rm -f "$1" ; cp "$1~current~" $1; }
 	chmod u+w $1
 }
 
@@ -188,14 +194,19 @@
 	mv "$1.tmp" "$1~current~"
 }
 
+CERT='Signed-off-by: Neil Brown <neilb at suse.de>'
 make_diff()
 {
    {
 	[ -s .patches/status ] && echo "Status: `cat .patches/status`"
+	[ -s .patches/notes ] && { echo; cat .patches/notes ; }
+	if grep -F "$CERT" .patches/notes > /dev/null 2>&1
+	then :
+        else echo "$CERT"
+	fi
 	echo
-	[ -s .patches/notes ] && { cat .patches/notes ; echo; }
-	all_files diff_one > .patches/tmp
-	echo " ----------- Diffstat output ------------"
+	all_files diff_one $1 > .patches/tmp
+	echo "### Diffstat output"
 	diffstat -p0 2> /dev/null < .patches/tmp
 	cat .patches/tmp
 	[ -s .patches/tmp ] || rm .patches/patch
@@ -218,20 +229,25 @@
 	new=${new#1}
 	mv .patches/patch $dir/$new$name
 }
-	  
+
 find_prefix()
 {
 	# set "prefix" to number for -pn by looking at first file in given patch.
-	file=`lsdiff $1 | head -1`
+	n=${2-1}
+	file=`lsdiff $1 | head -$n | tail -1`
 	orig=$file
 	prefix=0
-	while [ -n "$file" -a ! -f "$file" ]
+	while [ \( -n "$file" -a ! -f "$file" \) -o " $file" != " ${file#/}" ]
 	do
 	    file=`expr "$file" : '[^/]*/\(.*\)'`
 	    prefix=`expr $prefix + 1`
 	done
 	if [ -z "$file" ]
-	then echo "Cannot find $orig" >&2 ; exit 1;
+	then echo "Cannot find $orig" >&2 
+	   if [ $n -gt 4 ]
+	   then exit 2;
+	   else find_prefix "$1" $[n+1]
+	   fi
 	fi
 	if [ " $orig" != " $file" ]
 	then
@@ -246,11 +262,12 @@
  awk '
     BEGIN { head= 1; blanks=0 ; }
     head == 1 && ( $1 == "Status:" || $0 == "" ) {
-	    next; 
+	    next;
     }
     { head = 0; }
     $0 == "" { blanks++; next; }
     $0 ~ /^ *---/ { exit }
+    $0 ~ /^###/ { exit }
     {   while (blanks > 0) {
 	   blanks--; print "";
 	}
@@ -304,15 +321,20 @@
 	if [ ! -f "$pfile" ]
 	then echo >&2 "Cannot find unique patch '$1' - found: $pfile"; exit 1;
 	fi
-	${PAGER-less} $pfile;
+	if grep -s '^+.*[ 	]$' $pfile > /dev/null
+	then
+	    ${PAGER-less -p '^\+.*[ 	]$'} $pfile
+	else
+	    ${PAGER-less} $pfile
+	fi
 	;;
- 
+
   all )
 	all_files diff_one_orig
 	;;
   status | name )
 	case $# in
-	 1 ) 
+	 1 )
 		get_meta
 		if [ $cmd = name ] ; then
 		  if [ -n "$name" ]; then
@@ -352,6 +374,11 @@
 	then :
 	else echo >&2 No patch to $cmd ; exit 1
 	fi
+	if grep -s '^+.*[ 	]$' .patches/patch > /dev/null
+	then
+	    echo >&2 remove trailing spaces/tabs first !!
+#	    exit 1
+	fi
 	if [ -s .patches/to-resolv ]
 	then echo "Please resolve outstanding conflicts first with 'p resolve'"
 	    exit 1
@@ -412,7 +439,7 @@
 	make_diff
 	get_meta
 	if [ -s .patches/patch ]
-	then 
+	then
 		echo >&2 Patch $name already open - please commit; exit 1;
 	fi
 	if [ $# -eq 0 ]
@@ -473,13 +500,13 @@
 	    */* ) echo >&2 "Only local patches can have been included"; exit 1 ;;
 	    *) pfile=`echo .patches/removed/*$1*`
 	esac
-	if [ ! -f "$pfile" ] 
+	if [ ! -f "$pfile" ]
 	then echo >&2 "Cannot find unique patch '$1' - found $pfile"; exit 1
 	fi
 	echo "Using $pfile..."
 
 	# make sure patch applies in reverse
-	if patch -s --fuzz=0 --dry-run -f -p0 -R < "$pfile"
+	if patch -s --fuzz=0  -l --dry-run -f -p0 -R < "$pfile"
 	then echo "Yep, that seems to be included"
 	elif [ -n "$force" ]
 	then echo "It doesn't apply reverse-out cleanly, but you asked for it..."
@@ -490,6 +517,99 @@
 	save_patch included $name
 	echo "Moved to $new$name"
 	;;
+  review )
+	# there are some patches in .removed that may be included in the current source
+	# we try to backout each one. If it backs out successfully, we move it to
+	# .reviewed and conitnue, else  we abort
+	# Once this has been done often enough, 'reviewed' should be run to
+	# move stuff to 'included' and to revert those patches
+	force=
+	if [ " $1" = " -f" ] ; then
+	    force=yes; shift
+	fi
+	make_diff; get_meta
+	if [ -s .patches/path ]
+        then
+	    echo >&2 Patch $name already open, please deal with it; exit 1;
+	fi
+	if [ $# -eq 0 ]
+	then
+	    echo "Pending patches are:"
+	    ls .patches/removed
+	    exit 0;
+	fi
+	if [ $# -ne 1 ]
+	then
+	     echo >&2 "Usage: p review patchname"; exit 1
+	fi
+	case $1 in
+	    */* ) echo >&2 "Only local patches can have been included"; exit 1 ;;
+	    *) pfile=`echo .patches/removed/*$1*`
+	esac
+	if [ ! -f "$pfile" ]
+	then echo >&2 "Cannot find unique patch '$1' - found $pfile"; exit 1
+	fi
+	echo "Starting from $pfile..."
+	found=
+	for fl in .patches/removed/*
+	do
+	  if [ " $fl" = " $pfile" ]; then found=yes ; fi
+          if [ -n "$found" ]; then
+	      echo Checking $fl
+	      find_prefix "$fl"
+	      lsdiff --strip=$prefix "$fl" | grep -v 'file.*changed' | while read a b
+	      do check_out $a
+	      done
+	      if patch -s --fuzz=0 --dry-run -f -p$prefix -R < "$fl"
+	      then echo Looks good..
+	      elif [ -n "$force" ]
+	      then echo "It doesn't backout cleanly, but you asked for it..."
+		  cp $fl .patches/last-backed
+	      else echo "Patch won't back out, sorry"
+		  exit 1
+	      fi
+	      patch --fuzz=0 -f -p$prefix -R < "$fl" | tee .patches/tmp
+	      sed -n -e '2q' -e 's/^Status: *//p' $fl > .patches/status
+	      base=${fl##*/}
+	      base=${base##[0-9][0-9][0-9]}
+	      base=${base##patch-?-}
+	      [ -s .patches/name ] || echo $base > .patches/name
+	      extract_notes $fl >> .patches/notes
+	      rm -f .patches/wiggled
+	sed -n -e 's/.*saving rejects to file \(.*\).rej/\1/p' .patches/tmp |
+	while read file
+	do  echo Wiggling $file.rej into place
+	    rm -f $file.porig
+	    > .patches/wiggled
+	    wiggle --replace --merge $file $file.rej ||
+	    echo $file >> .patches/to-resolve
+	done
+
+	      mv $fl .patches/patch
+	      save_patch reviewed $base
+	      if [ -f .patches/wiggled ]
+	      then echo 'Some wiggling was needed. Please review and commit'
+		  exit 0
+	      fi
+	      p commit || exit 1
+	  fi
+        done
+	;;
+
+  reviewed )
+	      # all the currently applied patches are patches that have been
+	      # reviewed as included.
+	      # rip them out and stick them (reversed) into included.
+	      while p open last
+	      do
+		make_diff -R
+		get_meta
+		save_patch included "$name"
+		echo Saved as "$new$name"
+		all_files discard_one
+		rm -f .patches/name .patches/status .patches/notes
+	      done
+	      ;;
   list )
 	    echo "Applied patches are:"
 	    ls .patches/applied
@@ -530,7 +650,7 @@
 	then echo >&2 "Cannot find unique patch '$1' - found: $pfile"; exit 1
 	fi
 	find_prefix "$pfile"
-	lsdiff --strip=$prefix "$pfile" | grep -v 'file.*changed' | while read a b 
+	lsdiff --strip=$prefix "$pfile" | grep -v 'file.*changed' | while read a b
 	do check_out $a
 	done
 	# lets see if it applies cleanly
@@ -566,7 +686,7 @@
 	;;
 
   publish )
-	name=`date -u +%Y-%m-%d:%H`
+	name=`date -u +%Y-%m-%d-%H`
 	if [ -d .patches/dest ]
 	then : good
 	else echo >&2 No destination specified at .patches/dest ; exit 1;
@@ -580,7 +700,7 @@
 	if [ -f .patches/get-version ] ;
 	then ./.patches/get-version > $target/version
 	fi
-	[ -f .config ] && cp .config $target 
+	[ -f .config ] && cp .config $target
 	cp .patches/applied/* $target
 	mkdir $target/misc
 	cp 2> /dev/null .patches/removed/* $target/misc || rmdir $target/misc
@@ -596,6 +716,60 @@
   openall )
         while p open last && p discard ; do : ; done
 	;;
+  recommit )
+	make_diff
+	get_meta
+	if [ -s .patches/patch ]
+	then
+	    echo >&2 Patch $name already open - please commit ; exit 1;
+	fi
+	if [ $# -eq 0 ]
+	then
+	    echo "Unapplied patches are:"
+	    ls .patches/removed
+	    exit 0
+	fi
+	if [ $# -ne 1 ]
+	then echo >&2 "Usage: p recommit patchname"; exit 1
+	fi
+	case $1 in
+	    last ) pfile=`ls -d .patches/removed/[0-9]* | tail -1` ; echo last is "$pfile";;
+	    */* ) pfile=$1 ;;
+	    * ) pfile=`echo .patches/removed/*$1*`
+	esac
+	if [ ! -f "$pfile" ]
+	then echo >&2 "Cannot find unique patch '$1' - found: $pfile"; exit 1
+	fi
+	while [ -s "$pfile" ]  &&
+	     p apply last && p commit ; do : ; done
+	;;
+  decommit )
+	make_diff
+	get_meta
+	if [ -s .patches/patch ]
+	then
+	    echo >&2 Patch $name already open - please commit ; exit 1;
+	fi
+	if [ $# -eq 0 ]
+	then
+	    echo "Applied patches are:"
+	    ls .patches/applied
+	    exit 0
+	fi
+	if [ $# -ne 1 ]
+	then echo >&2 "Usage: p decommit patchname"; exit 1
+	fi
+	case $1 in
+	    last ) pfile=`ls -d .patches/applied/[0-9]* | tail -1` ; echo last is "$pfile";;
+	    */* ) pfile=$1 ;;
+	    * ) pfile=`echo .patches/applied/*$1*`
+	esac
+	if [ ! -f "$pfile" ]
+	then echo >&2 "Cannot find unique patch '$1' - found: $pfile"; exit 1
+	fi
+	while [ -s "$pfile" ]  &&
+	     p open last && p discard ; do : ; done
+	;;
   snapshot )
 	all_files snap_one
 	;;
@@ -626,6 +800,12 @@
         cd .patches/SOURCE && bk pull
 	;;
   update )
+	make_diff
+	get_meta
+	if [ -s .patches/patch ]
+	then
+		echo >&2 Patch $name already open - please commit; exit 1;
+	fi
         p openall && p clean &&
 	  (cd .patches/SOURCE ; bk export -tpatch -rLATEST, ) > .patches/imported-patch &&
 	  patch --dry-run -f -p1 < .patches/imported-patch &&
@@ -651,36 +831,86 @@
 	    echo "Your address and other headers must be in .patches/owner"
 	    exit 1;
 	fi
-	cnt=$(ls .patches/applied/???${1}* | wc -l)
-	cnt=$(echo $cnt)  # discard spaces
+	messid="<`date +'%Y%m%d%H%M%S'`.$$.patches@`uname -n`>"
+	cnt=0
+	for patch in .patches/applied/???${1}*
+	do
+          n=${patch##*/}
+	  n=${n:0:3}
+	  if [ -n "$2" ] && [ $2 -gt $n ] ; then continue; fi
+	  if [ -n "$3" ] && [ $3 -lt $n ] ; then continue; fi
+	  cnt=$(expr $cnt + 1 )
+	done
 	this=1
+	if [ $cnt -gt 1 ]
+	then
+	{
+	    if [ -s .patches/owner.$1 ] ; then
+		cat .patches/owner.$1
+	    else
+		cat .patches/owner
+	    fi
+	    echo "To: `cat .patches/maintainer`"
+	    if [ -s .patches/cc ] ; then
+		while read word prefix addr
+		  do if [ " $word" = " $1" ] ; then
+			echo "Cc: $addr"
+			sprefix="$prefix: "
+		    fi
+		  done < .patches/cc
+	    fi
+	    if [ $cnt = 1 ]
+		  then
+		  echo "Subject: [PATCH] ${sprefix}Intro"
+		  else
+		  echo "Subject: [PATCH 000 of $cnt] ${sprefix}Introduction"
+	    fi
+	    echo "Message-ID: $messid"
+	    echo
+	    echo PUT COMMENTS HERE
+	} > .patches/mail/000Intro
+	fi
+
 	for patch in .patches/applied/???${1}*
 	do
+          n=${patch##*/}
+	  n=${n:0:3}
+	  if [ -n "$2" ] && [ $2 -gt $n ] ; then continue; fi
+	  if [ -n "$3" ] && [ $3 -lt $n ] ; then continue; fi
 	  {
 	      sprefix=
-	      cat .patches/owner
+	      if [ -s .patches/owner.$1 ] ; then
+		cat .patches/owner.$1
+	      else
+		cat .patches/owner
+	      fi
 	      echo "To: `cat .patches/maintainer`"
 	      if [ -s .patches/cc ] ; then
 		  while read word prefix addr
 		    do if [ " $word" = " $1" ] ; then
-			echo "Cc: $addr" 
-			sprefix="$prefix - "
+			echo "Cc: $addr"
+			sprefix="$prefix: "
 		    fi
 		  done < .patches/cc
 	      fi
 	      head=`sed -e '/^Status/d' -e '/^$/d' -e q $patch`
+	      zerothis=$(expr $this + 1000)
 	      if [ $cnt = 1 ]
 		  then
-		  echo "Subject: [PATCH] $sprefix $head"
+		  echo "Subject: [PATCH] $sprefix$head"
 		  else
-		  echo "Subject: [PATCH] $sprefix$this of $cnt - $head"
+		  echo "Subject: [PATCH ${zerothis#1} of $cnt] $sprefix$head"
 	      fi
+	      echo "References: $messid"
 	      echo
-	      echo '### Comments for ChangeSet'
-	      sed -e '1,/^[^S]/d' $patch
+	      if [ $cnt = 1 ] ; then
+		  echo "### Comments for Changeset"
+	      fi
+	      sed -e '1,3d' $patch
 	  } > .patches/mail/${patch#.patches/applied/}
 	  this=$(expr $this + 1)
 	done
+	if [ -f .patches/mail/000Intro ]; then cat .patches/mail/* | sed -n -e 's/^Subject://p'  >> .patches/mail/000Intro ; fi
 	ls .patches/mail
 	;;
 
@@ -690,7 +920,7 @@
 	  ;;
 
      email )
-     	PATH=/usr/lib:/usr/sbin:$PATH
+     	PATH=$HOME/bin:/usr/lib:/usr/sbin:$PATH
           for i in .patches/mail/*
 	  do
 	    if [ -f "$i" ]
--- wiggle-0.6.orig/p.help
+++ wiggle-0.6/p.help
@@ -248,6 +248,14 @@
  discarded.  This is part of the preparation for incorporating
  upstream changes.
 
+recommit
+ Usage: p recommit patchname
+
+ This command will re-apply and re-commit removed patches
+ that successfully apply until the names patch has been applied.
+ Patches are applied in reverse order, which is consistant with
+ the order in which they were removed.
+
 snapshot
  Usage: p snapshot
 



--- NEW FILE wiggle.spec ---
Name:           wiggle
Version:        0.6
Release:        3%{?dist}
Summary:        A tool for applying patches with conflicts

Group:          Development/Tools
License:        GPLv2+
URL:            http://www.cse.unsw.edu.au/~neilb/source/wiggle/
Source0:        http://www.cse.unsw.edu.au/~neilb/source/wiggle/%{name}-%{version}.tar.gz
Patch0:         wiggle-various-changes.patch
Patch1:         wiggle-fix-build.patch

BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  groff, time
#Requires:       

%description
Wiggle is a program for applying patches that 'patch' cannot apply due
to conflicting changes in the original.

Wiggle will always apply all changes in the patch to the original.  If
it cannot find a way to cleanly apply a patch, it inserts it in the
original in a manner similar to 'merge', and reports an unresolvable
conflict.

%prep
%setup -q
%patch0 -p1 -b .orig
%patch1 -p1 -b .orig

%build
make CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags}

%check
make check

%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root,-)
%doc ANNOUNCE COPYING TODO
/usr/bin/wiggle
%{_mandir}/man1/wiggle.1*


%changelog
* Tue Jan 15 2008 Andy Gospodarek <gospo at redhat.com> 0.6-3
- More suggested package cleanups and doc additions

* Mon Jan 14 2008 Andy Gospodarek <gospo at redhat.com> 0.6-2
- Makefile changes and spec-file cleanups

* Mon Jan 14 2008 Andy Gospodarek <gospo at redhat.com> 0.6-1
- Initial build various patches from around the web



Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/wiggle/EL-5/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore	17 Jan 2008 17:14:23 -0000	1.1
+++ .cvsignore	18 Jan 2008 21:04:24 -0000	1.2
@@ -0,0 +1 @@
+wiggle-0.6.tar.gz


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/wiggle/EL-5/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources	17 Jan 2008 17:14:23 -0000	1.1
+++ sources	18 Jan 2008 21:04:24 -0000	1.2
@@ -0,0 +1 @@
+1884607cdebaf730737cb99b2909219b  wiggle-0.6.tar.gz




More information about the fedora-extras-commits mailing list