gnu: Add EMMS.

* gnu/packages/emacs.scm (emms): New variable.
This commit is contained in:
Ludovic Courtès 2014-11-25 18:01:38 +01:00
parent 4d6b879cb5
commit 77c9286d4a
1 changed files with 123 additions and 0 deletions

View File

@ -44,6 +44,10 @@
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages glib) #:use-module (gnu packages glib)
#:use-module (gnu packages acl) #:use-module (gnu packages acl)
#:use-module (gnu packages perl)
#:use-module (gnu packages linux) ;alsa
#:use-module (gnu packages xiph)
#:use-module (gnu packages mp3)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (srfi srfi-1)) #:use-module (srfi srfi-1))
@ -365,3 +369,122 @@ operations.")
(description (description
"Emacs-wget is an emacs interface for the wget file downloader.") "Emacs-wget is an emacs interface for the wget file downloader.")
(license gpl2+))) (license gpl2+)))
;;;
;;; Multimedia.
;;;
(define-public emms
(package
(name "emms")
(version "4.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/emms/emms-"
version ".tar.gz"))
(sha256
(base32
"1q0n3iwva8bvai2rl9sm49sdjmk0wi7vajz4knz01l7g67nrp87l"))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile"
(("/usr/bin/install-info")
;; No need to use 'install-info' since it would create a
;; useless 'dir' file.
"true")
(("^INFODIR=.*")
;; Install Info files to $out/share/info, not $out/info.
"INFODIR := $(PREFIX)/share/info\n")
(("/site-lisp/emms")
;; Install directly in share/emacs/site-lisp, not in a
;; sub-directory.
"/site-lisp")
(("^all: (.*)\n" _ rest)
;; Build 'emms-print-metadata'.
(string-append "all: " rest " emms-print-metadata\n"))))))
(build-system gnu-build-system)
(arguments
'(#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
#:imported-modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
#:phases (alist-replace
'configure
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(vorbis (assoc-ref inputs "vorbis-tools"))
(alsa (assoc-ref inputs "alsa-utils"))
(mpg321 (assoc-ref inputs "mpg321"))
(mp3info (assoc-ref inputs "mp3info")))
;; Specify the installation directory.
(substitute* "Makefile"
(("PREFIX=.*$")
(string-append "PREFIX := " out "\n")))
(setenv "SHELL" (which "sh"))
(setenv "CC" "gcc")
;; Specify the absolute file names of the various
;; programs so that everything works out-of-the-box.
(with-directory-excursion "lisp"
(emacs-substitute-variables
"emms-player-mpg321-remote.el"
("emms-player-mpg321-remote-command"
(string-append mpg321 "/bin/mpg321")))
(substitute* "emms-player-simple.el"
(("\"ogg123\"")
(string-append "\"" vorbis "/bin/ogg123\"")))
(emacs-substitute-variables "emms-info-ogginfo.el"
("emms-info-ogginfo-program-name"
(string-append vorbis "/bin/ogginfo")))
(emacs-substitute-variables "emms-info-libtag.el"
("emms-info-libtag-program-name"
(string-append out "/bin/emms-print-metadata")))
(substitute* "emms-volume-amixer.el"
(("\"amixer\"")
(string-append "\"" alsa "/bin/amixer\"")))
(substitute* "emms-tag-editor.el"
(("\"mp3info\"")
(string-append mp3info "/bin/mp3info"))))))
(alist-cons-before
'install 'pre-install
(lambda* (#:key outputs #:allow-other-keys)
;; The 'install' rule expects 'emms-print-metadata.1' to
;; be already installed.
(let* ((out (assoc-ref outputs "out"))
(man1 (string-append out "/share/man/man1")))
(mkdir-p man1)
(copy-file "emms-print-metadata.1"
(string-append man1 "/emms-print-metadata.1"))))
(alist-cons-after
'install 'post-install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(target (string-append
out "/bin/emms-print-metadata")))
(mkdir-p (dirname target))
(copy-file "src/emms-print-metadata" target)
(chmod target #o555)))
%standard-phases)))
#:tests? #f))
(native-inputs `(("emacs" ,emacs) ;for (guix build emacs-utils)
("texinfo" ,texinfo)))
(inputs `(;("perl" ,perl) ;for 'emms-print-metadata.pl'
("alsa-utils" ,alsa-utils)
("vorbis-tools" ,vorbis-tools)
("mpg321" ,mpg321)
("taglib" ,taglib)
("mp3info" ,mp3info)))
(synopsis "Emacs Multimedia System")
(description
"EMMS is the Emacs Multimedia System. It is a small front-end which
can control one of the supported external players. Thus, it supports
whatever formats are supported by your music player. It also
supports tagging and playlist management, all behind a clean and
light user interface.")
(home-page "http://www.gnu.org/software/emms/")
(license gpl3+)))