unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] Add patchutils and quilt
@ 2014-04-07 16:18 Eric Bavier
  2014-04-07 19:10 ` Ludovic Courtès
  0 siblings, 1 reply; 2+ messages in thread
From: Eric Bavier @ 2014-04-07 16:18 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 85 bytes --]

The following patch adds two new packages: patchutils and quilt.

Comments welcome.


[-- Attachment #2: 0001-gnu-Add-patchutils-and-quilt.patch --]
[-- Type: text/x-diff, Size: 10125 bytes --]

From df0c351c53ede204d4b60bad0c0709fec0708675 Mon Sep 17 00:00:00 2001
From: Eric Bavier <bavier@member.fsf.org>
Date: Mon, 7 Apr 2014 11:15:48 -0500
Subject: [PATCH] gnu: Add patchutils and quilt

* gnu/packages/patchutils.scm: New file
* gnu/packages/patches/patchutils-xfail-gendiff-tests.patch: New patch
* gnu-system.am (GNU_SYSTEM_MODULES): Add patchutils.
  (dist_patch_DATA): Add patch.
---
 gnu-system.am                                      |   2 +
 .../patches/patchutils-xfail-gendiff-tests.patch   |  26 ++++
 gnu/packages/patchutils.scm                        | 157 +++++++++++++++++++++
 3 files changed, 185 insertions(+)
 create mode 100644 gnu/packages/patches/patchutils-xfail-gendiff-tests.patch
 create mode 100644 gnu/packages/patchutils.scm

diff --git a/gnu-system.am b/gnu-system.am
index 5d817cc..38cf869 100644
--- a/gnu-system.am
+++ b/gnu-system.am
@@ -169,6 +169,7 @@ GNU_SYSTEM_MODULES =				\
   gnu/packages/package-management.scm		\
   gnu/packages/parallel.scm			\
   gnu/packages/parted.scm			\
+  gnu/packages/patchutils.scm			\
   gnu/packages/pcre.scm				\
   gnu/packages/pdf.scm				\
   gnu/packages/pem.scm				\
@@ -312,6 +313,7 @@ dist_patch_DATA =						\
   gnu/packages/patches/mit-krb5-init-fix.patch			\
   gnu/packages/patches/mpc123-initialize-ao.patch		\
   gnu/packages/patches/patchelf-page-size.patch			\
+  gnu/packages/patches/patchutils-xfail-gendiff-tests.patch	\
   gnu/packages/patches/perl-no-sys-dirs.patch			\
   gnu/packages/patches/plotutils-libpng-jmpbuf.patch		\
   gnu/packages/patches/procps-make-3.82.patch			\
diff --git a/gnu/packages/patches/patchutils-xfail-gendiff-tests.patch b/gnu/packages/patches/patchutils-xfail-gendiff-tests.patch
new file mode 100644
index 0000000..b2e77d2
--- /dev/null
+++ b/gnu/packages/patches/patchutils-xfail-gendiff-tests.patch
@@ -0,0 +1,26 @@
+The gendiff1 and gendiff2 tests need the gendiff script that's distributed
+with the rpm package management tool.  Without that script, these tests are
+expected to fail.
+
+Need to mark one of the tests as PHONY to get permissions set correctly on
+built scripts.
+
+--- a/Makefile.in	2011-02-10 09:44:43.000000000 -0600
++++ b/Makefile.in	2014-03-06 17:27:55.610048953 -0600
+@@ -378,6 +378,8 @@
+ # These ones don't work yet.
+ # Feel free to send me patches. :-)
+ XFAIL_TESTS = \
++	tests/gendiff1/run-test \
++	tests/gendiff2/run-test \
+ 	tests/delhunk5/run-test \
+ 	tests/delhunk6/run-test
+ 
+@@ -1106,6 +1108,7 @@
+ 	rm -f $(DESTDIR)$(bindir)/"`echo lsdiff|sed '$(transform)'`"
+ 	rm -f $(DESTDIR)$(bindir)/"`echo grepdiff|sed '$(transform)'`"
+ 
++.PHONY: tests/combine1/run-test
+ tests/combine1/run-test: src/combinediff$(EXEEXT) src/flipdiff$(EXEEXT) \
+ 		src/lsdiff$(EXEEXT) src/grepdiff$(EXEEXT)
+ 	for script in $(bin_SCRIPTS); do \
diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
new file mode 100644
index 0000000..9252b53
--- /dev/null
+++ b/gnu/packages/patchutils.scm
@@ -0,0 +1,157 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix 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 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages patchutils)
+  #:use-module (guix packages)
+  #:use-module (guix licenses)
+  #:use-module (guix download)
+  #:use-module (guix build-system gnu)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages ed)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
+  #:use-module (gnu packages file)
+  #:use-module (gnu packages gawk)
+  #:use-module (gnu packages less)
+  #:use-module (gnu packages perl))
+
+(define-public patchutils
+  (package
+    (name "patchutils")
+    (version "0.3.2")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://cyberelk.net/tim/data/patchutils/stable/"
+                          name "-" version ".tar.bz2"))
+      (sha256
+       (base32
+        "08dffxlkpjafyfrb98hs39h5d8pwgrqrkndwqvxymyj23dbimszx"))
+      (patches
+       (list (search-patch "patchutils-xfail-gendiff-tests.patch")))))
+    (build-system gnu-build-system)
+    (inputs `(("perl" ,perl)
+              ("diffutils" ,diffutils)
+              ("patch" ,patch)
+              ("sed" ,sed)
+              ("gawk" ,gawk)))
+    (arguments
+     '(#:parallel-tests? #f
+       #:phases (alist-cons-before
+                 'check 'patch-test-scripts
+                 (lambda _
+                   (let ((echo (which "echo")))
+                     (substitute*
+                         (find-files "tests" "^run-test$")
+                       (("/bin/echo") echo))))
+                 (alist-cons-after
+                  'install 'wrap-program
+                  ;; Point installed scripts to the utilities they need.
+                  (lambda* (#:key inputs outputs #:allow-other-keys)
+                    (let* ((out       (assoc-ref outputs "out"))
+                           (diffutils (assoc-ref inputs "diffutils"))
+                           (sed       (assoc-ref inputs "sed"))
+                           (gawk      (assoc-ref inputs "gawk")))
+                      (for-each
+                       (lambda (prog)
+                         (wrap-program (string-append out "/bin/" prog)
+                                       `("PATH" ":" prefix
+                                         ,(map (lambda (dir)
+                                                 (string-append dir "/bin"))
+                                               (list diffutils sed gawk)))))
+                       '("dehtmldiff" "editdiff" "espdiff"))))
+                  %standard-phases))))
+    (home-page "http://freecode.com/projects/patchutils")
+    (synopsis "Collection of tools for manupulating patch files")
+    (description
+     "Patchutils contains a collection of tools for manipulating patch files:
+interdiff, combinediff, flipdiff, filterdiff, fixcvsdiff, rediff, lsdiff,
+grepdiff, splitdiff, recountdiff, and unwrapdiff. You can use interdiff to
+create an incremental patch between two patches that are against a common
+source tree, combinediff for creating a cumulative diff from two incremental
+patches, and flipdiff to transpose two incremental patches. Filterdiff is for
+extracting or excluding patches from a patch set based on modified files
+matching shell wildcards. Lsdiff lists modified files in a patch. Rediff,
+recountdiff, and unwrapdiff correct hand-edited (or otherwise broken)
+patches.")
+    (license gpl2+)))
+
+(define-public quilt
+  (package
+    (name "quilt")
+    (version "0.61")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://savannah/quilt/"
+                          name "-" version ".tar.gz"))
+      (sha256
+       (base32
+        "1hwz58djkq9cv46sjwxbp2v5m8yjr41kd0nm1zm1xm6418khmv0y"))))
+    (build-system gnu-build-system)
+    (inputs `(("perl" ,perl)
+              ("diffutils" ,diffutils)
+              ("findutils" ,findutils)
+              ("less" ,less)
+              ("file" ,file)
+              ("ed" ,ed)
+              ("sed" ,sed)
+              ("bash" ,bash)
+              ("grep" ,grep)))
+    (arguments
+     '(#:parallel-tests? #f
+       #:phases 
+       (alist-cons-before
+        'check 'patch-tests
+        (lambda _
+          (substitute*
+              '("test/run"
+                "test/edit.test") 
+            (("/bin/sh") (which "sh")))
+          ;; TODO: Run the mail tests once the mail feature can be supported.
+          (delete-file "test/mail.test"))
+        (alist-cons-after
+         'install 'wrap-program
+         ;; quilt's configure checks for the absolute path to the utilities it
+         ;; needs, but uses only the name when invoking them, so we need to
+         ;; make sure the quilt script can find those utilities when run.
+         (lambda* (#:key inputs outputs #:allow-other-keys)
+           (let* ((out       (assoc-ref outputs "out"))
+                  (coreutils (assoc-ref inputs "coreutils"))
+                  (diffutils (assoc-ref inputs "diffutils"))
+                  (findutils (assoc-ref inputs "findutils"))
+                  (less      (assoc-ref inputs "less"))
+                  (file      (assoc-ref inputs "file"))
+                  (ed        (assoc-ref inputs "ed"))
+                  (sed       (assoc-ref inputs "sed"))
+                  (bash      (assoc-ref inputs "bash"))
+                  (grep      (assoc-ref inputs "grep")))
+             (wrap-program (string-append out "/bin/quilt")
+                           `("PATH" ":" prefix
+                             ,(map (lambda (dir)
+                                     (string-append dir "/bin"))
+                                   (list coreutils diffutils findutils
+                                         less file ed sed bash grep))))))
+         %standard-phases))))
+    (home-page "https://savannah.nongnu.org/projects/quilt/")
+    (synopsis "Script for managing patches to software")
+    (description
+     "Quilt allows you to easily manage large numbers of patches by keeping
+track of the changes each patch makes. Patches can be applied, un-applied,
+refreshed, and more. ")
+    (license gpl2)))
-- 
1.8.4


[-- Attachment #3: Type: text/plain, Size: 12 bytes --]


-- 
`~Eric

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] Add patchutils and quilt
  2014-04-07 16:18 [PATCH] Add patchutils and quilt Eric Bavier
@ 2014-04-07 19:10 ` Ludovic Courtès
  0 siblings, 0 replies; 2+ messages in thread
From: Ludovic Courtès @ 2014-04-07 19:10 UTC (permalink / raw)
  To: Eric Bavier; +Cc: guix-devel

Eric Bavier <ericbavier@gmail.com> skribis:

> From df0c351c53ede204d4b60bad0c0709fec0708675 Mon Sep 17 00:00:00 2001
> From: Eric Bavier <bavier@member.fsf.org>
> Date: Mon, 7 Apr 2014 11:15:48 -0500
> Subject: [PATCH] gnu: Add patchutils and quilt
>
> * gnu/packages/patchutils.scm: New file
> * gnu/packages/patches/patchutils-xfail-gendiff-tests.patch: New patch
> * gnu-system.am (GNU_SYSTEM_MODULES): Add patchutils.
>   (dist_patch_DATA): Add patch.

[...]

> +    (inputs `(("perl" ,perl)
> +              ("diffutils" ,diffutils)
> +              ("patch" ,patch)
> +              ("sed" ,sed)
> +              ("gawk" ,gawk)))

Only Perl needs to be kept; the others are implicitly provided.

If Perl is also needed at build time, it should be added to
‘native-inputs’.

> +    (synopsis "Collection of tools for manupulating patch files")
> +    (description
> +     "Patchutils contains a collection of tools for manipulating patch files:
> +interdiff, combinediff, flipdiff, filterdiff, fixcvsdiff, rediff, lsdiff,
> +grepdiff, splitdiff, recountdiff, and unwrapdiff. You can use interdiff to
> +create an incremental patch between two patches that are against a common
> +source tree, combinediff for creating a cumulative diff from two incremental
> +patches, and flipdiff to transpose two incremental patches. Filterdiff is for
> +extracting or excluding patches from a patch set based on modified files
> +matching shell wildcards. Lsdiff lists modified files in a patch. Rediff,
> +recountdiff, and unwrapdiff correct hand-edited (or otherwise broken)
> +patches.")

It would be perfect if you could shorten that to 6-7 lines, and add two
spaces after end-of-sentence periods.

> +    (inputs `(("perl" ,perl)
> +              ("diffutils" ,diffutils)
> +              ("findutils" ,findutils)
> +              ("less" ,less)
> +              ("file" ,file)
> +              ("ed" ,ed)
> +              ("sed" ,sed)
> +              ("bash" ,bash)
> +              ("grep" ,grep)))

Likewise: only Perl, less, file, and ed must be kept.

Could you change that before pushing?

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2014-04-07 19:10 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-07 16:18 [PATCH] Add patchutils and quilt Eric Bavier
2014-04-07 19:10 ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).