summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--gnu-system.am2
-rw-r--r--gnu/packages/patches/patchutils-xfail-gendiff-tests.patch26
-rw-r--r--gnu/packages/patchutils.scm142
3 files changed, 170 insertions, 0 deletions
diff --git a/gnu-system.am b/gnu-system.am
index 394871d931..f25970a1ac 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 0000000000..b2e77d22f2
--- /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 0000000000..48f4d29584
--- /dev/null
+++ b/gnu/packages/patchutils.scm
@@ -0,0 +1,142 @@
+;;; 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.3")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "http://cyberelk.net/tim/data/patchutils/stable/"
+                          name "-" version ".tar.xz"))
+      (sha256
+       (base32
+        "0g5df00cj4nczrmr4k791l7la0sq2wnf8rn981fsrz1f3d2yix4i"))
+      (patches
+       (list (search-patch "patchutils-xfail-gendiff-tests.patch")))))
+    (build-system gnu-build-system)
+    (inputs `(("perl" ,perl)))
+    (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://cyberelk.net/tim/software/patchutils")
+    (synopsis "Collection of tools for manipulating patch files")
+    (description
+     "Patchutils is a collection of programs that can manipulate patch files
+in useful ways such as interpolating between two pre-patches, combining two
+incremental patches, fixing line numbers in hand-edited patches, and simply
+listing the files modified by a patch.")
+    (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)
+              ("less" ,less)
+              ("file" ,file)
+              ("ed" ,ed)))
+    (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)))