[PATCH 0/5] Add missing inputs for k3b

  • Done
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Timotej Lazar
Owner
unassigned
Submitted by
Timotej Lazar
Severity
normal
T
T
Timotej Lazar wrote on 17 Jun 2020 12:47
(address . guix-patches@gnu.org)
87tuzaq884.fsf@araneo.si
Hi,

the first patch adds a new package cdrdao. The remaining patches update
the k3b package by adding inputs (including cdrdao) required at runtime
to actually read and write discs.

In the cases where k3b supports several backends, I picked the ones most
actively maintained (libcdio-paranoia instead of cdparanoia, and libburn
instead of cdrtools/cdrkit); this can be overriden in program settings.

I also add a note in description that udisks-service must be running for
k3b, and update it to latest released version.

Thanks!

Timotej Lazar (5):
gnu: Add cdrdao.
gnu: k3b: Add inputs for external programs.
gnu: k3b: Add inputs for libraries loaded at runtime.
gnu: k3b: Note the runtime dependency on udisks-service.
gnu: k3b: Update to 20.04.2.

gnu/packages/cdrom.scm | 51 +++++++++++++++++++++++++++++++++
gnu/packages/kde-multimedia.scm | 43 ++++++++++++++++++++++++---
2 files changed, 90 insertions(+), 4 deletions(-)
T
T
Timotej Lazar wrote on 17 Jun 2020 12:50
[PATCH 1/5] gnu: Add cdrdao.
(address . 41911@debbugs.gnu.org)(name . Timotej Lazar)(address . timotej.lazar@araneo.si)
20200617105008.11348-1-timotej.lazar@araneo.si
* gnu/packages/cdrom.scm (cdrdao): New variable.
---
gnu/packages/cdrom.scm | 51 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 51 insertions(+)

