unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#38532] [PATCH 00/11] Add audiofile and KDE mulitmedia applications.
@ 2019-12-08 16:41 Hartmut Goebel
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:41 UTC (permalink / raw)
  To: 38532

Audiofile is a dependency of kwave. It seems to be not well maintained and
there are quite some CVE reported. But Debian provides pathes for them, which
I added here.

The applications might not full work when used tand-alone, e.g. since
gstreamer plugins are not found. But IMO we should add them to proceed with
adding KDE applications.

Note: Amaork is missing since it still uses KDE 4 and is no longer listed at
https://kde.org/applications/multimedia.

Multimedia Addons (FFmpeg Thumbnailer and KIO AudioCD) are still todo.

Hartmut Goebel (11):
  gnu: Add audiofile.
  gnu: Add dragon.
  gnu: Add juk.
  gnu: Add k3b.
  gnu: Add libkcddb.
  gnu: Add kaffeine.
  gnu: Add kmix.
  gnu: Add kmplayer.
  gnu: Add kwave.
  gnu: Add elisa.
  gnu: Add kamoso.

 gnu/local.mk                                  |  16 +
 gnu/packages/audio.scm                        |  41 ++
 gnu/packages/kde-multimedia.scm               | 602 ++++++++++++++++++
 .../patches/audiofile-CVE-2015-7747.patch     | 156 +++++
 .../patches/audiofile-CVE-2018-13440.patch    |  28 +
 .../patches/audiofile-CVE-2018-17095.patch    |  26 +
 ...ile-Check-the-number-of-coefficients.patch |  30 +
 ...diofile-Fail-on-error-in-parseFormat.patch |  36 ++
 ...iofile-Fix-index-overflow-in-IMA.cpp.patch |  33 +
 ...file-Fix-multiply-overflow-sfconvert.patch |  66 ++
 ...le-Fix-overflow-in-MSADPCM-decodeSam.patch | 116 ++++
 ...-division-by-zero-BlockCodec-runPull.patch |  21 +
 .../audiofile-fix-datatypes-in-tests.patch    |  54 ++
 .../audiofile-fix-sign-conversion.patch       |  26 +
 gnu/packages/patches/audiofile-hurd.patch     | 381 +++++++++++
 ...e-signature-of-multiplyCheckOverflow.patch |  35 +
 gnu/packages/patches/kmplayer-aarch64.patch   |  57 ++
 ...layer-upstream_Fix-build-with-Qt-5.9.patch |  42 ++
 18 files changed, 1766 insertions(+)
 create mode 100644 gnu/packages/kde-multimedia.scm
 create mode 100644 gnu/packages/patches/audiofile-CVE-2015-7747.patch
 create mode 100644 gnu/packages/patches/audiofile-CVE-2018-13440.patch
 create mode 100644 gnu/packages/patches/audiofile-CVE-2018-17095.patch
 create mode 100644 gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch
 create mode 100644 gnu/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch
 create mode 100644 gnu/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch
 create mode 100644 gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch
 create mode 100644 gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch
 create mode 100644 gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch
 create mode 100644 gnu/packages/patches/audiofile-fix-datatypes-in-tests.patch
 create mode 100644 gnu/packages/patches/audiofile-fix-sign-conversion.patch
 create mode 100644 gnu/packages/patches/audiofile-hurd.patch
 create mode 100644 gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch
 create mode 100644 gnu/packages/patches/kmplayer-aarch64.patch
 create mode 100644 gnu/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch

