gnu: Remove ".git" from "https://github/…/….git".
[jackhill/guix/guix.git] / gnu / packages / cdrom.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2014, 2015, 2018 Ludovic Courtès <ludo@gnu.org>
3 ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
4 ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
5 ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
6 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
7 ;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
8 ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
9 ;;; Copyright © 2017 John Darrington <jmd@gnu.org>
10 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
11 ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2017 Nikita <nikita@n0.is>
13 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
14 ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
15 ;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
16 ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
17 ;;;
18 ;;; This file is part of GNU Guix.
19 ;;;
20 ;;; GNU Guix is free software; you can redistribute it and/or modify it
21 ;;; under the terms of the GNU General Public License as published by
22 ;;; the Free Software Foundation; either version 3 of the License, or (at
23 ;;; your option) any later version.
24 ;;;
25 ;;; GNU Guix is distributed in the hope that it will be useful, but
26 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 ;;; GNU General Public License for more details.
29 ;;;
30 ;;; You should have received a copy of the GNU General Public License
31 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
32
33 (define-module (gnu packages cdrom)
34 #:use-module (guix download)
35 #:use-module (guix git-download)
36 #:use-module (guix packages)
37 #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+ cddl1.0))
38 #:use-module (guix build-system cmake)
39 #:use-module (guix build-system gnu)
40 #:use-module (guix build-system glib-or-gtk)
41 #:use-module (guix gexp)
42 #:use-module (guix utils)
43 #:use-module (gnu packages)
44 #:use-module (gnu packages acl)
45 #:use-module (gnu packages audio)
46 #:use-module (gnu packages autotools)
47 #:use-module (gnu packages bison)
48 #:use-module (gnu packages compression)
49 #:use-module (gnu packages flex)
50 #:use-module (gnu packages fontutils)
51 #:use-module (gnu packages gettext)
52 #:use-module (gnu packages docbook)
53 #:use-module (gnu packages xml)
54 #:use-module (gnu packages gtk)
55 #:use-module (gnu packages glib)
56 #:use-module (gnu packages m4)
57 #:use-module (gnu packages man)
58 #:use-module (gnu packages mp3)
59 #:use-module (gnu packages music)
60 #:use-module (gnu packages ncurses)
61 #:use-module (gnu packages elf)
62 #:use-module (gnu packages wxwidgets)
63 #:use-module (gnu packages linux)
64 #:use-module (gnu packages pkg-config)
65 #:use-module (gnu packages readline)
66 #:use-module (gnu packages base)
67 #:use-module (gnu packages perl)
68 #:use-module (gnu packages perl-web)
69 #:use-module (gnu packages python)
70 #:use-module (gnu packages image)
71 #:use-module (gnu packages photo)
72 #:use-module (gnu packages tcl)
73 #:use-module (gnu packages video)
74 #:use-module (gnu packages wget)
75 #:use-module (gnu packages xiph))
76
77 (define-public libcddb
78 (package
79 (name "libcddb")
80 (version "1.3.2")
81 (source (origin
82 (method url-fetch)
83 (uri (string-append "mirror://sourceforge/libcddb/libcddb/" version
84 "/libcddb-" version ".tar.bz2"))
85 (sha256
86 (base32
87 "0fr21a7vprdyy1bq6s99m0x420c9jm5fipsd63pqv8qyfkhhxkim"))))
88 (build-system gnu-build-system)
89 (arguments '(#:tests? #f)) ; tests rely on access to external servers
90 (home-page "http://libcddb.sourceforge.net/")
91 (synopsis "C library to access data on a CDDB server")
92 (description
93 "Libcddb is a C library to access data on a CDDB server (freedb.org). It
94 allows you to:
95
96 1. search the database for possible CD matches;
97
98 2. retrieve detailed information about a specific CD;
99
100 3. submit new CD entries to the database.
101
102 Libcddb supports both the custom CDDB protocol and tunnelling the query and
103 read operations over plain HTTP. It is also possible to use an HTTP proxy
104 server. If you want to speed things up, you can make use of the built-in
105 caching facility provided by the library.")
106 (license lgpl2.1+)))
107
108 (define-public libcdio
109 (package
110 (name "libcdio")
111 (version "2.1.0")
112 (source (origin
113 (method url-fetch)
114 (uri (string-append "mirror://gnu/libcdio/libcdio-"
115 version ".tar.bz2"))
116 (sha256
117 (base32
118 "0avi6apv5ydjy6b9c3z9a46rvp5i57qyr09vr7x4nndxkmcfjl45"))))
119 (build-system gnu-build-system)
120 (inputs
121 `(("ncurses" ,ncurses)
122 ("libcddb" ,libcddb)))
123 (native-inputs
124 `(("help2man" ,help2man)
125 ("pkg-config" ,pkg-config)))
126 (home-page "https://www.gnu.org/software/libcdio/")
127 (synopsis "CD Input and Control library")
128 (description
129 "The GNU Compact Disc Input and Control Library (libcdio) is a library
130 for CD-ROM and CD image file access. It allows the developer to add CD
131 access to an application without having to worry about the OS- and
132 device-dependent properties of CD-ROM or the specific details of CD image
133 formats. It includes pycdio, a Python interface to libcdio, and
134 libcdio-paranoia, a library providing jitter-free and error-free audio
135 extraction from CDs.")
136 (license gpl3+)))
137
138 (define-public libcdio-paranoia
139 (package
140 (name "libcdio-paranoia")
141 (version "10.2+2.0.1")
142 (source (origin
143 (method url-fetch)
144 (uri (string-append "mirror://gnu/libcdio/libcdio-paranoia-"
145 version ".tar.bz2"))
146 (sha256
147 (base32
148 "12hfnrq7amv9qjzc92cr265m7kh0a1hpasck8cxx1gygbhqczc9k"))))
149 (build-system gnu-build-system)
150 (native-inputs `(("pkg-config" ,pkg-config)))
151 (propagated-inputs `(("libcdio" ,libcdio)))
152 (home-page "https://www.gnu.org/software/libcdio/")
153 (synopsis "Jitter- and error-tolerant CD audio extraction")
154 (description
155 "libcdio-paranoia is an implementation of CD paranoia libraries based on
156 libcdio.")
157 (license gpl3+)))
158
159 (define-public xorriso
160 (package
161 (name "xorriso")
162 (version "1.5.2")
163 (outputs '("out" "gui"))
164 (source (origin
165 (method url-fetch)
166 (uri (string-append "mirror://gnu/xorriso/xorriso-"
167 version ".tar.gz"))
168 (sha256
169 (base32
170 "1rqpzj95f70jfwpn4lamasfgqpizjsipz12aprdhri777b4zas9v"))))
171 (build-system gnu-build-system)
172 (arguments
173 `(#:phases
174 (modify-phases %standard-phases
175 (add-after 'install 'install-frontends
176 (lambda* (#:key outputs #:allow-other-keys)
177 (let* ((out (assoc-ref outputs "out"))
178 (out-bin (string-append out "/bin")))
179 (install-file "frontend/grub-mkrescue-sed.sh" out-bin)
180 #t)))
181 (add-after 'install 'move-gui-to-separate-output
182 (lambda* (#:key outputs #:allow-other-keys)
183 (let ((out (assoc-ref outputs "out"))
184 (gui (assoc-ref outputs "gui")))
185 (for-each
186 (lambda (file)
187 (mkdir-p (string-append gui (dirname file)))
188 (rename-file (string-append out file)
189 (string-append gui file)))
190 (list "/bin/xorriso-tcltk"
191 "/share/info/xorriso-tcltk.info"
192 "/share/man/man1/xorriso-tcltk.1"))
193 (wrap-program (string-append gui "/bin/xorriso-tcltk")
194 `("PATH" ":" prefix (,(string-append out "/bin"))))
195 #t))))))
196 (inputs
197 `(("acl" ,acl)
198 ("readline" ,readline)
199 ("tk" ,tk)
200 ("zlib" ,zlib)))
201 (home-page "https://www.gnu.org/software/xorriso/")
202 (synopsis "Create, manipulate, burn ISO-9660 file systems")
203 (description
204 "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock
205 Ridge, a.k.a. Compact Disc File System, file systems and it allows
206 session-wise manipulation of them. It features a formatter and burner for
207 CD, DVD and BD. It can operate on existing ISO images or it can create new
208 ones. xorriso can then be used to copy files directly into or out of ISO
209 files.")
210 (license gpl3+)))
211
212 (define-public cdparanoia
213 (package
214 (name "cdparanoia")
215 (version "10.2")
216 (source (origin
217 (method url-fetch)
218 (uri (string-append "http://downloads.xiph.org/releases/"
219 "cdparanoia/cdparanoia-III-"
220 version ".src.tgz"))
221 (sha256
222 (base32
223 "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80"))
224 (patches (search-patches "cdparanoia-fpic.patch"))
225 (modules '((guix build utils)))
226 (snippet
227 '(begin
228 ;; Make libraries respect LDFLAGS.
229 (substitute* '("paranoia/Makefile.in" "interface/Makefile.in")
230 (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname"))
231 #t))))
232 (build-system gnu-build-system)
233 (arguments
234 `(#:tests? #f ; there is no check target
235 #:configure-flags ; Add $libdir to the RUNPATH of all the executables.
236 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))
237 (home-page "https://www.xiph.org/paranoia/")
238 (synopsis "Audio CD reading utility")
239 (description "Cdparanoia retrieves audio tracks from CDDA capable CDROM
240 drives. The data can be saved to a file or directed to standard output
241 in WAV, AIFF, AIFF-C or raw format. Most ATAPI, SCSI and several
242 proprietary CDROM drive makes are supported; cdparanoia can determine if the
243 target drive is CDDA capable. In addition to simple reading, cdparanoia adds
244 extra-robust data verification, synchronization, error handling and scratch
245 reconstruction capability.")
246 (license gpl2))) ; libraries under lgpl2.1
247
248 (define-public cdrdao
249 (package
250 (name "cdrdao")
251 (version "1.2.4")
252 (source
253 (origin
254 (method git-fetch)
255 (uri (git-reference
256 (url "https://github.com/cdrdao/cdrdao")
257 (commit
258 (string-append "rel_" (string-replace-substring version "." "_")))))
259 (file-name (git-file-name name version))
260 (sha256
261 (base32 "1gcl8ibyylamy2d1piq3749nw3xrlp12r0spzp2gmni57b8a6b7j"))))
262 (build-system gnu-build-system)
263 (arguments
264 '(#:configure-flags
265 (list
266 ;; GCDMaster depends on obsolete libgnomeuimm, see
267 ;; <https://github.com/cdrdao/cdrdao/issues/3>.
268 "--without-gcdmaster"
269 ;; Use the native SCSI interface.
270 "--without-scglib")
271 #:phases
272 (modify-phases %standard-phases
273 (add-before 'bootstrap 'fix-configure.ac
274 (lambda _
275 ;; Remove reference to missing macro.
276 (substitute* "configure.ac" (("^AM_GCONF_SOURCE_2.*") ""))
277 #t)))))
278 (native-inputs
279 `(("autoconf" ,autoconf)
280 ("automake" ,automake)
281 ("pkg-config" ,pkg-config)))
282 (inputs
283 `(("ao" ,ao)
284 ("lame" ,lame)
285 ("libmad" ,libmad)
286 ("libvorbis" ,libvorbis)))
287 (home-page "http://cdrdao.sourceforge.net")
288 (synopsis "Read and write CDs in disk-at-once mode")
289 (description "cdrdao records audio or data CDs in disk-at-once (DAO) mode,
290 based on a textual description of the contents. This mode writes the complete
291 disc – lead-in, one or more tracks, and lead-out – in a single step and is
292 commonly used with audio CDs. @code{cdrdao} can also handle the bin/cue
293 format, commonly used for VCDs or disks with subchannel data.")
294 (license gpl2+)))
295
296 (define-public cdrtools
297 (package
298 (name "cdrtools")
299 (version "3.01")
300 (source (origin
301 (method url-fetch)
302 (uri (string-append
303 "mirror://sourceforge/cdrtools/cdrtools-" version ".tar.bz2"))
304 (sha256
305 (base32
306 "03w6ypsmwwy4d7vh6zgwpc60v541vc5ywp8bdb758hbc4yv2wa7d"))
307 (modules '((guix build utils)))
308 (snippet
309 '(begin
310 ;; By default 'cdda2wav --help' would print a string like
311 ;; "Version 3.01_linux_4.19.10-gnu_x86_64_x86_64". Change
312 ;; it to not capture the kernel version of the build
313 ;; machine, to allow for reproducible builds.
314 (substitute* "cdda2wav/local.cnf.in"
315 (("^VERSION_OS=.*")
316 (string-append
317 "actual_os := $(shell uname -o)\n"
318 "actual_arch := $(shell uname -m)\n"
319 "VERSION_OS = _$(actual_os)_$(actual_arch)\n")))
320 #t))
321 (patches (search-patches "cdrtools-3.01-mkisofs-isoinfo.patch"))))
322 (build-system gnu-build-system)
323 ;; XXX cdrtools bundles a modified, relicensed early version of cdparanoia.
324 (inputs
325 `(("linux-headers" ,linux-libre-headers)))
326 (arguments
327 `(#:make-flags
328 (list "RM=rm" "LN=ln" "SYMLINK=ln -s"
329 "CONFIG_SHELL=sh" "CCOM=gcc"
330 (string-append "INS_BASE=" (assoc-ref %outputs "out"))
331 (string-append "INS_RBASE=" (assoc-ref %outputs "out")))
332 ;; Parallel builds appear to be unsafe, see
333 ;; https://hydra.gnu.org/build/3346840/log/raw
334 #:parallel-build? #f
335 #:phases
336 (modify-phases %standard-phases
337 (delete 'configure)
338 (add-before 'build 'set-linux-headers
339 (lambda _
340 (substitute* "autoconf/configure"
341 (("/usr/src/linux")
342 (assoc-ref %build-inputs "linux-headers")))
343 #t))
344 (add-before 'build 'substitute-dirs
345 (lambda _
346 (substitute* (append (find-files "DEFAULTS" "^Defaults\\.")
347 (find-files "DEFAULTS_ENG" "^Defaults\\.")
348 (find-files "TEMPLATES" "^Defaults\\."))
349 (("/opt/schily") (assoc-ref %outputs "out")))
350 #t)))
351 #:tests? #f)) ; no tests
352 (synopsis "Command line utilities to manipulate and burn CD/DVD/BD images")
353 (description "cdrtools is a collection of command line utilities to create
354 CD's, DVD's or Blue Ray discs. The most important components are
355 @command{cdrecord}, a burning program, @command{cdda2wav}, a CD audio ripper
356 which uses libparanoia, and @command{mkisofs}, which can create various disc
357 images.")
358 (home-page "http://cdrtools.sourceforge.net/private/cdrecord.html")
359
360 ;; mkisofs is GPL, the other programs are CDDL.
361 (license (list cddl1.0 gpl2))))
362
363 (define-public dvd+rw-tools
364 (package
365 (name "dvd+rw-tools")
366 (version "7.1")
367 (source (origin
368 (method url-fetch)
369 (uri (string-append
370 "http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-"
371 version ".tar.gz"))
372 (sha256
373 (base32
374 "1jkjvvnjcyxpql97xjjx0kwvy70kxpiznr2zpjy2hhci5s10zmpq"))
375 (patches (search-patches "dvd+rw-tools-add-include.patch"))))
376 (build-system gnu-build-system)
377 (inputs
378 `(("cdrtools" ,cdrtools)))
379 (native-inputs
380 `(("m4" ,m4)))
381 (arguments
382 `(#:tests? #f ; No tests.
383 #:phases
384 (modify-phases %standard-phases
385 (add-after 'unpack 'fix-glibc-compatability
386 (lambda* (#:key inputs #:allow-other-keys)
387 ;; We use sed --in-place because substitute* cannot handle the
388 ;; character encoding used by growisofs.c.
389 (invoke "sed" "-i" "-e"
390 (string-append
391 "s,<sys/stat.h>,"
392 "<sys/stat.h>\\\n#include <sys/sysmacros.h>,")
393 "growisofs.c")))
394 (replace 'configure
395 (lambda _ (setenv "prefix" (assoc-ref %outputs "out")) #t))
396 (add-before 'build 'embed-mkisofs
397 (lambda* (#:key inputs #:allow-other-keys)
398 ;; We use sed --in-place because substitute* cannot handle the
399 ;; character encoding used by growisofs.c.
400 (invoke "sed" "-i" "-e"
401 (string-append
402 "s,\"mkisofs\","
403 "\"" (which "mkisofs") "\",")
404 "growisofs.c"))))))
405 (home-page "http://fy.chalmers.se/~appro/linux/DVD+RW/")
406 (synopsis "DVD and Blu-ray Disc burning tools")
407 (description "dvd+rw-tools, mostly known for its command
408 @command{growisofs}, is a collection of DVD and Blu-ray Disc burning tools.
409 It requires another program, such as @command{mkisofs}, @command{genisoimage},
410 or @command{xorrisofs} to create ISO 9660 images.")
411 (license gpl2)))
412
413 (define-public dvdisaster
414 (package
415 (name "dvdisaster")
416 (version "0.79.5")
417 (source
418 (origin
419 (method url-fetch)
420 ;; Update this (and update HOME-PAGE) when/if one reappears.
421 (uri (string-append "https://web.archive.org/web/20180428070843/"
422 "http://dvdisaster.net/downloads/dvdisaster-"
423 version ".tar.bz2"))
424 (sha256
425 (base32 "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w"))))
426 (build-system gnu-build-system)
427 (inputs
428 `(("gtk+" ,gtk+-2)))
429 (native-inputs
430 `(("gettext" ,gettext-minimal)
431 ("pkg-config" ,pkg-config)
432 ("which" ,which)))
433 (arguments
434 `(;; Parallel builds appear to be unsafe, see
435 ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
436 #:parallel-build? #f
437 #:phases
438 (modify-phases %standard-phases
439 (replace 'check
440 (lambda _
441 (with-directory-excursion "regtest"
442 (substitute* "common.bash"
443 (("ISODIR=/var/tmp/regtest") "ISODIR=/tmp"))
444 (for-each invoke (find-files "." "rs.*\\.bash")))
445 #t))
446 (add-after 'install 'install-desktop
447 (lambda* (#:key outputs #:allow-other-keys)
448 (let* ((datadir (string-append (assoc-ref outputs "out") "/share")))
449 (substitute* "contrib/dvdisaster.desktop"
450 (("dvdisaster48.png") "dvdisaster.png"))
451 (install-file "contrib/dvdisaster.desktop"
452 (string-append datadir "/applications"))
453 (for-each
454 (lambda (png)
455 (let* ((size (substring png
456 (string-index png char-set:digit)
457 (string-rindex png #\.)))
458 (icondir (string-append datadir "/icons/"
459 size "x" size "/apps")))
460 (mkdir-p icondir)
461 (copy-file png (string-append icondir "/dvdisaster.png"))))
462 (find-files "contrib" "dvdisaster[0-9]*\\.png"))
463 (mkdir-p (string-append datadir "/pixmaps"))
464 (copy-file "contrib/dvdisaster48.xpm"
465 (string-append datadir "/pixmaps/dvdisaster.xpm"))
466 #t))))))
467 (home-page (string-append "https://web.archive.org/web/20180428070843/"
468 "http://dvdisaster.net/en/index.html"))
469 (synopsis "Error correcting codes for optical media images")
470 (description "Optical media (CD,DVD,BD) keep their data only for a
471 finite time (typically for many years). After that time, data loss develops
472 slowly with read errors growing from the outer media region towards the
473 inside.
474
475 Dvdisaster stores data on CD/DVD/BD (supported media) in a way that it is
476 fully recoverable even after some read errors have developed. This enables
477 you to rescue the complete data to a new medium.
478
479 Data loss is prevented by using error correcting codes. Error correction
480 data is either added to the medium or kept in separate error correction
481 files. Dvdisaster works at the image level so that the recovery does not
482 depend on the file system of the medium. The maximum error correction
483 capacity is user-selectable.")
484 (license gpl2+)))
485
486 (define-public dvdstyler
487 (package
488 (name "dvdstyler")
489 (version "3.0.4")
490 (source
491 (origin
492 (method url-fetch)
493 (uri (string-append "mirror://sourceforge/dvdstyler/dvdstyler/"
494 version "/DVDStyler-" version ".tar.bz2"))
495 (sha256
496 (base32
497 "0lwc0hn94m9r8fi07sjqz3fr618l6lnw3zsakxw7nlgnxbjsk7pi"))))
498 (build-system gnu-build-system)
499 (arguments
500 `(#:configure-flags
501 (list (string-append "XMLTO="
502 (assoc-ref %build-inputs "xmlto")
503 "/bin/xmlto --searchpath "
504 (assoc-ref %build-inputs "docbook-xsl")
505 "/xml/xsl/docbook-xsl-" ,(package-version docbook-xsl)
506 "/htmlhelp:"
507 (assoc-ref %build-inputs "docbook-xml")
508 "/xml/dtd/docbook"))
509 #:phases
510 (modify-phases %standard-phases
511 (add-after 'install 'wrap-program
512 (lambda* (#:key inputs outputs #:allow-other-keys)
513 (wrap-program (string-append (assoc-ref outputs "out") "/bin/dvdstyler")
514 `("PATH" ":" prefix
515 (,(string-join
516 (map (lambda (in) (string-append (assoc-ref inputs in) "/bin"))
517 '("cdrtools" "dvdauthor" "dvd+rw-tools" "ffmpeg"))
518 ":"))))
519 #t)))
520 #:tests? #f)) ; No tests.
521 (inputs ; TODO package bundled wxvillalib
522 `(("wxwidgets" ,wxwidgets-3.1)
523 ("wssvg" ,wxsvg)
524 ("dbus" ,dbus)
525 ("cdrtools" ,cdrtools)
526 ("dvd+rw-tools" ,dvd+rw-tools)
527 ("dvdauthor" ,dvdauthor)
528 ("eudev" ,eudev)
529 ("fontconfig" ,fontconfig)
530 ("libexif" ,libexif)
531 ("libjpeg" ,libjpeg-turbo)
532 ("ffmpeg" ,ffmpeg-3.4)))
533 (native-inputs
534 `(("pkg-config" ,pkg-config)
535 ("flex" ,flex)
536 ("python" ,python-2)
537 ("xmlto" ,xmlto)
538 ("gettext" ,gettext-minimal)
539 ("docbook-xml" ,docbook-xml)
540 ("docbook-xsl" ,docbook-xsl)
541 ("zip" ,zip)))
542 (synopsis "DVD authoring application")
543 (description "DVDStyler is a DVD authoring application which allows users
544 to burn video files in many formats to DVD discs, complete with individually
545 designed menus. It can be used to create professional-looking DVD's with
546 custom buttons, backgrounds and animations, from within a user-friendly
547 graphical interface.")
548 (home-page "https://www.dvdstyler.org")
549 (license gpl2)))
550
551 (define-public libcue
552 (package
553 (name "libcue")
554 (version "2.2.1")
555 (source (origin
556 (method git-fetch)
557 (uri (git-reference
558 (url "https://github.com/lipnitsk/libcue")
559 (commit (string-append "v" version))))
560 (file-name (git-file-name name version))
561 (sha256
562 (base32
563 "1iqw4n01rv2jyk9lksagyxj8ml0kcfwk67n79zy1r6zv1xfp5ywm"))))
564 (build-system cmake-build-system)
565 (arguments
566 `(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
567 (native-inputs
568 `(("bison" ,bison)
569 ("flex" ,flex)))
570 (home-page "https://github.com/lipnitsk/libcue")
571 (synopsis "C library to parse cue sheets")
572 (description "Libcue is a C library to parse so-called @dfn{cue sheets}
573 which contain meta-data for CD/DVD tracks. It provides an API to manipulate
574 the data.")
575 (license gpl2+)))
576
577 (define-public cd-discid
578 (package
579 (name "cd-discid")
580 (version "1.4")
581 (home-page "http://linukz.org/cd-discid.shtml")
582 (source (origin
583 (method url-fetch)
584 (uri (string-append "http://linukz.org/download/cd-discid-"
585 version ".tar.gz"))
586 (sha256
587 (base32
588 "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz"))
589 (modules '((guix build utils)))
590 (snippet
591 '(begin
592 (substitute* "Makefile"
593 (("/usr/bin/install")
594 "install"))
595 #t))))
596 (build-system gnu-build-system)
597 (arguments
598 '(#:tests? #f
599 #:phases (modify-phases %standard-phases (delete 'configure))
600 #:make-flags (list "CC=gcc"
601 (string-append "PREFIX="
602 (assoc-ref %outputs "out")))))
603 (synopsis "Get CDDB discid information from an audio CD")
604 (description
605 "cd-discid is a command-line tool to retrieve CDDB discid information
606 from an audio CD.")
607 (license gpl2+)))
608
609 (define-public abcde
610 (package
611 (name "abcde")
612 (version "2.9.3")
613 (home-page "https://abcde.einval.com/")
614 (source (origin
615 (method url-fetch)
616 (uri (string-append home-page "/download/abcde-"
617 version ".tar.gz"))
618 (sha256
619 (base32
620 "091ip2iwb6b67bhjsj05l0sxyq2whqjycbzqpkfbpm4dlyxx0v04"))
621 (modules '((guix build utils)))
622 (snippet
623 '(begin
624 (substitute* "Makefile"
625 (("/usr/bin/install")
626 "install"))
627 #t))))
628 (build-system gnu-build-system)
629 (arguments
630 '(#:phases
631 (modify-phases %standard-phases
632 (replace 'configure
633 (lambda* (#:key outputs inputs #:allow-other-keys)
634 (substitute* "Makefile"
635 (("^prefix = .*$")
636 (string-append "prefix = "
637 (assoc-ref outputs "out")
638 "\n"))
639 (("^sysconfdir = .*$")
640 (string-append "sysconfdir = "
641 (assoc-ref outputs "out")
642 "/etc/\n")))
643 #t))
644 (add-after 'install 'wrap
645 (lambda* (#:key inputs outputs #:allow-other-keys)
646 (let ((wget (assoc-ref inputs "wget"))
647 (vorbis (assoc-ref inputs "vorbis-tools"))
648 (parano (assoc-ref inputs "cdparanoia"))
649 (which (assoc-ref inputs "which"))
650 (discid (assoc-ref inputs "cd-discid"))
651 (perl-discid (assoc-ref inputs "perl-musicbrainz-discid"))
652 (perl-ws (assoc-ref inputs "perl-webservice-musicbrainz"))
653 (perl-mojo (assoc-ref inputs "perl-mojolicious"))
654 (flac (assoc-ref inputs "flac"))
655 (out (assoc-ref outputs "out")))
656 (define (wrap file)
657 (wrap-program file
658 `("PATH" ":" prefix
659 (,(string-append out "/bin:"
660 wget "/bin:"
661 flac "/bin:"
662 which "/bin:"
663 vorbis "/bin:"
664 discid "/bin:"
665 parano "/bin")))
666 `("PERL5LIB" ":" prefix
667 (,(string-append perl-discid
668 "/lib/perl5/site_perl:"
669 perl-ws
670 "/lib/perl5/site_perl:"
671 perl-mojo
672 "/lib/perl5/site_perl")))))
673
674 (for-each wrap
675 (find-files (string-append out "/bin")
676 ".*")))
677 #t)))
678 #:tests? #f)) ; no test target
679
680 (inputs `(("wget" ,wget)
681 ("which" ,which)
682 ("cdparanoia" ,cdparanoia)
683 ("cd-discid" ,cd-discid)
684 ("vorbis-tools" ,vorbis-tools)
685 ("flac" ,flac)
686
687 ("perl-musicbrainz-discid" ,perl-musicbrainz-discid)
688 ("perl-webservice-musicbrainz" ,perl-webservice-musicbrainz)
689 ("perl-mojolicious" ,perl-mojolicious) ;indirect dependency
690
691 ;; A couple of Python and Perl scripts are included.
692 ("python" ,python)
693 ("perl" ,perl)))
694
695 (synopsis "Command-line audio CD ripper")
696 (description
697 "abcde is a front-end command-line utility (actually, a shell script)
698 that grabs tracks off a CD, encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex
699 and/or MPP/MP+ (Musepack) format, and tags them, all in one go.")
700 (license gpl2+)))
701
702 (define-public geteltorito
703 (package
704 (name "geteltorito")
705 (version "0.6")
706 (home-page
707 "https://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/")
708 (source (origin
709 (method url-fetch)
710 (uri (string-append home-page name "-" version ".tar.gz"))
711 (sha256
712 (base32
713 "1gkbm9ahj2mgqrkrfpibzclsriqgsbsvjh19fr815vpd9f6snkxv"))))
714 (build-system gnu-build-system)
715 (arguments
716 `(#:tests? #f ; No tests.
717 #:phases
718 (modify-phases %standard-phases
719 (delete 'configure)
720 (delete 'build)
721 (replace 'install
722 (lambda* (#:key outputs #:allow-other-keys)
723 (let ((out (assoc-ref outputs "out")))
724 (install-file "geteltorito"
725 (string-append out "/bin"))))))))
726 (inputs `(("perl" ,perl)))
727 (synopsis "Extract the boot image from a CD-ROM")
728 (description
729 "@command{geteltorito} can extract the initial/default boot
730 image from CDs (and ISOs) that follow the El Torito specification
731 for bootable CD-ROMs.
732
733 Image data is written to standard output by default and all other
734 information is written to standard error.")
735 (license gpl2+)))
736
737 (define-public asunder
738 (package
739 (name "asunder")
740 (version "2.9.6")
741 (source (origin
742 (method url-fetch)
743 (uri
744 (string-append "http://www.littlesvr.ca/asunder/releases/asunder-"
745 version
746 ".tar.bz2"))
747 (sha256
748 (base32
749 "1ycnd82lh7qy1pcbngd4b41s16j9hnm2kyfrncg4cwr3bfk7yg7a"))))
750 (build-system glib-or-gtk-build-system)
751 (arguments
752 '(#:out-of-source? #f
753 #:phases (modify-phases %standard-phases
754 (add-after 'install 'wrap
755 (lambda* (#:key inputs outputs #:allow-other-keys)
756 (let ((program (string-append (assoc-ref outputs "out")
757 "/bin/asunder")))
758 (define (bin-directory input-name)
759 (string-append (assoc-ref inputs input-name) "/bin"))
760 (wrap-program program
761 `("PATH" ":" prefix
762 ,(map bin-directory (list "cdparanoia"
763 "lame"
764 "vorbis-tools"
765 "flac"
766 "opus-tools"
767 "wavpack"))))))))))
768 (native-inputs `(("intltool" ,intltool)
769 ("pkg-config" ,pkg-config)))
770 ;; TODO: Add the necessary packages for Musepack encoding.
771 (inputs `(("gtk+-2" ,gtk+-2)
772 ("glib" ,glib)
773 ("libcddb" ,libcddb)
774 ("cdparanoia" ,cdparanoia)
775 ("lame" ,lame)
776 ("vorbis-tools" ,vorbis-tools)
777 ("flac" ,flac)
778 ("opus-tools" ,opus-tools)
779 ("wavpack" ,wavpack)))
780 (home-page "http://www.littlesvr.ca/asunder/")
781 (synopsis "Graphical audio CD ripper and encoder")
782 (description
783 "Asunder is a graphical audio CD ripper and encoder. It can save audio
784 tracks as WAV, MP3, Ogg Vorbis, FLAC, Opus, Wavpack, and Musepack. It can use
785 CDDB to name and tag each track automatically, and it allows for each track to
786 be by a different artist. Asunder can encode to multiple formats in one
787 session, and it can create M3U playlists.")
788 (license gpl2)))
789
790 (define-public ripit
791 (package
792 (name "ripit")
793 (version "3.9.0")
794 (source
795 (origin
796 (method url-fetch)
797 ;; The original suwald.com domain has expired.
798 (uri (list
799 (string-append "https://web.archive.org/web/20160327050927/"
800 "http://suwald.com/ripit/ripit-" version ".tar.gz")
801 (string-append "https://ponce.cc/slackware/sources/repo/ripit-"
802 version ".tar.gz")))
803 (sha256
804 (base32 "0ap71x477jy9c4jiqazb3y45hxdxm3jbq24x05g3vjyqzigi4x1b"))))
805 (build-system gnu-build-system)
806 (arguments
807 `(#:tests? #f ; no test suite
808 #:phases
809 (modify-phases %standard-phases
810 (delete 'configure)
811 (add-after 'unpack 'patch-usr-bin-install
812 (lambda* (#:key inputs outputs #:allow-other-keys)
813 (substitute* "Makefile"
814 (("/usr/bin/install") (string-append
815 (assoc-ref inputs "coreutils")
816 "/bin/install"))
817 (("\\$\\(DESTDIR\\)/usr/local") (assoc-ref outputs "out"))
818 (("../../etc") "etc")))))))
819 (native-inputs
820 `(("coreutils" ,coreutils)))
821 (inputs
822 `(("perl" ,perl)))
823 (propagated-inputs
824 `(("cdparanoia" ,cdparanoia)
825 ("flac" ,flac)
826 ("vorbis-tools" ,vorbis-tools)
827 ("wavpack" ,wavpack)
828 ("perl-cddb-get" ,perl-cddb-get)))
829 (home-page (string-append "https://web.archive.org/web/20170119092156/"
830 "http://www.suwald.com/ripit/about.php"))
831 (synopsis "Command-line program to extract audio CDs")
832 (description "RipIT is used to extract audio from CDs.")
833 (license gpl2)))
834
835 (define-public ccd2cue
836 (package
837 (name "ccd2cue")
838 (version "0.5")
839 (source
840 (origin
841 (method url-fetch)
842 (uri (string-append
843 "mirror://gnu/ccd2cue/ccd2cue-" version
844 ".tar.gz"))
845 (sha256
846 (base32
847 "1icrkg25hwx4gsn3dski2172ia4ywjh8m1sa17zmjclnrgdwy9c7"))))
848 (build-system gnu-build-system)
849 (synopsis "CCD to CUE sheet conversion")
850 (description
851 "GNU ccd2cue is a preprocessor for CD burning software that allows
852 the conversion of the proprietary CCD format to the CUE format, which
853 is well-supported by free software. These files are commonly
854 distributed with CD images and are used to describe how tracks are
855 laid out on the image.")
856 (home-page "https://www.gnu.org/software/ccd2cue/")
857 (license gpl3+)))
858
859 (define-public libburn
860 (package
861 (name "libburn")
862 (version "1.5.2")
863 (source (origin
864 (method url-fetch)
865 (uri (string-append "http://files.libburnia-project.org/releases/"
866 "libburn-" version ".tar.gz"))
867 (sha256
868 (base32
869 "09sjrvq8xsj1gnl2wwyv4lbmicyzzl6x1ac2rrn53xnp34bxnckv"))))
870 (build-system gnu-build-system)
871 (native-inputs
872 `(("pkg-config" ,pkg-config)))
873 (home-page "https://dev.lovelyhq.com/libburnia/libburn")
874 (synopsis "Library for reading and writing optical discs")
875 (description
876 "Libburn is a library for reading and writing optical discs.
877 Supported media are: CD-R, CD-RW, DVD-RAM, DVD+RW, DVD+R, DVD+R/DL,
878 DVD-RW, DVD-R, DVD-R/DL, BD-R, and BD-RE.")
879 (license gpl2)))
880
881 (define-public libisofs
882 (package
883 (name "libisofs")
884 (version "1.5.2")
885 (source (origin
886 (method url-fetch)
887 (uri (string-append "http://files.libburnia-project.org/releases/"
888 "libisofs-" version ".tar.gz"))
889 (sha256
890 (base32
891 "002mcyqwg625a8hqvsrmgm26mhhfwj0j7rahfhsqirmk02b16npg"))))
892 (build-system gnu-build-system)
893 (inputs
894 `(("zlib" ,zlib)
895 ("acl" ,acl)))
896 (native-inputs
897 `(("pkg-config" ,pkg-config)))
898 (home-page "https://dev.lovelyhq.com/libburnia/libisofs")
899 (synopsis "Library to create ISO 9660 images")
900 (description
901 "Libisofs creates ISO 9660 (also known as ECMA-119) file system images
902 which can either be written to POSIX file objects or handed over to
903 libburn for being written directly to optical media.
904 It can read metadata of ISO 9660 filesystems, manipulate them, and use them
905 to produce new complete file system images or add-on images to be appended
906 to the read file system image.
907 Supported extensions to ISO 9660 are Rock Ridge, Joliet, AAIP, zisofs.")
908 (license gpl2+)))
909
910 (define-public cdrkit-libre
911 (package
912 (name "cdrkit-libre")
913 (version "1.1.11")
914 (source (origin
915 (method url-fetch)
916 ;; cdrkit.org is dead.
917 ;;
918 ;; ‘cdrkit-libre’ removes a couple of problematic files,
919 ;; see <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=32165#14>.
920 (uri (string-append
921 "https://repo.parabola.nu/other/cdrkit-libre/cdrkit-libre-"
922 version ".tar.gz"))
923 (sha256
924 (base32
925 "0g2zyzb56czh429qy87lvaddzjnlcq8c616ddxsmsshz3clhyzrh"))))
926 (build-system cmake-build-system)
927 (inputs
928 `(("bzip2" ,bzip2)
929 ("libcap" ,libcap)
930 ("perl" ,perl)
931 ("zlib" ,zlib)))
932 (arguments
933 `(#:tests? #f ;no tests
934 #:phases
935 (modify-phases %standard-phases
936 (add-after 'install 'old-cdrecord
937 (lambda* (#:key outputs #:allow-other-keys)
938 (with-directory-excursion (string-append (assoc-ref outputs "out")
939 "/bin")
940 (symlink "genisoimage" "mkisofs")
941 (symlink "wodim" "cdrecord"))
942 #t)))))
943 (home-page "https://repo.parabola.nu/other/cdrkit-libre/")
944 (synopsis "Command-line CD/DVD recorder")
945 (description "Cdrkit is a suite of programs for recording CDs and DVDs,
946 blanking CD-RW media, creating ISO-9660 file system images, extracting audio
947 CD data, and more. It's mostly compatible with @code{cdrtools}.")
948 (license gpl2+)))
949
950 (define-public libmirage
951 (package
952 (name "libmirage")
953 (version "3.2.4")
954 (source (origin
955 (method url-fetch)
956 (uri (string-append
957 "https://downloads.sourceforge.net/cdemu/libmirage-"
958 version ".tar.bz2"))
959 (sha256
960 (base32
961 "0md3f71x2dbgyw5s254vx1s80slh3f25r9pvjihkrmj0rn53nnzw"))))
962 (build-system cmake-build-system)
963 (native-inputs
964 `(("pkg-config" ,pkg-config)
965 ("intltool" ,intltool)))
966 (inputs
967 `(("glib" ,glib)))
968 (arguments
969 ;; No tests.
970 '(#:tests? #f))
971 (home-page "https://cdemu.sourceforge.io/")
972 (synopsis "CD-ROM image access library")
973 (description "libMirage is a CD-ROM image access library. It supports the
974 following formats: B6T, C2D, CCD, CDI, CIF, CUE, ISO, MDS, MDX, NRG, TOC. It
975 is written in C and based on GLib. Its aim is to provide uniform access to
976 the data stored in various image formats.")
977 (license gpl2+)))
978
979 (define-public cdemu-daemon
980 (package
981 (name "cdemu-daemon")
982 (version "3.2.4")
983 (source (origin
984 (method url-fetch)
985 (uri (string-append
986 "https://downloads.sourceforge.net/cdemu/cdemu-daemon/"
987 "cdemu-daemon-" version ".tar.bz2"))
988 (sha256
989 (base32
990 "02yyj8sr7d5briamhzrqh8zdsiiggxmx5y05kx25y7k3g15jvcx6"))))
991 (build-system cmake-build-system)
992 (native-inputs
993 `(("pkg-config" ,pkg-config)
994 ("intltool" ,intltool)))
995 (inputs
996 `(("libmirage" ,libmirage)
997 ("glib" ,glib)
998 ("ao" ,ao)))
999 (arguments
1000 ;; No tests.
1001 '(#:tests? #f))
1002 (home-page "https://cdemu.sourceforge.io/")
1003 (synopsis "CD/DVD-ROM device emulator")
1004 (description "CDemu is a software suite designed to emulate an optical
1005 drive and disc (including CD-ROMs and DVD-ROMs).")
1006 (license gpl2+)))
1007
1008 (define-public cdemu-client
1009 (package
1010 (name "cdemu-client")
1011 (version "3.2.4")
1012 (source (origin
1013 (method url-fetch)
1014 (uri (string-append
1015 "https://downloads.sourceforge.net/cdemu/cdemu-client-"
1016 version ".tar.bz2"))
1017 (sha256
1018 (base32
1019 "1swylaja1p1jfjf3s58c9hsk1cyy20i7mrq32kcg6kzp88grs8my"))))
1020 (build-system cmake-build-system)
1021 (native-inputs
1022 `(("pkg-config" ,pkg-config)
1023 ("intltool" ,intltool)))
1024 (inputs
1025 `(("python" ,python)
1026 ("python-pygobject" ,python-pygobject)
1027 ("cdemu-daemon" ,cdemu-daemon)))
1028 (arguments
1029 ;; No tests.
1030 `(#:tests? #f
1031 #:phases
1032 (modify-phases %standard-phases
1033 (add-after 'install 'patch-shebang
1034 (lambda* (#:key outputs #:allow-other-keys)
1035 (patch-shebang (string-append (assoc-ref outputs "out")
1036 "/bin/cdemu"))
1037 #t))
1038 (add-after 'patch-shebang 'wrap-program
1039 (lambda* (#:key outputs #:allow-other-keys)
1040 (let ((prog (string-append (assoc-ref outputs "out")
1041 "/bin/cdemu")))
1042 (wrap-program prog
1043 `("PYTHONPATH" = (,(getenv "PYTHONPATH"))))
1044 #t))))))
1045 (home-page "https://cdemu.sourceforge.io/")
1046 (synopsis "Command-line client for controlling cdemu-daemon")
1047 (description "CDEmu client is a simple command-line client for controlling
1048 CDEmu daemon.
1049
1050 It provides a way to perform the key tasks related to controlling the CDEmu
1051 daemon, such as loading and unloading devices, displaying devices' status and
1052 retrieving/setting devices' debug masks.")
1053 (license gpl2+)))