X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/91653e074fb92981b9b1a89f1391aedac806e65a..34b81a9cddcfd4b5b2aa041d644833e2211da8c9:/gnu/packages/shells.scm diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 8f3aa9b5f1..4c832c0702 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -5,10 +5,11 @@ ;;; Copyright © 2015 Jeff Mickey ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2016 Stefan Reichör -;;; Copyright © 2017 Ricardo Wurmus +;;; Copyright © 2017, 2018 Ricardo Wurmus ;;; Copyright © 2017, 2018 Nils Gillmann ;;; Copyright © 2017, 2018 Leo Famulari ;;; Copyright © 2017 Arun Isaac +;;; Copyright © 2019 Meiyo Peng ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,9 +28,9 @@ (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 bash) #:use-module (gnu packages bison) #:use-module (gnu packages documentation) #:use-module (gnu packages groff) @@ -40,10 +41,12 @@ #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #: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) @@ -52,7 +55,7 @@ (define-public dash (package (name "dash") - (version "0.5.9.1") + (version "0.5.10.2") (source (origin (method url-fetch) @@ -60,7 +63,7 @@ "dash-" version ".tar.gz")) (sha256 (base32 - "0ng695mq5ngg43h7ljhxvbjm46ym3nayj6ssn47d2gm9fbm5pkay")) + "0wb0bwmqc661hylqcfdp7l7x12myw3vpqk513ncyqrjwvhckjriw")) (modules '((guix build utils))) (snippet '(begin @@ -88,50 +91,105 @@ 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 - '(substitute* "Makefile.in" - ((".*INSTALL.*sysconfdir.*fish.*") ""))))) + (version "3.0.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/fish-shell/fish-shell/" + "releases/download/" version "/" + name "-" version ".tar.gz")) + (sha256 + (base32 "03j3jl9jzlnhq4p86zj8wqsh5sx45j1d1fvfa80ks1cfdg68qwhl")))) (build-system gnu-build-system) - (native-inputs - `(("doxygen" ,doxygen))) (inputs - `(("bc" ,bc) + `(("fish-foreign-env" ,fish-foreign-env) + ("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)) + ;; 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 @@ -146,6 +204,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") @@ -154,23 +260,18 @@ and syntax highlighting.") (method git-fetch) (uri (git-reference (url "https://github.com/rakitzis/rc.git") - ;; commit name 'release: rc-1.7.4' - (commit "c884da53a7c885d46ace2b92de78946855b18e92"))) + (commit (string-append "v" version)))) (sha256 (base32 - "00mgzvrrh9w96xa85g4gjbsvq02f08k4jwjcdnxq7kyh5xgiw95l")) - (file-name (string-append name "-" version "-checkout")))) + "0vj1h4pcg13vxsiydmmk87dr2sra9h4gwx0c4q6fjsiw4in78rrd")) + (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-edit=gnu") #:phases (modify-phases %standard-phases - (add-after - 'unpack 'autoreconf - (lambda _ (zero? (system* "autoreconf" "-vfi")))) - (add-before - 'autoreconf 'patch-trip.rc + (add-before 'bootstrap 'patch-trip.rc (lambda _ (substitute* "trip.rc" (("/bin/pwd") (which "pwd")) @@ -264,7 +365,7 @@ written by Paul Haahr and Byron Rakitzis.") (substitute* "tests/syntax.at" (("; other_script.csh") "; /bin/sh other_script.csh")) ;; Now, let's generate the test suite and patch it - (system* "make" "tests/testsuite") + (invoke "make" "tests/testsuite") ;; This file is ISO-8859-1 encoded. (with-fluids ((%default-port-encoding #f)) @@ -291,20 +392,18 @@ history mechanism, job control and a C-like syntax.") (define-public zsh (package (name "zsh") - (version "5.4.2") + (version "5.6.2") (source (origin (method url-fetch) (uri (list (string-append - "http://www.zsh.org/pub/zsh-" version - ".tar.gz") + "https://www.zsh.org/pub/zsh-" version + ".tar.xz") (string-append - "http://www.zsh.org/pub/old/zsh-" version - ".tar.gz"))) - (patches (search-patches "zsh-CVE-2018-7548.patch" - "zsh-CVE-2018-7549.patch")) + "https://www.zsh.org/pub/old/zsh-" version + ".tar.xz"))) (sha256 (base32 - "1jdcfinzmki2w963msvsanv29vqqfmdfm4rncwpw0r3zqnrcsywm")))) + "17iffliqcj4hv91g0bd2sxsyfcz51mfyh97sp2iyrs2p0mndc2x5")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre") #:phases @@ -348,7 +447,7 @@ as an interactive login shell and as a powerful command interpreter for shell scripting. Zsh can be thought of as an extended Bourne shell with a large number of improvements, including some features of bash, ksh, and tcsh.") - (home-page "http://www.zsh.org/") + (home-page "https://www.zsh.org/") ;; The whole thing is under an MIT/X11-style license, but there's one ;; command, 'Completion/Unix/Command/_darcs', which is under GPLv2+. @@ -357,14 +456,14 @@ ksh, and tcsh.") (define-public xonsh (package (name "xonsh") - (version "0.6.1") + (version "0.6.2") (source (origin (method url-fetch) (uri (pypi-uri "xonsh" version)) (sha256 (base32 - "09rrfcwpirbxmjjqnsbyn7lwm1wyn41z5zhkbnv57i5hcgs72kx6")) + "0c2bbmdg0n10q54vq9k1z5n53l0mh1hb1q5xprfhilvrbr6hlcwr")) (modules '((guix build utils))) (snippet `(begin @@ -420,10 +519,7 @@ use of experts and novices alike.") "/rx"))) (delete-file-recursively "rx") (symlink rxpath "rx")) - #t)) - (add-after 'unpack 'autoreconf - (lambda _ - (zero? (system* "autoreconf"))))))) + #t))))) (inputs `(("scheme48" ,scheme48) ("scheme48-rx" ,scheme48-rx))) @@ -575,30 +671,30 @@ The OpenBSD Korn Shell is a cleaned up and enhanced ksh.") (define-public loksh (package (name "loksh") - (version "6.3") + (version "6.4") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/dimkr/loksh/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/dimkr/loksh.git") + (commit version))) + (file-name (git-file-name name version)) (sha256 - (base32 - "0i1b60g1p19s5cnzz0nmjzjnxywm9szzyp1rcwfcx3gmzvrwr2sc")))) + (base32 "1d92cf5iadj1vwg0wwksaq1691zaxjrd2y4qygj4sdd25zsahj6p")))) (build-system gnu-build-system) (inputs - `(("libbsd" ,libbsd))) + `(("libbsd" ,libbsd) + ("ncurses" ,ncurses))) (native-inputs `(("pkg-config" ,pkg-config))) (arguments - `(#:tests? #f ;No tests included + `(#:tests? #f ; no tests included #:make-flags (list "CC=gcc" "HAVE_LIBBSD=1" - (string-append "DESTDIR=" - (assoc-ref %outputs "out")) - "PREFIX=") + (string-append "PREFIX=" + (assoc-ref %outputs "out"))) #:phases (modify-phases %standard-phases - (delete 'configure)))) ;No configure script + (delete 'configure)))) ; no configure script (home-page "https://github.com/dimkr/loksh") (synopsis "Korn Shell from OpenBSD") (description @@ -629,7 +725,7 @@ interactive POSIX shell targeted at resource-constrained systems.") (replace 'build (lambda _ (setenv "CC" "gcc") - (zero? (system* (which "sh") "Build.sh")))) + (invoke (which "sh") "Build.sh"))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -638,7 +734,8 @@ interactive POSIX shell targeted at resource-constrained systems.") (install-file "mksh" bin) (with-directory-excursion bin (symlink "mksh" "ksh")) - (install-file "mksh.1" man))))))) + (install-file "mksh.1" man) + #t)))))) (home-page "https://www.mirbsd.org/mksh.htm") (synopsis "Korn Shell from MirBSD") (description "mksh is an actively developed free implementation of the @@ -650,14 +747,14 @@ Shell (pdksh).") (define-public oil-shell (package (name "oil-shell") - (version "0.4.0") + (version "0.5.0") (source (origin (method url-fetch) (uri (string-append "https://www.oilshell.org/download/oil-" version ".tar.xz")) (sha256 (base32 - "0ca68n46mhibarpfinqfkim6p3xmbz5rrpl4qr3sj9y0q6wm7sa2")))) + "03zc7rhhpl0cybng2i3c33pky1knsnyvn526bn91hg6w4znvn66w")))) (build-system gnu-build-system) (arguments '(#:tests? #f ; the tests are not distributed in the tarballs