diff mbox series

[bug#40468,3/3] gnu: Add shiru-lv2.

Message ID e43d20b120dd66887e587ac9d157dd7d7df4e411.camel@zrythm.org
State Accepted
Headers show
Series None | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job

Commit Message

Alexandros Theodotou April 6, 2020, 9:28 p.m. UTC
Reattaching the patch with versioning according to 
https://guix.gnu.org/manual/en/html_node/Version-Numbers.html#Version-Numbers

Comments

Leo Famulari April 7, 2020, 6:25 p.m. UTC | #1
On Mon, Apr 06, 2020 at 10:28:35PM +0100, Alexandros Theodotou wrote:
> * gnu/packages/music.scm (shiru-lv2): New variable.

Thanks!

> +(define-public shiru-lv2
> +  (let ((commit "08853f99140012234649e67e5647906fda74f6cc")
> +        (revision "1"))
> +    (package/inherit dragonfly-reverb

If inheriting, we should use the regular inherit procedure, like this:

(package
  (inherit dragonfly-reverb)
  ...)

package/inherit is for special cases related to grafting and replacement
packages. [0]

Anyways, it looks like the inherited fields are build-system,
native-inputs, and arguments. Is the idea that there is some build
complication common to the LV2 plugins that we don't want to copy
around? Maybe we could make a build system for them.

Does it work to inherit the custom install phase from dragonfly-reverb?
It seems like the install-file procedures would not apply here.

What do you think? Sorry if I've missed something.

[0]
https://guix.gnu.org/manual/en/html_node/Security-Updates.html
Alexandros Theodotou April 7, 2020, 7:09 p.m. UTC | #2
Hi Leo,

> package/inherit is for special cases related to grafting and
> replacement
> packages. [0]

Thank you, I initially thought it was just a shorthand.

> Is the idea that there is some build
> complication common to the LV2 plugins that we don't want to copy
> around? Maybe we could make a build system for them.
>
> Does it work to inherit the custom install phase from dragonfly-
> reverb?
> It seems like the install-file procedures would not apply here.

Plugins that use the DISTRHO plugin framework (
https://github.com/DISTRHO/DPF) use the same build/install procedure,
unless the author makes changes to the Makefiles (like in the case of
the zam-plugins package). Dragonfly reverb and shiru plugins both use
DPF as-is, so the build/install procedures are exactly the same - built
plugins will be produced inside "bin" as binaries, lv2 plugins and vst
plugins.

There are more DPF-based plugins I plan to package that leave the the
DPF Makefiles as-is so I thought inheriting from dragonfly-reverb would
be a nice way to do it.

Thanks,
Alex

On Tue, 2020-04-07 at 14:25 -0400, Leo Famulari wrote:
> On Mon, Apr 06, 2020 at 10:28:35PM +0100, Alexandros Theodotou wrote:
> > * gnu/packages/music.scm (shiru-lv2): New variable.
> 
> Thanks!
> 
> > +(define-public shiru-lv2
> > +  (let ((commit "08853f99140012234649e67e5647906fda74f6cc")
> > +        (revision "1"))
> > +    (package/inherit dragonfly-reverb
> 
> If inheriting, we should use the regular inherit procedure, like
> this:
> 
> (package
>   (inherit dragonfly-reverb)
>   ...)
> 
> package/inherit is for special cases related to grafting and
> replacement
> packages. [0]
> 
> Anyways, it looks like the inherited fields are build-system,
> native-inputs, and arguments. Is the idea that there is some build
> complication common to the LV2 plugins that we don't want to copy
> around? Maybe we could make a build system for them.
> 
> Does it work to inherit the custom install phase from dragonfly-
> reverb?
> It seems like the install-file procedures would not apply here.
> 
> What do you think? Sorry if I've missed something.
> 
> [0]
> https://guix.gnu.org/manual/en/html_node/Security-Updates.html
Leo Famulari April 7, 2020, 7:41 p.m. UTC | #3
On Tue, Apr 07, 2020 at 08:09:31PM +0100, Alexandros Theodotou wrote:
> Plugins that use the DISTRHO plugin framework (
> https://github.com/DISTRHO/DPF) use the same build/install procedure,
> unless the author makes changes to the Makefiles (like in the case of
> the zam-plugins package). Dragonfly reverb and shiru plugins both use
> DPF as-is, so the build/install procedures are exactly the same - built
> plugins will be produced inside "bin" as binaries, lv2 plugins and vst
> plugins.
> 
> There are more DPF-based plugins I plan to package that leave the the
> DPF Makefiles as-is so I thought inheriting from dragonfly-reverb would
> be a nice way to do it.

Okay, feel free to write the packages in whatever way works for you.

> > Does it work to inherit the custom install phase from dragonfly-
> > reverb?
> > It seems like the install-file procedures would not apply here.

However, I tried building it from the patch and the install phase does
fail there.
Alexandros Theodotou April 7, 2020, 8:04 p.m. UTC | #4
> > > Does it work to inherit the custom install phase from dragonfly-
> > > reverb?
> > > It seems like the install-file procedures would not apply here.
> 
> However, I tried building it from the patch and the install phase
> does
> fail there.

Did you build it after applying the previous 2 patches? 
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40466 and
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40467

This is supposed to be merged after those changes. The first patch
(40466) changes the install procedure in dragonfly-reverb, which is
inherited here.
Leo Famulari April 7, 2020, 8:08 p.m. UTC | #5
On Tue, Apr 07, 2020 at 09:04:40PM +0100, Alexandros Theodotou wrote:
> > > > Does it work to inherit the custom install phase from dragonfly-
> > > > reverb?
> > > > It seems like the install-file procedures would not apply here.
> > 
> > However, I tried building it from the patch and the install phase
> > does
> > fail there.
> 
> Did you build it after applying the previous 2 patches? 
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40466 and
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40467
> 
> This is supposed to be merged after those changes. The first patch
> (40466) changes the install procedure in dragonfly-reverb, which is
> inherited here.

Ah, no, I didn't realize they were related.

It's annoyingly tricky, but patches that depend on each should be in the
same bug ticket. This can be accomplished by first sending an intro
message to get a bug number, then sending the patch series to e.g.
<NNN@debbugs.gnu.org>.

I'll merge them now.
Alexandros Theodotou April 7, 2020, 8:14 p.m. UTC | #6
> It's annoyingly tricky, but patches that depend on each should be in
> the
> same bug ticket. This can be accomplished by first sending an intro
> message to get a bug number, then sending the patch series to e.g.
> <NNN@debbugs.gnu.org>.
> 
> I'll merge them now.

Ah okay, thank you for letting me know. I'll send such patches in the
same ticket from now on.

Thanks,
Alex
Leo Famulari April 8, 2020, 3:41 p.m. UTC | #7
On Tue, Apr 07, 2020 at 09:04:40PM +0100, Alexandros Theodotou wrote:
> This is supposed to be merged after those changes. The first patch
> (40466) changes the install procedure in dragonfly-reverb, which is
> inherited here.

In general, I think that using syntactic inheritance to factorize build
phases is not the right way to go here. It can cause a big headache
later when the time comes to adjust things, and it removes the
advantages of Guix tools such as `guix graph` and `guix refresh`.

I think the better options are to create a new lv2-build-system that
inherits from gnu-build-system and replaces the install phase, or to
just copy and paste the code around. It depends on how many of these
packages we plan to add.

Let me know if you need help with any of that! The font-build-system is
a concise example of making a new build system based on the
gnu-build-system.
Alexandros Theodotou April 8, 2020, 3:58 p.m. UTC | #8
I'd say the eventual amount of packages that would use such a build
system are between 5-10. Should I go ahead and make a dpf-build-system
or do you think we should just copy the code around since it's not that
many packages?

By the way, we used inheritance in the case of other packages such as
gx-* and vl1-emulator/regrader/fogpad, although those are from the same
upstream so maybe it's reasonable there.

On Wed, 2020-04-08 at 11:41 -0400, Leo Famulari wrote:
> On Tue, Apr 07, 2020 at 09:04:40PM +0100, Alexandros Theodotou wrote:
> > This is supposed to be merged after those changes. The first patch
> > (40466) changes the install procedure in dragonfly-reverb, which is
> > inherited here.
> 
> In general, I think that using syntactic inheritance to factorize
> build
> phases is not the right way to go here. It can cause a big headache
> later when the time comes to adjust things, and it removes the
> advantages of Guix tools such as `guix graph` and `guix refresh`.
> 
> I think the better options are to create a new lv2-build-system that
> inherits from gnu-build-system and replaces the install phase, or to
> just copy and paste the code around. It depends on how many of these
> packages we plan to add.
> 
> Let me know if you need help with any of that! The font-build-system
> is
> a concise example of making a new build system based on the
> gnu-build-system.
diff mbox series

Patch

From 83ba8ba27d6b6f75eb8cbcbcdf19369903602249 Mon Sep 17 00:00:00 2001
From: Alexandros Theodotou <alex@zrythm.org>
Date: Mon, 6 Apr 2020 22:26:45 +0100
Subject: [PATCH 3/3] gnu: Add shiru-lv2.

* gnu/packages/music.scm (shiru-lv2): New variable.
---
 gnu/packages/music.scm | 32 ++++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index e2a3d84572..78a799a53a 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -5387,3 +5387,35 @@  filtered, pitch shifted and ultimately disintegrated.  This is an unofficial
 port of the Regrader plugin created by Igorski.  It is available as an LV2
 plugin and a standalone JACK application.")
     (license license:expat)))
+
+(define-public shiru-lv2
+  (let ((commit "08853f99140012234649e67e5647906fda74f6cc")
+        (revision "1"))
+    (package/inherit dragonfly-reverb
+      (name "shiru-lv2")
+      (version (git-version "0.0" revision commit))
+      (source
+        (origin
+          (method git-fetch)
+          (uri (git-reference
+                 (url "https://github.com/linuxmao-org/shiru-plugins.git")
+                 (commit commit)
+                 ;; Bundles a specific commit of the DISTRHO plugin framework.
+                 (recursive? #t)))
+          (file-name (git-file-name name version))
+          (sha256
+            (base32
+              "00rf6im3rhg98h60sgl1r2s37za5vr5h14pybwi07h8zbc8mi6fm"))))
+      (inputs
+        `(("cairo", cairo)
+          ("glu", glu)
+          ("jack", jack-1)
+          ("lv2", lv2)
+          ("mesa", mesa)
+          ("pango", pango)))
+      (synopsis "Audio plugin collection")
+      (description "Shiru plugins is a collection of audio plugins created
+  by Shiru, ported to LV2 by the Linux MAO project using the DISTRHO plugin
+  framework.")
+      (home-page "http://shiru.untergrund.net/software.shtml")
+      (license license:wtfpl2))))
-- 
2.26.0