unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#51085] [PATCH 0/7] Add Mixxx.
@ 2021-10-07 14:27 Vinicius Monego
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
                   ` (2 more replies)
  0 siblings, 3 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:27 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

Vinicius Monego (7):
  gnu: Add libkeyfinder.
  gnu: Add libdjinterop.
  gnu: opusfile: Add new phase after unpack.
  gnu: Add libshout-idjc.
  gnu: Add spscqueue.
  gnu: Add mp3guessenc.
  gnu: Add mixxx.

 gnu/local.mk                                  |   2 +
 gnu/packages/audio.scm                        | 113 +++++++++++++++++
 gnu/packages/cpp.scm                          |  21 ++++
 gnu/packages/music.scm                        | 116 ++++++++++++++++++
 ...ixxx-link-qtscriptbytearray-qtscript.patch |  25 ++++
 .../mixxx-system-googletest-benchmark.patch   |  43 +++++++
 gnu/packages/xiph.scm                         |  12 +-
 7 files changed, 331 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch
 create mode 100644 gnu/packages/patches/mixxx-system-googletest-benchmark.patch

-- 
2.30.2





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

* [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder.
  2021-10-07 14:27 [bug#51085] [PATCH 0/7] Add Mixxx Vinicius Monego
@ 2021-10-07 14:29 ` Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 2/7] gnu: Add libdjinterop Vinicius Monego
                     ` (5 more replies)
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
  2021-10-11 17:02 ` [bug#51085] [PATCH 0/7] Add Mixxx Leo Famulari
  2 siblings, 6 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:29 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (libkeyfinder): New variable.
---
 gnu/packages/audio.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index b746cd370d..e6db87540e 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3373,6 +3373,31 @@ stretching and pitch scaling of audio.  This package contains the library.")
     ;; containing gpl2.
     (license license:gpl2)))
 
+(define-public libkeyfinder
+  (package
+    (name "libkeyfinder")
+    (version "2.2.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mixxxdj/libkeyfinder")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1623kirmxhmvmhx7f8lbzk0f18w2hrhwlkzl8l4aa906lfqffdp2"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("catch" ,catch-framework2)))
+    (inputs
+     `(("fftw" ,fftw)))
+    (home-page "https://mixxxdj.github.io/libkeyfinder/")
+    (synopsis "Musical key detection for digital audio")
+    (description
+     "@code{libkeyfinder} is a small C++11 library for estimating the musical
+key of digital audio.")
+    (license license:gpl3+)))
+
 (define-public wavpack
   (package
     (name "wavpack")
-- 
2.30.2





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

* [bug#51085] [PATCH 2/7] gnu: Add libdjinterop.
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
@ 2021-10-07 14:29   ` Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 3/7] gnu: opusfile: Add new phase after unpack Vinicius Monego
                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:29 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (libdjinterop): New variable.
---
 gnu/packages/audio.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index e6db87540e..2ffc4b86a9 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -107,6 +107,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages serialization)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages telephony)
   #:use-module (gnu packages linphone)
   #:use-module (gnu packages linux)
@@ -1173,6 +1174,40 @@ flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
     (license license:gpl3+)))
 
+(define-public libdjinterop
+  (package
+    (name "libdjinterop")
+    (version "0.16.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/xsco/libdjinterop")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16nrqpr90vb9ggmp9j73m0hspd7pmfdhh0g6iyp8vd7kx7g17qnk"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; crate_test writes a database file to the source tree.
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files ".")))))))
+    (native-inputs
+     `(("boost" ,boost)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/xsco/libdjinterop")
+    (synopsis "C++ library for access to DJ record libraries")
+    (description
+     "@code{libdjinterop} is a C++ library that allows access to database
+formats used to store information about DJ record libraries.")
+    (license license:lgpl3+)))
+
 (define-public tao
   (package
     (name "tao")
-- 
2.30.2





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

* [bug#51085] [PATCH 3/7] gnu: opusfile: Add new phase after unpack.
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 2/7] gnu: Add libdjinterop Vinicius Monego
@ 2021-10-07 14:29   ` Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 4/7] gnu: Add libshout-idjc Vinicius Monego
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:29 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/xiph.scm (opusfile)[arguments]<#:phases>: After the unpack
phase add a fix-multistream phase to adjust the include header call of
opus_multistream.h so that opusfile can find it.
---
 gnu/packages/xiph.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index fbbcbd6e61..0c9c799067 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -406,7 +407,16 @@ decoding .opus files.")
                 "02smwc5ah8nb3a67mnkjzqmrzk43j356hgj2a97s9midq40qd38i"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--disable-static")))
+     '(#:configure-flags '("--disable-static")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-multistream
+           ;; Opus include directory should be passed explicitly:
+           ;; https://github.com/xiph/opusfile/issues/10 however,
+           ;; opus_multistream.h still can't be found by the compiler.
+           (lambda _
+             (substitute* "include/opusfile.h"
+               (("opus_multistream\\.h") "opus/opus_multistream.h")))))))
     ;; Required by opusfile.pc and opusurl.pc.
     (propagated-inputs
      `(("libogg" ,libogg)
-- 
2.30.2





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

* [bug#51085] [PATCH 4/7] gnu: Add libshout-idjc.
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 2/7] gnu: Add libdjinterop Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 3/7] gnu: opusfile: Add new phase after unpack Vinicius Monego
@ 2021-10-07 14:29   ` Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 5/7] gnu: Add spscqueue Vinicius Monego
                     ` (2 subsequent siblings)
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:29 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (libshout-idjc): New variable.
---
 gnu/packages/audio.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 2ffc4b86a9..666a7fbd49 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3045,6 +3045,31 @@ for \"realtime\" in the index of the Guix manual to learn how to achieve this
 using Guix System.")
     (license license:gpl2+)))
 
+(define-public libshout-idjc
+  (package
+    (name "libshout-idjc")
+    (version "2.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/libshoutidjc.idjc.p"
+                           "/libshout-idjc-" version ".tar.gz"))
+       (sha256
+        (base32 "1r9z8ggxylr2ab0isaljbm574rplnlcb12758j994h54nh2vikwb"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libogg" ,libogg)
+       ("libtheora" ,libtheora)
+       ("libvorbis" ,libvorbis)
+       ("speex" ,speex)))
+    (home-page "http://idjc.sourceforge.net/")
+    (synopsis "Broadcast streaming library with IDJC extensions")
+    (description "This package provides libshout plus IJDC extensions.")
+    ;; GNU Library (not Lesser) General Public License.
+    (license license:lgpl2.0+)))
+
 (define-public raul
   (package
     (name "raul")
-- 
2.30.2





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

* [bug#51085] [PATCH 5/7] gnu: Add spscqueue.
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
                     ` (2 preceding siblings ...)
  2021-10-07 14:29   ` [bug#51085] [PATCH 4/7] gnu: Add libshout-idjc Vinicius Monego
@ 2021-10-07 14:29   ` Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 6/7] gnu: Add mp3guessenc Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 7/7] gnu: Add mixxx Vinicius Monego
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:29 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/cpp.scm (spscqueue): New variable.
---
 gnu/packages/cpp.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 4af71ba93a..d755cc0fc7 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -517,6 +517,27 @@ syntax highlighting.  @code{ccls} is derived from @code{cquery} which is not
 maintained anymore.")
     (license license:asl2.0)))
 
