Package: guix-patches;
Reported by: "Paul A. Patience" <paul <at> apatience.com>
Date: Tue, 2 Jan 2024 05:29:01 UTC
Severity: normal
Tags: patch
Done: Steve George <steve <at> futurile.net>
Bug is archived. No further changes may be made.
Message #11 received at 68201 <at> debbugs.gnu.org (full text, mbox):
From: "Paul A. Patience" <paul <at> apatience.com> To: 68201 <at> debbugs.gnu.org Cc: "Paul A. Patience" <paul <at> apatience.com> Subject: [PATCH 2/2] gnu: fish: Improve package style. Date: Tue, 02 Jan 2024 05:30:00 +0000
* 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 <at> trop.in> ;;; Copyright © 2023 Zheng Junjie <873216071 <at> qq.com> ;;; Copyright © 2023 David Pflug <david <at> pflug.io> +;;; Copyright © 2024 Paul A. Patience <paul <at> 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
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.