guix-commits
[Top][All Lists]
Advanced

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

02/04: gnu: quilt: Fix wrapping and improve testing.


From: guix-commits
Subject: 02/04: gnu: quilt: Fix wrapping and improve testing.
Date: Tue, 2 May 2023 15:19:28 -0400 (EDT)

bavier pushed a commit to branch master
in repository guix.

commit 83f4640fdf370ae1b6677cb606b0a3296810beb7
Author: Eric Bavier <bavier@posteo.net>
AuthorDate: Tue May 2 10:56:55 2023 -0500

    gnu: quilt: Fix wrapping and improve testing.
    
    * gnu/packages/patchutils.scm (quilt)[native-inputs]: Use new style; fixes
    lint warning.
    [inputs]: Add bash-minimal, gzip, diffutils, findutils, and tar.
    [arguments]: Move check phase after other install.  Simplify wrapping and 
wrap
    one utility script.  Run tests with PATH unset and test scripts patched to
    detect insufficient wrapping.
---
 gnu/packages/patchutils.scm | 76 +++++++++++++++++++++++++++++----------------
 1 file changed, 49 insertions(+), 27 deletions(-)

diff --git a/gnu/packages/patchutils.scm b/gnu/packages/patchutils.scm
index ee2460b422..1527590af5 100644
--- a/gnu/packages/patchutils.scm
+++ b/gnu/packages/patchutils.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2018, 2023 Eric Bavier <bavier@posteo.net>
 ;;; Copyright © 2015, 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2018–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Christopher Baines <mail@cbaines.net>
@@ -39,6 +39,7 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages bash)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages django)
   #:use-module (gnu packages freedesktop)
@@ -122,43 +123,64 @@ listing the files modified by a patch.")
        (patches (search-patches "quilt-grep-compat.patch"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("gettext" ,gettext-minimal)))
-    (inputs (list perl less file ed diffstat))
+     (list gettext-minimal))
+    (inputs
+     (list bash-minimal perl less file gzip ed
+           diffutils diffstat findutils tar))
     (arguments
      '(#:parallel-tests? #f
        #:phases
        (modify-phases %standard-phases
-         (add-before 'check 'patch-tests
-           (lambda _
-             (substitute*
-                 '("test/run"
-                   "test/edit.test")
-               (("/bin/sh") (which "sh")))
-             #t))
+         (delete 'check)
          (add-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"))
-                    (diffstat  (assoc-ref inputs "diffstat"))
-                    (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")))
+             (let ((cmd-path (lambda (cmd) (dirname (which cmd))))
+                   (out      (assoc-ref outputs "out")))
                (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
-                               diffstat)))))
-             #t)))))
+                   ,(map cmd-path
+                         (list "bash" "diff" "diffstat" "ed" "file" "find" 
"grep"
+                               "gzip" "less" "patch" "perl" "rm" "sed" 
"tar"))))
+               (wrap-program (string-append out 
"/share/quilt/scripts/backup-files")
+                 `("PATH" ":" prefix
+                   ,(map cmd-path
+                         (list "find" "grep" "mkdir")))))))
+         (add-after 'compress-documentation 'check
+           (lambda _
+             (substitute* '("test/run" "test/edit.test")
+               (("/bin/sh") (which "sh"))
+               (("rm -rf") (string-append (which "rm") " -rf")))
+             (substitute* "Makefile"
+               (("^(PATH|QUILT_DIR).*" &)
+                (string-append "#" &)) ; Test the installed 'quilt'
+               (("export QUILT_DIR") "export")
+               (("\\| sort") (string-append "| " (which "sort")))
+               (("\\| sed") (string-append "| " (which "sed")))
+               (("(chmod|touch)" &) (which &)))
+             ;; Tests are scripts interpreted by `test/run` and may specify
+             ;; the execution of several tools.  But PATH will be empty, so
+             ;; rewrite with the full file name:
+             (setenv "PATH" (string-append %output "/bin" ":" (getenv "PATH")))
+             (substitute* (find-files "test" "\\.test$")
+               (("([\\$\\|] )([[:graph:]]+)([[:blank:]\n]+)"
+                 & > cmd <)
+                (if (string=? cmd "zcat")
+                    ;; The `zcat` program is a script, and it will not be able
+                    ;; to invoke its `gzip` with PATH unset.  It's a simple
+                    ;; script though, so just translate here:
+                    (string-append > (which "gzip") " -cd " <)
+                    (or (and=> (which cmd)
+                               (lambda (p) (string-append > p <)))
+                        &))))
+             (let ((make (which "make")))
+               ;; Assert the installed 'quilt' can find utilities it needs.
+               (unsetenv "PATH")
+               ;; Used by some tests for access to internal "scripts"
+               (setenv "QUILT_DIR" (string-append %output "/share/quilt"))
+               (invoke make "check")))))))
     (home-page "https://savannah.nongnu.org/projects/quilt/";)
     (synopsis "Script for managing patches to software")
     (description



reply via email to

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