all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Paul A. Patience" <paul@apatience.com>
To: 68201@debbugs.gnu.org
Cc: "Paul A. Patience" <paul@apatience.com>
Subject: [bug#68201] [PATCH 2/2] gnu: fish: Improve package style.
Date: Tue, 02 Jan 2024 05:30:00 +0000	[thread overview]
Message-ID: <dace4125b3ed4e7f69ae1de09af9640e1ddd18c0.1704173186.git.paul@apatience.com> (raw)
In-Reply-To: <cover.1704173186.git.paul@apatience.com>

* gnu/packages/shells.scm (fish)[arguments]: Use G-expressions.
Drop trailing #t in phases. Move above native-inputs.
[native-inputs]: Add bash and coreutils. Move above inputs.
[home-page]: Move above synopsis.

Change-Id: I964b15f47629fa01d649e586f81eb5ae8e7046e3
---
 gnu/packages/shells.scm | 248 ++++++++++++++++++++--------------------
 1 file changed, 122 insertions(+), 126 deletions(-)

diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 798dba1d7c..bfa32ee0ee 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -22,6 +22,7 @@
 ;;; Copyright © 2022 Andrew Tropin <andrew@trop.in>
 ;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
 ;;; Copyright © 2023 David Pflug <david@pflug.io>
+;;; Copyright © 2024 Paul A. Patience <paul@apatience.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -130,133 +131,129 @@ (define-public fish
        (sha256
         (base32 "1c9slg6azhc9jn1sb75wip4hl9zyibjy9nay505nkw0lnxw766yz"))))
     (build-system cmake-build-system)