-- 
2.21.0

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 01/11] gnu: Add audiofile.
  2019-12-08 16:41 [bug#38532] [PATCH 00/11] Add audiofile and KDE mulitmedia applications Hartmut Goebel
@ 2019-12-08 16:43 ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 02/11] gnu: Add dragon Hartmut Goebel
                     ` (9 more replies)
  2019-12-11 14:12 ` [bug#38532] Patches updated Hartmut Goebel
       [not found] ` <handler.38532.B.157582329710947.ack@debbugs.gnu.org>
  2 siblings, 10 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

Patches seem to fix all CVEs reported by `guix lint`:
CVE-2015-7747; CVE-2017-6827, CVE-2017-6828, CVE-2017-6829,
CVE-2017-6830, CVE-2017-6831, CVE-2017-6832, CVE-2017-6833,
CVE-2017-6834, CVE-2017-6835, CVE-2017-6836, CVE-2017-6837,
CVE-2017-6838, CVE-2017-6839; CVE-2018-13440; CVE-2018-17095

Since the patches so not reference to CVEs, it's a bit hard to tell which
patch actually closes which CVE.  But Debian reports all these to be closed by
the patches below.

* gnu/packages/audio.scm (audiofile): New variable.
* gnu/packages/patches/audiofile-fix-datatypes-in-tests.patch,
  gnu/packages/patches/audiofile-fix-sign-conversion.patch,
  gnu/packages/patches/audiofile-CVE-2015-7747.patch,
  gnu/packages/patches/audiofile-CVE-2018-13440.patch,
  gnu/packages/patches/audiofile-CVE-2018-17095.patch,
  gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch,
  gnu/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch,
  gnu/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch,
  gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch,
  gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch,
  gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch,
  gnu/packages/patches/audiofile-hurd.patch,
  gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch:
  New files.
* gnu/local.mk: Add them.
---
 gnu/local.mk                                  |  13 +
 gnu/packages/audio.scm                        |  41 ++
 .../patches/audiofile-CVE-2015-7747.patch     | 156 +++++++
 .../patches/audiofile-CVE-2018-13440.patch    |  28 ++
 .../patches/audiofile-CVE-2018-17095.patch    |  26 ++
 ...ile-Check-the-number-of-coefficients.patch |  30 ++
 ...diofile-Fail-on-error-in-parseFormat.patch |  36 ++
 ...iofile-Fix-index-overflow-in-IMA.cpp.patch |  33 ++
 ...file-Fix-multiply-overflow-sfconvert.patch |  66 +++
 ...le-Fix-overflow-in-MSADPCM-decodeSam.patch | 116 ++++++
 ...-division-by-zero-BlockCodec-runPull.patch |  21 +
 .../audiofile-fix-datatypes-in-tests.patch    |  54 +++
 .../audiofile-fix-sign-conversion.patch       |  26 ++
 gnu/packages/patches/audiofile-hurd.patch     | 381 ++++++++++++++++++
 ...e-signature-of-multiplyCheckOverflow.patch |  35 ++
 15 files changed, 1062 insertions(+)
 create mode 100644 gnu/packages/patches/audiofile-CVE-2015-7747.patch
 create mode 100644 gnu/packages/patches/audiofile-CVE-2018-13440.patch
 create mode 100644 gnu/packages/patches/audiofile-CVE-2018-17095.patch
 create mode 100644 gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch
 create mode 100644 gnu/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch
 create mode 100644 gnu/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch
 create mode 100644 gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch
 create mode 100644 gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch
 create mode 100644 gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch
 create mode 100644 gnu/packages/patches/audiofile-fix-datatypes-in-tests.patch
 create mode 100644 gnu/packages/patches/audiofile-fix-sign-conversion.patch
 create mode 100644 gnu/packages/patches/audiofile-hurd.patch
 create mode 100644 gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index b2938e878b..91afc8f059 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -710,6 +710,19 @@ dist_patch_DATA =						\
   %D%/packages/patches/ath9k-htc-firmware-gcc.patch		\
   %D%/packages/patches/ath9k-htc-firmware-objcopy.patch		\
   %D%/packages/patches/audacity-build-with-system-portaudio.patch \
+  %D%/packages/patches/audiofile-fix-datatypes-in-tests.patch	\
+  %D%/packages/patches/audiofile-fix-sign-conversion.patch	\
+  %D/packages/patches/audiofile-CVE-2015-7747.patch		\
+  %D/packages/patches/audiofile-CVE-2018-13440.patch		\
+  %D/packages/patches/audiofile-CVE-2018-17095.patch		\
+  %D/packages/patches/audiofile-Check-the-number-of-coefficients.patch \
+  %D/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch \
+  %D/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch \
+  %D/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch \
+  %D/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch \
+  %D/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch \
+  %D/packages/patches/audiofile-hurd.patch \
+  %D/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch \
   %D%/packages/patches/automake-skip-amhello-tests.patch	\
   %D%/packages/patches/avahi-CVE-2018-1000845.patch		\
   %D%/packages/patches/avahi-localstatedir.patch		\
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 7b0c540d7a..9fff563ad4 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -26,6 +26,7 @@
 ;;; Copyright © 2019 Alexandros Theodotou <alex@zrythm.org>
 ;;; Copyright © 2019 Christopher Lemmer Webber <cwebber@dustycloud.org>
 ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
+;;; Copyright © 2019 Hartmt Goebel <h.goebel@crazy-compilers.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -467,6 +468,46 @@ and editing digital audio.  It features digital effects and spectrum analysis
 tools.")
     (license license:gpl2+)))
 
+(define-public audiofile
+  (package
+    (name "audiofile")
+    (version "0.3.6")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append
+             "https://audiofile.68k.org/audiofile-" version ".tar.gz"))
+       (sha256
+        (base32 "0rb927zknk9kmhprd8rdr4azql4gn2dp75a36iazx2xhkbqhvind"))
+       (patches
+        (search-patches
+         "audiofile-fix-datatypes-in-tests.patch"
+         "audiofile-fix-sign-conversion.patch"
+         "audiofile-hurd.patch"
+         "audiofile-CVE-2015-7747.patch"
+         "audiofile-Fix-index-overflow-in-IMA.cpp.patch"
+         "audiofile-Check-the-number-of-coefficients.patch"
+         "audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch"
+         "audiofile-Fix-multiply-overflow-sfconvert.patch"
+         "audiofile-signature-of-multiplyCheckOverflow.patch"
+         "audiofile-Fail-on-error-in-parseFormat.patch"
+         "audiofile-division-by-zero-BlockCodec-runPull.patch"
+         "audiofile-CVE-2018-13440.patch"
+         "audiofile-CVE-2018-17095.patch"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("alsa-lib" ,alsa-lib)))
+    (home-page "https://audiofile.68k.org/")
+    (synopsis "Library to handle various audio file formats")
+    (description "This is an open-source version of SGI's audiofile library.
+It provides a uniform programming interface for processing of audio data to
+and from audio files of many common formats.
+
+Currently supported file formats include AIFF/AIFF-C, WAVE, and NeXT/Sun
+.snd/.au, BICS, and raw data.  Supported compression formats are currently
+G.711 mu-law and A-law.")
+    (license license:lgpl2.1+)))
+
 (define-public autotalent
   (package
     (name "autotalent")
diff --git a/gnu/packages/patches/audiofile-CVE-2015-7747.patch b/gnu/packages/patches/audiofile-CVE-2015-7747.patch
new file mode 100644
index 0000000000..3325639591
--- /dev/null
+++ b/gnu/packages/patches/audiofile-CVE-2015-7747.patch
@@ -0,0 +1,156 @@
+Description: fix buffer overflow when changing both sample format and
+ number of channels
+Origin: https://github.com/mpruett/audiofile/pull/25
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/audiofile/+bug/1502721
+Bug-Debian: https://bugs.debian.org/801102
+
+--- a/libaudiofile/modules/ModuleState.cpp
++++ b/libaudiofile/modules/ModuleState.cpp
+@@ -402,7 +402,7 @@ status ModuleState::arrange(AFfilehandle
+ 		addModule(new Transform(outfc, in.pcm, out.pcm));
+ 
+ 	if (in.channelCount != out.channelCount)
+-		addModule(new ApplyChannelMatrix(infc, isReading,
++		addModule(new ApplyChannelMatrix(outfc, isReading,
+ 			in.channelCount, out.channelCount,
+ 			in.pcm.minClip, in.pcm.maxClip,
+ 			track->channelMatrix));
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -26,6 +26,7 @@ TESTS = \
+ 	VirtualFile \
+ 	floatto24 \
+ 	query2 \
++	sixteen-stereo-to-eight-mono \
+ 	sixteen-to-eight \
+ 	testchannelmatrix \
+ 	testdouble \
+@@ -139,6 +140,7 @@ printmarkers_SOURCES = printmarkers.c
+ printmarkers_LDADD = $(LIBAUDIOFILE) -lm
+ 
+ sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h
++sixteen_stereo_to_eight_mono_SOURCES = sixteen-stereo-to-eight-mono.c TestUtilities.cpp TestUtilities.h
+ 
+ testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h
+ 
+--- /dev/null
++++ b/test/sixteen-stereo-to-eight-mono.c
+@@ -0,0 +1,118 @@
++/*
++	Audio File Library
++
++	Copyright 2000, Silicon Graphics, Inc.
++
++	This program is free software; you can redistribute it and/or modify
++	it under the terms of the GNU General Public License as published by
++	the Free Software Foundation; either version 2 of the License, or
++	(at your option) any later version.
++
++	This program is distributed in the hope that it will be useful,
++	but WITHOUT ANY WARRANTY; without even the implied warranty of
++	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++	GNU General Public License for more details.
++
++	You should have received a copy of the GNU General Public License along
++	with this program; if not, write to the Free Software Foundation, Inc.,
++	51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++*/
++
++/*
++	sixteen-stereo-to-eight-mono.c
++
++	This program tests the conversion from 2-channel 16-bit integers to
++	1-channel 8-bit	integers.
++*/
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include <stdint.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <limits.h>
++
++#include <audiofile.h>
++
++#include "TestUtilities.h"
++
++int main (int argc, char **argv)
++{
++	AFfilehandle file;
++	AFfilesetup setup;
++	int16_t frames16[] = {14298, 392, 3923, -683, 958, -1921};
++	int8_t frames8[] = {28, 6, -2};
++	int i, frameCount = 3;
++	int8_t byte;
++	AFframecount result;
++
++	setup = afNewFileSetup();
++
++	afInitFileFormat(setup, AF_FILE_WAVE);
++
++	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
++	afInitChannels(setup, AF_DEFAULT_TRACK, 2);
++
++	char *testFileName;
++	if (!createTemporaryFile("sixteen-to-eight", &testFileName))
++	{
++		fprintf(stderr, "Could not create temporary file.\n");
++		exit(EXIT_FAILURE);
++	}
++
++	file = afOpenFile(testFileName, "w", setup);
++	if (file == AF_NULL_FILEHANDLE)
++	{
++		fprintf(stderr, "could not open file for writing\n");
++		exit(EXIT_FAILURE);
++	}
++
++	afFreeFileSetup(setup);
++
++	afWriteFrames(file, AF_DEFAULT_TRACK, frames16, frameCount);
++
++	afCloseFile(file);
++
++	file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP);
++	if (file == AF_NULL_FILEHANDLE)
++	{
++		fprintf(stderr, "could not open file for reading\n");
++		exit(EXIT_FAILURE);
++	}
++
++	afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 8);
++	afSetVirtualChannels(file, AF_DEFAULT_TRACK, 1);
++
++	for (i=0; i<frameCount; i++)
++	{
++		/* Read one frame. */
++		result = afReadFrames(file, AF_DEFAULT_TRACK, &byte, 1);
++
++		if (result != 1)
++			break;
++
++		/* Compare the byte read with its precalculated value. */
++		if (memcmp(&byte, &frames8[i], 1) != 0)
++		{
++			printf("error\n");
++			printf("expected %d, got %d\n", frames8[i], byte);
++			exit(EXIT_FAILURE);
++		}
++		else
++		{
++#ifdef DEBUG
++			printf("got what was expected: %d\n", byte);
++#endif
++		}
++	}
++
++	afCloseFile(file);
++	unlink(testFileName);
++	free(testFileName);
++
++	exit(EXIT_SUCCESS);
++}
diff --git a/gnu/packages/patches/audiofile-CVE-2018-13440.patch b/gnu/packages/patches/audiofile-CVE-2018-13440.patch
new file mode 100644
index 0000000000..ffd65b43b0
--- /dev/null
+++ b/gnu/packages/patches/audiofile-CVE-2018-13440.patch
@@ -0,0 +1,28 @@
+From fde6d79fb8363c4a329a184ef0b107156602b225 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wtaymans@redhat.com>
+Date: Thu, 27 Sep 2018 10:48:45 +0200
+Subject: [PATCH] ModuleState: handle compress/decompress init failure
+
+When the unit initcompress or initdecompress function fails,
+m_fileModule is NULL. Return AF_FAIL in that case instead of
+causing NULL pointer dereferences later.
+
+Fixes #49
+---
+ libaudiofile/modules/ModuleState.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libaudiofile/modules/ModuleState.cpp b/libaudiofile/modules/ModuleState.cpp
+index 0c29d7a..070fd9b 100644
+--- a/libaudiofile/modules/ModuleState.cpp
++++ b/libaudiofile/modules/ModuleState.cpp
+@@ -75,6 +75,9 @@ status ModuleState::initFileModule(AFfilehandle file, Track *track)
+ 		m_fileModule = unit->initcompress(track, file->m_fh, file->m_seekok,
+ 			file->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames);
+ 
++	if (!m_fileModule)
++		return AF_FAIL;
++
+ 	if (unit->needsRebuffer)
+ 	{
+ 		assert(unit->nativeSampleFormat == AF_SAMPFMT_TWOSCOMP);
diff --git a/gnu/packages/patches/audiofile-CVE-2018-17095.patch b/gnu/packages/patches/audiofile-CVE-2018-17095.patch
new file mode 100644
index 0000000000..231021b9fc
--- /dev/null
+++ b/gnu/packages/patches/audiofile-CVE-2018-17095.patch
@@ -0,0 +1,26 @@
+From 822b732fd31ffcb78f6920001e9b1fbd815fa712 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wtaymans@redhat.com>
+Date: Thu, 27 Sep 2018 12:11:12 +0200
+Subject: [PATCH] SimpleModule: set output chunk framecount after pull
+
+After pulling the data, set the output chunk to the amount of
+frames we pulled so that the next module in the chain has the correct
+frame count.
+
+Fixes #50 and #51
+---
+ libaudiofile/modules/SimpleModule.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libaudiofile/modules/SimpleModule.cpp b/libaudiofile/modules/SimpleModule.cpp
+index 2bae1eb..e87932c 100644
+--- a/libaudiofile/modules/SimpleModule.cpp
++++ b/libaudiofile/modules/SimpleModule.cpp
+@@ -26,6 +26,7 @@
+ void SimpleModule::runPull()
+ {
+ 	pull(m_outChunk->frameCount);
++	m_outChunk->frameCount = m_inChunk->frameCount;
+ 	run(*m_inChunk, *m_outChunk);
+ }
+ 
diff --git a/gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch b/gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch
new file mode 100644
index 0000000000..f9427cbe61
--- /dev/null
+++ b/gnu/packages/patches/audiofile-Check-the-number-of-coefficients.patch
@@ -0,0 +1,30 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 12:51:22 +0100
+Subject: Always check the number of coefficients
+
+When building the library with NDEBUG, asserts are eliminated
+so it's better to always check that the number of coefficients
+is inside the array range.
+
+This fixes the 00191-audiofile-indexoob issue in #41
+---
+ libaudiofile/WAVE.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp
+index 9dd8511..0fc48e8 100644
+--- a/libaudiofile/WAVE.cpp
++++ b/libaudiofile/WAVE.cpp
+@@ -281,6 +281,12 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size)
+ 
+ 			/* numCoefficients should be at least 7. */
+ 			assert(numCoefficients >= 7 && numCoefficients <= 255);
++			if (numCoefficients < 7 || numCoefficients > 255)
++			{
++				_af_error(AF_BAD_HEADER,
++						"Bad number of coefficients");
++				return AF_FAIL;
++			}
+ 
+ 			m_msadpcmNumCoefficients = numCoefficients;
+ 
diff --git a/gnu/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch b/gnu/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch
new file mode 100644
index 0000000000..50cd3dc9a3
--- /dev/null
+++ b/gnu/packages/patches/audiofile-Fail-on-error-in-parseFormat.patch
@@ -0,0 +1,36 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 18:59:26 +0100
+Subject: Actually fail when error occurs in parseFormat
+
+When there's an unsupported number of bits per sample or an invalid
+number of samples per block, don't only print an error message using
+the error handler, but actually stop parsing the file.
+
+This fixes #35 (also reported at
+https://bugzilla.opensuse.org/show_bug.cgi?id=1026983 and
+https://blogs.gentoo.org/ago/2017/02/20/audiofile-heap-based-buffer-overflow-in-imadecodeblockwave-ima-cpp/
+)
+---
+ libaudiofile/WAVE.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp
+index 0fc48e8..d04b796 100644
+--- a/libaudiofile/WAVE.cpp
++++ b/libaudiofile/WAVE.cpp
+@@ -332,6 +332,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size)
+ 			{
+ 				_af_error(AF_BAD_NOT_IMPLEMENTED,
+ 					"IMA ADPCM compression supports only 4 bits per sample");
++				return AF_FAIL;
+ 			}
+ 
+ 			int bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount;
+@@ -339,6 +340,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size)
+ 			{
+ 				_af_error(AF_BAD_CODEC_CONFIG,
+ 					"Invalid samples per block for IMA ADPCM compression");
++				return AF_FAIL;
+ 			}
+ 
+ 			track->f.sampleWidth = 16;
diff --git a/gnu/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch b/gnu/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch
new file mode 100644
index 0000000000..c1047af06c
--- /dev/null
+++ b/gnu/packages/patches/audiofile-Fix-index-overflow-in-IMA.cpp.patch
@@ -0,0 +1,33 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 18:02:31 +0100
+Subject: clamp index values to fix index overflow in IMA.cpp
+
+This fixes #33
+(also reported at https://bugzilla.opensuse.org/show_bug.cgi?id=1026981
+and https://blogs.gentoo.org/ago/2017/02/20/audiofile-global-buffer-overflow-in-decodesample-ima-cpp/)
+---
+ libaudiofile/modules/IMA.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libaudiofile/modules/IMA.cpp b/libaudiofile/modules/IMA.cpp
+index 7476d44..df4aad6 100644
+--- a/libaudiofile/modules/IMA.cpp
++++ b/libaudiofile/modules/IMA.cpp
+@@ -169,7 +169,7 @@ int IMA::decodeBlockWAVE(const uint8_t *encoded, int16_t *decoded)
+ 		if (encoded[1] & 0x80)
+ 			m_adpcmState[c].previousValue -= 0x10000;
+ 
+-		m_adpcmState[c].index = encoded[2];
++		m_adpcmState[c].index = clamp(encoded[2], 0, 88);
+ 
+ 		*decoded++ = m_adpcmState[c].previousValue;
+ 
+@@ -210,7 +210,7 @@ int IMA::decodeBlockQT(const uint8_t *encoded, int16_t *decoded)
+ 			predictor -= 0x10000;
+ 
+ 		state.previousValue = clamp(predictor, MIN_INT16, MAX_INT16);
+-		state.index = encoded[1] & 0x7f;
++		state.index = clamp(encoded[1] & 0x7f, 0, 88);
+ 		encoded += 2;
+ 
+ 		for (int n=0; n<m_framesPerPacket; n+=2)
diff --git a/gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch b/gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch
new file mode 100644
index 0000000000..0f17140d6b
--- /dev/null
+++ b/gnu/packages/patches/audiofile-Fix-multiply-overflow-sfconvert.patch
@@ -0,0 +1,66 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 13:54:52 +0100
+Subject: Check for multiplication overflow in sfconvert
+
+Checks that a multiplication doesn't overflow when
+calculating the buffer size, and if it overflows,
+reduce the buffer size instead of failing.
+
+This fixes the 00192-audiofile-signintoverflow-sfconvert case
+in #41
+---
+ sfcommands/sfconvert.c | 34 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 32 insertions(+), 2 deletions(-)
+
+diff --git a/sfcommands/sfconvert.c b/sfcommands/sfconvert.c
+index 80a1bc4..970a3e4 100644
+--- a/sfcommands/sfconvert.c
++++ b/sfcommands/sfconvert.c
+@@ -45,6 +45,33 @@ void printusage (void);
+ void usageerror (void);
+ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid);
+ 
++int firstBitSet(int x)
++{
++        int position=0;
++        while (x!=0)
++        {
++                x>>=1;
++                ++position;
++        }
++        return position;
++}
++
++#ifndef __has_builtin
++#define __has_builtin(x) 0
++#endif
++
++int multiplyCheckOverflow(int a, int b, int *result)
++{
++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
++	return __builtin_mul_overflow(a, b, result);
++#else
++	if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits
++		return true;
++	*result = a * b;
++	return false;
++#endif
++}
++
+ int main (int argc, char **argv)
+ {
+ 	if (argc == 2)
+@@ -323,8 +350,11 @@ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid)
+ {
+ 	int frameSize = afGetVirtualFrameSize(infile, trackid, 1);
+ 
+-	const int kBufferFrameCount = 65536;
+-	void *buffer = malloc(kBufferFrameCount * frameSize);
++	int kBufferFrameCount = 65536;
++	int bufferSize;
++	while (multiplyCheckOverflow(kBufferFrameCount, frameSize, &bufferSize))
++		kBufferFrameCount /= 2;
++	void *buffer = malloc(bufferSize);
+ 
+ 	AFframecount totalFrames = afGetFrameCount(infile, AF_DEFAULT_TRACK);
+ 	AFframecount totalFramesWritten = 0;
diff --git a/gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch b/gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch
new file mode 100644
index 0000000000..2be930b924
--- /dev/null
+++ b/gnu/packages/patches/audiofile-Fix-overflow-in-MSADPCM-decodeSam.patch
@@ -0,0 +1,116 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 13:43:53 +0100
+Subject: Check for multiplication overflow in MSADPCM decodeSample
+
+Check for multiplication overflow (using __builtin_mul_overflow
+if available) in MSADPCM.cpp decodeSample and return an empty
+decoded block if an error occurs.
+
+This fixes the 00193-audiofile-signintoverflow-MSADPCM case of #41
+---
+ libaudiofile/modules/BlockCodec.cpp |  5 ++--
+ libaudiofile/modules/MSADPCM.cpp    | 47 +++++++++++++++++++++++++++++++++----
+ 2 files changed, 46 insertions(+), 6 deletions(-)
+
+diff --git a/libaudiofile/modules/BlockCodec.cpp b/libaudiofile/modules/BlockCodec.cpp
+index 45925e8..4731be1 100644
+--- a/libaudiofile/modules/BlockCodec.cpp
++++ b/libaudiofile/modules/BlockCodec.cpp
+@@ -52,8 +52,9 @@ void BlockCodec::runPull()
+ 	// Decompress into m_outChunk.
+ 	for (int i=0; i<blocksRead; i++)
+ 	{
+-		decodeBlock(static_cast<const uint8_t *>(m_inChunk->buffer) + i * m_bytesPerPacket,
+-			static_cast<int16_t *>(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount);
++		if (decodeBlock(static_cast<const uint8_t *>(m_inChunk->buffer) + i * m_bytesPerPacket,
++			static_cast<int16_t *>(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount)==0)
++			break;
+ 
+ 		framesRead += m_framesPerPacket;
+ 	}
+diff --git a/libaudiofile/modules/MSADPCM.cpp b/libaudiofile/modules/MSADPCM.cpp
+index 8ea3c85..ef9c38c 100644
+--- a/libaudiofile/modules/MSADPCM.cpp
++++ b/libaudiofile/modules/MSADPCM.cpp
+@@ -101,24 +101,60 @@ static const int16_t adaptationTable[] =
+ 	768, 614, 512, 409, 307, 230, 230, 230
+ };
+ 
++int firstBitSet(int x)
++{
++        int position=0;
++        while (x!=0)
++        {
++                x>>=1;
++                ++position;
++        }
++        return position;
++}
++
++#ifndef __has_builtin
++#define __has_builtin(x) 0
++#endif
++
++int multiplyCheckOverflow(int a, int b, int *result)
++{
++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
++	return __builtin_mul_overflow(a, b, result);
++#else
++	if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits
++		return true;
++	*result = a * b;
++	return false;
++#endif
++}
++
++
+ // Compute a linear PCM value from the given differential coded value.
+ static int16_t decodeSample(ms_adpcm_state &state,
+-	uint8_t code, const int16_t *coefficient)
++	uint8_t code, const int16_t *coefficient, bool *ok=NULL)
+ {
+ 	int linearSample = (state.sample1 * coefficient[0] +
+ 		state.sample2 * coefficient[1]) >> 8;
++	int delta;
+ 
+ 	linearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta;
+ 
+ 	linearSample = clamp(linearSample, MIN_INT16, MAX_INT16);
+ 
+-	int delta = (state.delta * adaptationTable[code]) >> 8;
++	if (multiplyCheckOverflow(state.delta, adaptationTable[code], &delta))
++	{
++                if (ok) *ok=false;
++		_af_error(AF_BAD_COMPRESSION, "Error decoding sample");
++		return 0;
++	}
++	delta >>= 8;
+ 	if (delta < 16)
+ 		delta = 16;
+ 
+ 	state.delta = delta;
+ 	state.sample2 = state.sample1;
+ 	state.sample1 = linearSample;
++	if (ok) *ok=true;
+ 
+ 	return static_cast<int16_t>(linearSample);
+ }
+@@ -212,13 +248,16 @@ int MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded)
+ 	{
+ 		uint8_t code;
+ 		int16_t newSample;
++		bool ok;
+ 
+ 		code = *encoded >> 4;
+-		newSample = decodeSample(*state[0], code, coefficient[0]);
++		newSample = decodeSample(*state[0], code, coefficient[0], &ok);
++		if (!ok) return 0;
+ 		*decoded++ = newSample;
+ 
+ 		code = *encoded & 0x0f;
+-		newSample = decodeSample(*state[1], code, coefficient[1]);
++		newSample = decodeSample(*state[1], code, coefficient[1], &ok);
++		if (!ok) return 0;
+ 		*decoded++ = newSample;
+ 
+ 		encoded++;
diff --git a/gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch b/gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch
new file mode 100644
index 0000000000..e001133916
--- /dev/null
+++ b/gnu/packages/patches/audiofile-division-by-zero-BlockCodec-runPull.patch
@@ -0,0 +1,21 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Thu, 9 Mar 2017 10:21:18 +0100
+Subject: Check for division by zero in BlockCodec::runPull
+
+---
+ libaudiofile/modules/BlockCodec.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libaudiofile/modules/BlockCodec.cpp b/libaudiofile/modules/BlockCodec.cpp
+index 4731be1..eb2fb4d 100644
+--- a/libaudiofile/modules/BlockCodec.cpp
++++ b/libaudiofile/modules/BlockCodec.cpp
+@@ -47,7 +47,7 @@ void BlockCodec::runPull()
+ 
+ 	// Read the compressed data.
+ 	ssize_t bytesRead = read(m_inChunk->buffer, m_bytesPerPacket * blockCount);
+-	int blocksRead = bytesRead >= 0 ? bytesRead / m_bytesPerPacket : 0;
++	int blocksRead = (bytesRead >= 0 && m_bytesPerPacket > 0) ? bytesRead / m_bytesPerPacket : 0;
+ 
+ 	// Decompress into m_outChunk.
+ 	for (int i=0; i<blocksRead; i++)
diff --git a/gnu/packages/patches/audiofile-fix-datatypes-in-tests.patch b/gnu/packages/patches/audiofile-fix-datatypes-in-tests.patch
new file mode 100644
index 0000000000..00e0f3c4a3
--- /dev/null
+++ b/gnu/packages/patches/audiofile-fix-datatypes-in-tests.patch
@@ -0,0 +1,54 @@
+Based on (hunks for changelog and Identy.cpp removed)
+From ecbc07f0ed336187cc9a67c3363f89681b8b8f52 Mon Sep 17 00:00:00 2001
+From: Michael Pruett <michael@68k.org>
+Date: Tue, 5 Jul 2016 23:26:16 -0500
+Subject: [PATCH] Fix type of test data arrays.
+
+
+
+
+---
+ ChangeLog         | 6 ++++++
+ test/Identify.cpp | 3 ++-
+ test/NeXT.cpp     | 7 ++++---
+ 3 files changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/test/NeXT.cpp b/test/NeXT.cpp
+index 7e39850..29af877 100644
+--- a/test/NeXT.cpp
++++ b/test/NeXT.cpp
+@@ -30,6 +30,7 @@
+ #include <audiofile.h>
+ #include <fcntl.h>
+ #include <gtest/gtest.h>
++#include <stdint.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+@@ -37,7 +38,7 @@
+ 
+ #include "TestUtilities.h"
+ 
+-const char kDataUnspecifiedLength[] =
++const uint8_t kDataUnspecifiedLength[] =
+ {
+ 	'.', 's', 'n', 'd',
+ 	0, 0, 0, 24, // offset of 24 bytes
+@@ -57,7 +58,7 @@ const char kDataUnspecifiedLength[] =
+ 	0, 55
+ };
+ 
+-const char kDataTruncated[] =
++const uint8_t kDataTruncated[] =
+ {
+ 	'.', 's', 'n', 'd',
+ 	0, 0, 0, 24, // offset of 24 bytes
+@@ -152,7 +153,7 @@ TEST(NeXT, Truncated)
+ 	ASSERT_EQ(::unlink(testFileName.c_str()), 0);
+ }
+ 
+-const char kDataZeroChannels[] =
++const uint8_t kDataZeroChannels[] =
+ {
+ 	'.', 's', 'n', 'd',
+ 	0, 0, 0, 24, // offset of 24 bytes
diff --git a/gnu/packages/patches/audiofile-fix-sign-conversion.patch b/gnu/packages/patches/audiofile-fix-sign-conversion.patch
new file mode 100644
index 0000000000..648161d620
--- /dev/null
+++ b/gnu/packages/patches/audiofile-fix-sign-conversion.patch
@@ -0,0 +1,26 @@
+Based on (hunk for changelog removed)
+From b62c902dd258125cac86cd2df21fc898035a43d3 Mon Sep 17 00:00:00 2001
+From: Michael Pruett <michael@68k.org>
+Date: Mon, 29 Aug 2016 23:08:26 -0500
+Subject: [PATCH] Fix undefined behavior in sign conversion.
+
+
+---
+ ChangeLog                           | 5 +++++
+ libaudiofile/modules/SimpleModule.h | 3 ++-
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/libaudiofile/modules/SimpleModule.h b/libaudiofile/modules/SimpleModule.h
+index 03c6c69..bad85ad 100644
+--- a/libaudiofile/modules/SimpleModule.h
++++ b/libaudiofile/modules/SimpleModule.h
+@@ -123,7 +123,8 @@ struct signConverter
+ 	typedef typename IntTypes<Format>::UnsignedType UnsignedType;
+ 
+ 	static const int kScaleBits = (Format + 1) * CHAR_BIT - 1;
+-	static const int kMinSignedValue = -1 << kScaleBits;
++	static const int kMaxSignedValue = (((1 << (kScaleBits - 1)) - 1) << 1) + 1;
++	static const int kMinSignedValue = -kMaxSignedValue - 1;
+ 
+ 	struct signedToUnsigned : public std::unary_function<SignedType, UnsignedType>
+ 	{
diff --git a/gnu/packages/patches/audiofile-hurd.patch b/gnu/packages/patches/audiofile-hurd.patch
new file mode 100644
index 0000000000..b5941dcf44
--- /dev/null
+++ b/gnu/packages/patches/audiofile-hurd.patch
@@ -0,0 +1,381 @@
+Description: Remove usage of PATH_MAX in tests to fix FTBFS on Hurd.
+ jcowgill: Removed Changelog changes
+Author: Pino Toscano <toscano.pino@tiscali.it>
+Origin: backport, https://github.com/mpruett/audiofile/commit/34c261034f1193a783196618f0052112e00fbcfe
+Bug: https://github.com/mpruett/audiofile/pull/17
+Bug-Debian: https://bugs.debian.org/762595
+---
+This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
+
+--- a/test/TestUtilities.cpp
++++ b/test/TestUtilities.cpp
+@@ -21,8 +21,8 @@
+ #include "TestUtilities.h"
+ 
+ #include <limits.h>
+-#include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
+ #include <unistd.h>
+ 
+ bool createTemporaryFile(const std::string &prefix, std::string *path)
+@@ -35,12 +35,12 @@ bool createTemporaryFile(const std::stri
+ 	return true;
+ }
+ 
+-bool createTemporaryFile(const char *prefix, char *path)
++bool createTemporaryFile(const char *prefix, char **path)
+ {
+-	snprintf(path, PATH_MAX, "/tmp/%s-XXXXXX", prefix);
+-	int fd = ::mkstemp(path);
+-	if (fd < 0)
+-		return false;
+-	::close(fd);
+-	return true;
++	*path = NULL;
++	std::string pathString;
++	bool result = createTemporaryFile(prefix, &pathString);
++	if (result)
++		*path = ::strdup(pathString.c_str());
++	return result;
+ }
+--- a/test/TestUtilities.h
++++ b/test/TestUtilities.h
+@@ -53,7 +53,7 @@ extern "C" {
+ 
+ #include <stdbool.h>
+ 
+-bool createTemporaryFile(const char *prefix, char *path);
++bool createTemporaryFile(const char *prefix, char **path);
+ 
+ #ifdef __cplusplus
+ }
+--- a/test/floatto24.c
++++ b/test/floatto24.c
+@@ -86,8 +86,8 @@ int main (int argc, char **argv)
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 1);
+ 	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32);
+ 
+-	char testFileName[PATH_MAX];
+-	if (!createTemporaryFile("floatto24", testFileName))
++	char *testFileName;
++	if (!createTemporaryFile("floatto24", &testFileName))
+ 	{
+ 		fprintf(stderr, "Could not create temporary file.\n");
+ 		exit(EXIT_FAILURE);
+@@ -182,6 +182,7 @@ int main (int argc, char **argv)
+ 	}
+ 
+ 	unlink(testFileName);
++	free(testFileName);
+ 
+ 	exit(EXIT_SUCCESS);
+ }
+--- a/test/sixteen-to-eight.c
++++ b/test/sixteen-to-eight.c
+@@ -57,8 +57,8 @@ int main (int argc, char **argv)
+ 	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_UNSIGNED, 8);
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 1);
+ 
+-	char testFileName[PATH_MAX];
+-	if (!createTemporaryFile("sixteen-to-eight", testFileName))
++	char *testFileName;
++	if (!createTemporaryFile("sixteen-to-eight", &testFileName))
+ 	{
+ 		fprintf(stderr, "Could not create temporary file.\n");
+ 		exit(EXIT_FAILURE);
+@@ -113,6 +113,7 @@ int main (int argc, char **argv)
+ 
+ 	afCloseFile(file);
+ 	unlink(testFileName);
++	free(testFileName);
+ 
+ 	exit(EXIT_SUCCESS);
+ }
+--- a/test/testchannelmatrix.c
++++ b/test/testchannelmatrix.c
+@@ -39,7 +39,7 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ const short samples[] = {300, -300, 515, -515, 2315, -2315, 9154, -9154};
+ #define SAMPLE_COUNT (sizeof (samples) / sizeof (short))
+@@ -47,7 +47,11 @@ const short samples[] = {300, -300, 515,
+ 
+ void cleanup (void)
+ {
+-	unlink(sTestFileName);
++	if (sTestFileName)
++	{
++		unlink(sTestFileName);
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -76,7 +80,7 @@ int main (void)
+ 	afInitFileFormat(setup, AF_FILE_AIFFC);
+ 
+ 	/* Write stereo data to test file. */
+-	ensure(createTemporaryFile("testchannelmatrix", sTestFileName),
++	ensure(createTemporaryFile("testchannelmatrix", &sTestFileName),
+ 		"could not create temporary file");
+ 	file = afOpenFile(sTestFileName, "w", setup);
+ 	ensure(file != AF_NULL_FILEHANDLE, "could not open file for writing");
+--- a/test/testdouble.c
++++ b/test/testdouble.c
+@@ -38,7 +38,7 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ const double samples[] =
+ 	{1.0, 0.6, -0.3, 0.95, 0.2, -0.6, 0.9, 0.4, -0.22, 0.125, 0.1, -0.4};
+@@ -48,7 +48,11 @@ void testdouble (int fileFormat);
+ 
+ void cleanup (void)
+ {
+-	unlink(sTestFileName);
++	if (sTestFileName)
++	{
++		unlink(sTestFileName);
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -96,7 +100,7 @@ void testdouble (int fileFormat)
+ 	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_DOUBLE, 64);
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 2);
+ 
+-	ensure(createTemporaryFile("testdouble", sTestFileName),
++	ensure(createTemporaryFile("testdouble", &sTestFileName),
+ 		"could not create temporary file");
+ 	file = afOpenFile(sTestFileName, "w", setup);
+ 	ensure(file != AF_NULL_FILEHANDLE, "could not open file for writing");
+--- a/test/testfloat.c
++++ b/test/testfloat.c
+@@ -38,7 +38,7 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ const float samples[] =
+ 	{1.0, 0.6, -0.3, 0.95, 0.2, -0.6, 0.9, 0.4, -0.22, 0.125, 0.1, -0.4};
+@@ -48,7 +48,11 @@ void testfloat (int fileFormat);
+ 
+ void cleanup (void)
+ {
+-	unlink(sTestFileName);
++	if (sTestFileName)
++	{
++		unlink(sTestFileName);
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -96,7 +100,7 @@ void testfloat (int fileFormat)
+ 	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_FLOAT, 32);
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 2);
+ 
+-	ensure(createTemporaryFile("testfloat", sTestFileName),
++	ensure(createTemporaryFile("testfloat", &sTestFileName),
+ 		"could not create temporary file");
+ 	file = afOpenFile(sTestFileName, "w", setup);
+ 	ensure(file != AF_NULL_FILEHANDLE, "could not open file for writing");
+--- a/test/testmarkers.c
++++ b/test/testmarkers.c
+@@ -32,15 +32,19 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ #define FRAME_COUNT 200
+ 
+ void cleanup (void)
+ {
++	if (sTestFileName)
++	{
+ #ifndef DEBUG
+-	unlink(sTestFileName);
++		unlink(sTestFileName);
+ #endif
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -127,7 +131,7 @@ int testmarkers (int fileformat)
+ 
+ int main (void)
+ {
+-	ensure(createTemporaryFile("testmarkers", sTestFileName),
++	ensure(createTemporaryFile("testmarkers", &sTestFileName),
+ 		"could not create temporary file");
+ 
+ 	testmarkers(AF_FILE_AIFF);
+--- a/test/twentyfour.c
++++ b/test/twentyfour.c
+@@ -71,8 +71,8 @@ int main (int argc, char **argv)
+ 	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24);
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 1);
+ 
+-	char testFileName[PATH_MAX];
+-	if (!createTemporaryFile("twentyfour", testFileName))
++	char *testFileName;
++	if (!createTemporaryFile("twentyfour", &testFileName))
+ 	{
+ 		fprintf(stderr, "could not create temporary file\n");
+ 		exit(EXIT_FAILURE);
+@@ -239,6 +239,7 @@ int main (int argc, char **argv)
+ 		exit(EXIT_FAILURE);
+ 	}
+ 	unlink(testFileName);
++	free(testFileName);
+ 
+ 	exit(EXIT_SUCCESS);
+ }
+--- a/test/twentyfour2.c
++++ b/test/twentyfour2.c
+@@ -45,15 +45,19 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ #define FRAME_COUNT 10000
+ 
+ void cleanup (void)
+ {
++	if (sTestFileName)
++	{
+ #ifndef DEBUG
+-	unlink(sTestFileName);
++		unlink(sTestFileName);
+ #endif
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -78,7 +82,7 @@ int main (void)
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 1);
+ 	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 24);
+ 
+-	ensure(createTemporaryFile("twentyfour2", sTestFileName),
++	ensure(createTemporaryFile("twentyfour2", &sTestFileName),
+ 		"could not create temporary file");
+ 	file = afOpenFile(sTestFileName, "w", setup);
+ 	ensure(file != NULL, "could not open test file for writing");
+--- a/test/writealaw.c
++++ b/test/writealaw.c
+@@ -53,7 +53,7 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ #define FRAME_COUNT 16
+ #define SAMPLE_COUNT FRAME_COUNT
+@@ -62,9 +62,13 @@ void testalaw (int fileFormat);
+ 
+ void cleanup (void)
+ {
++	if (sTestFileName)
++	{
+ #ifndef DEBUG
+-	unlink(sTestFileName);
++		unlink(sTestFileName);
+ #endif
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -113,7 +117,7 @@ void testalaw (int fileFormat)
+ 	afInitFileFormat(setup, fileFormat);
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 1);
+ 
+-	ensure(createTemporaryFile("writealaw", sTestFileName),
++	ensure(createTemporaryFile("writealaw", &sTestFileName),
+ 		"could not create temporary file");
+ 	file = afOpenFile(sTestFileName, "w", setup);
+ 	afFreeFileSetup(setup);
+--- a/test/writeraw.c
++++ b/test/writeraw.c
+@@ -44,13 +44,17 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ void cleanup (void)
+ {
++	if (sTestFileName)
++	{
+ #ifndef DEBUG
+-	unlink(sTestFileName);
++		unlink(sTestFileName);
+ #endif
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -84,7 +88,7 @@ int main (int argc, char **argv)
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 1);
+ 	afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
+ 
+-	ensure(createTemporaryFile("writeraw", sTestFileName),
++	ensure(createTemporaryFile("writeraw", &sTestFileName),
+ 		"could not create temporary file");
+ 	file = afOpenFile(sTestFileName, "w", setup);
+ 	ensure(file != AF_NULL_FILEHANDLE, "unable to open file for writing");
+--- a/test/writeulaw.c
++++ b/test/writeulaw.c
+@@ -53,7 +53,7 @@
+ 
+ #include "TestUtilities.h"
+ 
+-static char sTestFileName[PATH_MAX];
++static char *sTestFileName;
+ 
+ #define FRAME_COUNT 16
+ #define SAMPLE_COUNT FRAME_COUNT
+@@ -62,9 +62,13 @@ void testulaw (int fileFormat);
+ 
+ void cleanup (void)
+ {
++	if (sTestFileName)
++	{
+ #ifndef DEBUG
+-	unlink(sTestFileName);
++		unlink(sTestFileName);
+ #endif
++		free(sTestFileName);
++	}
+ }
+ 
+ void ensure (int condition, const char *message)
+@@ -113,7 +117,7 @@ void testulaw (int fileFormat)
+ 	afInitFileFormat(setup, fileFormat);
+ 	afInitChannels(setup, AF_DEFAULT_TRACK, 1);
+ 
+-	ensure(createTemporaryFile("writeulaw", sTestFileName),
++	ensure(createTemporaryFile("writeulaw", &sTestFileName),
+ 		"could not create temporary file");
+ 	file = afOpenFile(sTestFileName, "w", setup);
+ 	afFreeFileSetup(setup);
diff --git a/gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch b/gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch
new file mode 100644
index 0000000000..35627d3869
--- /dev/null
+++ b/gnu/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch
@@ -0,0 +1,35 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Fri, 10 Mar 2017 15:40:02 +0100
+Subject: Fix signature of multiplyCheckOverflow. It returns a bool, not an int
+
+---
+ libaudiofile/modules/MSADPCM.cpp | 2 +-
+ sfcommands/sfconvert.c           | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libaudiofile/modules/MSADPCM.cpp b/libaudiofile/modules/MSADPCM.cpp
+index ef9c38c..d8c9553 100644
+--- a/libaudiofile/modules/MSADPCM.cpp
++++ b/libaudiofile/modules/MSADPCM.cpp
+@@ -116,7 +116,7 @@ int firstBitSet(int x)
+ #define __has_builtin(x) 0
+ #endif
+ 
+-int multiplyCheckOverflow(int a, int b, int *result)
++bool multiplyCheckOverflow(int a, int b, int *result)
+ {
+ #if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
+ 	return __builtin_mul_overflow(a, b, result);
+diff --git a/sfcommands/sfconvert.c b/sfcommands/sfconvert.c
+index 970a3e4..367f7a5 100644
+--- a/sfcommands/sfconvert.c
++++ b/sfcommands/sfconvert.c
+@@ -60,7 +60,7 @@ int firstBitSet(int x)
+ #define __has_builtin(x) 0
+ #endif
+ 
+-int multiplyCheckOverflow(int a, int b, int *result)
++bool multiplyCheckOverflow(int a, int b, int *result)
+ {
+ #if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
+ 	return __builtin_mul_overflow(a, b, result);
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 02/11] gnu: Add dragon.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 03/11] gnu: Add juk Hartmut Goebel
                     ` (8 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm: New file.
* gnu/lokal.mk (MODULES): Add it.
---
 gnu/local.mk                    |  1 +
 gnu/packages/kde-multimedia.scm | 73 +++++++++++++++++++++++++++++++++
 2 files changed, 74 insertions(+)
 create mode 100644 gnu/packages/kde-multimedia.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 91afc8f059..ecff13b540 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -279,6 +279,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/kawa.scm				\
   %D%/packages/kde.scm				\
   %D%/packages/kde-frameworks.scm		\
+  %D%/packages/kde-multimedia.scm		\
   %D%/packages/kde-plasma.scm			\
   %D%/packages/kerberos.scm			\
   %D%/packages/key-mon.scm			\
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
new file mode 100644
index 0000000000..e828f97e6e
--- /dev/null
+++ b/gnu/packages/kde-multimedia.scm
@@ -0,0 +1,73 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2017, 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages kde-multimedia)
+  #:use-module (guix build-system qt)
+  #:use-module (guix download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (guix utils)
+  #:use-module (gnu packages)
+  #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages qt))
+
+(define-public dragon
+  (package
+    (name "dragon")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/dragon-" version ".tar.xz"))
+       (sha256
+        (base32 "02l16k4sgrxbczxp8rlnxbylb5fmjh4zhl4xw55qxkvmvxnjy5zr"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("kjobwidgets" ,kjobwidgets)
+       ("knotifications" ,knotifications)
+       ("kparts" ,kparts)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("phonon" ,phonon)
+       ("phonon-backend-gstreamer" ,phonon-backend-gstreamer)
+       ("qtbase" ,qtbase)
+       ("solid" ,solid)))
+    (home-page "https://kde.org/applications/multimedia/org.kde.dragonplayer")
+    (synopsis "Simple video player")
+    (description "Dragon Player is a multimedia player where the focus is on
+simplicity, instead of features.  Dragon Player does one thing, and only one
+thing, which is playing multimedia files.  It's simple interface is designed
+not to get in your way and instead empower you to simply play multimedia
+files.
+
+This package is part of the KDE multimedia module.")
+    (license (list license:gpl2+ license:fdl1.2+))))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 03/11] gnu: Add juk.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 02/11] gnu: Add dragon Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 04/11] gnu: Add k3b Hartmut Goebel
                     ` (7 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (juk): New variable.
---
 gnu/packages/kde-multimedia.scm | 57 +++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index e828f97e6e..a55ae569a4 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -24,6 +24,7 @@
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages mp3)
   #:use-module (gnu packages qt))
 
 (define-public dragon
@@ -71,3 +72,59 @@ files.
 
 This package is part of the KDE multimedia module.")
     (license (list license:gpl2+ license:fdl1.2+))))
+
+(define-public juk
+  (package
+    (name "juk")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/juk-" version ".tar.xz"))
+       (sha256
+        (base32 "0c1hrd1n4ah7qm8xr7bfswgbcmbvnnhai4bfawx6v6ab3frl7wvf"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)))
+    (inputs
+     `(("kcoreaddons" ,kcoreaddons)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdoctools" ,kdoctools)
+       ("kglobalaccel" ,kglobalaccel)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kjobwidgets" ,kjobwidgets)
+       ("kio" ,kio)
+       ("knotifications" ,knotifications)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwallet" ,kwallet)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("phonon" ,phonon)
+       ("phonon-backend-gstreamer" ,phonon-backend-gstreamer)
+       ("qtbase" ,qtbase)
+       ("qtsvg" ,qtsvg)
+       ("taglib" ,taglib)))
+    (home-page "https://kde.org/applications/multimedia/org.kde.juk")
+    (synopsis "Music jukebox / music player")
+    (description "JuK is a powerful music player capable of managing a large
+music collection.
+
+Some of JuK's features include:
+@itemize
+@item Music collection, playlists, and smart playlists
+@item Tag editing support, including the ability to edit multiple files at once
+@item Tag-based music file organization and renaming
+@item CD burning support using k3b
+@item Album art using Google Image Search
+@end itemize
+
+This package is part of the KDE multimedia module.")
+    (license license:gpl2+)))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 04/11] gnu: Add k3b.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 02/11] gnu: Add dragon Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 03/11] gnu: Add juk Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 05/11] gnu: Add libkcddb Hartmut Goebel
                     ` (6 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (k3b): New variable.
---
 gnu/packages/kde-multimedia.scm | 69 ++++++++++++++++++++++++++++++++-
 1 file changed, 68 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index a55ae569a4..cb94b87d6b 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -23,9 +23,16 @@
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (gnu packages)
+  #:use-module (gnu packages base)
+  #:use-module (gnu packages gnome)
   #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages mp3)
-  #:use-module (gnu packages qt))
+  #:use-module (gnu packages music)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages pulseaudio)
+  #:use-module (gnu packages qt)
+  #:use-module (gnu packages video)
+  #:use-module (gnu packages xiph))
 
 (define-public dragon
   (package
@@ -128,3 +135,63 @@ Some of JuK's features include:
 
 This package is part of the KDE multimedia module.")
     (license license:gpl2+)))
+
+(define-public k3b
+  (package
+    (name "k3b")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/k3b-" version ".tar.xz"))
+       (sha256
+        (base32 "08rbiy1hz650srdksr7ciq8dpcz20wczs22613pghrpgm5zsczhr"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("ffmpeg" ,ffmpeg)
+       ("flac" ,flac)
+       ("karchive" ,karchive)
+       ("kcmutils" ,kcmutils)
+       ("kconfig" ,kconfig)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kfilemetadata" ,kfilemetadata)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kio" ,kio)
+       ("kjobwidgets" ,kjobwidgets)
+       ("knewstuff" ,knewstuff)
+       ("knotifications" ,knotifications)
+       ("knotifyconfig" ,knotifyconfig)
+       ("kservice" ,kservice)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kxmlgui" ,kxmlgui)
+       ("lame" ,lame)
+       ("libdvdread" ,libdvdread)
+       ;; TODO: LibFuzzer
+       ("libiconv" ,libiconv)
+       ("libkcddb" ,libkcddb)
+       ("libmad" ,libmad)
+       ("libmpcdec" ,libmpcdec) ;; FIXME: why does cmake not find this?
+       ;;("libmusicbrainz" ,libmusicbrainz) ; wants old version 2
+       ("libsamplerate" ,libsamplerate)
+       ("libsndfile" ,libsndfile)
+       ("libvorbis" ,libvorbis)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("qtbase" ,qtbase)
+       ("qtwebkit" ,qtwebkit)
+       ("shared-mime-info" ,shared-mime-info)
+       ("solid" ,solid)
+       ("taglib" ,taglib)))
+    (home-page "https://kde.org/applications/multimedia/org.kde.k3b")
+    (synopsis "Sophisticated CD/DVD burning application")
+    (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.")
+    (license (list license:gpl2+ license:fdl1.2+))))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 05/11] gnu: Add libkcddb.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                     ` (2 preceding siblings ...)
  2019-12-08 16:43   ` [bug#38532] [PATCH 04/11] gnu: Add k3b Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 06/11] gnu: Add kaffeine Hartmut Goebel
                     ` (5 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (libkcddb): New variable.
---
 gnu/packages/kde-multimedia.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index cb94b87d6b..6a989fd32d 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -195,3 +195,35 @@ and provide an easily usable interface.  Features include burning audio CDs
 from .WAV and .MP3 audio files, configuring external programs and configuring
 devices.")
     (license (list license:gpl2+ license:fdl1.2+))))
