gnu: Use HTTPS for almost all gnu.org HOME-PAGEs.
[jackhill/guix/guix.git] / gnu / packages / cdrom.scm
CommitLineData
6064c4cd 1;;; GNU Guix --- Functional package management for GNU
ce0614dd 2;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
74216042 3;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
db361234 4;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
fab74288 5;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
dfb493ce 6;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
41447b31 7;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
b4edcd28 8;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
a9406b24 9;;; Copyright © 2017 John Darrington <jmd@gnu.org>
6064c4cd
LC
10;;;
11;;; This file is part of GNU Guix.
12;;;
13;;; GNU Guix is free software; you can redistribute it and/or modify it
14;;; under the terms of the GNU General Public License as published by
15;;; the Free Software Foundation; either version 3 of the License, or (at
16;;; your option) any later version.
17;;;
18;;; GNU Guix is distributed in the hope that it will be useful, but
19;;; WITHOUT ANY WARRANTY; without even the implied warranty of
20;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21;;; GNU General Public License for more details.
22;;;
23;;; You should have received a copy of the GNU General Public License
24;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
25
26(define-module (gnu packages cdrom)
27 #:use-module (guix download)
28 #:use-module (guix packages)
c1cab15a 29 #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+))
41447b31 30 #:use-module (guix build-system cmake)
6064c4cd 31 #:use-module (guix build-system gnu)
426e6083
CM
32 #:use-module (guix build-system glib-or-gtk)
33 #:use-module (guix gexp)
6064c4cd
LC
34 #:use-module (gnu packages)
35 #:use-module (gnu packages acl)
426e6083 36 #:use-module (gnu packages audio)
41447b31 37 #:use-module (gnu packages bison)
6064c4cd 38 #:use-module (gnu packages compression)
41447b31 39 #:use-module (gnu packages flex)
1dba6407 40 #:use-module (gnu packages gettext)
c1cab15a 41 #:use-module (gnu packages gtk)
426e6083 42 #:use-module (gnu packages glib)
cb3da233 43 #:use-module (gnu packages man)
426e6083 44 #:use-module (gnu packages mp3)
43824910 45 #:use-module (gnu packages ncurses)
3e778ad3 46 #:use-module (gnu packages elf)
c1cab15a 47 #:use-module (gnu packages pkg-config)
43824910 48 #:use-module (gnu packages readline)
ce0614dd 49 #:use-module (gnu packages base)
7dfc937e
LC
50 #:use-module (gnu packages perl)
51 #:use-module (gnu packages python)
52 #:use-module (gnu packages wget)
53 #:use-module (gnu packages xiph))
6064c4cd
LC
54
55(define-public libcddb
56 (package
57 (name "libcddb")
03aef4a7 58 (version "1.3.2")
6064c4cd
LC
59 (source (origin
60 (method url-fetch)
de67e922
LF
61 (uri (string-append "mirror://sourceforge/libcddb/libcddb/" version
62 "/libcddb-" version ".tar.bz2"))
6064c4cd
LC
63 (sha256
64 (base32
03aef4a7 65 "0fr21a7vprdyy1bq6s99m0x420c9jm5fipsd63pqv8qyfkhhxkim"))))
6064c4cd
LC
66 (build-system gnu-build-system)
67 (arguments '(#:tests? #f)) ; tests rely on access to external servers
68 (home-page "http://libcddb.sourceforge.net/")
69 (synopsis "C library to access data on a CDDB server")
70 (description
35b9e423 71 "Libcddb is a C library to access data on a CDDB server (freedb.org). It
6064c4cd
LC
72allows you to:
73
74 1. search the database for possible CD matches;
75
76 2. retrieve detailed information about a specific CD;
77
78 3. submit new CD entries to the database.
79
80Libcddb supports both the custom CDDB protocol and tunnelling the query and
35b9e423
EB
81read operations over plain HTTP. It is also possible to use an HTTP proxy
82server. If you want to speed things up, you can make use of the built-in
6064c4cd
LC
83caching facility provided by the library.")
84 (license lgpl2.1+)))
85
86(define-public libcdio
87 (package
88 (name "libcdio")
6312043c 89 (version "0.94")
6064c4cd
LC
90 (source (origin
91 (method url-fetch)
92 (uri (string-append "mirror://gnu/libcdio/libcdio-"
93 version ".tar.gz"))
94 (sha256
95 (base32
6312043c 96 "0nh222bnj0hgdic5nvr8l9j194mh5niqy15rypwrdbk6z01wkqln"))))
6064c4cd
LC
97 (build-system gnu-build-system)
98 (inputs
6312043c
EF
99 `(("ncurses" ,ncurses)
100 ("libcddb" ,libcddb)))
c4c4cc05 101 (native-inputs
6064c4cd 102 `(("help2man" ,help2man)
c4c4cc05 103 ("pkg-config" ,pkg-config)))
6312043c 104 (home-page "https://www.gnu.org/software/libcdio/")
f50d2669 105 (synopsis "CD Input and Control library")
6064c4cd 106 (description
a22dc0c4
LC
107 "The GNU Compact Disc Input and Control Library (libcdio) is a library
108for CD-ROM and CD image file access. It allows the developer to add CD
109access to an application without having to worry about the OS- and
110device-dependent properties of CD-ROM or the specific details of CD image
fc8a431c
LC
111formats. It includes pycdio, a Python interface to libcdio, and
112libcdio-paranoia, a library providing jitter-free and error-free audio
113extraction from CDs.")
6064c4cd
LC
114 (license gpl3+)))
115
cc6c0170
TUBK
116(define-public libcdio-paranoia
117 (package
118 (name "libcdio-paranoia")
119 (version "10.2+0.93+1")
120 (source (origin
121 (method url-fetch)
122 (uri (string-append "mirror://gnu/libcdio/libcdio-paranoia-"
123 version ".tar.bz2"))
124 (sha256
125 (base32
126 "14x4b4jk5b0zvcalrg02y4jmbkmmlb07qfmk5hph9k18b8frn7gc"))))
127 (build-system gnu-build-system)
128 (native-inputs `(("pkg-config" ,pkg-config)))
129 (propagated-inputs `(("libcdio" ,libcdio)))
6fd52309 130 (home-page "https://www.gnu.org/software/libcdio/")
cc6c0170
TUBK
131 (synopsis "Jitter- and error-tolerant CD audio extraction")
132 (description
133 "libcdio-paranoia is an implementation of CD paranoia libraries based on
134libcdio.")
135 (license gpl3+)))
136
6064c4cd
LC
137(define-public xorriso
138 (package
139 (name "xorriso")
bff8be80 140 (version "1.4.6")
6064c4cd
LC
141 (source (origin
142 (method url-fetch)
143 (uri (string-append "mirror://gnu/xorriso/xorriso-"
144 version ".tar.gz"))
145 (sha256
146 (base32
bff8be80 147 "112p0ghwzxrcjbsir1n2jxhq103ckrw93wzvd55qqvzfgs674vsj"))))
6064c4cd
LC
148 (build-system gnu-build-system)
149 (inputs
150 `(("acl" ,acl)
151 ("readline" ,readline)
152 ("bzip2" ,bzip2)
153 ("zlib" ,zlib)
154 ("libcdio" ,libcdio)))
cb764dc8 155 (home-page "https://www.gnu.org/software/xorriso/")
8f65585b 156 (synopsis "Create, manipulate, burn ISO-9660 file systems")
6064c4cd 157 (description
79c311b8 158 "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock
8f65585b 159Ridge, a.k.a. Compact Disc File System, file systems and it allows
79c311b8
LC
160session-wise manipulation of them. It features a formatter and burner for
161CD, DVD and BD. It can operate on existing ISO images or it can create new
162ones. xorriso can then be used to copy files directly into or out of ISO
163files.")
6064c4cd 164 (license gpl3+)))
6bfc16d9
AE
165
166(define-public cdparanoia
167 (package
168 (name "cdparanoia")
169 (version "10.2")
170 (source (origin
171 (method url-fetch)
a124bbd2
SB
172 (uri (string-append "http://downloads.xiph.org/releases/"
173 "cdparanoia/cdparanoia-III-"
6bfc16d9
AE
174 version ".src.tgz"))
175 (sha256
176 (base32
01eafd38 177 "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80"))
fc1adab1 178 (patches (search-patches "cdparanoia-fpic.patch"))
d1f9e45e
SB
179 (modules '((guix build utils)))
180 (snippet
181 ;; Make libraries respect LDFLAGS.
182 '(substitute* '("paranoia/Makefile.in" "interface/Makefile.in")
183 (("-Wl,-soname") "$(LDFLAGS) -Wl,-soname")))))
6bfc16d9 184 (build-system gnu-build-system)
6bfc16d9
AE
185 (arguments
186 `(#:tests? #f ; there is no check target
d1f9e45e
SB
187 #:configure-flags ; Add $libdir to the RUNPATH of all the executables.
188 (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))
6bfc16d9 189 (home-page "http://www.xiph.org/paranoia/")
35b9e423 190 (synopsis "Audio CD reading utility")
6bfc16d9
AE
191 (description "Cdparanoia retrieves audio tracks from CDDA capable CDROM
192drives. The data can be saved to a file or directed to standard output
516e93f8 193in WAV, AIFF, AIFF-C or raw format. Most ATAPI, SCSI and several
6bfc16d9
AE
194proprietary CDROM drive makes are supported; cdparanoia can determine if the
195target drive is CDDA capable. In addition to simple reading, cdparanoia adds
196extra-robust data verification, synchronization, error handling and scratch
197reconstruction capability.")
198 (license gpl2))) ; libraries under lgpl2.1
c1cab15a
AE
199
200(define-public dvdisaster
201 (package
202 (name "dvdisaster")
036fd4f2 203 (version "0.79.5")
c1cab15a
AE
204 (source (origin
205 (method url-fetch)
206 (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-"
207 version ".tar.bz2"))
208 (sha256
209 (base32
036fd4f2 210 "0f8gjnia2fxcbmhl8b3qkr5b7idl8m855dw7xw2fnmbqwvcm6k4w"))))
c1cab15a
AE
211 (build-system gnu-build-system)
212 (inputs
c4c4cc05
JD
213 `(("gtk+" ,gtk+-2)))
214 (native-inputs
b94a6ca0 215 `(("gettext" ,gettext-minimal)
c1cab15a
AE
216 ("pkg-config" ,pkg-config)
217 ("which" ,which)))
218 (arguments
c397e502
LC
219 `(;; Parallel builds appear to be unsafe, see
220 ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>.
221 #:parallel-build? #f
036fd4f2 222 #:tests? #f)) ; no check target
c1cab15a 223 (home-page "http://dvdisaster.net/en/index.html")
35b9e423 224 (synopsis "Error correcting codes for optical media images")
c1cab15a
AE
225 (description "Optical media (CD,DVD,BD) keep their data only for a
226finite time (typically for many years). After that time, data loss develops
227slowly with read errors growing from the outer media region towards the
228inside.
229
230Dvdisaster stores data on CD/DVD/BD (supported media) in a way that it is
231fully recoverable even after some read errors have developed. This enables
232you to rescue the complete data to a new medium.
233
234Data loss is prevented by using error correcting codes. Error correction
235data is either added to the medium or kept in separate error correction
236files. Dvdisaster works at the image level so that the recovery does not
237depend on the file system of the medium. The maximum error correction
238capacity is user-selectable.")
239 (license gpl2+)))
e2bb5fd6 240
fab74288
PW
241(define-public libcue
242 (package
243 (name "libcue")
41447b31 244 (version "2.1.0")
fab74288
PW
245 (source (origin
246 (method url-fetch)
41447b31
AK
247 (uri (string-append
248 "https://github.com/lipnitsk/libcue/archive/v"
249 version ".tar.gz"))
250 (file-name (string-append name "-" version ".tar.gz"))
fab74288
PW
251 (sha256
252 (base32
41447b31
AK
253 "1fradl3dx0pyy9rn1a0gak9gzgg40wax61f2s00zks7rwl0xv398"))))
254 (build-system cmake-build-system)
255 (native-inputs
256 `(("bison" ,bison)
257 ("flex" ,flex)))
8caf80fc 258 (home-page "https://github.com/lipnitsk/libcue")
fab74288
PW
259 (synopsis "C library to parse cue sheets")
260 (description "Libcue is a C library to parse so-called @dfn{cue sheets}
261which contain meta-data for CD/DVD tracks. It provides an API to manipulate
262the data.")
263 (license gpl2+)))
264
e2bb5fd6
LC
265(define-public cd-discid
266 (package
267 (name "cd-discid")
268 (version "1.4")
269 (home-page "http://linukz.org/cd-discid.shtml")
270 (source (origin
271 (method url-fetch)
d514bedb 272 (uri (string-append "http://linukz.org/download/cd-discid-"
e2bb5fd6
LC
273 version ".tar.gz"))
274 (sha256
275 (base32
276 "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz"))
277 (modules '((guix build utils)))
278 (snippet
279 '(substitute* "Makefile"
280 (("/usr/bin/install")
281 "install")))))
282 (build-system gnu-build-system)
283 (arguments
284 '(#:tests? #f
285 #:phases (alist-delete 'configure %standard-phases)
286 #:make-flags (list "CC=gcc"
287 (string-append "PREFIX="
288 (assoc-ref %outputs "out")))))
289 (synopsis "Get CDDB discid information from an audio CD")
290 (description
291 "cd-discid is a command-line tool to retrieve CDDB discid information
292from an audio CD.")
293 (license gpl2+)))
7dfc937e
LC
294
295(define-public abcde
296 (package
297 (name "abcde")
dfb493ce 298 (version "2.8.1")
1bb4005f 299 (home-page "https://abcde.einval.com/")
7dfc937e
LC
300 (source (origin
301 (method url-fetch)
302 (uri (string-append home-page "/download/abcde-"
303 version ".tar.gz"))
304 (sha256
305 (base32
dfb493ce 306 "0f9bjs0phk23vry7gvh0cll9vl6kmc1y4fwwh762scfdvpbp3774"))
7dfc937e
LC
307 (modules '((guix build utils)))
308 (snippet
309 '(substitute* "Makefile"
310 (("/usr/bin/install")
311 "install")
312 (("^etcdir = .*$")
313 (string-append "etcdir = $(prefix)/etc\n"))))))
314 (build-system gnu-build-system)
315 (arguments
7df85799
EF
316 '(#:phases
317 (modify-phases %standard-phases
318 (replace 'configure
319 (lambda* (#:key outputs inputs #:allow-other-keys)
320 (substitute* "Makefile"
321 (("^prefix = .*$")
322 (string-append "prefix = "
323 (assoc-ref outputs "out")
c2a3b23f
EF
324 "\n"))
325 (("^sysconfdir = .*$")
326 (string-append "sysconfdir = "
327 (assoc-ref outputs "out")
328 "/etc/\n")))
329 #t))
7df85799
EF
330 (add-after 'install 'wrap
331 (lambda* (#:key inputs outputs #:allow-other-keys)
332 (let ((wget (assoc-ref inputs "wget"))
333 (vorbis (assoc-ref inputs "vorbis-tools"))
334 (parano (assoc-ref inputs "cdparanoia"))
335 (which (assoc-ref inputs "which"))
336 (discid (assoc-ref inputs "cd-discid"))
0d1baed2 337 (flac (assoc-ref inputs "flac"))
7df85799
EF
338 (out (assoc-ref outputs "out")))
339 (define (wrap file)
340 (wrap-program file
341 `("PATH" ":" prefix
342 (,(string-append out "/bin:"
343 wget "/bin:"
0d1baed2 344 flac "/bin:"
7df85799
EF
345 which "/bin:"
346 vorbis "/bin:"
347 discid "/bin:"
348 parano "/bin")))))
7dfc937e 349
7df85799
EF
350 (for-each wrap
351 (find-files (string-append out "/bin")
352 ".*"))))))
c2a3b23f 353 #:tests? #f)) ; no test target
7dfc937e
LC
354
355 (inputs `(("wget" ,wget)
356 ("which" ,which)
357 ("cdparanoia" ,cdparanoia)
358 ("cd-discid" ,cd-discid)
359 ("vorbis-tools" ,vorbis-tools)
0d1baed2 360 ("flac" ,flac)
7dfc937e
LC
361
362 ;; A couple of Python and Perl scripts are included.
363 ("python" ,python)
364 ("perl" ,perl)))
365
366 (synopsis "Command-line audio CD ripper")
367 (description
368 "abcde is a front-end command-line utility (actually, a shell script)
369that grabs tracks off a CD, encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex
370and/or MPP/MP+ (Musepack) format, and tags them, all in one go.")
371 (license gpl2+)))
b4edcd28
MB
372
373(define-public geteltorito
374 (package
375 (name "geteltorito")
376 (version "0.6")
377 (home-page
378 "https://userpages.uni-koblenz.de/~krienke/ftp/noarch/geteltorito/")
379 (source (origin
380 (method url-fetch)
381 (uri (string-append home-page name "-" version ".tar.gz"))
382 (sha256
383 (base32
384 "1gkbm9ahj2mgqrkrfpibzclsriqgsbsvjh19fr815vpd9f6snkxv"))))
385 (build-system gnu-build-system)
386 (arguments
387 `(#:tests? #f ; No tests.
388 #:phases
389 (modify-phases %standard-phases
390 (delete 'configure)
391 (delete 'build)
392 (replace 'install
393 (lambda* (#:key outputs #:allow-other-keys)
394 (let ((out (assoc-ref outputs "out")))
395 (install-file "geteltorito"
396 (string-append out "/bin"))))))))
397 (inputs `(("perl" ,perl)))
398 (synopsis "Extract the boot image from a CD-ROM")
399 (description
400 "@command{geteltorito} can extract the initial/default boot
401image from CDs (and ISOs) that follow the El Torito specification
402for bootable CD-ROMs.
403
404Image data is written to standard output by default and all other
405information is written to standard error.")
406 (license gpl2+)))
426e6083
CM
407
408(define-public asunder
409 (package
410 (name "asunder")
411 (version "2.8")
412 (source (origin
413 (method url-fetch)
414 (uri
415 (string-append "http://www.littlesvr.ca/asunder/releases/asunder-"
416 version
417 ".tar.bz2"))
418 (sha256
419 (base32
420 "1nq9kd4rd4k2kibf57gdbm0zw2gxa234vvvdhxkm8g5bhx5h3iyq"))))
421 (build-system glib-or-gtk-build-system)
422 (arguments
423 '(#:out-of-source? #f
424 #:phases (modify-phases %standard-phases
425 (add-after 'install 'wrap
426 (lambda* (#:key inputs outputs #:allow-other-keys)
427 (let ((program (string-append (assoc-ref outputs "out")
428 "/bin/asunder")))
429 (define (bin-directory input-name)
430 (string-append (assoc-ref inputs input-name) "/bin"))
431 (wrap-program program
432 `("PATH" ":" prefix
433 ,(map bin-directory (list "cdparanoia"
434 "lame"
435 "vorbis-tools"
436 "flac"
437 "opus-tools"
438 "wavpack"))))))))))
439 (native-inputs `(("intltool" ,intltool)
440 ("pkg-config" ,pkg-config)))
441 ;; TODO: Add the necessary packages for Musepack encoding.
442 (inputs `(("gtk+-2" ,gtk+-2)
443 ("glib" ,glib)
444 ("libcddb" ,libcddb)
445 ("cdparanoia" ,cdparanoia)
446 ("lame" ,lame)
447 ("vorbis-tools" ,vorbis-tools)
448 ("flac" ,flac)
449 ("opus-tools" ,opus-tools)
450 ("wavpack" ,wavpack)))
451 (home-page "http://www.littlesvr.ca/asunder/")
452 (synopsis "Graphical audio CD ripper and encoder")
453 (description
454 "Asunder is a graphical audio CD ripper and encoder. It can save audio
455tracks as WAV, MP3, Ogg Vorbis, FLAC, Opus, Wavpack, and Musepack. It can use
456CDDB to name and tag each track automatically, and it allows for each track to
457be by a different artist. Asunder can encode to multiple formats in one
458session, and it can create M3U playlists.")
459 (license gpl2)))
328398e7
RJ
460
461(define-public ripit
462 (package
463 (name "ripit")
464 (version "3.9.0")
465 (source (origin
466 (method url-fetch)
467 (uri (string-append "http://www.suwald.com/ripit/ripit-"
468 version ".tar.gz"))
469 (sha256
470 (base32
471 "0ap71x477jy9c4jiqazb3y45hxdxm3jbq24x05g3vjyqzigi4x1b"))))
472 (build-system gnu-build-system)
473 (arguments
474 `(#:tests? #f ; No test suite.
475 #:phases
476 (modify-phases %standard-phases
477 (delete 'configure)
478 (add-after 'unpack 'patch-usr-bin-install
479 (lambda* (#:key inputs outputs #:allow-other-keys)
480 (substitute* "Makefile"
481 (("/usr/bin/install") (string-append
482 (assoc-ref inputs "coreutils")
483 "/bin/install"))
484 (("\\$\\(DESTDIR\\)/usr/local") (assoc-ref outputs "out"))
485 (("../../etc") "etc")))))))
486 (native-inputs
487 `(("coreutils" ,coreutils)))
488 (inputs
489 `(("perl" ,perl)))
490 (propagated-inputs
491 `(("cdparanoia" ,cdparanoia)
492 ("flac" ,flac)
493 ("vorbis-tools" ,vorbis-tools)
494 ("wavpack" ,wavpack)
495 ("perl-cddb-get" ,perl-cddb-get)))
496 (home-page "http://www.suwald.com/ripit/about.php")
497 (synopsis "Command-line program to extract audio CDs")
498 (description "RipIT is used to extract audio from CDs.")
499 (license gpl2)))
a9406b24
JD
500
501(define-public ccd2cue
502 (package
503 (name "ccd2cue")
504 (version "0.5")
505 (source
506 (origin
507 (method url-fetch)
508 (uri (string-append
509 "mirror://gnu/ccd2cue/ccd2cue-" version
510 ".tar.gz"))
511 (sha256
512 (base32
513 "1icrkg25hwx4gsn3dski2172ia4ywjh8m1sa17zmjclnrgdwy9c7"))))
514 (build-system gnu-build-system)
515 (synopsis "CCD to CUE sheet conversion")
516 (description
517 "GNU ccd2cue is a preprocessor for CD burning software that allows
518the conversion of the proprietary CCD format to the CUE format, which
519is well-supported by free software. These files are commonly
520distributed with CD images and are used to describe how tracks are
521laid out on the image.")
6fd52309 522 (home-page "https://www.gnu.org/software/ccd2cue/")
a9406b24 523 (license gpl3+)))