Toggle diff (81 lines)
diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm
index 67236f86de..ac8dd26af0 100644
--- a/gnu/packages/cdrom.scm
+++ b/gnu/packages/cdrom.scm
@@ -13,6 +13,7 @@
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -38,9 +39,11 @@
#:use-module (guix build-system gnu)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix gexp)
+ #:use-module (guix utils)
#:use-module (gnu packages)
#:use-module (gnu packages acl)
#:use-module (gnu packages audio)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
#:use-module (gnu packages compression)
#:use-module (gnu packages flex)
@@ -242,6 +245,54 @@ extra-robust data verification, synchronization, error handling and scratch
reconstruction capability.")
(license gpl2))) ; libraries under lgpl2.1
+(define-public cdrdao
+ (package
+ (name "cdrdao")
+ (version "1.2.4")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/cdrdao/cdrdao.git")
+ (commit
+ (string-append "rel_" (string-replace-substring version "." "_")))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1gcl8ibyylamy2d1piq3749nw3xrlp12r0spzp2gmni57b8a6b7j"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:configure-flags
+ (list
+ ;; GCDMaster depends on obsolete libgnomeuimm, see
+ ;; <https://github.com/cdrdao/cdrdao/issues/3>.
+ "--without-gcdmaster"
+ ;; Use the native SCSI interface.
+ "--without-scglib")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'bootstrap 'fix-configure.ac
+ (lambda _
+ ;; Remove reference to missing macro.
+ (substitute* "configure.ac" (("^AM_GCONF_SOURCE_2.*") ""))
+ #t)))))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("ao" ,ao)
+ ("lame" ,lame)
+ ("libmad" ,libmad)
+ ("libvorbis" ,libvorbis)))
+ (home-page "http://cdrdao.sourceforge.net")
+ (synopsis "Read and write CDs in disk-at-once mode")
+ (description "cdrdao records audio or data CDs in disk-at-once (DAO) mode,
+based on a textual description of the contents. This mode writes the complete
+disc – lead-in, one or more tracks, and lead-out – in a single step and is
+commonly used with audio CDs. @code{cdrdao} can also handle the bin/cue
+format, commonly used for VCDs or disks with subchannel data.")
+ (license gpl2+)))
+
(define-public cdrtools
(package
(name "cdrtools")
--
2.26.2
T
T
Timotej Lazar wrote on 17 Jun 2020 12:50
[PATCH 2/5] gnu: k3b: Add inputs for external programs.
(address . 41911@debbugs.gnu.org)(name . Timotej Lazar)(address . timotej.lazar@araneo.si)
20200617105008.11348-2-timotej.lazar@araneo.si
* gnu/packages/kde-multimedia.scm (k3b)[inputs]: Add cdrdao, dvd+rw-tools,
libburn and sox.
[arguments]<#:phases>[wrap-path]: New phase to wrap the binary with paths to
the above.
---
gnu/packages/kde-multimedia.scm | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)

Toggle diff (57 lines)
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 938251a532..654aecd858 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -296,12 +297,26 @@ This package is part of the KDE multimedia module.")
(sha256
(base32 "0r01ninrrmqk7pl5jg0g51fcky1ammw0yyq572wyhibw7q8y7ly7"))))
(build-system qt-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'qt-wrap 'wrap-path
+ (lambda _
+ ;; Set paths to backend programs.
+ (wrap-program (string-append (assoc-ref %outputs "out") "/bin/k3b")
+ `("PATH" ":" prefix
+ ,(map (lambda (input)
+ (string-append (assoc-ref %build-inputs input) "/bin"))
+ '("cdrdao" "dvd+rw-tools" "libburn" "sox"))))
+ #t)))))
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules)
("pkg-config" ,pkg-config)
("kdoctools" ,kdoctools)))
(inputs
- `(("ffmpeg" ,ffmpeg)
+ `(("cdrdao" ,cdrdao)
+ ("dvd+rw-tools" ,dvd+rw-tools)
+ ("ffmpeg" ,ffmpeg)
("flac" ,flac)
("karchive" ,karchive)
("kcmutils" ,kcmutils)
@@ -319,6 +334,7 @@ This package is part of the KDE multimedia module.")
("kwidgetsaddons" ,kwidgetsaddons)
("kxmlgui" ,kxmlgui)
("lame" ,lame)
+ ("libburn" ,libburn)
("libdvdread" ,libdvdread)
;; TODO: LibFuzzer
("libiconv" ,libiconv)
@@ -334,6 +350,7 @@ This package is part of the KDE multimedia module.")
("qtwebkit" ,qtwebkit)
("shared-mime-info" ,shared-mime-info)
("solid" ,solid)
+ ("sox" ,sox)
("taglib" ,taglib)))
(home-page "https://kde.org/applications/multimedia/org.kde.k3b")
(synopsis "Sophisticated CD/DVD burning application")
--
2.26.2
T
T
Timotej Lazar wrote on 17 Jun 2020 12:50
[PATCH 3/5] gnu: k3b: Add inputs for libraries loaded at runtime.
(address . 41911@debbugs.gnu.org)(name . Timotej Lazar)(address . timotej.lazar@araneo.si)
20200617105008.11348-3-timotej.lazar@araneo.si
Patch the source to load these from absolute paths. Actual loading is done by
the Qt library, so we cannot use k3b’s runpath.

* gnu/packages/kde-multimedia.scm (k3b)[inputs]: Add libcdio-paranoia and
libdvdcss.
[arguments]<#:phases>[set-absolute-library-paths]: New phase.
---
gnu/packages/kde-multimedia.scm | 15 +++++++++++++++
1 file changed, 15 insertions(+)

Toggle diff (35 lines)
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 654aecd858..9fab19f1f6 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -300,6 +300,19 @@ This package is part of the KDE multimedia module.")
(arguments
`(#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'set-absolute-library-paths
+ (lambda _
+ ;; Set absolute paths for dlopened libraries. We can’t use k3b’s
+ ;; runpath as they are loaded by the Qt library.
+ (let ((libcdio-paranoia (assoc-ref %build-inputs "libcdio-paranoia"))
+ (libdvdcss (assoc-ref %build-inputs "libdvdcss")))
+ (substitute* "libk3b/tools/k3bcdparanoialib.cpp"
+ (("\"(cdio_cdda|cdio_paranoia)\"" _ library)
+ (string-append "\"" libcdio-paranoia "/lib/" library "\"")))
+ (substitute* "libk3b/tools/k3blibdvdcss.cpp"
+ (("\"(dvdcss)\"" _ library)
+ (string-append "\"" libdvdcss "/lib/" library "\""))))
+ #t))
(add-after 'qt-wrap 'wrap-path
(lambda _
;; Set paths to backend programs.
@@ -335,6 +348,8 @@ This package is part of the KDE multimedia module.")
("kxmlgui" ,kxmlgui)
("lame" ,lame)
("libburn" ,libburn)
+ ("libcdio-paranoia" ,libcdio-paranoia)
+ ("libdvdcss" ,libdvdcss)
("libdvdread" ,libdvdread)
;; TODO: LibFuzzer
("libiconv" ,libiconv)
--
2.26.2
T
T
Timotej Lazar wrote on 17 Jun 2020 12:50
[PATCH 4/5] gnu: k3b: Note the runtime dependency on udisks-service.
(address . 41911@debbugs.gnu.org)(name . Timotej Lazar)(address . timotej.lazar@araneo.si)
20200617105008.11348-4-timotej.lazar@araneo.si
* gnu/packages/kde-multimedia.scm (k3b)[description]: Note that udisks-service
should be enabled.
---
gnu/packages/kde-multimedia.scm | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

Toggle diff (18 lines)
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 9fab19f1f6..ecc1afe83b 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -372,7 +372,10 @@ This package is part of the KDE multimedia module.")
(description "K3b is CD-writing software which intends to be feature-rich
and provide an easily usable interface. Features include burning audio CDs
from .WAV and .MP3 audio files, configuring external programs and configuring
-devices.")
+devices.
+
+The @code{udisks-service} should be enabled for @command{k3b} to discover the
+available CD drives.")
(license ;; GPL for programs, FDL for documentation
(list license:gpl2+ license:fdl1.2+))))
--
2.26.2
T
T
Timotej Lazar wrote on 17 Jun 2020 12:50
[PATCH 5/5] gnu: k3b: Update to 20.04.2.
(address . 41911@debbugs.gnu.org)(name . Timotej Lazar)(address . timotej.lazar@araneo.si)
20200617105008.11348-5-timotej.lazar@araneo.si
* gnu/packages/kde-multimedia.scm (k3b): Update to 20.04.2.
---
gnu/packages/kde-multimedia.scm | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

Toggle diff (23 lines)
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index ecc1afe83b..dd1355010e 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -288,14 +288,14 @@ This package is part of the KDE multimedia module.")
(define-public k3b
(package
(name "k3b")
- (version "20.04.1")
+ (version "20.04.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://kde/stable/release-service/" version
"/src/k3b-" version ".tar.xz"))
(sha256
- (base32 "0r01ninrrmqk7pl5jg0g51fcky1ammw0yyq572wyhibw7q8y7ly7"))))
+ (base32 "15wm987hz6rfs9ds9l1gbs6gdsardj1ywvk6zmpvj2i2190y4b3q"))))
(build-system qt-build-system)
(arguments
`(#:phases
--
2.26.2
L
L
Ludovic Courtès wrote on 21 Jun 2020 17:41
Re: [bug#41911] [PATCH 0/5] Add missing inputs for k3b
(name . Timotej Lazar)(address . timotej.lazar@araneo.si)(address . 41911-done@debbugs.gnu.org)
87bllca0km.fsf@gnu.org
Hi Timotej,

Timotej Lazar <timotej.lazar@araneo.si> skribis:

Toggle quote (6 lines)
> gnu: Add cdrdao.
> gnu: k3b: Add inputs for external programs.
> gnu: k3b: Add inputs for libraries loaded at runtime.
> gnu: k3b: Note the runtime dependency on udisks-service.
> gnu: k3b: Update to 20.04.2.

I pushed the whole series, thank you!

Ludo’.
Closed
?