;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2018 ng0 <ng0@n0.is>
+;;; Copyright © 2017, 2018 Nikita <nikita@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>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
+;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages guile)
#:use-module (gnu packages libbsd)
#:use-module (gnu packages libedit)
+ #:use-module (gnu packages linux)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
#:use-module (gnu packages scheme)
+ #:use-module (guix build-system cmake)
#: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)
- #:use-module (guix packages))
+ #:use-module (guix packages)
+ #:use-module (guix utils))
(define-public dash
(package
(name "dash")
- (version "0.5.10.2")
+ (version "0.5.11.2")
(source
(origin
(method url-fetch)
(uri (string-append "http://gondor.apana.org.au/~herbert/dash/files/"
"dash-" version ".tar.gz"))
(sha256
- (base32
- "0wb0bwmqc661hylqcfdp7l7x12myw3vpqk513ncyqrjwvhckjriw"))
+ (base32 "0pvdpm1cgfbc25ramn4305a0158yq031q1ain4dc972rnxl7vyq0"))
(modules '((guix build utils)))
(snippet
'(begin
(define-public fish
(package
(name "fish")
- (version "3.0.2")
+ (version "3.1.2")
(source
(origin
(method url-fetch)
"releases/download/" version "/"
"fish-" version ".tar.gz"))
(sha256
- (base32 "03j3jl9jzlnhq4p86zj8wqsh5sx45j1d1fvfa80ks1cfdg68qwhl"))))
- (build-system gnu-build-system)
+ (base32 "1vblmb3x2k2cb0db5jdyflppnlqsm7i6jjaidyhmvaaw7ch2gffm"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (delete-file-recursively "pcre2-10.32") #t))))
+ (build-system cmake-build-system)
(inputs
`(("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
(native-inputs
- `(("doxygen" ,doxygen)))
+ `(("doxygen" ,doxygen)
+ ; for 'fish --help'
+ ("groff" ,groff)))
(arguments
- '(#:tests? #f ; no check target
- #:phases
+ '(#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'patch-source
+ (add-after 'unpack 'set-env
(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")))
+ ;; 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 fails
+ (delete-file "tests/checks/pipeline-pgroup.fish")
+ ;; These try to open a terminal
+ (delete-file "tests/checks/interactive.fish")
+ (delete-file "tests/checks/login-interactive.fish")
+ ;; 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\\)\\);"))
+ ""))
+ (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-before 'install 'patch-fish-config
+ (add-after 'patch-tests 'patch-fish-config
(lambda _
(let ((port (open-file "etc/config.fish" "a")))
(display (string-append
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
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/oh-my-fish/plugin-foreign-env.git")
+ (url "https://github.com/oh-my-fish/plugin-foreign-env")
(commit "dddd9213272a0ab848d474d0cbde12ad034e65bc")))
(file-name (git-file-name name version))
(sha256
(source (origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/rakitzis/rc.git")
+ (url "https://github.com/rakitzis/rc")
(commit (string-append "v" version))))
(sha256
(base32
(base32
"09yyaadq738zlrnlh1hd3ycj1mv3q5hh4xl1ank70mjnqm6bbi6w"))))
(build-system gnu-build-system)
- (arguments `(#:configure-flags '("--with-tcsetpgrp" "--enable-pcre"
- "--enable-maildir-support")
+ (arguments `(#:configure-flags
+ `("--with-tcsetpgrp"
+ "--enable-pcre"
+ "--enable-maildir-support"
+ ;; share/zsh/site-functions isn't populated
+ "--disable-site-fndir"
+ ,(string-append
+ "--enable-additional-fpath="
+ "/usr/local/share/zsh/site-functions," ; for foreign OS
+ "/run/current-system/profile/share/zsh/site-functions"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'fix-sh
(define-public xonsh
(package
(name "xonsh")
- (version "0.6.2")
+ (version "0.9.21")
(source
(origin
(method url-fetch)
(uri (pypi-uri "xonsh" version))
(sha256
- (base32
- "0c2bbmdg0n10q54vq9k1z5n53l0mh1hb1q5xprfhilvrbr6hlcwr"))
+ (base32 "1mih5w73wp57fnf1vcxnfmm5d31vm7pz8fq5a9vw1ch3dv0yczl5"))
(modules '((guix build utils)))
(snippet
`(begin
- ;; Delete bundled ply.
+ ;; Delete bundled PLY.
(delete-file-recursively "xonsh/ply")
- (substitute* '("setup.py")
- (("'xonsh\\.ply\\.ply',") ""))
+ (substitute* "setup.py"
+ (("\"xonsh\\.ply\\.ply\",") ""))
+ ;; Use our properly packaged PLY instead.
+ (substitute* (list "setup.py"
+ "tests/test_lexer.py"
+ "xonsh/__amalgam__.py"
+ "xonsh/lexer.py"
+ "xonsh/parsers/base.py"
+ "xonsh/xonfig.py")
+ (("from xonsh\\.ply\\.(.*) import" _ module)
+ (format #f "from ~a import" module))
+ (("from xonsh\\.ply import") "import"))
#t))))
(build-system python-build-system)
(arguments
"1z16qwix8z6a40fskdgxsibkqgdrp4q6ncp4n6hnv4r9iihy2d8r"))))
(build-system gnu-build-system)
(arguments
- `(#:tests? #f ;No tests are included
- #:make-flags (list "CC=gcc")
+ `(#:tests? #f ; no tests are included
+ #:make-flags
+ (list ,(string-append "CC=" (cc-for-target)))
#:phases
(modify-phases %standard-phases
(delete 'configure)
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/dimkr/loksh.git")
+ (url "https://github.com/dimkr/loksh")
(commit version)))
(file-name (git-file-name name version))
(sha256
(define-public mksh
(package
(name "mksh")
- (version "57")
+ (version "58")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R"
version ".tgz"))
(sha256
- (base32 "0xdykm1z710wriwd6nc8s8lwk2dwjl63dq96xxaawlid31a1241x"))))
+ (base32 "1337zjvzh14yncg9igdry904a3ns52l8rnm1kcq262w7f5xyp2v0"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; tests require access to /dev/tty
(license (list miros
isc)))) ; strlcpy.c
-(define-public oil-shell
+(define-public oil
(package
- (name "oil-shell")
- (version "0.7.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://www.oilshell.org/download/oil-"
- version ".tar.xz"))
- (sha256
- (base32
- "12c9s462879adb6mwd3fqafk0dnqsm16s18rhym6cmzfzy8v8zm3"))))
+ (name "oil")
+ ;; https://www.oilshell.org/blog/2020/04/release-0.8.pre4.html#comment-on-version-numbering
+ (version "0.8.pre6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://www.oilshell.org/download/oil-"
+ version ".tar.gz"))
+ (sha256
+ (base32 "11nfwn5b1w74hv78065jg2zm45mqzi59381b0f649j7n3g7yp3iq"))))
(build-system gnu-build-system)
(arguments
- '(#:tests? #f ; the tests are not distributed in the tarballs
- #:strip-binaries? #f ; the binaries cannot be stripped
+ `(#:strip-binaries? #f ; strip breaks the binary
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'patch-compiler-invocation
- (lambda _
- (substitute* "configure"
- ((" cc ") " gcc "))
- #t))
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(setenv "CC" "gcc")
- ;; The configure script doesn't recognize CONFIG_SHELL.
- (setenv "CONFIG_SHELL" (which "sh"))
+ (substitute* "configure"
+ ((" cc ") " $CC "))
(invoke "./configure" (string-append "--prefix=" out)
"--with-readline"))))
- (add-before 'install 'make-destination
+ (replace 'check
+ ;; The tests are not distributed in the tarballs but upstream
+ ;; recommends running this smoke test.
+ ;; https://github.com/oilshell/oil/blob/release/0.8.pre6/INSTALL.txt#L38-L48
(lambda _
- ;; The build scripts don't create the destination directory.
- (mkdir-p (string-append (assoc-ref %outputs "out") "/bin")))))))
+ (let* ((oil "_bin/oil.ovm"))
+ (invoke/quiet oil "osh" "-c" "echo hi")
+ (invoke/quiet oil "osh" "-n" "configure")))))))
(inputs
`(("readline" ,readline)))
- (synopsis "Bash-compatible Unix shell")
- (description "Oil is a Unix / POSIX shell, compatible with Bash. It
-implements the Oil language, which is a new shell language to which Bash can be
-automatically translated. The Oil language is a superset of Bash. It also
-implements the OSH language, a statically-parseable language based on Bash as it
-is commonly written.")
- (home-page "https://www.oilshell.org/")
- (license (list psfl ; The Oil sources include a patched Python 2 source tree
+ (home-page "https://www.oilshell.org")
+ (synopsis "Programming language and Bash-compatible Unix shell")
+ (description "Oil is a programming language with automatic translation for
+Bash. It includes osh, a Unix/POSIX shell that runs unmodified Bash
+scripts.")
+ (license (list psfl ; tarball includes python2.7
asl2.0))))
+(define-public oil-shell
+ (deprecated-package "oil-shell" oil))
+
(define-public gash
(package
(name "gash")
(sha256
(base32
"13m0yz5h9nj3x40mr6wr5xcpq1lscndfwcicw3skrz801025hhgf"))
- (modules '((guix build utils)))))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Allow builds with Guile 3.0.
+ (substitute* "configure"
+ (("search=\"2\\.2 2\\.0\"")
+ "search=\"3.0 2.2 2.0\""))
+ #t))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
- `(("guile" ,guile-2.2)))
+ `(("guile" ,guile-3.0)))
(arguments
'(#:make-flags '("XFAIL_TESTS=tests/redirects.org")))
(home-page "https://savannah.nongnu.org/projects/gash/")
version ".tar.gz"))
(sha256
(base32
- "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk"))))
+ "0ib2p52qmbac5n0s5bys4fiwim461ps546976l1n7pwbs0avh7fk"))
+ (patches (search-patches "gash-utils-ls-test.patch"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Allow builds with Guile 3.0.
+ (substitute* "configure"
+ (("search=\"2\\.2 2\\.0\"")
+ "search=\"3.0 2.2 2.0\""))
+ #t))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
- `(("guile" ,guile-2.2)
+ `(("guile" ,guile-3.0)
("gash" ,gash)))
(home-page "https://savannah.nongnu.org/projects/gash/")
(synopsis "Core POSIX utilities written in Guile Scheme")