+(define-public spscqueue
+  (package
+    (name "spscqueue")
+    (version "1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rigtorp/SPSCQueue/")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1428cj9x318afvnvnkhg0711iy4czqn86fi7ysgfhw91asa316rc"))))
+    (build-system cmake-build-system)
+    (home-page "https://github.com/rigtorp/SPSCQueue/")
+    (synopsis "Single producer single consumer queue written in C++11")
+    (description
+     "This package provides a single producer single consumer wait-free and
+lock-free fixed size queue written in C++11.")
+    (license license:expat)))
+
 (define-public gperftools
   (package
     (name "gperftools")
-- 
2.30.2





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

* [bug#51085] [PATCH 6/7] gnu: Add mp3guessenc.
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
                     ` (3 preceding siblings ...)
  2021-10-07 14:29   ` [bug#51085] [PATCH 5/7] gnu: Add spscqueue Vinicius Monego
@ 2021-10-07 14:29   ` Vinicius Monego
  2021-10-07 14:29   ` [bug#51085] [PATCH 7/7] gnu: Add mixxx Vinicius Monego
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:29 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (mp3guessenc): New variable.
---
 gnu/packages/audio.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 666a7fbd49..d1bf91d10f 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4016,6 +4016,34 @@ machine-readable ASCII format.")
     (home-page "https://github.com/svend/cuetools")
     (license license:gpl2+)))
 
+(define-public mp3guessenc
+  (package
+    (name "mp3guessenc")
+    (version "0.27.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/mp3guessenc/mp3guessenc-"
+                           (version-major+minor version) "/mp3guessenc-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1fa3sbwwn4p2v1749lzy040bfy1xfd574mf2frwgg9ikgk3vlb3c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "SUFFIX="))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)))) ; no configure phase
+    (home-page "https://mp3guessenc.sourceforge.io/")
+    (synopsis "Detect the encoder used for a mpeg layer III file")
+    (description "This command line utility was born to detect the encoder
+used for a mpeg layer III file but now it can do more and scan any mpeg
+audio file (any layer) and print a lot of useful information.")
+    (license license:lgpl2.1+)))
+
 (define-public shntool
   (package
     (name "shntool")
-- 
2.30.2





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

* [bug#51085] [PATCH 7/7] gnu: Add mixxx.
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
                     ` (4 preceding siblings ...)
  2021-10-07 14:29   ` [bug#51085] [PATCH 6/7] gnu: Add mp3guessenc Vinicius Monego
@ 2021-10-07 14:29   ` Vinicius Monego
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-07 14:29 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/music.scm (mixxx): New variable.
* gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch: New
patch.
* gnu/packages/patches/mixxx-system-googletest-benchmark.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Add patches.
---
 gnu/local.mk                                  |   2 +
 gnu/packages/music.scm                        | 116 ++++++++++++++++++
 ...ixxx-link-qtscriptbytearray-qtscript.patch |  25 ++++
 .../mixxx-system-googletest-benchmark.patch   |  43 +++++++
 4 files changed, 186 insertions(+)
 create mode 100644 gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch
 create mode 100644 gnu/packages/patches/mixxx-system-googletest-benchmark.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index d415b892e9..36ed1bb755 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1476,6 +1476,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/minisat-install.patch			\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mit-krb5-qualify-short-hostnames.patch	\
+  %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
+  %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
   %D%/packages/patches/mpc123-initialize-ao.patch		\
   %D%/packages/patches/mpg321-CVE-2019-14247.patch		\
   %D%/packages/patches/module-init-tools-moduledir.patch	\
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index ae4626dc8a..759b56d5e0 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -71,6 +71,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system qt)
@@ -88,6 +89,7 @@
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base) ;libbdf
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages benchmark)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages build-tools)
@@ -2219,6 +2221,120 @@ Editor.  It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
 users to select LV2 plugins and run them with jalv.")
     (license license:public-domain)))
 
+(define-public mixxx
+  (package
+    (name "mixxx")
+    (version "2.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mixxxdj/mixxx")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (patches
+        (search-patches "mixxx-link-qtscriptbytearray-qtscript.patch"
+                        "mixxx-system-googletest-benchmark.patch"))
+       (sha256
+        (base32 "04781s4ajdlwgvf12v2mvh6ia5grhc5pn9d75b468qci3ilnmkg8"))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Delete libraries that we already have or don't need.
+         (add-after 'unpack 'delete-third-parties
+           (lambda _
+             (let ((third-parties '("apple" "benchmark" "googletest" "hidapi"
+                                    "libebur128")))
+               (with-directory-excursion "lib"
+                 (map (lambda (third-party)
+                        (delete-file-recursively third-party))
+                      third-parties)))))
+         ;; Tests need a running X server.
+         (add-before 'check 'prepare-x-for-test
+           (lambda _
+             (system "Xvfb &")
+             (setenv "DISPLAY" ":0")))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; This test fails.  I don't know why.
+               (invoke "ctest" "-E" "TagLibTest.WriteID3v2Tag"))))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (faad2 (assoc-ref inputs "faad2")))
+               (wrap-program (string-append out "/bin/mixxx")
+                 `("LD_LIBRARY_PATH" ":" prefix
+                   ,(list (string-append faad2 "/lib"))))))))))
+    (native-inputs
+     `(("benchmark" ,benchmark)
+       ("googletest" ,googletest)
+       ("python" ,python-wrapper)
+       ("qttools" ,qttools)
+       ("xorg-server" ,xorg-server-for-tests)))
+    (inputs
+     `(("bash" ,bash-minimal)
+       ("chromaprint" ,chromaprint)
+       ("faad2" ,faad2)
+       ("ffmpeg" ,ffmpeg)
+       ("fftw" ,fftw)
+       ("flac" ,flac)
+       ("glu" ,glu)
+       ("hidapi" ,hidapi)
+       ("jack" ,jack-1)
+       ("lame" ,lame)
+       ("libdjinterop" ,libdjinterop)
+       ("libebur128" ,libebur128)
+       ("libid3tag" ,libid3tag)
+       ("libkeyfinder" ,libkeyfinder)
+       ("libmad" ,libmad)
+       ("libmp4v2" ,libmp4v2)
+       ("libmodplug" ,libmodplug)
+       ("libsndfile" ,libsndfile)
+       ("libshout" ,libshout)
+       ;; TODO: Mixxx requires libshout-idjc >= 2.4.6 which was not released
+       ;; at the time of packaging.
+       ;; ("libshout-idjc" ,libshout-idjc)
+       ("libusb" ,libusb)
+       ("libvorbis" ,libvorbis)
+       ("lilv" ,lilv)
+       ("mp3guessenc" ,mp3guessenc)
+       ("openssl" ,openssl)
+       ("opus" ,opus) ;for opus_multistream.h
+       ("opusfile" ,opusfile)
+       ("portaudio" ,portaudio)
+       ("portmidi" ,portmidi)
+       ("protobuf" ,protobuf)
+       ("qtbase" ,qtbase-5)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtkeychain" ,qtkeychain)
+       ("qtscript" ,qtscript)
+       ("qtsvg" ,qtsvg)
+       ("qtx11extras" ,qtx11extras)
+       ("rubberband" ,rubberband)
+       ("soundtouch" ,soundtouch)
+       ("sqlite" ,sqlite)
+       ("taglib" ,taglib)
+       ("upower" ,upower)
+       ("vamp" ,vamp)
+       ("wavpack" ,wavpack)))
+    (home-page "https://www.mixxx.org/")
+    (synopsis "DJ software to perform live mixes")
+    (description "Mixxx integrates the tools DJs need to perform creative live
+mixes with digital music files.
+
+Whether you are a new DJ with just a laptop or an experienced turntablist,
+Mixxx can support your style and techniques of mixing.")
+    ;; TODO: Try to unbundle some of these (see lib/).
+    (license (list license:gpl2+ ; Mixxx, fidlib, qm-dsp
+                   license:gpl2 ; xwax
+                   license:gpl3+ ; reverb
+                   license:expat ; kaitai, scspqueue, portaudio
+                   license:bsd-3 ; qtbytescriptarray
+                   license:lgpl2.1+ ; replaygain, mp3guessenc
+                   license:lgpl2.0+)))) ; libshout-idjc (Library, not Lesser)
+
 (define-public synthv1
   (package
     (name "synthv1")
diff --git a/gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch b/gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch
new file mode 100644
index 0000000000..d7cd1c0d28
--- /dev/null
+++ b/gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch
@@ -0,0 +1,25 @@
+From 7554aefc886d4ebc4b4c139a5cddcab6163cf72f Mon Sep 17 00:00:00 2001
+From: Vinicius Monego <monego@posteo.net>
+Date: Thu, 30 Sep 2021 23:37:29 -0300
+Subject: [PATCH] Link QtScriptByteArray with QtScript.
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 492ccae..05fec08 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -2077,7 +2077,7 @@ add_library(QtScriptByteArray STATIC EXCLUDE_FROM_ALL
+   lib/qtscript-bytearray/bytearrayprototype.cpp
+ )
+ set_target_properties(QtScriptByteArray PROPERTIES AUTOMOC ON)
+-target_link_libraries(QtScriptByteArray Qt5::Core)
++target_link_libraries(QtScriptByteArray Qt5::Core Qt5::Script)
+ target_include_directories(mixxx-lib SYSTEM PUBLIC lib/qtscript-bytearray)
+ target_link_libraries(mixxx-lib PRIVATE QtScriptByteArray)
+ 
+-- 
+2.30.2
+
diff --git a/gnu/packages/patches/mixxx-system-googletest-benchmark.patch b/gnu/packages/patches/mixxx-system-googletest-benchmark.patch
new file mode 100644
index 0000000000..7adbe66208
--- /dev/null
+++ b/gnu/packages/patches/mixxx-system-googletest-benchmark.patch
@@ -0,0 +1,43 @@
+From eb2079d467f8658eea13e2ed86cc69d864632866 Mon Sep 17 00:00:00 2001
+From: Vinicius Monego <monego@posteo.net>
+Date: Wed, 29 Sep 2021 19:07:35 -0300
+Subject: [PATCH] Use system googletest and benchmark.
+
+---
+ CMakeLists.txt | 13 +++----------
+ 1 file changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 10e9b0a..492ccae 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1467,12 +1467,7 @@ set(gtest_force_shared_crt ON CACHE BOOL "Pass Mixxx compiler/linker options to
+ # Prevent installation of GoogleTest libraries
+ set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of GoogleTest" FORCE)
+ 
+-# Add googletest directly to our build. This adds the following targets:
+-# gtest, gtest_main, gmock and gmock_main
+-add_subdirectory(
+-  "${CMAKE_CURRENT_SOURCE_DIR}/lib/googletest"
+-  "${CMAKE_CURRENT_BINARY_DIR}/lib/googletest"
+-)
++find_package(GTest CONFIG REQUIRED)
+ 
+ add_executable(mixxx-test
+   src/test/analyserwaveformtest.cpp
+@@ -1582,10 +1577,8 @@ set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
+ # Prevent installation of google/benchmark artifacts
+ set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "Disable installation of google/benchmark" FORCE)
+ 
+-add_subdirectory(
+-  "${CMAKE_CURRENT_SOURCE_DIR}/lib/benchmark"
+-  "${CMAKE_CURRENT_BINARY_DIR}/lib/benchmark"
+-)
++find_package(benchmark CONFIG REQUIRED)
++
+ target_link_libraries(mixxx-test PRIVATE benchmark)
+ 
+ # Test Suite
+-- 
+2.30.2
+
-- 
2.30.2





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

* [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder.
  2021-10-07 14:27 [bug#51085] [PATCH 0/7] Add Mixxx Vinicius Monego
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
@ 2021-10-09 15:28 ` Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 2/7] gnu: Add libdjinterop Vinicius Monego
                     ` (5 more replies)
  2021-10-11 17:02 ` [bug#51085] [PATCH 0/7] Add Mixxx Leo Famulari
  2 siblings, 6 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-09 15:28 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (libkeyfinder): New variable.
---
 gnu/packages/audio.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index cc51ac51f3..ef06e0934e 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3417,6 +3417,31 @@ stretching and pitch scaling of audio.  This package contains the library.")
     ;; containing gpl2.
     (license license:gpl2)))
 
+(define-public libkeyfinder
+  (package
+    (name "libkeyfinder")
+    (version "2.2.5")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mixxxdj/libkeyfinder")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1623kirmxhmvmhx7f8lbzk0f18w2hrhwlkzl8l4aa906lfqffdp2"))))
+    (build-system cmake-build-system)
+    (native-inputs
+     `(("catch" ,catch-framework2)))
+    (inputs
+     `(("fftw" ,fftw)))
+    (home-page "https://mixxxdj.github.io/libkeyfinder/")
+    (synopsis "Musical key detection for digital audio")
+    (description
+     "@code{libkeyfinder} is a small C++11 library for estimating the musical
+key of digital audio.")
+    (license license:gpl3+)))
+
 (define-public wavpack
   (package
     (name "wavpack")
-- 
2.30.2





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

* [bug#51085] [PATCH v2 2/7] gnu: Add libdjinterop.
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
@ 2021-10-09 15:28   ` Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 3/7] gnu: opusfile: Add new phase after unpack Vinicius Monego
                     ` (4 subsequent siblings)
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-09 15:28 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (libdjinterop): New variable.
---
 gnu/packages/audio.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index ef06e0934e..4712e9aa72 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -107,6 +107,7 @@
   #:use-module (gnu packages readline)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages serialization)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages telephony)
   #:use-module (gnu packages linphone)
   #:use-module (gnu packages linux)
@@ -1217,6 +1218,40 @@ flanger), ringmodulator, distortion, filters, pitchshift, oscillators,
 emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
     (license license:gpl3+)))
 
+(define-public libdjinterop
+  (package
+    (name "libdjinterop")
+    (version "0.16.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/xsco/libdjinterop")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "16nrqpr90vb9ggmp9j73m0hspd7pmfdhh0g6iyp8vd7kx7g17qnk"))))
+    (build-system meson-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; crate_test writes a database file to the source tree.
+         (add-after 'unpack 'make-git-checkout-writable
+           (lambda _
+             (for-each make-file-writable (find-files ".")))))))
+    (native-inputs
+     `(("boost" ,boost)
+       ("pkg-config" ,pkg-config)))
+    (inputs
+     `(("sqlite" ,sqlite)
+       ("zlib" ,zlib)))
+    (home-page "https://github.com/xsco/libdjinterop")
+    (synopsis "C++ library for access to DJ record libraries")
+    (description
+     "@code{libdjinterop} is a C++ library that allows access to database
+formats used to store information about DJ record libraries.")
+    (license license:lgpl3+)))
+
 (define-public tao
   (package
     (name "tao")
-- 
2.30.2





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

* [bug#51085] [PATCH v2 3/7] gnu: opusfile: Add new phase after unpack.
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 2/7] gnu: Add libdjinterop Vinicius Monego
@ 2021-10-09 15:28   ` Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 4/7] gnu: Add libshout-idjc Vinicius Monego
                     ` (3 subsequent siblings)
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-09 15:28 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/xiph.scm (opusfile)[arguments]<#:phases>: After the unpack
phase add a fix-multistream phase to adjust the include header call of
opus_multistream.h so that opusfile can find it.
---
 gnu/packages/xiph.scm | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/xiph.scm b/gnu/packages/xiph.scm
index fbbcbd6e61..0c9c799067 100644
--- a/gnu/packages/xiph.scm
+++ b/gnu/packages/xiph.scm
@@ -11,6 +11,7 @@
 ;;; Copyright © 2018 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
 ;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot>
+;;; Copyright © 2021 Vinicius Monego <monego@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -406,7 +407,16 @@ decoding .opus files.")
                 "02smwc5ah8nb3a67mnkjzqmrzk43j356hgj2a97s9midq40qd38i"))))
     (build-system gnu-build-system)
     (arguments
-     '(#:configure-flags '("--disable-static")))
+     '(#:configure-flags '("--disable-static")
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-multistream
+           ;; Opus include directory should be passed explicitly:
+           ;; https://github.com/xiph/opusfile/issues/10 however,
+           ;; opus_multistream.h still can't be found by the compiler.
+           (lambda _
+             (substitute* "include/opusfile.h"
+               (("opus_multistream\\.h") "opus/opus_multistream.h")))))))
     ;; Required by opusfile.pc and opusurl.pc.
     (propagated-inputs
      `(("libogg" ,libogg)
-- 
2.30.2





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

* [bug#51085] [PATCH v2 4/7] gnu: Add libshout-idjc.
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 2/7] gnu: Add libdjinterop Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 3/7] gnu: opusfile: Add new phase after unpack Vinicius Monego
@ 2021-10-09 15:28   ` Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 5/7] gnu: Add spscqueue Vinicius Monego
                     ` (2 subsequent siblings)
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-09 15:28 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (libshout-idjc): New variable.
---
Fixed typo in description.

 gnu/packages/audio.scm | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 4712e9aa72..6c0318db9d 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -3089,6 +3089,31 @@ for \"realtime\" in the index of the Guix manual to learn how to achieve this
 using Guix System.")
     (license license:gpl2+)))
 
+(define-public libshout-idjc
+  (package
+    (name "libshout-idjc")
+    (version "2.4.4")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/libshoutidjc.idjc.p"
+                           "/libshout-idjc-" version ".tar.gz"))
+       (sha256
+        (base32 "1r9z8ggxylr2ab0isaljbm574rplnlcb12758j994h54nh2vikwb"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libogg" ,libogg)
+       ("libtheora" ,libtheora)
+       ("libvorbis" ,libvorbis)
+       ("speex" ,speex)))
+    (home-page "http://idjc.sourceforge.net/")
+    (synopsis "Broadcast streaming library with IDJC extensions")
+    (description "This package provides libshout plus IDJC extensions.")
+    ;; GNU Library (not Lesser) General Public License.
+    (license license:lgpl2.0+)))
+
 (define-public raul
   (package
     (name "raul")
-- 
2.30.2





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

* [bug#51085] [PATCH v2 5/7] gnu: Add spscqueue.
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
                     ` (2 preceding siblings ...)
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 4/7] gnu: Add libshout-idjc Vinicius Monego
@ 2021-10-09 15:28   ` Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 6/7] gnu: Add mp3guessenc Vinicius Monego
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 7/7] gnu: Add mixxx Vinicius Monego
  5 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-09 15:28 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/cpp.scm (spscqueue): New variable.
---
 gnu/packages/cpp.scm | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 104fe81e18..5298de7cbb 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -516,6 +516,27 @@ syntax highlighting.  @code{ccls} is derived from @code{cquery} which is not
 maintained anymore.")
     (license license:asl2.0)))
 
