diff mbox series

[bug#56140,v2,2/2] : gnu: Add distrho-ports.

Message ID TrO8tv4T-QOtbBmtH7u-4xk67wYVwkJbyfTURTIqqY6yTt2FbPO0jorFJ7tHuQ1Cm8GtvdP6pnV02nZBl4iVQbFu3JlYIWzo2utRGZmeiuE=@proton.me
State New
Headers show
Series [bug#56140,Patches] Add and update music packages | expand

Commit Message

Sughosha June 15, 2023, 4:34 p.m. UTC
* gnu/packages/music.scm (distrho-ports): New variable.
---
 gnu/packages/music.scm | 135 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 135 insertions(+)

--
libgit2 1.5.1

Comments

Ricardo Wurmus June 15, 2023, 6:38 p.m. UTC | #1
Hi Sughosha,

> * gnu/packages/music.scm (distrho-ports): New variable.

Thanks for the patch!
> +(define-public distrho-ports
> +  (let ((commit "f2dbaded0a05732e3499fa374a586e5b32370da5")
> +        (revision "0"))
> +    (package
> +      (name "distrho-ports")
> +      (version (git-version "0.2021-03-15" revision commit))
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url "https://github.com/DISTRHO/DISTRHO-Ports")
> +                      ;; This commit corresponds to tag 2021-03-15

As far as I can tell the commit corresponding to the tag is actually
fe5bf2e87dd440ba98d3e8ac647b8518e2851f74.

> +                (snippet
> +                 '(with-directory-excursion "ports-juce6"
> +                    ;; Delete third party libraries.
> +                    (for-each delete-file-recursively
> +                      (list "swankyamp/thirdparty"
> +                            "vitalium/third_party"))
> +                    ;; Exclude them from building.
> +                    (substitute*
> +                     (list "swankyamp/meson.build"
> +                           "vitalium/meson.build")

It’s nitpicking, but we seem to prefer a quoted list for substitute*.

> +             #~(modify-phases %standard-phases
> +                 (add-after 'unpack 'patch-paths
> +                   (lambda* (#:key inputs #:allow-other-keys)
> +                     (with-directory-excursion "libs"
> +                       (for-each
> +                         (lambda (dir)
> +                           (substitute*
> +                            (string-append dir "/source/modules/juce_graphics"
> +                                           "/native/juce_linux_Fonts.cpp")
> +                             (("/usr/share/fonts")
> +                              (search-input-directory inputs "/etc/fonts"))))
> +                         (list "juce5" "juce6" "juce7"))))))))

I’d prefer something like this:

--8<---------------cut here---------------start------------->8---
#~(modify-phases %standard-phases
    (add-after 'unpack 'patch-paths
      (lambda* (#:key inputs #:allow-other-keys)
        (let ((fonts (search-input-directory inputs "/etc/fonts")))
          (with-directory-excursion "libs"
            (substitute* (find-files "." "juce_linux_Fonts.cpp$")
              (("/usr/share/fonts") fonts)))))))
--8<---------------cut here---------------end--------------->8---

More generally, I think we should not use for-each since we already have
a way to pass multiple files to substitute*.

> +      (native-inputs
> +       (list cmake-minimal
> +             concurrentqueue
> +             nlohmann-json
> +             optional-lite
> +             pkg-config))

Why are these libraries native inputs?
> +      ;; Licenses for lv2-ttl-generator, The Function, The Pilgrim,
> +      ;; juce-demo-host and juce-demo-plugin are not declared.

Then these are nonfree and should be removed.  You could report this to
the maintainers and include a link to the issue here, so we can follow
up in the future.

> +      (license
> +        (list license:asl2.0 ;for msfa
> +              license:bsd-2 ;for mingw-std-threads and dsp-utility
> +              ;; There is no mention of licenses for dRowAudio plugins,
> +              ;; Luftikus, PitchedDelay and ReFine in this repository, but the
> +              ;; upstream repositories released them under MIT:
> +              ;; https://github.com/drowaudio/drowaudio;
> +              ;; https://github.com/lkjbdsp/lkjb-plugins.
> +              license:expat ;for FFTConvolver
> +              (license:fsf-free ;for Temper
> +                "file:///ports-juce5/temper/source/TemperDsp.hpp")
> +              license:gpl2 ;for juce-plugin, LUFS Meter and Obxd
> +              ;; There is no mention of license for Wolpertinger, but the
> +              ;; upstream released it under GPLv2+:
> +              ;; https://github.com/jkroll20/wolpertinger.
> +              license:gpl2+ ;for HiReSam, TAL plugins and Vex
> +              ;; There is no mention of license for EasySSP in this repository,
> +              ;; but the upstream repository released it under GPLv3:
> +              ;; https://github.com/automatl/audio-dsp-multi-visualize.
> +              license:gpl3 ;for JUCE and CHOW

The release notes for 2021-03-15 say:

  CHOW has been removed from plugins to build and install

> +              license:gpl3+ ;for Dexed, Swanky Amp, Vitalium and KlangFalter
> +              license:lgpl2.0+ ;for DrumSynth, EQinox
> +              license:lgpl3+
> +              license:lgpl2.1+ ;for juce-opl
> +              (license:non-copyleft ;kiss_fft
> +                (string-append "file:///ports-juce5/stereosourceseparation"
> +                               "/source/kiss_fft/kiss_fft.c"))
> +              license:wtfpl2))))) ;for FFTReal

Phew, that’s a lot.  I haven’t validated any of them.  Someone should do
this before applying this patch.
diff mbox series

Patch

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 2e7edda..fbd1e76 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -6344,6 +6344,141 @@  (define-public mamba
 ones.")
    (license license:bsd-0)))
 
