aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/orpheus.scm
blob: d981be279c9924e9d6be50d7e95780fedb1b4733 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2018 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; 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 <http://www.gnu.org/licenses/>.

(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+)))
class='msg-tooltip'>* gnu/system/vm.scm (system-qemu-image/shared-store-script): Use #+ for QEMU and BASH. Ludovic Courtès 2020-06-06vm: <virtual-machine> compiler honors system and target....* gnu/system/vm.scm (system-qemu-image/shared-store): Add #:system and #:target. Pass it down. (system-qemu-image/shared-store-script): Likewise. (virtual-machine-compiler): Likewise. Ludovic Courtès 2020-06-06vm: 'qemu-image' preserves the cross-compilation target of the OS....* gnu/system/vm.scm (qemu-image)[preserve-target, inputs*]: New variables. In gexp, use INPUTS* instead of INPUTS. Wrap OS and BOOTCFG-DRV in 'preserve-target'. Pass INPUTS* instead of INPUTS as the #:references-graphs. Ludovic Courtès 2020-06-06vm: 'qemu-image' uses the native partitioning tools and bootloader....* gnu/system/vm.scm (qemu-image): Use #+ for Parted, the bootloader, etc. Ludovic Courtès 2020-06-06vm: 'expression->derivation-in-linux-vm' always returns a native build....* gnu/system/vm.scm (expression->derivation-in-linux-vm): Remove #:target. [builder]: Use #+. Don't pass #:target-arm32? and #:target-aarch64? to 'load-in-linux-vm'. Pass #:target #f to 'gexp->derivation'. (qemu-image): Adjust accordingly. * gnu/build/vm.scm (load-in-linux-vm): Remove #:target-aarch64? and #:target-arm32?. Define them as local variables. Ludovic Courtès 2020-05-16vm: Use 'let-system'....* gnu/system/vm.scm (expression->derivation-in-linux-vm)[check]: New macro. [builder]: Use 'let-system' and 'check' instead of referencing '%current-system' and '%current-target-system'. Ludovic Courtès 2020-05-08Merge branch 'core-updates'Marius Bakke 2020-05-07guix system: 'docker-image' honors '--network'....* gnu/system/vm.scm (system-docker-image): Add #:shared-network? and pass it to 'containerized-operating-system'. (qemu-image): * guix/scripts/system.scm (system-derivation-for-action): Pass #:shared-network? to 'system-docker-image'. * doc/guix.texi (Invoking guix system): Document it. Ludovic Courtès 2020-05-05Merge branch 'master' into core-updatesMarius Bakke 2020-05-05vm: Remove obsolete procedures....* gnu/build/vm.scm (install-efi, make-iso9660-image): Remove those procedures that are now implemented in (gnu build image) module, (initialize-hard-disk): remove efi support. * gnu/system/vm.scm (iso9660-image): Remove it, (qemu-image): adapt it to remove ISO9660 support. Mathieu Othacehe 2020-05-05image: Add a new API....Raw disk-images and ISO9660 images are created in a Qemu virtual machine. This is quite fragile, very slow, and almost unusable without KVM. For all these reasons, add support for host image generation. This implies the use new image generation mechanisms. - Raw disk images: images of partitions are created using tools such as mke2fs and mkdosfs depending on the partition file-system type. The partition images are then assembled into a final image using genimage. - ISO9660 images: the ISO root directory is populated within the store. GNU xorriso is then called on that directory, in the exact same way as this is done in (gnu build vm) module. Those mechanisms are built upon the new (gnu image) module. * gnu/image.scm: New file. * gnu/system/image.scm: New file. * gnu/build/image: New file. * gnu/local.mk: Add them. * gnu/system/vm.scm (system-disk-image): Rename to system-disk-image-in-vm. * gnu/ci.scm (qemu-jobs): Adapt to new API. * gnu/tests/install.scm (run-install): Ditto. * guix/scripts/system.scm (system-derivation-for-action): Ditto. Mathieu Othacehe 2020-05-05system: vm: Move operating-system-uuid....* gnu/system/vm.scm (operating-system-uuid): Move to ... * gnu/system.scm: ... here. Mathieu Othacehe 2020-04-26Merge branch 'master' into core-updatesMarius Bakke 2020-04-26vm: Remove unused import....* gnu/system/vm.scm: Do not import (gnu packages make-bootstrap). Marius Bakke 2020-04-11vm: Make the device node procedure a parameter....* gnu/build/vm.scm (root-partition-initializer): Add #:make-device-nodes parameter and use it. * gnu/system/vm.scm (qemu-image): Add #:device-node parameter. Pass #:make-device-nodes to 'root-partition-initializer'. Ludovic Courtès 2020-04-11vm: 'qemu-image' can pass options to the 'mkfs' command....* gnu/build/vm.scm (<partition>)[file-system-options]: New field. (create-ext-file-system, create-fat-file-system) (format-partition): Add #:options and honor it. (initialize-partition): Pass #:options to 'format-partition'. * gnu/system/vm.scm (qemu-image): Add #:file-system-options and use it for the root partition. Ludovic Courtès 2020-04-11vm: 'qemu-image' accepts a list of extra populate directives....* gnu/build/vm.scm (root-partition-initializer): Add #:extra-directives parameter and pass it to 'populate-root-file-system'. * gnu/system/vm.scm (qemu-image): Add #:extra-directives parameter and pass it to 'root-partition-initializer'. Ludovic Courtès 2020-04-10vm: Use virtio network driver....This fixes a regression introduced in 8e53fe2b91d2776bc1529e7b34967c8f1d9edc32 where 'guix system vm' would no longer be using virtio. * gnu/system/vm.scm (common-qemu-options): Add "-nic user,model=virtio-net-pci". Marius Bakke 2020-04-10vm: 'system-disk-image' honors #:substitutable? for ISO9660 images....This is a followup to a328f66a9e16d7bae765d8bc088e4a97037e6e2b. * gnu/system/vm.scm (iso9660-image): Add #:substitutable? and pass it to 'expression->derivation-in-linux-vm'. (system-disk-image): Pass #:substitutable? to 'iso9660-image'. Ludovic Courtès 2020-04-08vm: Allow images to be marked as non-substitutable....* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add #:substitutable? parameter. Pass it to 'gexp->derivation'. (qemu-image): Add #:substitutable? and pass it to 'expression->derivation-in-linux-vm'. (system-disk-image): Add #:substitutable? and pass it to 'qemu-image'. Ludovic Courtès 2020-03-26vm: Distinguish between success and failure of the guest code....Fixes <https://bugs.gnu.org/34276>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. * gnu/system/vm.scm (expression->derivation-in-linux-vm)[loader]: Produce '/xchg/.exit-status' file upon success. * gnu/build/vm.scm (load-in-linux-vm): Check for 'xchg/.exit-status' once QEMU has completed and respond accordingly. Ludovic Courtès 2020-03-10vm: Compute UUIDs truly deterministically....This is a followup to 1540075c790dfaeff52c93392f2fc63b9e23b77e. The mistake had no effect on prior Guile versions but it's visible since Guile 3.0.1 and the fix for <https://bugs.gnu.org/39634>. * gnu/system/vm.scm (operating-system-uuid): Hash a list of 'file-system-digest' values, not the 'file-system-type' procedure. Ludovic Courtès 2020-03-02file-systems: Add a 'file-system-device->string' procedure....* gnu/system/file-systems.scm (file-system-device->string): New procedure. * gnu/system.scm (bootable-kernel-arguments): Use it. * gnu/system/vm.scm (operating-system-uuid): Likewise. * guix/scripts/system.scm (display-system-generation): Likewise. Maxim Cournoyer