+(define-public spscqueue
+  (package
+    (name "spscqueue")
+    (version "1.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/rigtorp/SPSCQueue/")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1428cj9x318afvnvnkhg0711iy4czqn86fi7ysgfhw91asa316rc"))))
+    (build-system cmake-build-system)
+    (home-page "https://github.com/rigtorp/SPSCQueue/")
+    (synopsis "Single producer single consumer queue written in C++11")
+    (description
+     "This package provides a single producer single consumer wait-free and
+lock-free fixed size queue written in C++11.")
+    (license license:expat)))
+
 (define-public gperftools
   (package
     (name "gperftools")
-- 
2.30.2





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

* [bug#51085] [PATCH v2 6/7] gnu: Add mp3guessenc.
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
                     ` (3 preceding siblings ...)
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 5/7] gnu: Add spscqueue Vinicius Monego
@ 2021-10-09 15:28   ` Vinicius Monego
  2021-10-11 21:55     ` Leo Famulari
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 7/7] gnu: Add mixxx Vinicius Monego
  5 siblings, 1 reply; 21+ messages in thread
From: Vinicius Monego @ 2021-10-09 15:28 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/audio.scm (mp3guessenc): New variable.
---
Removed trailing / from home-page.

 gnu/packages/audio.scm | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 6c0318db9d..47c37643f6 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -4060,6 +4060,34 @@ machine-readable ASCII format.")
     (home-page "https://github.com/svend/cuetools")
     (license license:gpl2+)))
 
+(define-public mp3guessenc
+  (package
+    (name "mp3guessenc")
+    (version "0.27.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "mirror://sourceforge/mp3guessenc/mp3guessenc-"
+                           (version-major+minor version) "/mp3guessenc-"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1fa3sbwwn4p2v1749lzy040bfy1xfd574mf2frwgg9ikgk3vlb3c"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:tests? #f ; no tests
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             (string-append "SUFFIX="))
+       #:phases
+       (modify-phases %standard-phases
+         (delete 'configure)))) ; no configure phase
+    (home-page "https://mp3guessenc.sourceforge.io")
+    (synopsis "Detect the encoder used for a mpeg layer III")
+    (description "This command line utility was born to detect the encoder
+used for a mpeg layer III file but now it can do more and scan any mpeg
+audio file (any layer) and print a lot of useful information.")
+    (license license:lgpl2.1+)))
+
 (define-public shntool
   (package
     (name "shntool")
-- 
2.30.2





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

* [bug#51085] [PATCH v2 7/7] gnu: Add mixxx.
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
                     ` (4 preceding siblings ...)
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 6/7] gnu: Add mp3guessenc Vinicius Monego
@ 2021-10-09 15:28   ` Vinicius Monego
  2021-10-11 22:04     ` Leo Famulari
  5 siblings, 1 reply; 21+ messages in thread
From: Vinicius Monego @ 2021-10-09 15:28 UTC (permalink / raw)
  To: 51085; +Cc: Vinicius Monego

* gnu/packages/music.scm (mixxx): New variable.
* gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch: New
patch.
* gnu/packages/patches/mixxx-system-googletest-benchmark.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Add patches.
---
Deleted bundles in a snippet instead of a phase. Removed opus from inputs. Changed comment about libshout-idjc. Changed description. Removed www from home-page.

 gnu/local.mk                                  |   2 +
 gnu/packages/music.scm                        | 114 ++++++++++++++++++
 ...ixxx-link-qtscriptbytearray-qtscript.patch |  25 ++++
 .../mixxx-system-googletest-benchmark.patch   |  43 +++++++
 4 files changed, 184 insertions(+)
 create mode 100644 gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch
 create mode 100644 gnu/packages/patches/mixxx-system-googletest-benchmark.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index b1f0cab55e..a3eceabc9e 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1475,6 +1475,8 @@ dist_patch_DATA =						\
   %D%/packages/patches/minisat-install.patch			\
   %D%/packages/patches/mit-krb5-hurd.patch			\
   %D%/packages/patches/mit-krb5-qualify-short-hostnames.patch	\
+  %D%/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch	\
+  %D%/packages/patches/mixxx-system-googletest-benchmark.patch	\
   %D%/packages/patches/mpc123-initialize-ao.patch		\
   %D%/packages/patches/mpg321-CVE-2019-14247.patch		\
   %D%/packages/patches/module-init-tools-moduledir.patch	\
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index fa3b70f8c1..697a272eb8 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -72,6 +72,7 @@
   #:use-module (guix build-system meson)
   #:use-module (guix build-system perl)
   #:use-module (guix build-system python)
+  #:use-module (guix build-system qt)
   #:use-module (guix build-system scons)
   #:use-module (guix build-system glib-or-gtk)
   #:use-module (guix build-system qt)
@@ -89,6 +90,7 @@
   #:use-module (gnu packages backup)
   #:use-module (gnu packages base) ;libbdf
   #:use-module (gnu packages bash)
+  #:use-module (gnu packages benchmark)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages boost)
   #:use-module (gnu packages build-tools)
@@ -2176,6 +2178,118 @@ Editor.  It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
 users to select LV2 plugins and run them with jalv.")
     (license license:public-domain)))
 
+(define-public mixxx
+  (package
+    (name "mixxx")
+    (version "2.3.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/mixxxdj/mixxx")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (patches
+        (search-patches "mixxx-link-qtscriptbytearray-qtscript.patch"
+                        "mixxx-system-googletest-benchmark.patch"))
+       (sha256
+        (base32 "04781s4ajdlwgvf12v2mvh6ia5grhc5pn9d75b468qci3ilnmkg8"))
+       (modules '((guix build utils)))
+       (snippet
+        ;; Delete libraries that we already have or don't need.
+        ;; TODO: try to unbundle more (see lib/).
+        `(begin
+           (let ((third-parties '("apple" "benchmark" "googletest" "hidapi"
+                                  "libebur128")))
+             (with-directory-excursion "lib"
+               (map (lambda (third-party)
+                      (delete-file-recursively third-party))
+                    third-parties)))
+           #t))))
+    (build-system qt-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         ;; Tests need a running X server.
+         (add-before 'check 'prepare-x-for-test
+           (lambda _
+             (system "Xvfb &")
+             (setenv "DISPLAY" ":0")))
+         (replace 'check
+           (lambda* (#:key tests? #:allow-other-keys)
+             (when tests?
+               ;; This test fails.  I don't know why.
+               (invoke "ctest" "-E" "TagLibTest.WriteID3v2Tag"))))
+         (add-after 'install 'wrap-executable
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (faad2 (assoc-ref inputs "faad2")))
+               (wrap-program (string-append out "/bin/mixxx")
+                 `("LD_LIBRARY_PATH" ":" prefix
+                   ,(list (string-append faad2 "/lib"))))))))))
+    (native-inputs
+     `(("benchmark" ,benchmark)
+       ("googletest" ,googletest)
+       ("python" ,python-wrapper)
+       ("qttools" ,qttools)
+       ("xorg-server" ,xorg-server-for-tests)))
+    (inputs
+     `(("bash" ,bash-minimal)
+       ("chromaprint" ,chromaprint)
+       ("faad2" ,faad2)
+       ("ffmpeg" ,ffmpeg)
+       ("fftw" ,fftw)
+       ("flac" ,flac)
+       ("glu" ,glu)
+       ("hidapi" ,hidapi)
+       ("jack" ,jack-1)
+       ("lame" ,lame)
+       ("libdjinterop" ,libdjinterop)
+       ("libebur128" ,libebur128)
+       ("libid3tag" ,libid3tag)
+       ("libkeyfinder" ,libkeyfinder)
+       ("libmad" ,libmad)
+       ("libmp4v2" ,libmp4v2)
+       ("libmodplug" ,libmodplug)
+       ("libsndfile" ,libsndfile)
+       ("libshout" ,libshout)
+       ;; XXX: Mixxx complains the libshout-idjc package suffers from bug
+       ;; lp1833225 and refuses to use it.  Use the bundle for now.
+       ;; ("libshout-idjc" ,libshout-idjc)
+       ("libusb" ,libusb)
+       ("libvorbis" ,libvorbis)
+       ("lilv" ,lilv)
+       ("mp3guessenc" ,mp3guessenc)
+       ("openssl" ,openssl)
+       ("opusfile" ,opusfile)
+       ("portaudio" ,portaudio)
+       ("portmidi" ,portmidi)
+       ("protobuf" ,protobuf)
+       ("qtbase" ,qtbase-5)
+       ("qtdeclarative" ,qtdeclarative)
+       ("qtkeychain" ,qtkeychain)
+       ("qtscript" ,qtscript)
+       ("qtsvg" ,qtsvg)
+       ("qtx11extras" ,qtx11extras)
+       ("rubberband" ,rubberband)
+       ("soundtouch" ,soundtouch)
+       ("sqlite" ,sqlite)
+       ("taglib" ,taglib)
+       ("upower" ,upower)
+       ("vamp" ,vamp)
+       ("wavpack" ,wavpack)))
+    (home-page "https://mixxx.org/")
+    (synopsis "DJ software to perform live mixes")
+    (description "Mixxx is a DJ software.  It integrates the tools DJs need to
+perform creative live mixes with digital music files.")
+    (license (list license:gpl2+ ; Mixxx, fidlib, qm-dsp
+                   license:gpl2 ; xwax
+                   license:gpl3+ ; reverb
+                   license:expat ; kaitai, scspqueue, portaudio
+                   license:bsd-3 ; qtbytescriptarray
+                   license:lgpl2.1+ ; replaygain, mp3guessenc
+                   license:lgpl2.0+)))) ; libshout-idjc (Library, not Lesser)
+
 (define-public synthv1
   (package
     (name "synthv1")
diff --git a/gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch b/gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch
new file mode 100644
index 0000000000..d7cd1c0d28
--- /dev/null
+++ b/gnu/packages/patches/mixxx-link-qtscriptbytearray-qtscript.patch
@@ -0,0 +1,25 @@
+From 7554aefc886d4ebc4b4c139a5cddcab6163cf72f Mon Sep 17 00:00:00 2001
+From: Vinicius Monego <monego@posteo.net>
+Date: Thu, 30 Sep 2021 23:37:29 -0300
+Subject: [PATCH] Link QtScriptByteArray with QtScript.
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 492ccae..05fec08 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -2077,7 +2077,7 @@ add_library(QtScriptByteArray STATIC EXCLUDE_FROM_ALL
+   lib/qtscript-bytearray/bytearrayprototype.cpp
+ )
+ set_target_properties(QtScriptByteArray PROPERTIES AUTOMOC ON)
+-target_link_libraries(QtScriptByteArray Qt5::Core)
++target_link_libraries(QtScriptByteArray Qt5::Core Qt5::Script)
+ target_include_directories(mixxx-lib SYSTEM PUBLIC lib/qtscript-bytearray)
+ target_link_libraries(mixxx-lib PRIVATE QtScriptByteArray)
+ 
+-- 
+2.30.2
+
diff --git a/gnu/packages/patches/mixxx-system-googletest-benchmark.patch b/gnu/packages/patches/mixxx-system-googletest-benchmark.patch
new file mode 100644
index 0000000000..7adbe66208
--- /dev/null
+++ b/gnu/packages/patches/mixxx-system-googletest-benchmark.patch
@@ -0,0 +1,43 @@
+From eb2079d467f8658eea13e2ed86cc69d864632866 Mon Sep 17 00:00:00 2001
+From: Vinicius Monego <monego@posteo.net>
+Date: Wed, 29 Sep 2021 19:07:35 -0300
+Subject: [PATCH] Use system googletest and benchmark.
+
+---
+ CMakeLists.txt | 13 +++----------
+ 1 file changed, 3 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 10e9b0a..492ccae 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1467,12 +1467,7 @@ set(gtest_force_shared_crt ON CACHE BOOL "Pass Mixxx compiler/linker options to
+ # Prevent installation of GoogleTest libraries
+ set(INSTALL_GTEST OFF CACHE BOOL "Disable installation of GoogleTest" FORCE)
+ 
+-# Add googletest directly to our build. This adds the following targets:
+-# gtest, gtest_main, gmock and gmock_main
+-add_subdirectory(
+-  "${CMAKE_CURRENT_SOURCE_DIR}/lib/googletest"
+-  "${CMAKE_CURRENT_BINARY_DIR}/lib/googletest"
+-)
++find_package(GTest CONFIG REQUIRED)
+ 
+ add_executable(mixxx-test
+   src/test/analyserwaveformtest.cpp
+@@ -1582,10 +1577,8 @@ set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "" FORCE)
+ # Prevent installation of google/benchmark artifacts
+ set(BENCHMARK_ENABLE_INSTALL OFF CACHE BOOL "Disable installation of google/benchmark" FORCE)
+ 
+-add_subdirectory(
+-  "${CMAKE_CURRENT_SOURCE_DIR}/lib/benchmark"
+-  "${CMAKE_CURRENT_BINARY_DIR}/lib/benchmark"
+-)
++find_package(benchmark CONFIG REQUIRED)
++
+ target_link_libraries(mixxx-test PRIVATE benchmark)
+ 
+ # Test Suite
+-- 
+2.30.2
+
-- 
2.30.2





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

* [bug#51085] [PATCH 0/7] Add Mixxx.
  2021-10-07 14:27 [bug#51085] [PATCH 0/7] Add Mixxx Vinicius Monego
  2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
  2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
@ 2021-10-11 17:02 ` Leo Famulari
  2 siblings, 0 replies; 21+ messages in thread
From: Leo Famulari @ 2021-10-11 17:02 UTC (permalink / raw)
  To: Vinicius Monego; +Cc: 51085

On Thu, Oct 07, 2021 at 02:27:54PM +0000, Vinicius Monego wrote:
> Vinicius Monego (7):
>   gnu: Add libkeyfinder.
>   gnu: Add libdjinterop.
>   gnu: opusfile: Add new phase after unpack.
>   gnu: Add libshout-idjc.
>   gnu: Add spscqueue.
>   gnu: Add mp3guessenc.
>   gnu: Add mixxx.

Amazing! I've wanted a Guix package of Mixxx for a long time. I'm
building and testing this package now.




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

* [bug#51085] [PATCH v2 6/7] gnu: Add mp3guessenc.
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 6/7] gnu: Add mp3guessenc Vinicius Monego
@ 2021-10-11 21:55     ` Leo Famulari
  2021-10-12 22:49       ` Vinicius Monego
  0 siblings, 1 reply; 21+ messages in thread
From: Leo Famulari @ 2021-10-11 21:55 UTC (permalink / raw)
  To: Vinicius Monego; +Cc: 51085

Thanks for these patches! I've hoped for a Mixxx Guix package for a long
time.

The patches look good to me overall, but I have a couple questions:

On Sat, Oct 09, 2021 at 03:28:19PM +0000, Vinicius Monego wrote:
> * gnu/packages/audio.scm (mp3guessenc): New variable.

> +       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
> +             (string-append "SUFFIX="))

What is SUFFIX? That string doesn't appear in the mp3guessenc source
code.




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

* [bug#51085] [PATCH v2 7/7] gnu: Add mixxx.
  2021-10-09 15:28   ` [bug#51085] [PATCH v2 7/7] gnu: Add mixxx Vinicius Monego
@ 2021-10-11 22:04     ` Leo Famulari
  2021-10-12 22:54       ` Vinicius Monego
  0 siblings, 1 reply; 21+ messages in thread
From: Leo Famulari @ 2021-10-11 22:04 UTC (permalink / raw)
  To: Vinicius Monego; +Cc: 51085

On Sat, Oct 09, 2021 at 03:28:20PM +0000, Vinicius Monego wrote:
> +    (license (list license:gpl2+ ; Mixxx, fidlib, qm-dsp
> +                   license:gpl2 ; xwax
> +                   license:gpl3+ ; reverb
> +                   license:expat ; kaitai, scspqueue, portaudio
> +                   license:bsd-3 ; qtbytescriptarray
> +                   license:lgpl2.1+ ; replaygain, mp3guessenc
> +                   license:lgpl2.0+)))) ; libshout-idjc (Library, not Lesser)

The license of Mixxx is, overall, gpl2+. We don't need to list these
other licenses here. Maybe it's a problem that 'reverb' is gpl3+, I
don't know.

If you are curious about previous discussions of this subject in Guix,
we talked about it last spring in the guix-devel thread that started
in April 2021 as 'Jam: which licence is this?', and then continued into
May 2021:

https://lists.gnu.org/archive/html/guix-devel/2021-04/msg00436.html
https://lists.gnu.org/archive/html/guix-devel/2021-05/threads.html




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

* [bug#51085] [PATCH v2 6/7] gnu: Add mp3guessenc.
  2021-10-11 21:55     ` Leo Famulari
@ 2021-10-12 22:49       ` Vinicius Monego
  0 siblings, 0 replies; 21+ messages in thread
From: Vinicius Monego @ 2021-10-12 22:49 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 51085

Em seg, 2021-10-11 às 17:55 -0400, Leo Famulari escreveu:
> Thanks for these patches! I've hoped for a Mixxx Guix package for a
> long
> time.
> 
> The patches look good to me overall, but I have a couple questions:
> 
> On Sat, Oct 09, 2021 at 03:28:19PM +0000, Vinicius Monego wrote:
> > * gnu/packages/audio.scm (mp3guessenc): New variable.
> 
> > +       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
> > +             (string-append "SUFFIX="))
> 
> What is SUFFIX? That string doesn't appear in the mp3guessenc source
> code.

Oh I copied that part from another package and didn't adjust. SUFFIX
can be removed.





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

* [bug#51085] [PATCH v2 7/7] gnu: Add mixxx.
  2021-10-11 22:04     ` Leo Famulari
@ 2021-10-12 22:54       ` Vinicius Monego
  2021-10-16 21:40         ` bug#51085: " Leo Famulari
  0 siblings, 1 reply; 21+ messages in thread
From: Vinicius Monego @ 2021-10-12 22:54 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 51085

Em seg, 2021-10-11 às 18:04 -0400, Leo Famulari escreveu:
> On Sat, Oct 09, 2021 at 03:28:20PM +0000, Vinicius Monego wrote:
> > +    (license (list license:gpl2+ ; Mixxx, fidlib, qm-dsp
> > +                   license:gpl2 ; xwax
> > +                   license:gpl3+ ; reverb
> > +                   license:expat ; kaitai, scspqueue, portaudio
> > +                   license:bsd-3 ; qtbytescriptarray
> > +                   license:lgpl2.1+ ; replaygain, mp3guessenc
> > +                   license:lgpl2.0+)))) ; libshout-idjc (Library,
> > not Lesser)
> 
> The license of Mixxx is, overall, gpl2+. We don't need to list these
> other licenses here. Maybe it's a problem that 'reverb' is gpl3+, I
> don't know.
> 
> If you are curious about previous discussions of this subject in
> Guix,
> we talked about it last spring in the guix-devel thread that started
> in April 2021 as 'Jam: which licence is this?', and then continued
> into
> May 2021:
> 
> https://lists.gnu.org/archive/html/guix-devel/2021-04/msg00436.html
> https://lists.gnu.org/archive/html/guix-devel/2021-05/threads.html

Thanks, interesting discussion. I had an incorrect understanding of the
license field.





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

* bug#51085: [PATCH v2 7/7] gnu: Add mixxx.
  2021-10-12 22:54       ` Vinicius Monego
@ 2021-10-16 21:40         ` Leo Famulari
  0 siblings, 0 replies; 21+ messages in thread
From: Leo Famulari @ 2021-10-16 21:40 UTC (permalink / raw)
  To: Vinicius Monego; +Cc: 51085-done

On Tue, Oct 12, 2021 at 10:54:14PM +0000, Vinicius Monego wrote:
> Thanks, interesting discussion. I had an incorrect understanding of the
> license field.

Alright. I made a few other changes to synopses, descriptions, and
commit messages, and pushed as 8c55fdf80a03098f5acc71eab76d89e3feb2c222.

Tnank you for these patches!




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

end of thread, other threads:[~2021-10-16 21:42 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-07 14:27 [bug#51085] [PATCH 0/7] Add Mixxx Vinicius Monego
2021-10-07 14:29 ` [bug#51085] [PATCH 1/7] gnu: Add libkeyfinder Vinicius Monego
2021-10-07 14:29   ` [bug#51085] [PATCH 2/7] gnu: Add libdjinterop Vinicius Monego
2021-10-07 14:29   ` [bug#51085] [PATCH 3/7] gnu: opusfile: Add new phase after unpack Vinicius Monego
2021-10-07 14:29   ` [bug#51085] [PATCH 4/7] gnu: Add libshout-idjc Vinicius Monego
2021-10-07 14:29   ` [bug#51085] [PATCH 5/7] gnu: Add spscqueue Vinicius Monego
2021-10-07 14:29   ` [bug#51085] [PATCH 6/7] gnu: Add mp3guessenc Vinicius Monego
2021-10-07 14:29   ` [bug#51085] [PATCH 7/7] gnu: Add mixxx Vinicius Monego
2021-10-09 15:28 ` [bug#51085] [PATCH v2 1/7] gnu: Add libkeyfinder Vinicius Monego
2021-10-09 15:28   ` [bug#51085] [PATCH v2 2/7] gnu: Add libdjinterop Vinicius Monego
2021-10-09 15:28   ` [bug#51085] [PATCH v2 3/7] gnu: opusfile: Add new phase after unpack Vinicius Monego
2021-10-09 15:28   ` [bug#51085] [PATCH v2 4/7] gnu: Add libshout-idjc Vinicius Monego
2021-10-09 15:28   ` [bug#51085] [PATCH v2 5/7] gnu: Add spscqueue Vinicius Monego
2021-10-09 15:28   ` [bug#51085] [PATCH v2 6/7] gnu: Add mp3guessenc Vinicius Monego
2021-10-11 21:55     ` Leo Famulari
2021-10-12 22:49       ` Vinicius Monego
2021-10-09 15:28   ` [bug#51085] [PATCH v2 7/7] gnu: Add mixxx Vinicius Monego
2021-10-11 22:04     ` Leo Famulari
2021-10-12 22:54       ` Vinicius Monego
2021-10-16 21:40         ` bug#51085: " Leo Famulari
2021-10-11 17:02 ` [bug#51085] [PATCH 0/7] Add Mixxx Leo Famulari

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).