+(define-public distrho-ports
+  (let ((commit "f2dbaded0a05732e3499fa374a586e5b32370da5")
+        (revision "0"))
+    (package
+      (name "distrho-ports")
+      (version (git-version "0.2021-03-15" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/DISTRHO/DISTRHO-Ports")
+                      ;; This commit corresponds to tag 2021-03-15
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1rrnqwask2qg05ynisk6bpj118cl7c3w53rqrfg5x3sx847rjjgc"))
+                (snippet
+                 '(with-directory-excursion "ports-juce6"
+                    ;; Delete third party libraries.
+                    (for-each delete-file-recursively
+                      (list "swankyamp/thirdparty"
+                            "vitalium/third_party"))
+                    ;; Exclude them from building.
+                    (substitute*
+                     (list "swankyamp/meson.build"
+                           "vitalium/meson.build")
+                      (("'third") "#'third"))
+                    ;; Use system provided "nlohmann/json.hpp".
+                    (with-directory-excursion "vitalium/source"
+                      (substitute*
+                       (list "common/line_generator.h"
+                             "common/load_save.h"
+                             "common/tuning.h"
+                             "common/wavetable/wavetable_component.h"
+                             "common/wavetable/wavetable_creator.h"
+                             "common/wavetable/wavetable_keyframe.h"
+                             "interface/editor_sections/save_section.h"
+                             "interface/look_and_feel/skin.h"
+                             "synthesis/producers/sample_source.h")
+                        (("json/json\\.h") "nlohmann/json.hpp")))))))
+      (build-system meson-build-system)
+      (arguments
+       (list #:tests? #f ;no test target
+             #:phases
+             #~(modify-phases %standard-phases
+                 (add-after 'unpack 'patch-paths
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (with-directory-excursion "libs"
+                       (for-each
+                         (lambda (dir)
+                           (substitute*
+                            (string-append dir "/source/modules/juce_graphics"
+                                           "/native/juce_linux_Fonts.cpp")
+                             (("/usr/share/fonts")
+                              (search-input-directory inputs "/etc/fonts"))))
+                         (list "juce5" "juce6" "juce7"))))))))
+      (native-inputs
+       (list cmake-minimal
+             concurrentqueue
+             nlohmann-json
+             optional-lite
+             pkg-config))
+      (inputs
+       (list alsa-lib
+             fontconfig
+             freetype
+             fftwf
+             libx11
+             libxcursor
+             libxext
+             libxrender
+             mesa))
+      (home-page "https://github.com/DISTRHO/DISTRHO-Ports")
+      (synopsis "Audio plugins and LV2 ports")
+      (description
+       "This package contains LV2 ports of the following plugins:
+@itemize
+@item The Function,
+@item The Pilgrim,
+@item CHOW,
+@item Dexed,
+@item dRowAudio plugins (Distortion, Distortion Shaper, Flanger, Reverb,
+  Tremolo),
+@item DrumSynth,
+@item EasySSP,
+@item EQinox,
+@item HiReSam,
+@item JuceOPL,
+@item KlangFalter,
+@item LUFS Meter,
+@item Luftikus,
+@item Obxd,
+@item PitchedDelay,
+@item ReFine,
+@item StereoSourceSeperation,
+@item Swanky Amp,
+@item TAL plugins (Dub-3, Filter, Filter-2, Noize Mak3r, Reverb, Reverb-II,
+  Reverb-III, Vocoder-II),
+@item Temper,
+@item Vex,
+@item Vitalium, and
+@item Wolpertinger.
+@end itemize
+")
+      ;; Licenses for lv2-ttl-generator, The Function, The Pilgrim,
+      ;; juce-demo-host and juce-demo-plugin are not declared.
+      (license
+        (list license:asl2.0 ;for msfa
+              license:bsd-2 ;for mingw-std-threads and dsp-utility
+              ;; There is no mention of licenses for dRowAudio plugins,
+              ;; Luftikus, PitchedDelay and ReFine in this repository, but the
+              ;; upstream repositories released them under MIT:
+              ;; https://github.com/drowaudio/drowaudio;
+              ;; https://github.com/lkjbdsp/lkjb-plugins.
+              license:expat ;for FFTConvolver
+              (license:fsf-free ;for Temper
+                "file:///ports-juce5/temper/source/TemperDsp.hpp")
+              license:gpl2 ;for juce-plugin, LUFS Meter and Obxd
+              ;; There is no mention of license for Wolpertinger, but the
+              ;; upstream released it under GPLv2+:
+              ;; https://github.com/jkroll20/wolpertinger.
+              license:gpl2+ ;for HiReSam, TAL plugins and Vex
+              ;; There is no mention of license for EasySSP in this repository,
+              ;; but the upstream repository released it under GPLv3:
+              ;; https://github.com/automatl/audio-dsp-multi-visualize.
+              license:gpl3 ;for JUCE and CHOW
+              license:gpl3+ ;for Dexed, Swanky Amp, Vitalium and KlangFalter
+              license:lgpl2.0+ ;for DrumSynth, EQinox
+              license:lgpl3+
+              license:lgpl2.1+ ;for juce-opl
+              (license:non-copyleft ;kiss_fft
+                (string-append "file:///ports-juce5/stereosourceseparation"
+                               "/source/kiss_fft/kiss_fft.c"))
+              license:wtfpl2))))) ;for FFTReal
+
 (define-public dpf-plugins
   (package
     (name "dpf-plugins")