diff options
author | Eric Bavier <bavier@member.fsf.org> | 2014-04-07 11:15:48 -0500 |
---|---|---|
committer | Eric Bavier <bavier@member.fsf.org> | 2014-04-07 20:41:25 -0500 |
commit | 8a9d928f57bd37bc2ff2742bee280962ffb9bc21 (patch) | |
tree | 5f5b4e0e33beedb6d3903f4a6c77a9cf10a50afa | |
parent | ce0849cc25e7d0813f1fec82cd97fe3aadf9932b (diff) | |
download | guix-8a9d928f57bd37bc2ff2742bee280962ffb9bc21.tar.gz |
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.
-rw-r--r-- | gnu-system.am | 2 | ||||
-rw-r--r-- | gnu/packages/patches/patchutils-xfail-gendiff-tests.patch | 26 | ||||
-rw-r--r-- | gnu/packages/patchutils.scm | 142 |
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))) |