+    (arguments
+     (list
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'set-env
+            (lambda _
+              ;; some tests write to $HOME
+              (setenv "HOME" (getcwd))))
+          (add-after 'unpack 'patch-tests
+            (lambda _
+              (let ((coreutils #$(this-package-native-input "coreutils"))
+                    (bash #$(this-package-native-input "bash")))
+                ;; This test sporadically fails in the build container
+                ;; because of leftover zombie processes, which are not
+                ;; reaped automatically:
+                ;; "Found existing zombie processes. Clean up zombies before running this test."
+                ;; Disabling parallel tests does not reliably prevent it.
+                (delete-file "tests/checks/jobs.fish")
+                ;; This test fails.
+                (delete-file "tests/checks/pipeline-pgroup.fish")
+                ;; This one tries to open a terminal & can't simply be deleted.
+                (substitute* "cmake/Tests.cmake"
+                  ((".* interactive\\.fish.*") ""))
+                ;; This one needs to chdir successfully.
+                (substitute* "tests/checks/vars_as_commands.fish"
+                  (("/usr/bin") "/tmp"))
+                ;; These contain absolute path references.
+                (substitute* "src/fish_tests.cpp"
+                  (("/bin/echo" echo) (string-append coreutils echo))
+                  (("/bin/ca" ca) (string-append coreutils ca))
+                  (("\"(/bin/c)\"" _ c) (string-append "\"" coreutils c "\""))
+                  (("/bin/ls_not_a_path" ls-not-a-path)
+                   (string-append coreutils ls-not-a-path))
+                  (("/bin/ls" ls) (string-append coreutils ls))
+                  (("(/bin/)\"" _ bin) (string-append coreutils bin "\""))
+                  (("/bin -" bin) (string-append coreutils bin))
+                  (((string-append
+                     "do_test\\(is_potential_path\\("
+                     "L\"/usr\", wds, vars, PATH_REQUIRE_DIR\\)\\);"))
+                   "")
+                  ;; Not all mentions of /usr... need to exist, but these do.
+                  (("\"/usr(|/lib)\"" _ subdirectory)
+                   (string-append "\"/tmp" subdirectory "\"")))
+                (substitute*
+                    (append (find-files "tests" ".*\\.(in|out|err)$")
+                            (find-files "tests/checks" ".*\\.fish"))
+                  (("/bin/pwd" pwd) (string-append coreutils pwd))
+                  (("/bin/echo" echo) (string-append coreutils echo))
+                  (("/bin/sh" sh) (string-append bash sh))
+                  (("/bin/ls" ls) (string-append coreutils ls)))
+                (substitute* (find-files "tests" ".*\\.(in|out|err)$")
+                  (("/usr/bin") (string-append coreutils "/bin"))))))
+          ;; Source /etc/fish/config.fish from $__fish_sysconf_dir/config.fish.
+          (add-after 'patch-tests 'patch-fish-config
+            (lambda _
+              (let ((port (open-file "etc/config.fish" "a")))
+                (display (string-append
+                          "\n\n"
+                          "# Patched by Guix.\n"
+                          "# Source /etc/fish/config.fish.\n"
+                          "if test -f /etc/fish/config.fish\n"
+                          "    source /etc/fish/config.fish\n"
+                          "end\n")
+                         port)
+                (close-port port))))
+          ;; Embed absolute paths.
+          (add-before 'install 'embed-absolute-paths
+            (lambda _
+              (substitute* "share/functions/__fish_print_help.fish"
+                (("nroff") (which "nroff")))))
+          ;; Enable completions, functions and configurations in user's and
+          ;; system's guix profiles by adding them to __extra_* variables.
+          (add-before 'install 'patch-fish-extra-paths
+            (lambda _
+              (let ((port (open-file "share/__fish_build_paths.fish" "a")))
+                (display
+                 (string-append
+                  "\n\n"
+                  "# Patched by Guix.\n"
+                  "# Enable completions, functions and configurations in user's"
+                  " and system's guix profiles by adding them to __extra_*"
+                  " variables.\n"
+                  "set -l __guix_profile_paths ~/.guix-profile"
+                  " /run/current-system/profile\n"
+                  "set __extra_completionsdir"
+                  " $__guix_profile_paths\"/etc/fish/completions\""
+                  " $__guix_profile_paths\"/share/fish/vendor_completions.d\""
+                  " $__extra_completionsdir\n"
+                  "set __extra_functionsdir"
+                  " $__guix_profile_paths\"/etc/fish/functions\""
+                  " $__guix_profile_paths\"/share/fish/vendor_functions.d\""
+                  " $__extra_functionsdir\n"
+                  "set __extra_confdir"
+                  " $__guix_profile_paths\"/etc/fish/conf.d\""
+                  " $__guix_profile_paths\"/share/fish/vendor_conf.d\""
+                  " $__extra_confdir\n")
+                 port)
+                (close-port port))))
+          ;; Use fish-foreign-env to source /etc/profile.
+          (add-before 'install 'source-etc-profile
+            (lambda _
+              (let ((port (open-file "share/__fish_build_paths.fish" "a")))
+                (display
+                 (string-append
+                  "\n\n"
+                  "# Patched by Guix.\n"
+                  "# Use fish-foreign-env to source /etc/profile.\n"
+                  "if status is-login\n"
+                  "    set fish_function_path "
+                  #$(this-package-input "fish-foreign-env") "/share/fish/functions"
+                  " $__fish_datadir/functions\n"
+                  "    fenv source /etc/profile\n"
+                  "    set -e fish_function_path\n"
+                  "end\n")
+                 port)
+                (close-port port)))))))
+    (native-inputs
+     (list doxygen groff                ; for 'fish --help'
+           bash coreutils procps))      ; for the test suite
     (inputs
      (list fish-foreign-env ncurses pcre2
-           python))  ; for fish_config and manpage completions
-    (native-inputs
-     (list doxygen groff ; for 'fish --help'
-           procps))             ; for the test suite
-    (arguments
-     '(#:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'set-env
-           (lambda _
-             ;; some tests write to $HOME
-             (setenv "HOME" (getcwd))
-             #t))
-         (add-after 'unpack 'patch-tests
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((coreutils (assoc-ref inputs "coreutils"))
-                   (bash (assoc-ref inputs "bash")))
-               ;; This test sporadically fails in the build container
-               ;; because of leftover zombie processes, which are not
-               ;; reaped automatically:
-;; "Found existing zombie processes. Clean up zombies before running this test."
-               ;; Disabling parallel tests does not reliably prevent it.
-               (delete-file "tests/checks/jobs.fish")
-               ;; This test fails.
-               (delete-file "tests/checks/pipeline-pgroup.fish")
-               ;; This one tries to open a terminal & can't simply be deleted.
-               (substitute* "cmake/Tests.cmake"
-                 ((".* interactive\\.fish.*") ""))
-               ;; This one needs to chdir successfully.
-               (substitute* "tests/checks/vars_as_commands.fish"
-                 (("/usr/bin") "/tmp"))
-               ;; These contain absolute path references.
-               (substitute* "src/fish_tests.cpp"
-                 (("/bin/echo" echo) (string-append coreutils echo))
-                 (("/bin/ca" ca) (string-append coreutils ca))
-                 (("\"(/bin/c)\"" _ c) (string-append "\"" coreutils c "\""))
-                 (("/bin/ls_not_a_path" ls-not-a-path)
-                  (string-append coreutils ls-not-a-path))
-                 (("/bin/ls" ls) (string-append coreutils ls))
-                 (("(/bin/)\"" _ bin) (string-append coreutils bin "\""))
-                 (("/bin -" bin) (string-append coreutils bin))
-                 (((string-append
-                    "do_test\\(is_potential_path\\("
-                    "L\"/usr\", wds, vars, PATH_REQUIRE_DIR\\)\\);"))
-                  "")
-                 ;; Not all mentions of /usr... need to exist, but these do.
-                 (("\"/usr(|/lib)\"" _ subdirectory)
-                  (string-append "\"/tmp" subdirectory "\"")))
-               (substitute*
-                 (append (find-files "tests" ".*\\.(in|out|err)$")
-                         (find-files "tests/checks" ".*\\.fish"))
-                 (("/bin/pwd" pwd) (string-append coreutils pwd))
-                 (("/bin/echo" echo) (string-append coreutils echo))
-                 (("/bin/sh" sh) (string-append bash sh))
-                 (("/bin/ls" ls) (string-append coreutils ls)))
-               (substitute* (find-files "tests" ".*\\.(in|out|err)$")
-                 (("/usr/bin") (string-append coreutils "/bin")))
-               #t)))
-         ;; Source /etc/fish/config.fish from $__fish_sysconf_dir/config.fish.
-         (add-after 'patch-tests 'patch-fish-config
-           (lambda _
-             (let ((port (open-file "etc/config.fish" "a")))
-               (display (string-append
-                         "\n\n"
-                         "# Patched by Guix.\n"
-                         "# Source /etc/fish/config.fish.\n"
-                         "if test -f /etc/fish/config.fish\n"
-                         "    source /etc/fish/config.fish\n"
-                         "end\n")
-                        port)
-               (close-port port))
-             #t))
-         ;; Embed absolute paths.
-         (add-before 'install 'embed-absolute-paths
-           (lambda _
-             (substitute* "share/functions/__fish_print_help.fish"
-               (("nroff") (which "nroff")))
-             #t))
-         ;; Enable completions, functions and configurations in user's and
-         ;; system's guix profiles by adding them to __extra_* variables.
-         (add-before 'install 'patch-fish-extra-paths
-           (lambda _
-             (let ((port (open-file "share/__fish_build_paths.fish" "a")))
-               (display
-                (string-append
-                 "\n\n"
-                 "# Patched by Guix.\n"
-                 "# Enable completions, functions and configurations in user's"
-                 " and system's guix profiles by adding them to __extra_*"
-                 " variables.\n"
-                 "set -l __guix_profile_paths ~/.guix-profile"
-                 " /run/current-system/profile\n"
-                 "set __extra_completionsdir"
-                 " $__guix_profile_paths\"/etc/fish/completions\""
-                 " $__guix_profile_paths\"/share/fish/vendor_completions.d\""
-                 " $__extra_completionsdir\n"
-                 "set __extra_functionsdir"
-                 " $__guix_profile_paths\"/etc/fish/functions\""
-                 " $__guix_profile_paths\"/share/fish/vendor_functions.d\""
-                 " $__extra_functionsdir\n"
-                 "set __extra_confdir"
-                 " $__guix_profile_paths\"/etc/fish/conf.d\""
-                 " $__guix_profile_paths\"/share/fish/vendor_conf.d\""
-                 " $__extra_confdir\n")
-                port)
-               (close-port port))
-             #t))
-         ;; Use fish-foreign-env to source /etc/profile.
-         (add-before 'install 'source-etc-profile
-           (lambda* (#:key inputs #:allow-other-keys)
-             (let ((port (open-file "share/__fish_build_paths.fish" "a")))
-               (display
-                (string-append
-                 "\n\n"
-                 "# Patched by Guix.\n"
-                 "# Use fish-foreign-env to source /etc/profile.\n"
-                 "if status is-login\n"
-                 "    set fish_function_path "
-                 (assoc-ref inputs "fish-foreign-env") "/share/fish/functions"
-                 " $__fish_datadir/functions\n"
-                 "    fenv source /etc/profile\n"
-                 "    set -e fish_function_path\n"
-                 "end\n")
-                port)
-               (close-port port))
-             #t)))))
+           python))                  ; for fish_config and manpage completions
+    (home-page "https://fishshell.com/")
     (synopsis "The friendly interactive shell")
     (description
      "Fish (friendly interactive shell) is a shell focused on interactive use,
@@ -267,7 +264,6 @@ (define-public fish
 access to all the fish documentation in your web browser.  Other features
 include smart terminal handling based on terminfo, an easy to search history,
 and syntax highlighting.")
-    (home-page "https://fishshell.com/")
     (license license:gpl2)))
 
 (define-public fish-foreign-env
-- 
2.41.0






      parent reply	other threads:[~2024-01-02  5:31 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-02  5:28 [bug#68201] [PATCH 0/2] gnu: fish: Update to 3.7.0 Paul A. Patience
2024-01-02  5:29 ` [bug#68201] [PATCH 1/2] " Paul A. Patience
2024-01-02  5:30 ` Paul A. Patience [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=dace4125b3ed4e7f69ae1de09af9640e1ddd18c0.1704173186.git.paul@apatience.com \
    --to=paul@apatience.com \
    --cc=68201@debbugs.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.