Commit | Line | Data |
---|---|---|
6064c4cd | 1 | ;;; GNU Guix --- Functional package management for GNU |
c397e502 | 2 | ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> |
74216042 | 3 | ;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr> |
6064c4cd LC |
4 | ;;; |
5 | ;;; This file is part of GNU Guix. | |
6 | ;;; | |
7 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
8 | ;;; under the terms of the GNU General Public License as published by | |
9 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
10 | ;;; your option) any later version. | |
11 | ;;; | |
12 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
13 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | ;;; GNU General Public License for more details. | |
16 | ;;; | |
17 | ;;; You should have received a copy of the GNU General Public License | |
18 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
19 | ||
20 | (define-module (gnu packages cdrom) | |
21 | #:use-module (guix download) | |
22 | #:use-module (guix packages) | |
c1cab15a | 23 | #:use-module ((guix licenses) #:select (lgpl2.1+ gpl2 gpl2+ gpl3+)) |
6064c4cd LC |
24 | #:use-module (guix build-system gnu) |
25 | #:use-module (gnu packages) | |
26 | #:use-module (gnu packages acl) | |
27 | #:use-module (gnu packages compression) | |
1dba6407 | 28 | #:use-module (gnu packages gettext) |
c1cab15a | 29 | #:use-module (gnu packages gtk) |
cb3da233 | 30 | #:use-module (gnu packages man) |
43824910 | 31 | #:use-module (gnu packages ncurses) |
3e778ad3 | 32 | #:use-module (gnu packages elf) |
c1cab15a | 33 | #:use-module (gnu packages pkg-config) |
43824910 | 34 | #:use-module (gnu packages readline) |
7dfc937e LC |
35 | #:use-module (gnu packages which) |
36 | #:use-module (gnu packages perl) | |
37 | #:use-module (gnu packages python) | |
38 | #:use-module (gnu packages wget) | |
39 | #:use-module (gnu packages xiph)) | |
6064c4cd LC |
40 | |
41 | (define-public libcddb | |
42 | (package | |
43 | (name "libcddb") | |
44 | (version "1.3.0") | |
45 | (source (origin | |
46 | (method url-fetch) | |
47 | (uri (string-append "mirror://sourceforge/libcddb/libcddb-" | |
48 | version ".tar.bz2")) | |
49 | (sha256 | |
50 | (base32 | |
51 | "1y8bfy12dwm41m1jahayn3v47dm34fmz7m9cjxyh7xcw6fp3lzaf")))) | |
52 | (build-system gnu-build-system) | |
53 | (arguments '(#:tests? #f)) ; tests rely on access to external servers | |
54 | (home-page "http://libcddb.sourceforge.net/") | |
55 | (synopsis "C library to access data on a CDDB server") | |
56 | (description | |
35b9e423 | 57 | "Libcddb is a C library to access data on a CDDB server (freedb.org). It |
6064c4cd LC |
58 | allows you to: |
59 | ||
60 | 1. search the database for possible CD matches; | |
61 | ||
62 | 2. retrieve detailed information about a specific CD; | |
63 | ||
64 | 3. submit new CD entries to the database. | |
65 | ||
66 | Libcddb supports both the custom CDDB protocol and tunnelling the query and | |
35b9e423 EB |
67 | read operations over plain HTTP. It is also possible to use an HTTP proxy |
68 | server. If you want to speed things up, you can make use of the built-in | |
6064c4cd LC |
69 | caching facility provided by the library.") |
70 | (license lgpl2.1+))) | |
71 | ||
72 | (define-public libcdio | |
73 | (package | |
74 | (name "libcdio") | |
b6e2215a | 75 | (version "0.93") |
6064c4cd LC |
76 | (source (origin |
77 | (method url-fetch) | |
78 | (uri (string-append "mirror://gnu/libcdio/libcdio-" | |
79 | version ".tar.gz")) | |
80 | (sha256 | |
81 | (base32 | |
b6e2215a | 82 | "0xb9km1750ndr7nglgbv1smv03dy8nkcfd9djbzqn3ldzlicswj9")))) |
6064c4cd LC |
83 | (build-system gnu-build-system) |
84 | (inputs | |
c4c4cc05 JD |
85 | `(("ncurses" ,ncurses) |
86 | ("libcddb" ,libcddb))) | |
87 | (native-inputs | |
6064c4cd | 88 | `(("help2man" ,help2man) |
c4c4cc05 | 89 | ("pkg-config" ,pkg-config))) |
6064c4cd | 90 | (home-page "http://www.gnu.org/software/libcdio/") |
f50d2669 | 91 | (synopsis "CD Input and Control library") |
6064c4cd | 92 | (description |
a22dc0c4 LC |
93 | "The GNU Compact Disc Input and Control Library (libcdio) is a library |
94 | for CD-ROM and CD image file access. It allows the developer to add CD | |
95 | access to an application without having to worry about the OS- and | |
96 | device-dependent properties of CD-ROM or the specific details of CD image | |
79c311b8 LC |
97 | formats. It includes pycdio, a Python interface to libcdio, and |
98 | libcdio-paranoia, a library providing jitter-free and error-free audio | |
99 | extraction from CDs.") | |
6064c4cd LC |
100 | (license gpl3+))) |
101 | ||
102 | (define-public xorriso | |
103 | (package | |
104 | (name "xorriso") | |
bc7f024c | 105 | (version "1.3.8") |
6064c4cd LC |
106 | (source (origin |
107 | (method url-fetch) | |
108 | (uri (string-append "mirror://gnu/xorriso/xorriso-" | |
109 | version ".tar.gz")) | |
110 | (sha256 | |
111 | (base32 | |
bc7f024c | 112 | "0zhhj9lr9z7hnb2alac54mc28w1l0mbanphhpmy3ylsi8rih84lh")))) |
6064c4cd LC |
113 | (build-system gnu-build-system) |
114 | (inputs | |
115 | `(("acl" ,acl) | |
116 | ("readline" ,readline) | |
117 | ("bzip2" ,bzip2) | |
118 | ("zlib" ,zlib) | |
119 | ("libcdio" ,libcdio))) | |
120 | (home-page "http://www.gnu.org/software/xorriso/") | |
f50d2669 | 121 | (synopsis "Create, manipulate, burn ISO-9660 filesystems") |
6064c4cd | 122 | (description |
79c311b8 LC |
123 | "GNU Xorriso is a tool for copying files to and from ISO 9660 Rock |
124 | Ridge, a.k.a. Compact Disc File System, filesystems and it allows | |
125 | session-wise manipulation of them. It features a formatter and burner for | |
126 | CD, DVD and BD. It can operate on existing ISO images or it can create new | |
127 | ones. xorriso can then be used to copy files directly into or out of ISO | |
128 | files.") | |
6064c4cd | 129 | (license gpl3+))) |
6bfc16d9 AE |
130 | |
131 | (define-public cdparanoia | |
132 | (package | |
133 | (name "cdparanoia") | |
134 | (version "10.2") | |
135 | (source (origin | |
136 | (method url-fetch) | |
137 | (uri (string-append "http://downloads.xiph.org/releases/cdparanoia/cdparanoia-III-" | |
138 | version ".src.tgz")) | |
139 | (sha256 | |
140 | (base32 | |
01eafd38 LC |
141 | "1pv4zrajm46za0f6lv162iqffih57a8ly4pc69f7y0gfyigb8p80")) |
142 | (patches (list (search-patch "cdparanoia-fpic.patch"))))) | |
6bfc16d9 AE |
143 | (build-system gnu-build-system) |
144 | (inputs | |
01eafd38 | 145 | `(("patchelf" ,patchelf))) |
6bfc16d9 AE |
146 | (arguments |
147 | `(#:tests? #f ; there is no check target | |
43824910 AE |
148 | #:modules ((guix build gnu-build-system) |
149 | (guix build utils) | |
150 | (guix build rpath) | |
151 | (srfi srfi-26)) | |
152 | #:imported-modules ((guix build gnu-build-system) | |
153 | (guix build utils) | |
154 | (guix build rpath)) | |
155 | #:phases | |
156 | (alist-cons-after | |
157 | 'strip 'add-lib-to-runpath | |
158 | (lambda* (#:key outputs #:allow-other-keys) | |
159 | (let* ((out (assoc-ref outputs "out")) | |
160 | (lib (string-append out "/lib"))) | |
161 | ;; Add LIB to the RUNPATH of all the executables. | |
162 | (with-directory-excursion out | |
163 | (for-each (cut augment-rpath <> lib) | |
164 | (find-files "bin" ".*"))))) | |
165 | %standard-phases))) | |
6bfc16d9 | 166 | (home-page "http://www.xiph.org/paranoia/") |
35b9e423 | 167 | (synopsis "Audio CD reading utility") |
6bfc16d9 AE |
168 | (description "Cdparanoia retrieves audio tracks from CDDA capable CDROM |
169 | drives. The data can be saved to a file or directed to standard output | |
516e93f8 | 170 | in WAV, AIFF, AIFF-C or raw format. Most ATAPI, SCSI and several |
6bfc16d9 AE |
171 | proprietary CDROM drive makes are supported; cdparanoia can determine if the |
172 | target drive is CDDA capable. In addition to simple reading, cdparanoia adds | |
173 | extra-robust data verification, synchronization, error handling and scratch | |
174 | reconstruction capability.") | |
175 | (license gpl2))) ; libraries under lgpl2.1 | |
c1cab15a AE |
176 | |
177 | (define-public dvdisaster | |
178 | (package | |
179 | (name "dvdisaster") | |
74216042 | 180 | (version "0.72.6") |
c1cab15a AE |
181 | (source (origin |
182 | (method url-fetch) | |
183 | (uri (string-append "http://dvdisaster.net/downloads/dvdisaster-" | |
184 | version ".tar.bz2")) | |
185 | (sha256 | |
186 | (base32 | |
74216042 | 187 | "0sqrprc5rh3shnfli25m2wy0i5f83db54iv04s5s7bxf77m7sy79")))) |
c1cab15a AE |
188 | (build-system gnu-build-system) |
189 | (inputs | |
c4c4cc05 JD |
190 | `(("gtk+" ,gtk+-2))) |
191 | (native-inputs | |
1dba6407 | 192 | `(("gettext" ,gnu-gettext) |
c1cab15a AE |
193 | ("pkg-config" ,pkg-config) |
194 | ("which" ,which))) | |
195 | (arguments | |
c397e502 LC |
196 | `(;; Parallel builds appear to be unsafe, see |
197 | ;; <http://hydra.gnu.org/build/49331/nixlog/1/raw>. | |
198 | #:parallel-build? #f | |
74216042 AE |
199 | #:tests? #f ; no check target |
200 | #:phases | |
201 | (alist-cons-before | |
202 | 'patch-source-shebangs 'sanitise | |
203 | (lambda _ | |
204 | ;; delete dangling symlink | |
205 | (delete-file ".#GNUmakefile")) | |
206 | %standard-phases))) | |
c1cab15a | 207 | (home-page "http://dvdisaster.net/en/index.html") |
35b9e423 | 208 | (synopsis "Error correcting codes for optical media images") |
c1cab15a AE |
209 | (description "Optical media (CD,DVD,BD) keep their data only for a |
210 | finite time (typically for many years). After that time, data loss develops | |
211 | slowly with read errors growing from the outer media region towards the | |
212 | inside. | |
213 | ||
214 | Dvdisaster stores data on CD/DVD/BD (supported media) in a way that it is | |
215 | fully recoverable even after some read errors have developed. This enables | |
216 | you to rescue the complete data to a new medium. | |
217 | ||
218 | Data loss is prevented by using error correcting codes. Error correction | |
219 | data is either added to the medium or kept in separate error correction | |
220 | files. Dvdisaster works at the image level so that the recovery does not | |
221 | depend on the file system of the medium. The maximum error correction | |
222 | capacity is user-selectable.") | |
223 | (license gpl2+))) | |
e2bb5fd6 LC |
224 | |
225 | (define-public cd-discid | |
226 | (package | |
227 | (name "cd-discid") | |
228 | (version "1.4") | |
229 | (home-page "http://linukz.org/cd-discid.shtml") | |
230 | (source (origin | |
231 | (method url-fetch) | |
d514bedb | 232 | (uri (string-append "http://linukz.org/download/cd-discid-" |
e2bb5fd6 LC |
233 | version ".tar.gz")) |
234 | (sha256 | |
235 | (base32 | |
236 | "0qrcvn7227qaayjcd5rm7z0k5q89qfy5qkdgwr5pd7ih0va8rmpz")) | |
237 | (modules '((guix build utils))) | |
238 | (snippet | |
239 | '(substitute* "Makefile" | |
240 | (("/usr/bin/install") | |
241 | "install"))))) | |
242 | (build-system gnu-build-system) | |
243 | (arguments | |
244 | '(#:tests? #f | |
245 | #:phases (alist-delete 'configure %standard-phases) | |
246 | #:make-flags (list "CC=gcc" | |
247 | (string-append "PREFIX=" | |
248 | (assoc-ref %outputs "out"))))) | |
249 | (synopsis "Get CDDB discid information from an audio CD") | |
250 | (description | |
251 | "cd-discid is a command-line tool to retrieve CDDB discid information | |
252 | from an audio CD.") | |
253 | (license gpl2+))) | |
7dfc937e LC |
254 | |
255 | (define-public abcde | |
256 | (package | |
257 | (name "abcde") | |
258 | (version "2.6") | |
259 | (home-page "http://abcde.einval.com/") | |
260 | (source (origin | |
261 | (method url-fetch) | |
262 | (uri (string-append home-page "/download/abcde-" | |
263 | version ".tar.gz")) | |
264 | (sha256 | |
265 | (base32 | |
266 | "0y2cg233n2hixs0ji76dggpzgf52v4c4mnpwiai889ql2piafgk8")) | |
267 | (modules '((guix build utils))) | |
268 | (snippet | |
269 | '(substitute* "Makefile" | |
270 | (("/usr/bin/install") | |
271 | "install") | |
272 | (("^etcdir = .*$") | |
273 | (string-append "etcdir = $(prefix)/etc\n")))))) | |
274 | (build-system gnu-build-system) | |
275 | (arguments | |
276 | '(#:phases (alist-replace | |
277 | 'configure | |
278 | (lambda* (#:key outputs inputs #:allow-other-keys) | |
279 | (substitute* "Makefile" | |
280 | (("^prefix = .*$") | |
281 | (string-append "prefix = " | |
282 | (assoc-ref outputs "out") | |
283 | "\n")))) | |
284 | (alist-cons-after | |
285 | 'install 'wrap | |
286 | (lambda* (#:key inputs outputs #:allow-other-keys) | |
287 | (let ((wget (assoc-ref inputs "wget")) | |
288 | (vorbis (assoc-ref inputs "vorbis-tools")) | |
289 | (parano (assoc-ref inputs "cdparanoia")) | |
290 | (which (assoc-ref inputs "which")) | |
291 | (discid (assoc-ref inputs "cd-discid")) | |
292 | (out (assoc-ref outputs "out"))) | |
293 | (define (wrap file) | |
294 | (wrap-program file | |
295 | `("PATH" ":" prefix | |
296 | (,(string-append out "/bin:" | |
297 | wget "/bin:" | |
298 | which "/bin:" | |
299 | vorbis "/bin:" | |
300 | discid "/bin:" | |
301 | parano "/bin"))))) | |
302 | ||
303 | (for-each wrap | |
304 | (find-files (string-append out "/bin") | |
305 | ".*")))) | |
306 | %standard-phases)) | |
307 | #:tests? #f)) | |
308 | ||
309 | (inputs `(("wget" ,wget) | |
310 | ("which" ,which) | |
311 | ("cdparanoia" ,cdparanoia) | |
312 | ("cd-discid" ,cd-discid) | |
313 | ("vorbis-tools" ,vorbis-tools) | |
314 | ||
315 | ;; A couple of Python and Perl scripts are included. | |
316 | ("python" ,python) | |
317 | ("perl" ,perl))) | |
318 | ||
319 | (synopsis "Command-line audio CD ripper") | |
320 | (description | |
321 | "abcde is a front-end command-line utility (actually, a shell script) | |
322 | that grabs tracks off a CD, encodes them to Ogg/Vorbis, MP3, FLAC, Ogg/Speex | |
323 | and/or MPP/MP+ (Musepack) format, and tags them, all in one go.") | |
324 | (license gpl2+))) |