guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Add patchutils and quilt


From: Eric Bavier
Subject: [PATCH] Add patchutils and quilt
Date: Mon, 07 Apr 2014 11:18:46 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux)

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

Comments welcome.

>From df0c351c53ede204d4b60bad0c0709fec0708675 Mon Sep 17 00:00:00 2001
From: Eric Bavier <address@hidden>
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 <address@hidden>
+;;;
+;;; 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

-- 
`~Eric

reply via email to

[Prev in Thread] Current Thread [Next in Thread]