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