gnu: All snippets report errors using exceptions, else return #t.
[jackhill/guix/guix.git] / gnu / packages / cdrom.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2013, 2014, 2015 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 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 Tobias Geerinckx-Rice <me@tobias.gr>
12 ;;; Copyright © 2017 ng0 <ng0@n0.is>
13 ;;;
14 ;;; This file is part of GNU Guix.
15 ;;;
16 ;;; GNU Guix is free software; you can redistribute it and/or modify it
17 ;;; under the terms of the GNU General Public License as published by
18 ;;; the Free Software Foundation; either version 3 of the License, or (at
19 ;;; your option) any later version.
20 ;;;
21 ;;; GNU Guix is distributed in the hope that it will be useful, but
22 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 ;;; GNU General Public License for more details.
25 ;;;
26 ;;; You should have received a copy of the GNU General Public License
27 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
28
29 (define-module (gnu packages cdrom)
30 #:use-module (guix download)
31 #:use-module (guix packages)
32 #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+ cddl1.0))
33 #:use-module (guix build-system cmake)
34 #:use-module (guix build-system gnu)
35 #:use-module (guix build-system glib-or-gtk)
36 #:use-module (guix gexp)
37 #:use-module (gnu packages)
38 #:use-module (gnu packages acl)
39 #:use-module (gnu packages audio)
40 #:use-module (gnu packages bison)
41 #:use-module (gnu packages compression)
42 #:use-module (gnu packages flex)
43 #:use-module (gnu packages fontutils)
44 #:use-module (gnu packages gettext)
45 #:use-module (gnu packages docbook)
46 #:use-module (gnu packages xml)
47 #:use-module (gnu packages gtk)
48 #:use-module (gnu packages glib)
49 #:use-module (gnu packages man)
50 #:use-module (gnu packages m4)
51 #:use-module (gnu packages mp3)
52 #:use-module (gnu packages ncurses)
53 #:use-module (gnu packages elf)
54 #:use-module (gnu packages wxwidgets)
55 #:use-module (gnu packages linux)
56 #:use-module (gnu packages pkg-config)
57 #:use-module (gnu packages readline)
58 #:use-module (gnu packages base)
59 #:use-module (gnu packages perl)
60 #:use-module (gnu packages python)
61 #:use-module (gnu packages image)
62 #:use-module (gnu packages photo)
63 #:use-module (gnu packages video)
64 #:use-module (gnu packages wget)
65 #:use-module (gnu packages xiph))
66
67 (define-public libcddb
68 (package
69 (name "libcddb")
70 (version "1.3.2")
71 (source (origin
72 (method url-fetch)
73 (uri (string-append "mirror://sourceforge/libcddb/libcddb/" version
74 "/libcddb-" version ".tar.bz2"))
75 (sha256
76 (base32
77 "0fr21a7vprdyy1bq6s99m0x420c9jm5fipsd63pqv8qyfkhhxkim"))))
78 (build-system gnu-build-system)
79 (arguments '(#:tests? #f)) ; tests rely on access to external servers
80 (home-page "http://libcddb.sourceforge.net/")
81 (synopsis "C library to access data on a CDDB server")
82 (description
83 "Libcddb is a C library to access data on a CDDB server (freedb.org). It
84 allows you to:
85
86 1. search the database for possible CD matches;
87
88 2. retrieve detailed information about a specific CD;
89
90 3. submit new CD entries to the database.
91
92 Libcddb supports both the custom CDDB protocol and tunnelling the query and
93 read operations over plain HTTP. It is also possible to use an HTTP proxy
94 server. If you want to speed things up, you can make use of the built-in
95 caching facility provided by the library.")
96 (license lgpl2.1+)))
97
98 (define-public libcdio
99 (package
100 (name "libcdio")
101 (version "2.0.0")
102 (source (origin
103 (method url-fetch)
104 (uri (string-append "mirror://gnu/libcdio/libcdio-"
105 version ".tar.bz2"))
106 (sha256
107 (base32
108 "0jr8ppdm80c533nzmrpz3iffnpc6nhvsria1di9f4jg1l19a03fd"))))
109 (build-system gnu-build-system)
110 (inputs
111 `(("ncurses" ,ncurses)
112 ("libcddb" ,libcddb)))
113 (native-inputs
114 `(("help2man" ,help2man)
115 ("pkg-config" ,pkg-config)))
116 (home-page "https://www.gnu.org/software/libcdio/")
117 (synopsis "CD Input and Control library")
118 (description
119 "The GNU Compact Disc Input and Control Library (libcdio) is a library
120 for CD-ROM and CD image file access. It allows the developer to add CD
121 access to an application without having to worry about the OS- and
122 device-dependent properties of CD-ROM or the specific details of CD image
123 formats. It includes pycdio, a Python interface to libcdio, and
124 libcdio-paranoia, a library providing jitter-free and error-free audio
125 extraction from CDs.")
126 (license gpl3+)))
127
128 (define-public libcdio-paranoia
129 (package
130 (name "libcdio-paranoia")
131 (version "10.2+0.94+2")
132 (source (origin
133 (method url-fetch)
134 (uri (string-append "mirror://gnu/libcdio/libcdio-paranoia-"
135 version ".tar.gz"))
136 (sha256
137 (base32
138 "0h8rr1ir05r29rgawa1ccw335668k4s3zq4yg9095svyx7n843yn"))))
139 (build-system gnu-build-system)
140 (native-inputs `(("pkg-config" ,pkg-config)))
141 (propagated-inputs `(("libcdio" ,libcdio)))
142 (home-page "https://www.gnu.org/software/libcdio/")
143 (synopsis "Jitter- and error-tolerant CD audio extraction")
144 (description
145 "libcdio-paranoia is an implementation of CD paranoia libraries based on
146 libcdio.")
147 (license gpl3+)))
148
149 (define-public xorriso
150 (package
151 (name "xorriso")
152 (version "1.4.8")
153 (source (origin
154 (method url-fetch)
155 (uri (string-append "mirror://gnu/xorriso/xorriso-"
156 version ".tar.gz"))
157 (sha256
158 (base32
159 "10c44yr3dpmwxa7rf23mwfsy1bahny3jpcg9ig0xjv090jg0d0pc"))))
160 (build-system gnu-build-system)
161 (inputs
162 `(("acl" ,acl)
163 ("readline" ,readline)
164 ("zlib" ,zlib)))
165 (home-page "https://www.gnu.org/software/xorriso/")
166 (synopsis "Create, manipulate, burn ISO-9660 file systems")
167 (description
168 "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock
169 Ridge, a.k.a. Compact Disc File System, file systems and it allows
170 session-wise manipulation of them. It features a formatter and burner for
171 CD, DVD and BD. It can operate on existing ISO images or it can create new
172 ones. xorriso can then be used to copy files directly into or out of ISO
173 files.")
174 (license gpl3+)))
175
176 (define-public cdparanoia
177 (package
178 (name "cdparanoia")
179 (version "10.2")
180 (source (origin
181 (method url-fetch)
182 (uri (string-append "http://downloads.xiph.org/releases/"
183 "cdparanoia/cdparanoia-III-"
184 version ".src.tgz"))
185 (sha256
186 (base32
187 "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80"))
188 (patches (search-patches "cdparanoia-fpic.patch"))
189 (modules '((guix build utils)))
190 (snippet
191 '(begin
192 ;; Make libraries respect LDFLAGS.
193 (substitute* '("paranoia/Makefile.in" "interface/Makefile.in")
194 (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname"))
195 #t))))
196 (build-system gnu-build-system)
197 (arguments
198 `(#:tests? #f ; there is no check target
199 #:configure-flags ; Add $libdir to the RUNPATH of all the executables.
200 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))
201 (home-page "http://www.xiph.org/paranoia/")
202 (synopsis "Audio CD reading utility")
203 (description "Cdparanoia retrieves audio tracks from CDDA capable CDROM
204 drives. The data can be saved to a file or directed to standard output
205 in WAV, AIFF, AIFF-C or raw format. Most ATAPI, SCSI and several
206 proprietary CDROM drive makes are supported; cdparanoia can determine if the
207 target drive is CDDA capable. In addition to simple reading, cdparanoia adds
208 extra-robust data verification, synchronization, error handling and scratch
209 reconstruction capability.")
210 (license gpl2))) ; libraries under lgpl2.1
211
212 (define-public cdrtools
213 (package
214 (name "cdrtools")
215 (version "3.01")
216 (source (origin
217 (method url-fetch)
218 (uri (string-append
219 "mirror://sourceforge/cdrtools/cdrtools-" version ".tar.bz2"))
220 (sha256
221 (base32
222 "03w6ypsmwwy4d7vh6zgwpc60v541vc5ywp8bdb758hbc4yv2wa7d"))
223 (patches (search-patches "cdrtools-3.01-mkisofs-isoinfo.patch"))))
224 (build-system gnu-build-system)
225 ;; XXX cdrtools bundles a modified, relicensed early version of cdparanoia.
226 (inputs
227 `(("linux-headers" ,linux-libre-headers)))
228 (arguments
229 `(#:phases
230 (modify-phases %standard-phases
231 (delete 'configure)
232 (add-before 'build 'set-linux-headers
233 (lambda _
234 (substitute* "autoconf/configure"
235 (("/usr/src/linux")
236 (assoc-ref %build-inputs "linux-headers")))
237 #t))
238 (add-before 'build 'substitute-dirs
239 (lambda _
240 (substitute* (append (find-files "DEFAULTS" "^Defaults\\.")
241 (find-files "DEFAULTS_ENG" "^Defaults\\.")
242 (find-files "TEMPLATES" "^Defaults\\."))
243 (("/opt/schily") (assoc-ref %outputs "out")))
244 #t))
245 (replace 'build
246 (lambda _
247 (zero?
248 (system* "make" "CONFIG_SHELL=sh" "CCOM=gcc" "RM=rm"))))
249 (replace 'install
250 (lambda _
251 (zero?
252 (system* "make"
253 "RM=rm" "LN=ln" "SYMLINK=ln -s"
254 (string-append "INS_BASE=" (assoc-ref %outputs "out"))
255 (string-append "INS_RBASE=" (assoc-ref %outputs "out"))
256 "install" )))))
257 #:tests? #f)) ; no tests
258 (synopsis "Command line utilities to manipulate and burn CD/DVD/BD images")
259 (description "cdrtools is a collection of command line utilities to create
260 CD's, DVD's or Blue Ray discs. The most important components are
261 @command{cdrecord}, a burning program, @command{cdda2wav}, a CD audio ripper
262 which uses libparanoia, and @command{mkisofs}, which can create various disc
263 images.")
264 (home-page "http://cdrtools.sourceforge.net/private/cdrecord.html")
265
266 ;; mkisofs is GPL, the other programs are CDDL.
267 (license (list cddl1.0 gpl2))))
268
269 (define-public dvd+rw-tools
270 (package
271 (name "dvd+rw-tools")
272 (version "7.1")
273 (source (origin
274 (method url-fetch)
275 (uri (string-append
276 "http://fy.chalmers.se/~appro/linux/DVD+RW/tools/dvd+rw-tools-"
277 version ".tar.gz"))
278 (sha256
279 (base32
280 "1jkjvvnjcyxpql97xjjx0kwvy70kxpiznr2zpjy2hhci5s10zmpq"))
281 (patches (search-patches "dvd+rw-tools-add-include.patch"))))
282 (build-system gnu-build-system)
283 (inputs
284 `(("cdrtools" ,cdrtools)))
285 (native-inputs
286 `(("m4" ,m4)))
287 (arguments
288 `(#:tests? #f ; No tests.
289 #:phases
290 (modify-phases %standard-phases
291 (replace 'configure
292 (lambda _ (setenv "prefix" (assoc-ref %outputs "out")) #t))
293 (add-before 'build 'embed-mkisofs
294 (lambda* (#:key inputs #:allow-other-keys)
295 ;; We use sed --in-place because substitute* cannot handle the
296 ;; character encoding used by growisofs.c.
297 (zero? (system* "sed" "-i" "-e"
298 (string-append
299 "s,\"mkisofs\","
300 "\"" (which "mkisofs") "\",")
301 "growisofs.c")))))))
302 (home-page "http://fy.chalmers.se/~appro/linux/DVD+RW/")
303 (synopsis "DVD and Blu-ray Disc burning tools")
304 (description "dvd+rw-tools, mostly known for its command
305 @command{growisofs}, is a collection of DVD and Blu-ray Disc burning tools.
306 It requires another program, such as @command{mkisofs}, @command{genisoimage},
307 or @command{xorrisofs} to create ISO 9660 images.")
308 (license gpl2)))
309
310 (define-public dvdisaster
311 (package
312 (name "dvdisaster")
313 (version "0.79.5")
314 (source (origin
315 (method url-fetch)
316 (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
317 version ".tar.bz2"))
318 (sha256
319 (base32
320 "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w"))))
321 (build-system gnu-build-system)
322 (inputs
323 `(("gtk+" ,gtk+-2)))
324 (native-inputs
325 `(("gettext" ,gettext-minimal)
326 ("pkg-config" ,pkg-config)
327 ("which" ,which)))
328 (arguments
329 `(;; Parallel builds appear to be unsafe, see
330 ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
331 #:parallel-build? #f
332 #:tests? #f)) ; no check target
333 (home-page "http://dvdisaster.net/en/index.html")
334 (synopsis "Error correcting codes for optical media images")
335 (description "Optical media (CD,DVD,BD) keep their data only for a
336 finite time (typically for many years). After that time, data loss develops
337 slowly with read errors growing from the outer media region towards the
338 inside.
339
340 Dvdisaster stores data on CD/DVD/BD (supported media) in a way that it is
341 fully recoverable even after some read errors have developed. This enables
342 you to rescue the complete data to a new medium.
343
344 Data loss is prevented by using error correcting codes. Error correction
345 data is either added to the medium or kept in separate error correction
346 files. Dvdisaster works at the image level so that the recovery does not
347 depend on the file system of the medium. The maximum error correction
348 capacity is user-selectable.")
349 (license gpl2+)))
350
351 (define-public dvdstyler
352 (package
353 (name "dvdstyler")
354 (version "3.0.4")
355 (source
356 (origin
357 (method url-fetch)
358 (uri (string-append "mirror://sourceforge/dvdstyler/dvdstyler/"
359 version "/DVDStyler-" version ".tar.bz2"))
360 (sha256
361 (base32
362 "0lwc0hn94m9r8fi07sjqz3fr618l6lnw3zsakxw7nlgnxbjsk7pi"))))
363 (build-system gnu-build-system)
364 (arguments
365 `(#:configure-flags
366 (list (string-append "XMLTO="
367 (assoc-ref %build-inputs "xmlto")
368 "/bin/xmlto --searchpath "
369 (assoc-ref %build-inputs "docbook-xsl")
370 "/xml/xsl/docbook-xsl-" ,(package-version docbook-xsl)
371 "/htmlhelp:"
372 (assoc-ref %build-inputs "docbook-xml")
373 "/xml/dtd/docbook"))
374 #:phases
375 (modify-phases %standard-phases
376 (add-after 'install 'wrap-program
377 (lambda* (#:key inputs outputs #:allow-other-keys)
378 (wrap-program (string-append (assoc-ref outputs "out") "/bin/dvdstyler")
379 `("PATH" ":" prefix
380 (,(string-join
381 (map (lambda (in) (string-append (assoc-ref inputs in) "/bin"))
382 '("cdrtools" "dvdauthor" "dvd+rw-tools" "ffmpeg"))
383 ":"))))
384 #t)))
385 #:tests? #f)) ; No tests.
386 (inputs ; TODO package bundled wxvillalib
387 `(("wxwidgets" ,wxwidgets-3.1)
388 ("wssvg" ,wxsvg)
389 ("dbus" ,dbus)
390 ("cdrtools" ,cdrtools)
391 ("dvd+rw-tools" ,dvd+rw-tools)
392 ("dvdauthor" ,dvdauthor)
393 ("eudev" ,eudev)
394 ("fontconfig" ,fontconfig)
395 ("libexif" ,libexif)
396 ("libjpeg" ,libjpeg)
397 ("ffmpeg" ,ffmpeg)))
398 (native-inputs
399 `(("pkg-config" ,pkg-config)
400 ("flex" ,flex)
401 ("python" ,python-2)
402 ("xmlto" ,xmlto)
403 ("gettext" ,gnu-gettext)
404 ("docbook-xml" ,docbook-xml)
405 ("docbook-xsl" ,docbook-xsl)
406 ("zip" ,zip)))
407 (synopsis "DVD authoring application")
408 (description "DVDStyler is a DVD authoring application which allows users
409 to burn video files in many formats to DVD discs, complete with individually
410 designed menus. It can be used to create professional-looking DVD's with
411 custom buttons, backgrounds and animations, from within a user-friendly
412 graphical interface.")
413 (home-page "https://www.dvdstyler.org")
414 (license gpl2)))
415
416 (define-public libcue
417 (package
418 (name "libcue")
419 (version "2.2.0")
420 (source (origin
421 (method url-fetch)
422 (uri (string-append
423 "https://github.com/lipnitsk/libcue/archive/v"
424 version ".tar.gz"))
425 (file-name (string-append name "-" version ".tar.gz"))
426 (sha256
427 (base32
428 "0y9808vbly1w6i3diaad9csjmmw6iaw572wjjr68ssqamsw193rj"))))
429 (build-system cmake-build-system)
430 (native-inputs
431 `(("bison" ,bison)
432 ("flex" ,flex)))
433 (home-page "https://github.com/lipnitsk/libcue")
434 (synopsis "C library to parse cue sheets")
435 (description "Libcue is a C library to parse so-called @dfn{cue sheets}
436 which contain meta-data for CD/DVD tracks. It provides an API to manipulate
437 the data.")
438 (license gpl2+)))
439
440 (define-public cd-discid
441 (package
442 (name "cd-discid")
443 (version "1.4")
444 (home-page "http://linukz.org/cd-discid.shtml")
445 (source (origin
446 (method url-fetch)
447 (uri (string-append "http://linukz.org/download/cd-discid-"
448 version ".tar.gz"))
449 (sha256
450 (base32
451 "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz"))
452 (modules '((guix build utils)))
453 (snippet
454 '(begin
455 (substitute* "Makefile"
456 (("/usr/bin/install")
457 "install"))
458 #t))))
459 (build-system gnu-build-system)
460 (arguments
461 '(#:tests? #f
462 #:phases (modify-phases %standard-phases (delete 'configure))
463 #:make-flags (list "CC=gcc"
464 (string-append "PREFIX="
465 (assoc-ref %outputs "out")))))
466 (synopsis "Get CDDB discid information from an audio CD")
467 (description
468 "cd-discid is a command-line tool to retrieve CDDB discid information
469 from an audio CD.")
470 (license gpl2+)))
471
472 (define-public abcde
473 (package
474 (name "abcde")
475 (version "2.8.1")
476 (home-page "https://abcde.einval.com/")
477 (source (origin
478 (method url-fetch)
479 (uri (string-append home-page "/download/abcde-"
480 version ".tar.gz"))
481 (sha256
482 (base32
483 "0f9bjs0phk23vry7gvh0cll9vl6kmc1y4fwwh762scfdvpbp3774"))
484 (modules '((guix build utils)))
485 (snippet
486 '(begin
487 (substitute* "Makefile"
488 (("/usr/bin/install")
489 "install")
490 (("^etcdir = .*$")
491 (string-append "etcdir = $(prefix)/etc\n")))
492 #t))))
493 (build-system gnu-build-system)
494 (arguments
495 '(#:phases
496 (modify-phases %standard-phases
497 (replace 'configure
498 (lambda* (#:key outputs inputs #:allow-other-keys)
499 (substitute* "Makefile"
500 (("^prefix = .*$")
501 (string-append "prefix = "
502 (assoc-ref outputs "out")
503 "\n"))
504 (("^sysconfdir = .*$")
505 (string-append "sysconfdir = "
506 (assoc-ref outputs "out")
507 "/etc/\n")))
508 #t))
509 (add-after 'install 'wrap
510 (lambda* (#:key inputs outputs #:allow-other-keys)
511 (let ((wget (assoc-ref inputs "wget"))
512 (vorbis (assoc-ref inputs "vorbis-tools"))
513 (parano (assoc-ref inputs "cdparanoia"))
514 (which (assoc-ref inputs "which"))
515 (discid (assoc-ref inputs "cd-discid"))
516 (flac (assoc-ref inputs "flac"))
517 (out (assoc-ref outputs "out")))
518 (define (wrap file)
519 (wrap-program file
520 `("PATH" ":" prefix
521 (,(string-append out "/bin:"
522 wget "/bin:"
523 flac "/bin:"
524 which "/bin:"
525 vorbis "/bin:"
526 discid "/bin:"
527 parano "/bin")))))
528
529 (for-each wrap
530 (find-files (string-append out "/bin")
531 ".*"))))))
532 #:tests? #f)) ; no test target
533
534 (inputs `(("wget" ,wget)
535 ("which" ,which)
536 ("cdparanoia" ,cdparanoia)
537 ("cd-discid" ,cd-discid)
538 ("vorbis-tools" ,vorbis-tools)
539 ("flac" ,flac)
540
541 ;; A couple of Python and Perl scripts are included.
542 ("python" ,python)
543 ("perl" ,perl)))
544
545 (synopsis "Command-line audio CD ripper")
546 (description
547 "abcde is a front-end command-line utility (actually, a shell script)
548 that grabs tracks off a CD, encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex
549 and/or MPP/MP+ (Musepack) format, and tags them, all in one go.")
550 (license gpl2+)))
551
552 (define-public geteltorito
553 (package
554 (name "geteltorito")
555 (version "0.6")
556 (home-page
557 "https://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/")
558 (source (origin
559 (method url-fetch)
560 (uri (string-append home-page name "-" version ".tar.gz"))
561 (sha256
562 (base32
563 "1gkbm9ahj2mgqrkrfpibzclsriqgsbsvjh19fr815vpd9f6snkxv"))))
564 (build-system gnu-build-system)
565 (arguments
566 `(#:tests? #f ; No tests.
567 #:phases
568 (modify-phases %standard-phases
569 (delete 'configure)
570 (delete 'build)
571 (replace 'install
572 (lambda* (#:key outputs #:allow-other-keys)
573 (let ((out (assoc-ref outputs "out")))
574 (install-file "geteltorito"
575 (string-append out "/bin"))))))))
576 (inputs `(("perl" ,perl)))
577 (synopsis "Extract the boot image from a CD-ROM")
578 (description
579 "@command{geteltorito} can extract the initial/default boot
580 image from CDs (and ISOs) that follow the El Torito specification
581 for bootable CD-ROMs.
582
583 Image data is written to standard output by default and all other
584 information is written to standard error.")
585 (license gpl2+)))
586
587 (define-public asunder
588 (package
589 (name "asunder")
590 (version "2.8")
591 (source (origin
592 (method url-fetch)
593 (uri
594 (string-append "http://www.littlesvr.ca/asunder/releases/asunder-"
595 version
596 ".tar.bz2"))
597 (sha256
598 (base32
599 "1nq9kd4rd4k2kibf57gdbm0zw2gxa234vvvdhxkm8g5bhx5h3iyq"))))
600 (build-system glib-or-gtk-build-system)
601 (arguments
602 '(#:out-of-source? #f
603 #:phases (modify-phases %standard-phases
604 (add-after 'install 'wrap
605 (lambda* (#:key inputs outputs #:allow-other-keys)
606 (let ((program (string-append (assoc-ref outputs "out")
607 "/bin/asunder")))
608 (define (bin-directory input-name)
609 (string-append (assoc-ref inputs input-name) "/bin"))
610 (wrap-program program
611 `("PATH" ":" prefix
612 ,(map bin-directory (list "cdparanoia"
613 "lame"
614 "vorbis-tools"
615 "flac"
616 "opus-tools"
617 "wavpack"))))))))))
618 (native-inputs `(("intltool" ,intltool)
619 ("pkg-config" ,pkg-config)))
620 ;; TODO: Add the necessary packages for Musepack encoding.
621 (inputs `(("gtk+-2" ,gtk+-2)
622 ("glib" ,glib)
623 ("libcddb" ,libcddb)
624 ("cdparanoia" ,cdparanoia)
625 ("lame" ,lame)
626 ("vorbis-tools" ,vorbis-tools)
627 ("flac" ,flac)
628 ("opus-tools" ,opus-tools)
629 ("wavpack" ,wavpack)))
630 (home-page "http://www.littlesvr.ca/asunder/")
631 (synopsis "Graphical audio CD ripper and encoder")
632 (description
633 "Asunder is a graphical audio CD ripper and encoder. It can save audio
634 tracks as WAV, MP3, Ogg Vorbis, FLAC, Opus, Wavpack, and Musepack. It can use
635 CDDB to name and tag each track automatically, and it allows for each track to
636 be by a different artist. Asunder can encode to multiple formats in one
637 session, and it can create M3U playlists.")
638 (license gpl2)))
639
640 (define-public ripit
641 (package
642 (name "ripit")
643 (version "3.9.0")
644 (source (origin
645 (method url-fetch)
646 (uri (string-append "http://www.suwald.com/ripit/ripit-"
647 version ".tar.gz"))
648 (sha256
649 (base32
650 "0ap71x477jy9c4jiqazb3y45hxdxm3jbq24x05g3vjyqzigi4x1b"))))
651 (build-system gnu-build-system)
652 (arguments
653 `(#:tests? #f ; No test suite.
654 #:phases
655 (modify-phases %standard-phases
656 (delete 'configure)
657 (add-after 'unpack 'patch-usr-bin-install
658 (lambda* (#:key inputs outputs #:allow-other-keys)
659 (substitute* "Makefile"
660 (("/usr/bin/install") (string-append
661 (assoc-ref inputs "coreutils")
662 "/bin/install"))
663 (("\\$\\(DESTDIR\\)/usr/local") (assoc-ref outputs "out"))
664 (("../../etc") "etc")))))))
665 (native-inputs
666 `(("coreutils" ,coreutils)))
667 (inputs
668 `(("perl" ,perl)))
669 (propagated-inputs
670 `(("cdparanoia" ,cdparanoia)
671 ("flac" ,flac)
672 ("vorbis-tools" ,vorbis-tools)
673 ("wavpack" ,wavpack)
674 ("perl-cddb-get" ,perl-cddb-get)))
675 (home-page "http://www.suwald.com/ripit/about.php")
676 (synopsis "Command-line program to extract audio CDs")
677 (description "RipIT is used to extract audio from CDs.")
678 (license gpl2)))
679
680 (define-public ccd2cue
681 (package
682 (name "ccd2cue")
683 (version "0.5")
684 (source
685 (origin
686 (method url-fetch)
687 (uri (string-append
688 "mirror://gnu/ccd2cue/ccd2cue-" version
689 ".tar.gz"))
690 (sha256
691 (base32
692 "1icrkg25hwx4gsn3dski2172ia4ywjh8m1sa17zmjclnrgdwy9c7"))))
693 (build-system gnu-build-system)
694 (synopsis "CCD to CUE sheet conversion")
695 (description
696 "GNU ccd2cue is a preprocessor for CD burning software that allows
697 the conversion of the proprietary CCD format to the CUE format, which
698 is well-supported by free software. These files are commonly
699 distributed with CD images and are used to describe how tracks are
700 laid out on the image.")
701 (home-page "https://www.gnu.org/software/ccd2cue/")
702 (license gpl3+)))
703
704 (define-public libburn
705 (package
706 (name "libburn")
707 (version "1.4.6")
708 (source (origin
709 (method url-fetch)
710 (uri (string-append "http://files.libburnia-project.org/releases/"
711 "libburn-" version ".tar.gz"))
712 (sha256
713 (base32
714 "0wbh49s3az3sfpai09z1zdgynq7wnwrk31v5589033274nmzldlx"))))
715 (build-system gnu-build-system)
716 (native-inputs
717 `(("pkg-config" ,pkg-config)))
718 (home-page "https://dev.lovelyhq.com/libburnia/libburn")
719 (synopsis "Library for reading and writing optical discs")
720 (description
721 "Libburn is a library for reading and writing optical discs.
722 Supported media are: CD-R, CD-RW, DVD-RAM, DVD+RW, DVD+R, DVD+R/DL,
723 DVD-RW, DVD-R, DVD-R/DL, BD-R, and BD-RE.")
724 (license gpl2)))
725
726 (define-public libisofs
727 (package
728 (name "libisofs")
729 (version "1.4.6")
730 (source (origin
731 (method url-fetch)
732 (uri (string-append "http://files.libburnia-project.org/releases/"
733 "libisofs-" version ".tar.gz"))
734 (sha256
735 (base32
736 "02m5g6lbmmkh2xc5xzq5zaf3ma6v31gls66aj886b3cq9qw0paql"))))
737 (build-system gnu-build-system)
738 (inputs
739 `(("zlib" ,zlib)
740 ("acl" ,acl)))
741 (native-inputs
742 `(("pkg-config" ,pkg-config)))
743 (home-page "https://dev.lovelyhq.com/libburnia/libisofs")
744 (synopsis "Library to create ISO 9660 images")
745 (description
746 "Libisofs creates ISO 9660 (also known as ECMA-119) filesystem images
747 which can either be written to POSIX file objects or handed over to
748 libburn for being written directly to optical media.
749 It can read metadata of ISO 9660 filesystems, manipulate them, and use them
750 to produce new complete filesystem images or add-on images to be appended
751 to the read filesystem image.
752 Supported extensions to ISO 9660 are Rock Ridge, Joliet, AAIP, zisofs.")
753 (license gpl2+)))