;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Eric Bavier ;;; Copyright © 2014, 2018 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages orpheus) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages ncurses) #:use-module (gnu packages mp3) #:use-module (gnu packages base) #:use-module (gnu packages xiph) #:use-module (gnu packages xml) #:use-module (ice-9 match)) (define-public orpheus (package (name "orpheus") (version "1.6") (source (origin (method url-fetch) (uri (string-append "http://thekonst.net/download/orpheus-" version ".tar.gz")) (sha256 (base32 "1xbgxq8fybwhm51nw9hvvrgi873qzkc2qvmy15d2m2hw2yqa99hq")) (patches (search-patches "orpheus-cast-errors-and-includes.patch")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) ("libvorbis" ,libvorbis) ("vorbis-tools" ,vorbis-tools) ("mpg321" ,mpg321) ;; TODO: add ghttp ("libxml2" ,libxml2) ("which" ,which))) (arguments `(#:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key outputs #:allow-other-keys) ;; This old `configure' script does not support variables passed as ;; arguments. (let ((out (assoc-ref outputs "out"))) (setenv "CONFIG_SHELL" (which "bash")) (setenv "SHELL" (which "bash")) (setenv "LIBS" "-logg") ;doesn't declare its use of libogg (invoke "./configure" (string-append "--prefix=" out) ,@(match (%current-system) ("mips64el-linux" '("--host=mips64el-unknown-linux-gnu")) ("aarch64-linux" '("--build=aarch64-unknown-linux-gnu")) (_ `())))))) (add-after 'configure 'configure-players (lambda* (#:key inputs #:allow-other-keys) ;; To avoid propagating the mpg321 and vorbis-tools inputs, we can ;; make the orpheus application execute the needed players from the ;; store. (let ((ogg123 (string-append (assoc-ref inputs "vorbis-tools") "/bin/ogg123")) (mpg321 (string-append (assoc-ref inputs "mpg321") "/bin/mpg321")) (which (string-append (assoc-ref inputs "which") "/bin/which"))) (substitute* "src/orpheusconf.cc" (("ogg123") ogg123) (("which") which) (("mpg321") mpg321)) #t))) (add-before 'build 'patch-shells (lambda _ (substitute* '("src/mp3track.cc" "src/streamtrack.cc" "src/oggtrack.cc") (("/bin/sh") (which "sh"))) #t))))) (home-page "http://thekonst.net/en/orpheus") (synopsis "Text-mode audio player") (description "Orpheus is a light-weight text mode menu- and window-driven audio player application for CDs, internet stream broadcasts, and files in MP3 and Vorbis OGG format.") (license gpl2+))) resh r-ggplot2 -u' and similar commands would print of list of input changes that would have to be made manually. With this change, 'guix refresh -u' takes care of updating input fields automatically. * guix/upstream.scm (update-package-inputs): New procedure. (update-package-source): Call it when 'upstream-source-inputs' returns true. * guix/scripts/refresh.scm (update-package): Remove iteration over the result of 'changed-inputs'. * guix/import/test.scm (available-updates): Add support for input lists. * tests/guix-refresh.sh (GUIX_TEST_UPDATER_TARGETS): Add input list for "the-test-package". Make sure 'guix refresh -u' updates 'inputs' accordingly. * doc/guix.texi (Invoking guix refresh): Mention it. Ludovic Courtès 2023-04-21tests: Relax two tests that expected a non-zero error code....* tests/guix-package-aliases.sh: "guix upgrade foo bar" has always returned zero; adjust accordingly. * tests/guix-refresh.sh: "guix refresh -t test idutils" and similar return zero; adjust accordingly. Ludovic Courtès 2023-04-21tests: Fix checks for expected failures....Addresses <https://issues.guix.gnu.org/62406>. With 'set -e', a return status inverted with '!' does not cause the shell to exit immediately. Instead use '&& false' to indicate an expected failure. * tests/guix-archive.sh, tests/guix-build-branch.sh, tests/guix-build.sh, tests/guix-daemon.sh, tests/guix-download.sh, tests/guix-environment-container.sh, tests/guix-environment.sh, tests/guix-gc.sh, tests/guix-git-authenticate.sh, tests/guix-graph.sh, tests/guix-hash.sh, tests/guix-home.sh, tests/guix-pack-relocatable.sh, tests/guix-pack.sh, tests/guix-package-aliases.sh, tests/guix-package-net.sh, tests/guix-package.sh, tests/guix-refresh.sh, tests/guix-shell.sh, tests/guix-style.sh, tests/guix-system.sh: Replace uses of '! ...' with '... && false' or `test ! ...` as appropriate. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Eric Bavier 2023-01-25tests: Do not try to create "$HOME/.config"....Previously this test would fail when HOME=/homeless-shelter and said directory cannot be created. * tests/guix-refresh.sh: Pass '--keyring' together with '-u'. Ludovic Courtès 2023-01-08refresh: Add CLI tests....* guix/import/test.scm, tests/guix-refresh.sh: New files. * Makefile.am (MODULES, SH_TESTS): Add them. Ludovic Courtès