+
+(define-public libkcddb
+  (package
+    (name "libkcddb")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/libkcddb-" version ".tar.xz"))
+       (sha256
+        (base32 "1rla9sfzpdfiki0p265ga6d1axqpq37825maaw85hm84mg7hkzjn"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("kcodecs" ,kcodecs)
+       ("kconfig" ,kconfig)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("libmusicbrainz" ,libmusicbrainz)
+       ("qtbase" ,qtbase)))
+    (arguments
+     `(#:tests? #f ; Most tests require network
+       #:configure-flags '("-DBUILD_TESTING=OFF"))) ; not run anyway
+    (home-page "https://cgit.kde.org/libkcddb.git")
+    (synopsis "CDDB library for KDE Platform (runtime)")
+    (description "A library for retrieving and sending cddb information.")
+    (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 06/11] gnu: Add kaffeine.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                     ` (3 preceding siblings ...)
  2019-12-08 16:43   ` [bug#38532] [PATCH 05/11] gnu: Add libkcddb Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 07/11] gnu: Add kmix Hartmut Goebel
                     ` (4 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (kaffeine): New variable.
---
 gnu/packages/kde-multimedia.scm | 61 ++++++++++++++++++++++++++++++++-
 1 file changed, 60 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 6a989fd32d..e2f0a10948 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -26,13 +26,15 @@
   #:use-module (gnu packages base)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages music)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages pulseaudio)
   #:use-module (gnu packages qt)
   #:use-module (gnu packages video)
-  #:use-module (gnu packages xiph))
+  #:use-module (gnu packages xiph)
+  #:use-module (gnu packages xorg))
 
 (define-public dragon
   (package
@@ -227,3 +229,60 @@ devices.")
     (synopsis "CDDB library for KDE Platform (runtime)")
     (description "A library for retrieving and sending cddb information.")
     (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
+
+(define-public kaffeine
+  (package
+    (name "kaffeine")
+    (version "2.0.18")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/kaffeine"
+                           "/kaffeine-" version ".tar.xz"))
+       (sha256
+        (base32 "10dnhr9v2jlki44i3gmjagky66ybixmv6f29z5imk9clgddrlyfr"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("eudev" ,eudev)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kdbusaddons" ,kdbusaddons)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ;;("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("qtbase" ,qtbase)
+       ("qtx11extras" ,qtx11extras)
+       ("solid" ,solid)
+       ("v4l-utils" ,v4l-utils) ; libdvbv5
+       ("vlc" ,vlc)))
+    ;;/tmp/guix-build-kaffeine-2.0.18.drv-0/kaffeine-2.0.18/src/dvb/dvbrecording.cpp:476:73: error: conversion to non-const reference type ‘class QString&&’ from rvalue of type ‘QString’ [-fpermissive]
+    ;;qCDebug(logDvb, "name and priority %s %s", qPrintable(listRec->name), qPrintable(listRec->priority));
+    (arguments
+     `(;;#:configure-flags '("-DBUILD_TESTING=ON")
+       ;;#:tests? #f ; tests fail hard in our build environment
+       #:phases
+       (modify-phases (@ (guix build qt-build-system) %standard-phases)
+         (add-after 'unpack 'fix-code
+           (lambda _
+             (substitute* "src/dvb/dvbdevice_linux.cpp"
+               (("\\s*qPrintable\\(transponder\\.getTransmissionType\\(\\)\\)\\);")
+                 "transponder.getTransmissionType());"))
+             #t)))))
+    (home-page "https://kde.org/applications/multimedia/org.kde.kaffeine")
+    (synopsis "Versatile media player for KDE")
+    (description "Kaffeine is a media player for KDE.  While it supports
+multiple Phonon backends, its default backend is Xine, giving Kaffeine a wide
+variety of supported media types and letting Kaffeine access CDs, DVDs, and
+network streams easily.
+
+Kaffeine can keep track of multiple playlists simultaneously, and supports
+autoloading of subtitle files for use while playing video.")
+    (license (list license:gpl2+ license:fdl1.2+))))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 07/11] gnu: Add kmix.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                     ` (4 preceding siblings ...)
  2019-12-08 16:43   ` [bug#38532] [PATCH 06/11] gnu: Add kaffeine Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 08/11] gnu: Add kmplayer Hartmut Goebel
                     ` (3 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (kmix): New variable.
---
 gnu/packages/kde-multimedia.scm | 49 +++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index e2f0a10948..fad5b75b2a 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -24,8 +24,10 @@
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages kde-frameworks)
+  #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages mp3)
   #:use-module (gnu packages music)
@@ -286,3 +288,50 @@ network streams easily.
 Kaffeine can keep track of multiple playlists simultaneously, and supports
 autoloading of subtitle files for use while playing video.")
     (license (list license:gpl2+ license:fdl1.2+))))
+
+(define-public kmix
+  (package
+    (name "kmix")
+    (version "19.08.3")
+    (source
+     (origin
+      (method url-fetch)
+      (uri (string-append "mirror://kde/stable/applications/" version
+                          "/src/kmix-" version ".tar.xz"))
+      (sha256
+       (base32 "1g42hlmpdf0rrgqapps6v47z9cnwpkfzpwgavaq26m5k3bpanwfg"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("alsa-lib" ,alsa-lib)
+       ("glib" ,glib)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdoctools" ,kdoctools)
+       ("kglobalaccel" ,kglobalaccel)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("knotifications" ,knotifications)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kwindowsystem" ,kwindowsystem)
+       ("kxmlgui" ,kxmlgui)
+       ("libcanberra" ,libcanberra)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("plasma-framework" ,plasma-framework)
+       ("pulseaudio" ,pulseaudio)
+       ("qtbase" ,qtbase)
+       ("solid" ,solid)))
+    (home-page "https://kde.org/applications/multimedia/org.kde.kmix")
+    (synopsis "Volume control and mixer")
+    (description "KMix is an audio device mixer, used to adjust volume, select
+recording inputs, and set other hardware options.
+
+This package is part of the KDE multimedia module.")
+    (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 08/11] gnu: Add kmplayer.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                     ` (5 preceding siblings ...)
  2019-12-08 16:43   ` [bug#38532] [PATCH 07/11] gnu: Add kmix Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 09/11] gnu: Add kwave Hartmut Goebel
                     ` (2 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

`guix lint` reports two CVEs, both are unrelated:
- CVE-2018-5200: for vendor "pandora" and some 4.2.2.x version
- CVE-2019-9133: windows only (I assume it it alsow relates to the "pandora"
  vendor, since the version the CVE refers to as "solving the issue" does not
  exist at KDE.)

* gnu/packages/kde-multimedia.scm (kmplayer): New variable.
* gnu/packages/patches/kmplayer-aarch64.patch,
  gnu/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch: New
  files.
* gnu/local.mk: Add them.
---
 gnu/local.mk                                  |  2 +
 gnu/packages/kde-multimedia.scm               | 66 +++++++++++++++++++
 gnu/packages/patches/kmplayer-aarch64.patch   | 57 ++++++++++++++++
 ...layer-upstream_Fix-build-with-Qt-5.9.patch | 42 ++++++++++++
 4 files changed, 167 insertions(+)
 create mode 100644 gnu/packages/patches/kmplayer-aarch64.patch
 create mode 100644 gnu/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index ecff13b540..6b631f945f 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1037,6 +1037,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/kmod-module-directory.patch		\
   %D%/packages/patches/kmscon-runtime-keymap-switch.patch	\
   %D%/packages/patches/kpackage-allow-external-paths.patch	\
+  %D/packages/patches/kmplayer-aarch64.patch			\
+  %D/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch	\
   %D%/packages/patches/kpmcore-fix-tests.patch			\
   %D%/packages/patches/kpmcore-remove-broken-test.patch		\
   %D%/packages/patches/kobodeluxe-paths.patch			\
diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index fad5b75b2a..17f4cb7e06 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -335,3 +335,69 @@ recording inputs, and set other hardware options.
 
 This package is part of the KDE multimedia module.")
     (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
+
+(define-public kmplayer
+  (package
+    (name "kmplayer")
+    (version "0.12.0b")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/kmplayer/0.12"
+                           "/kmplayer-" version ".tar.bz2"))
+       (sha256
+        (base32 "0wzdxym4fc83wvqyhcwid65yv59a2wvp1lq303cn124mpnlwx62y"))
+       (patches (search-patches
+                 "kmplayer-aarch64.patch"
+                 "kmplayer-upstream_Fix-build-with-Qt-5.9.patch"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("kconfig" ,kconfig)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kdelibs4support" ,kdelibs4support)
+       ("ki18n" ,ki18n)
+       ("kinit" ,kinit)
+       ("kio" ,kio)
+       ("kparts" ,kparts)
+       ("kmediaplayer" ,kmediaplayer)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("libxcb" ,libxcb) ;; FIXME: why does cmake not find XEVIE and XPRINT?
+       ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("phonon" ,phonon)
+       ("qtbase" ,qtbase)
+       ("cairo" ,cairo)
+       ("qtsvg" ,qtsvg)
+       ("qtx11extras" ,qtx11extras)
+       ("xcb-util" ,xcb-util)
+       ("xcb-util-cursor" ,xcb-util-cursor)
+       ("xcb-util-errors" ,xcb-util-errors)
+       ("xcb-util-image" ,xcb-util-image)
+       ("xcb-util-keysyms" ,xcb-util-keysyms)
+       ("xcb-util-wm" ,xcb-util-wm)))
+    (arguments
+     `(#:configure-flags
+       (list (string-append
+              "-DCMAKE_CXX_FLAGS=-I"
+              (assoc-ref %build-inputs "qtx11extras") "/include/qt5"))))
+    (home-page "https://kde.org/applications/multimedia/org.kde.kmplayer")
+    (synopsis "Media player using mplayer/phonon as backend")
+    (description "Kmplayer can play all the audio/video supported by
+mplayer/phonon from a local file or URL and be embedded in Konqueror and
+KHTML.  It also plays DVDs.
+
+Some features:
+@itemize
+@item play DVD/VCD movies (from file or url and from a video device)
+@item embed inside konqueror (movie is played inside konqueror)
+@item embed inside khtml (movie playback inside a html page)
+@item Movie recording using mencoder (part of the mplayer package)
+@item No video during recording, but you can always open a new window and play it
+@item Broadcasting, http streaming, using ffserver/ffmpeg
+@item For TV sources, you need v4lctl (part of the xawtv package)
+@end itemize")
+    (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
diff --git a/gnu/packages/patches/kmplayer-aarch64.patch b/gnu/packages/patches/kmplayer-aarch64.patch
new file mode 100644
index 0000000000..76f713be96
--- /dev/null
+++ b/gnu/packages/patches/kmplayer-aarch64.patch
@@ -0,0 +1,57 @@
+Index: b/src/moz-sdk/prcpucfg.h
+===================================================================
+--- a/src/moz-sdk/prcpucfg.h
++++ b/src/moz-sdk/prcpucfg.h
+@@ -288,6 +288,52 @@
+ #define PR_BYTES_PER_WORD_LOG2  3
+ #define PR_BYTES_PER_DWORD_LOG2 3
+ 
++#elif defined(__aarch64__)
++
++#define IS_LITTLE_ENDIAN 1
++#undef  IS_BIG_ENDIAN
++#define IS_64
++
++#define PR_BYTES_PER_BYTE   1
++#define PR_BYTES_PER_SHORT  2
++#define PR_BYTES_PER_INT    4
++#define PR_BYTES_PER_INT64  8
++#define PR_BYTES_PER_LONG   8
++#define PR_BYTES_PER_FLOAT  4
++#define PR_BYTES_PER_DOUBLE 8
++#define PR_BYTES_PER_WORD   8
++#define PR_BYTES_PER_DWORD  8
++
++#define PR_BITS_PER_BYTE    8
++#define PR_BITS_PER_SHORT   16
++#define PR_BITS_PER_INT     32
++#define PR_BITS_PER_INT64   64
++#define PR_BITS_PER_LONG    64
++#define PR_BITS_PER_FLOAT   32
++#define PR_BITS_PER_DOUBLE  64
++#define PR_BITS_PER_WORD    64
++
++#define PR_BITS_PER_BYTE_LOG2   3
++#define PR_BITS_PER_SHORT_LOG2  4
++#define PR_BITS_PER_INT_LOG2    5
++#define PR_BITS_PER_INT64_LOG2  6
++#define PR_BITS_PER_LONG_LOG2   6
++#define PR_BITS_PER_FLOAT_LOG2  5
++#define PR_BITS_PER_DOUBLE_LOG2 6
++#define PR_BITS_PER_WORD_LOG2   6
++
++#define PR_ALIGN_OF_SHORT   2
++#define PR_ALIGN_OF_INT     4
++#define PR_ALIGN_OF_LONG    8
++#define PR_ALIGN_OF_INT64   8
++#define PR_ALIGN_OF_FLOAT   4
++#define PR_ALIGN_OF_DOUBLE  8
++#define PR_ALIGN_OF_POINTER 8
++#define PR_ALIGN_OF_WORD    8
++
++#define PR_BYTES_PER_WORD_LOG2  3
++#define PR_BYTES_PER_DWORD_LOG2 3
++
+ #elif defined(__mc68000__)
+ 
+ #undef  IS_LITTLE_ENDIAN
diff --git a/gnu/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch b/gnu/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch
new file mode 100644
index 0000000000..6a40dbe347
--- /dev/null
+++ b/gnu/packages/patches/kmplayer-upstream_Fix-build-with-Qt-5.9.patch
@@ -0,0 +1,42 @@
+From 3def65075c09af4961cd399e8e78ed78cca72e65 Mon Sep 17 00:00:00 2001
+From: Wolfgang Bauer <wbauer@tmo.at>
+Date: Wed, 11 Oct 2017 22:16:02 +0200
+Subject: [PATCH] Fix build with Qt 5.9
+
+Summary:
+moc 5.9 errors out when building:
+Error: Plugin Metadata file "" could not be opened: file to open is a directory
+
+Same issue and fix as https://phabricator.kde.org/D5392 for khtml.
+
+CCBUG: 377490
+
+Test Plan: builds fine now with Qt 5.9.0rc and also earlier versions.
+
+Reviewers: vriezen, pino
+
+Reviewed By: pino
+
+Subscribers: pino
+
+Differential Revision: https://phabricator.kde.org/D5985
+---
+ src/kmplayer_part.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/kmplayer_part.h b/src/kmplayer_part.h
+index f90f85d..0fddbaa 100644
+--- a/src/kmplayer_part.h
++++ b/src/kmplayer_part.h
+@@ -36,7 +36,7 @@ namespace KMPlayer {
+ 
+ class KMPlayerFactory : public KPluginFactory {
+     Q_OBJECT
+-    Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory" FILE "")
++    Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory")
+     Q_INTERFACES(KPluginFactory)
+ public:
+     KMPlayerFactory();
+-- 
+2.14.2
+
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 09/11] gnu: Add kwave.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                     ` (6 preceding siblings ...)
  2019-12-08 16:43   ` [bug#38532] [PATCH 08/11] gnu: Add kmplayer Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 10/11] gnu: Add elisa Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 11/11] gnu: Add kamoso Hartmut Goebel
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (kwave): New variable.
---
 gnu/packages/kde-multimedia.scm | 80 +++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 17f4cb7e06..924cf48536 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -23,8 +23,11 @@
   #:use-module (guix packages)
   #:use-module (guix utils)
   #:use-module (gnu packages)
+  #:use-module (gnu packages audio)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages glib)
+  #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages libcanberra)
@@ -401,3 +404,80 @@ Some features:
 @item For TV sources, you need v4lctl (part of the xawtv package)
 @end itemize")
     (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+))))
+
+(define-public kwave
+  (package
+    (name "kwave")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                          "/src/kwave-" version ".tar.xz"))
+       (sha256
+        (base32 "1vv3m3h9mvjr9sxajccqnvcgvz901n3qxhki0g7vsljvh31x5s5x"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("librsvg" ,librsvg)
+       ("pkg-config" ,pkg-config)
+       ("kdoctools" ,kdoctools)))
+    (inputs
+     `(("also-lib" ,alsa-lib)
+       ("audiofile" ,audiofile)
+       ("flac" ,flac)
+       ("id3lib" ,id3lib)
+       ("karchive" ,karchive)
+       ("kcompletion" ,kcompletion)
+       ("kconfig" ,kconfig)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kcrash" ,kcrash)
+       ("kdbusaddons" ,kdbusaddons)
+       ("ki18n" ,ki18n)
+       ("kiconthemes" ,kiconthemes)
+       ("kio" ,kio)
+       ("kservice" ,kservice)
+       ("ktextwidgets" ,ktextwidgets)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kxmlgui" ,kxmlgui)
+       ("libmad" ,libmad)
+       ("libsamplerate" ,libsamplerate)
+       ("libvorbis" ,libvorbis)
+       ("opus" ,opus)
+       ;;("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("pulseaudio" ,pulseaudio)
+       ("qtbase" ,qtbase)
+       ("qtmultimedia" ,qtmultimedia)
+       ("zlib" ,zlib)))
+    (home-page "https://kde.org/applications/multimedia/org.kde.kwave")
+    (synopsis "Sound editor for KDE")
+    (description "Kwave is a sound editor designed for the KDE Desktop
+Environment.
+
+With Kwave you can record, play back, import and edit many sorts of audio
+files including multi-channel files.  It includes some plugins to transform
+audio files in several ways and presents a graphical view with a complete
+zoom- and scroll capability.
+
+Its features include:
+@itemize
+@item 24 Bit Support
+@item Undo/Redo
+@item Use of multicore CPUs (SMP, hyperthreading)
+@item Simple Drag & Drop
+@item Realtime Pre-Listen for some effects
+@item Support for multi-track files
+@item Playback and recording via native ALSA (or OSS, deprecated)
+@item Playback via PulseAudio and Phonon
+@item Load and edit-capability for large files (can use virtual memory)
+@item Reading and auto-repair of damaged wav-files
+@item Supports multiple windows
+@item Extendable Plugin interface
+@item a nice splashscreen
+@item some label handling
+@end itemize")
+    (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+
+                   license:cc-by-sa3.0 license:cc-by-sa4.0 ;; icons, samples
+                   license:cc0 license:bsd-3)))) ;; utilities files
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 10/11] gnu: Add elisa.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                     ` (7 preceding siblings ...)
  2019-12-08 16:43   ` [bug#38532] [PATCH 09/11] gnu: Add kwave Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  2019-12-08 16:43   ` [bug#38532] [PATCH 11/11] gnu: Add kamoso Hartmut Goebel
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (elisa): New variable.
---
 gnu/packages/kde-multimedia.scm | 70 +++++++++++++++++++++++++++++++++
 1 file changed, 70 insertions(+)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index 924cf48536..ffdda58d83 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -481,3 +481,73 @@ Its features include:
     (license (list license:gpl2+ license:lgpl2.0+ license:fdl1.2+
                    license:cc-by-sa3.0 license:cc-by-sa4.0 ;; icons, samples
                    license:cc0 license:bsd-3)))) ;; utilities files
+
+(define-public elisa
+  (package
+    (name "elisa")
+    (version "0.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde//stable/elisa/0.4.2"
+                           "/elisa-" version ".tar.xz"))
+       (sha256
+        (base32 "0v9af6l89pgz1g7naf7gwcnq8znlicyh7z985kxalbdmv359c97w"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("pkg-config" ,pkg-config)
+       ("dbus" ,dbus)
+       ("kdoctools" ,kdoctools)
+       ("xorg-server" , xorg-server-for-tests)))
+    (inputs
+     `(("kconfig" ,kconfig)
+       ("baloo" ,baloo)
+       ("kconfigwidgets" ,kconfigwidgets)
+       ("kcoreaddons" ,kcoreaddons)
+       ("kcrash" ,kcrash)
+       ("kcmutils" ,kcmutils)
+       ("kdbusaddons" ,kdbusaddons)
+       ("kdeclarative" ,kdeclarative)
+       ("kfilemetadata" ,kfilemetadata)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("kirigami" ,kirigami)
+       ("kmediaplayer" ,kmediaplayer)
+       ("kparts" ,kparts)
+       ("kpackage" ,kpackage)
+       ("kwidgetsaddons" ,kwidgetsaddons)
+       ("kxmlgui" ,kxmlgui)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("phonon" ,phonon)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects) ; not listed as dependency
+       ("qtmultimedia" ,qtmultimedia)
+       ("qtquickcontrols" ,qtquickcontrols)
+       ("qtquickcontrols2" ,qtquickcontrols2)
+       ("qtsvg" ,qtsvg)
+       ("qtx11extras" ,qtx11extras)
+       ;; TODO: upnpqt https://gitlab.com/homeautomationqt/upnp-player-qt
+       ("vlc" ,vlc)))
+    (arguments
+     `(#:phases
+       (modify-phases (@ (guix build qt-build-system) %standard-phases)
+         (add-before 'check 'start-xorg-server
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; The test suite requires a running X server, setting
+             ;; QT_QPA_PLATFORM=offscreen does not suffice.
+             (system (string-append (assoc-ref inputs "xorg-server")
+                                    "/bin/Xvfb :1 -screen 0 640x480x24 &"))
+             (setenv "DISPLAY" ":1")
+             #t)))))
+    (home-page "https://kde.org/applications/multimedia/org.kde.elisa")
+    (synopsis "Powerful music player for Plasma 5")
+    (description "Elisa is a simple music player aiming to provide a nice
+experience for its users.  Elisa allows to browse music by album, artist or
+all tracks.  The music is indexed using either a private indexer or an indexer
+using Baloo.  The private one can be configured to scan music on chosen paths.
+The Baloo one is much faster because Baloo is providing all needed data from
+its own database.  You can build and play your own playlist.")
+    (license license:lgpl3+)))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] [PATCH 11/11] gnu: Add kamoso.
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
                     ` (8 preceding siblings ...)
  2019-12-08 16:43   ` [bug#38532] [PATCH 10/11] gnu: Add elisa Hartmut Goebel
@ 2019-12-08 16:43   ` Hartmut Goebel
  9 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-08 16:43 UTC (permalink / raw)
  To: 38532

* gnu/packages/kde-multimedia.scm (kamoso): New variable.
---
 gnu/packages/kde-multimedia.scm | 49 +++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/gnu/packages/kde-multimedia.scm b/gnu/packages/kde-multimedia.scm
index ffdda58d83..ba262a0599 100644
--- a/gnu/packages/kde-multimedia.scm
+++ b/gnu/packages/kde-multimedia.scm
@@ -29,6 +29,7 @@
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages kde-frameworks)
   #:use-module (gnu packages libcanberra)
   #:use-module (gnu packages linux)
@@ -551,3 +552,51 @@ using Baloo.  The private one can be configured to scan music on chosen paths.
 The Baloo one is much faster because Baloo is providing all needed data from
 its own database.  You can build and play your own playlist.")
     (license license:lgpl3+)))
+
+(define-public kamoso
+  (package
+    (name "kamoso")
+    (version "19.08.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://kde/stable/applications/" version
+                           "/src/kamoso-" version ".tar.xz"))
+       (sha256
+        (base32 "0j0lr2gwaxwchgfp54dashm1b39gsaw4ly9p8ybavwwzhjkdqza3"))))
+    (properties `((tags . ("Desktop" "KDE" "Multimedia"))))
+    (build-system qt-build-system)
+    (native-inputs
+     `(("extra-cmake-modules" ,extra-cmake-modules)
+       ("glib:bin" ,glib "bin")
+       ("kdoctools" ,kdoctools)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("gstreamer" ,gstreamer)
+       ("gst-plugins-base" ,gst-plugins-base)
+       ("kconfig" ,kconfig)
+       ("ki18n" ,ki18n)
+       ("kio" ,kio)
+       ("kirigami" ,kirigami)
+       ("knotifications" ,knotifications)
+       ("kparts" ,kparts)
+       ("oxygen-icons" ,oxygen-icons) ; default icon set
+       ("purpose" ,purpose)
+       ("qtbase" ,qtbase)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtgraphicaleffects" ,qtgraphicaleffects)
+       ("qtquickcontrols" ,qtquickcontrols)
+       ("qtquickcontrols2" ,qtquickcontrols2) ; not listed as dependency
+       ("qtx11extras" ,qtx11extras)))
+    (arguments
+     `(#:tests? #f ; test program gets built, but is not found
+       #:configure-flags
+       (list "-DBUILD_TESTING=OFF" ; not run anyway, see above
+             (string-append "-DCMAKE_CXX_FLAGS=-I"
+                            (assoc-ref %build-inputs "gst-plugins-base")
+                            "/include/gstreamer-1.0"))))
+    (home-page "https://kde.org/applications/multimedia/org.kde.kamoso")
+    (synopsis "Take pictures and videos out of your webcam")
+    (description "Kamoso is a simple and friendly program to use your
+camera.  Use it to take pictures and make videos to share.")
+    (license (list license:gpl2+ license:lgpl2.0+))))
-- 
2.21.0

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#38532] Patches updated
  2019-12-08 16:41 [bug#38532] [PATCH 00/11] Add audiofile and KDE mulitmedia applications Hartmut Goebel
  2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
@ 2019-12-11 14:12 ` Hartmut Goebel
       [not found] ` <handler.38532.B.157582329710947.ack@debbugs.gnu.org>
  2 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-11 14:12 UTC (permalink / raw)
  To: 38532

Hi,

on my personal branch I updated the patches to fix some issues:

- remove old comments
- Fix errors in local.mk
- audofile: Reference CVEs (taken from nixpkgs)
- kaffeine: add oxygen-icons
- kwave: add oxygen-icons
- kamoso: Remove BUILD_TESTING=OFF - This should go into cmake-build-system.

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#38532: Acknowledgement ([PATCH 00/11] Add audiofile and KDE mulitmedia applications.)
       [not found] ` <handler.38532.B.157582329710947.ack@debbugs.gnu.org>
@ 2019-12-26 15:45   ` Hartmut Goebel
  0 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2019-12-26 15:45 UTC (permalink / raw)
  To: 38532-close

Pushed as ca632dc175c085316749d1605acf9719c8f6085e

after removing the "tags" properties, using the fixed qt-build-system
and adding license comment.


-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2019-12-26 15:46 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-08 16:41 [bug#38532] [PATCH 00/11] Add audiofile and KDE mulitmedia applications Hartmut Goebel
2019-12-08 16:43 ` [bug#38532] [PATCH 01/11] gnu: Add audiofile Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 02/11] gnu: Add dragon Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 03/11] gnu: Add juk Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 04/11] gnu: Add k3b Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 05/11] gnu: Add libkcddb Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 06/11] gnu: Add kaffeine Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 07/11] gnu: Add kmix Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 08/11] gnu: Add kmplayer Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 09/11] gnu: Add kwave Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 10/11] gnu: Add elisa Hartmut Goebel
2019-12-08 16:43   ` [bug#38532] [PATCH 11/11] gnu: Add kamoso Hartmut Goebel
2019-12-11 14:12 ` [bug#38532] Patches updated Hartmut Goebel
     [not found] ` <handler.38532.B.157582329710947.ack@debbugs.gnu.org>
2019-12-26 15:45   ` bug#38532: Acknowledgement ([PATCH 00/11] Add audiofile and KDE mulitmedia applications.) Hartmut Goebel

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).