* [bug#34153] [PATCH] Update fish to 3.0.0.
@ 2019-01-21 8:19 Meiyo Peng
2019-01-28 22:13 ` bug#34153: " Ludovic Courtès
0 siblings, 1 reply; 3+ messages in thread
From: Meiyo Peng @ 2019-01-21 8:19 UTC (permalink / raw)
To: 34153
[-- Attachment #1: Type: text/plain, Size: 115 bytes --]
Hi,
This patch series updates fish shell to 3.0.0 and enable fish to source
/etc/profile using fish-foreign-env.
[-- Attachment #2: 0001-gnu-fish-Update-to-3.0.0.patch --]
[-- Type: text/x-patch, Size: 7214 bytes --]
From 8d20b9d62d0d6c6c9c572b5871d0063c8b4fdf07 Mon Sep 17 00:00:00 2001
From: Meiyo Peng <meiyo.peng@gmail.com>
Date: Sun, 6 Jan 2019 22:11:36 +0800
Subject: [PATCH 1/3] gnu: fish: Update to 3.0.0.
* gnu/packages/shells.scm (fish): Update to 3.0.0.
[source]: Remove dead URL.
[inputs]: Remove bc. Replace python-wrapper with python.
[arguments]: Remove configure-flags. Enable fish to source
/etc/fish/config.fish. Enable completions, functions and configurations
in user's and system's guix profiles.
---
gnu/packages/shells.scm | 110 ++++++++++++++++++++++++++--------------
1 file changed, 72 insertions(+), 38 deletions(-)
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index edf747de4..e92b2fcc6 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2017, 2018 Nils Gillmann <ng0@n0.is>
;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -27,7 +28,6 @@
(define-module (gnu packages shells)
#:use-module (gnu packages)
- #:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
@@ -89,51 +89,85 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
(define-public fish
(package
(name "fish")
- (version "2.7.1")
- (source (origin
- (method url-fetch)
- (uri
- (list
- (string-append "https://fishshell.com/files/"
- version "/fish-" version ".tar.gz")
- (string-append "https://github.com/fish-shell/fish-shell/"
- "releases/download/" version "/"
- name "-" version ".tar.gz")))
- (sha256
- (base32
- "0nhc3yc5lnnan7zmxqqxm07rdpwjww5ijy45ll2njdc6fnfb2az4"))
- (modules '((guix build utils)))
- ;; Don't try to install /etc/fish/config.fish.
- (snippet '(begin
- (substitute* "Makefile.in"
- ((".*INSTALL.*sysconfdir.*fish.*") ""))
- #t))))
+ (version "3.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/fish-shell/fish-shell/"
+ "releases/download/" version "/"
+ name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1kzjd0n0sfslkd36lzrvvvgy3qwkd9y466bkrqlnhd5h9dhx77ga"))))
(build-system gnu-build-system)
- (native-inputs
- `(("doxygen" ,doxygen)))
(inputs
- `(("bc" ,bc)
+ `(("groff" ,groff) ; for 'fish --help'
("ncurses" ,ncurses)
- ("groff" ,groff) ;for 'fish --help'
- ("pcre2" ,pcre2) ;don't use the bundled PCRE2
- ("python" ,python-wrapper))) ;for fish_config and manpage completions
+ ("pcre2" ,pcre2) ; don't use the bundled PCRE2
+ ("python" ,python))) ; for fish_config and manpage completions
+ (native-inputs
+ `(("doxygen" ,doxygen)))
(arguments
- '(#:tests? #f ; no check target
- #:configure-flags '("--sysconfdir=/etc")
+ '(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
- ;; Embed absolute paths to store items.
- (add-after 'unpack 'embed-store-paths
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* '("share/functions/math.fish"
- "share/functions/seq.fish")
- (("\\| bc")
- (string-append "| " (assoc-ref %build-inputs "bc")
- "/bin/bc")))
- (substitute* "share/functions/fish_update_completions.fish"
- (("python") (which "python")))
+ (add-after 'unpack 'patch-source
+ (lambda _
+ (substitute* '("build_tools/build_commands_hdr.sh"
+ "build_tools/build_user_doc.sh")
+ (("/usr/bin/env") "env"))
+ #t))
+ ;; Embed absolute paths.
+ (add-before 'install 'embed-absolute-paths
+ (lambda _
+ (substitute* '("share/functions/__fish_config_interactive.fish"
+ "share/functions/fish_config.fish"
+ "share/functions/fish_update_completions.fish")
+ (("python3") (which "python3")))
(substitute* "share/functions/__fish_print_help.fish"
(("nroff") (which "nroff")))
+ #t))
+ ;; Source /etc/fish/config.fish from $__fish_sysconf_dir/config.fish.
+ (add-before 'install '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))
+ ;; 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)))))
(synopsis "The friendly interactive shell")
(description
--
2.20.1
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-gnu-Add-fish-foreign-env.patch --]
[-- Type: text/x-patch, Size: 3243 bytes --]
From da8487fe9b9a0a0308f7b929f9e95e8e8297de26 Mon Sep 17 00:00:00 2001
From: Meiyo Peng <meiyo.peng@gmail.com>
Date: Sun, 20 Jan 2019 21:41:21 +0800
Subject: [PATCH 2/3] gnu: Add fish-foreign-env.
* gnu/packages/shells.scm (fish-foreign-env): New variable.
---
gnu/packages/shells.scm | 50 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index e92b2fcc6..8e2ca2a9a 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -30,6 +30,7 @@
#:use-module (gnu packages)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
+ #:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages documentation)
#:use-module (gnu packages groff)
@@ -45,6 +46,7 @@
#:use-module (gnu packages scheme)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
+ #:use-module (guix build-system trivial)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix licenses)
@@ -182,6 +184,54 @@ and syntax highlighting.")
(home-page "https://fishshell.com/")
(license gpl2)))
+(define-public fish-foreign-env
+ (package
+ (name "fish-foreign-env")
+ (version "0.20190116")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/oh-my-fish/plugin-foreign-env.git")
+ (commit "dddd9213272a0ab848d474d0cbde12ad034e65bc")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "00xqlyl3lffc5l0viin1nyp819wf81fncqyz87jx8ljjdhilmgbs"))))
+ (build-system trivial-build-system)
+ (arguments
+ '(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let* ((source (assoc-ref %build-inputs "source"))
+ (out (assoc-ref %outputs "out"))
+ (func-path (string-append out "/share/fish/functions")))
+ (mkdir-p func-path)
+ (copy-recursively (string-append source "/functions")
+ func-path)
+
+ ;; Embed absolute paths.
+ (substitute* `(,(string-append func-path "/fenv.fish")
+ ,(string-append func-path "/fenv.apply.fish")
+ ,(string-append func-path "/fenv.main.fish"))
+ (("bash")
+ (string-append (assoc-ref %build-inputs "bash") "/bin/bash"))
+ (("sed")
+ (string-append (assoc-ref %build-inputs "sed") "/bin/sed"))
+ ((" tr ")
+ (string-append " " (assoc-ref %build-inputs "coreutils")
+ "/bin/tr ")))))))
+ (inputs
+ `(("bash" ,bash)
+ ("coreutils" ,coreutils)
+ ("sed" ,sed)))
+ (home-page "https://github.com/oh-my-fish/plugin-foreign-env")
+ (synopsis "Foreign environment interface for fish shell")
+ (description "@code{fish-foreign-env} wraps bash script execution in a way
+that environment variables that are exported or modified get imported back
+into fish.")
+ (license expat)))
+
(define-public rc
(package
(name "rc")
--
2.20.1
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-gnu-fish-Use-fish-foreign-env-to-source-etc-profile.patch --]
[-- Type: text/x-patch, Size: 2272 bytes --]
From aadeb9dea8aff0db8a339cc11d006abff4736fdb Mon Sep 17 00:00:00 2001
From: Meiyo Peng <meiyo.peng@gmail.com>
Date: Sun, 20 Jan 2019 21:42:15 +0800
Subject: [PATCH 3/3] gnu: fish: Use fish-foreign-env to source /etc/profile.
* gnu/packages/shells.scm (fish): Use fish-foreign-env to source /etc/profile
when user logs in.
---
gnu/packages/shells.scm | 22 +++++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 8e2ca2a9a..d0561559e 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -102,7 +102,8 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
(base32 "1kzjd0n0sfslkd36lzrvvvgy3qwkd9y466bkrqlnhd5h9dhx77ga"))))
(build-system gnu-build-system)
(inputs
- `(("groff" ,groff) ; for 'fish --help'
+ `(("fish-foreign-env" ,fish-foreign-env)
+ ("groff" ,groff) ; for 'fish --help'
("ncurses" ,ncurses)
("pcre2" ,pcre2) ; don't use the bundled PCRE2
("python" ,python))) ; for fish_config and manpage completions
@@ -170,6 +171,25 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
" $__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)))))
(synopsis "The friendly interactive shell")
(description
--
2.20.1
[-- Attachment #5: Type: text/plain, Size: 42 bytes --]
--
Meiyo Peng
https://www.pengmeiyu.com/
^ permalink raw reply related [flat|nested] 3+ messages in thread
* bug#34153: [PATCH] Update fish to 3.0.0.
2019-01-21 8:19 [bug#34153] [PATCH] Update fish to 3.0.0 Meiyo Peng
@ 2019-01-28 22:13 ` Ludovic Courtès
2019-01-29 0:45 ` [bug#34153] " Meiyo Peng
0 siblings, 1 reply; 3+ messages in thread
From: Ludovic Courtès @ 2019-01-28 22:13 UTC (permalink / raw)
To: Meiyo Peng; +Cc: 34153-done
Hello Meiyo,
Meiyo Peng <meiyo@disroot.org> skribis:
> This patch series updates fish shell to 3.0.0 and enable fish to source
> /etc/profile using fish-foreign-env.
I don’t use Fish so I don’t really have an opinion but it looks
reasonable to me. If it breaks, users will yell at you anyway. ;-)
>>From 8d20b9d62d0d6c6c9c572b5871d0063c8b4fdf07 Mon Sep 17 00:00:00 2001
> From: Meiyo Peng <meiyo.peng@gmail.com>
> Date: Sun, 6 Jan 2019 22:11:36 +0800
> Subject: [PATCH 1/3] gnu: fish: Update to 3.0.0.
>
> * gnu/packages/shells.scm (fish): Update to 3.0.0.
> [source]: Remove dead URL.
> [inputs]: Remove bc. Replace python-wrapper with python.
> [arguments]: Remove configure-flags. Enable fish to source
> /etc/fish/config.fish. Enable completions, functions and configurations
> in user's and system's guix profiles.
[...]
>>From da8487fe9b9a0a0308f7b929f9e95e8e8297de26 Mon Sep 17 00:00:00 2001
> From: Meiyo Peng <meiyo.peng@gmail.com>
> Date: Sun, 20 Jan 2019 21:41:21 +0800
> Subject: [PATCH 2/3] gnu: Add fish-foreign-env.
>
> * gnu/packages/shells.scm (fish-foreign-env): New variable.
[...]
>>From aadeb9dea8aff0db8a339cc11d006abff4736fdb Mon Sep 17 00:00:00 2001
> From: Meiyo Peng <meiyo.peng@gmail.com>
> Date: Sun, 20 Jan 2019 21:42:15 +0800
> Subject: [PATCH 3/3] gnu: fish: Use fish-foreign-env to source /etc/profile.
>
> * gnu/packages/shells.scm (fish): Use fish-foreign-env to source /etc/profile
> when user logs in.
Applied all three patches. Thanks for working on it!
Ludo’.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [bug#34153] [PATCH] Update fish to 3.0.0.
2019-01-28 22:13 ` bug#34153: " Ludovic Courtès
@ 2019-01-29 0:45 ` Meiyo Peng
0 siblings, 0 replies; 3+ messages in thread
From: Meiyo Peng @ 2019-01-29 0:45 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: 34153
Hi Ludovic,
Ludovic Courtès writes:
>> This patch series updates fish shell to 3.0.0 and enable fish to source
>> /etc/profile using fish-foreign-env.
>
> I don’t use Fish so I don’t really have an opinion but it looks
> reasonable to me. If it breaks, users will yell at you anyway. ;-)
Yells are welcome. ;-)
--
Meiyo Peng
https://www.pengmeiyu.com/
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-01-29 0:46 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-21 8:19 [bug#34153] [PATCH] Update fish to 3.0.0 Meiyo Peng
2019-01-28 22:13 ` bug#34153: " Ludovic Courtès
2019-01-29 0:45 ` [bug#34153] " Meiyo Peng
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).