projects/guix·blob python-team · refs

1161 lines · 46.8 KiB

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