diff mbox series

[bug#54529,v3] Added orca-lang package

Message ID 20220323144547.23041-1-yewscion@gmail.com
State Accepted
Headers show
Series [bug#54529,v3] Added orca-lang package | expand

Commit Message

Christopher Rodriguez March 23, 2022, 2:45 p.m. UTC
---

> This is broken when cross-compiling, try 'cc-for-target'.
> Additionally, 'outputs' and 'inputs' are unused here.

> Why?

> Why the capital letters? And why mention ‘Esoteric’ in the synopsis and
> description?  Also, it is not actually a programming language, it is
> more an implementation of a language for producing music.

> This is not texinfo markup.

> Personally I'd go with "orca-music".

> I don't think that abbreviations are necessary here, these's enough
> space here.

> Spacing went wrong here, try running "./pre-inst-env guix style" on the
> package.

> This seems rather confusing naming.  Libraries are put in [...]/lib,
> not [...]/share.  Alsso, I think you could drop the 'dest-' prefix
> here.

> Phases do not need to return #f anymore.

All of the above were amended as written in this version of the patch.

> Why are these phases deleted?

Went back and audited the phases I initially deleted; Two remain
deleted in this patch: configure, and check. This is due to the
package not using a configure script, nor having any 'check' defined
for make.

> Why are these propagated?

I've propagated both alsa-plugins and alsa-plugins:pulseaudio because
this package using portmidi for midi output, and needs to load the
`libasound_module_conf_pulse.so` shared library to interface with MIDI
when using `pulseaudio`. Is there another way to do this without
propagating these?

> Where does this revision come from?  This is the first version of orca
> in Guix.

The revision was in my personal channel; I kept bumping the revision
number because I needed to recompile the package, and `guix build -f`
would assume the package was already compiled. I've reverted it to
revision 1.

> "git" is not a version numberr, I suggest "0" instead.
> Also, why is a ‘random’ git commit used instead of an upstream version?

The upstream package at https://git.sr.ht/~rabbits/orca does not have
any tags, let alone version tags. And as near as I can tell, it does
not use semantic versioning at all. I used "git" because of my
experience with rpm packaging; I have changed this to 0 here, to align
with Guix conventions.

> Is it agpl3-only or agpl3+?

It is actually expat; apparently I neglected to update this field when
defining this package. I have fixed this here.

> If you do this, you'll have to add the native-search-paths of ncurses
> to orca-lang, because of https://issues.guix.gnu.org/issue/22138.

Discussed this with maximed on #guix. When I tried to apply
`(package-native-search-paths ncurses)` it introduced a bunch of
undefined variable errors. This may be due to cyclic imports; either
way, it seems to be an issue outside the scope of this package.

I've chosen to instead explicitly define the same native search path
(namely, for TERMINFO_DIRS) as ncurses in this package, to work around
this bug.

Here's the patch. Let me know what else can be improved.

Particularly, I am worried about the name of the binary. It is
currently installed as `orca`, which is (I believe) the same name
given to the binary for the orca screen reader.

Should I change this? And if so, how?

 gnu/packages/music.scm | 57 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 57 insertions(+)

Comments

Christine Lemmer-Webber March 25, 2022, 9:55 p.m. UTC | #1
First: this is awesome.  Second...

Christopher Rodriguez <yewscion@gmail.com> writes:

> Here's the patch. Let me know what else can be improved.
>
> Particularly, I am worried about the name of the binary. It is
> currently installed as `orca`, which is (I believe) the same name
> given to the binary for the orca screen reader.
>
> Should I change this? And if so, how?

I think you could probably just add a post-install phase that moves the
binary file in its output directory from "orca" to "orca-music"?

Why not give it a try anyway? :)

>  gnu/packages/music.scm | 57 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 57 insertions(+)
>
> diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
> index 9c8203aa80..1240027050 100644
> --- a/gnu/packages/music.scm
> +++ b/gnu/packages/music.scm
> @@ -6879,3 +6879,60 @@ (define-public musikcube
>  streaming audio server.")
>      (home-page "https://musikcube.com/")
>      (license license:bsd-3)))
> +(define-public orca-music
> +  (let ((commit "5ba56ca67baae3db140f8b7a2b2fc46bbac5602f") (revision "1"))
> +    (package
> +      (name "orca-music")
> +      ;; No upstream version numbers; Using commit instead.
> +      (version (git-version "0" revision commit))
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url "https://git.sr.ht/~rabbits/orca")
> +                      (commit commit)))
> +                (file-name (git-file-name name version))
> +                (sha256
> +                 (base32
> +                  "1mnhk68slc6g5y5348vj86pmnz90a385jxvm3463fic79k90gckd"))))
> +      (build-system gnu-build-system)
> +      (arguments
> +       `(#:phases (modify-phases %standard-phases
> +                    (delete 'configure) ;; No autoconf
> +                    (delete 'check) ;; No make check
> +                    (replace 'build
> +                      (lambda* (#:key inputs outputs #:allow-other-keys)
> +                        (setenv "CC"
> +                                ,(cc-for-target))
> +                        (invoke "make" "release")))
> +                    (replace 'install
> +                      (lambda* (#:key outputs #:allow-other-keys)
> +                        (let* ((out (assoc-ref outputs "out")) (dest-bin (string-append
> +                                                                          out
> +                                                                          "/bin"))
> +                               (share (string-append out "/share"))
> +                               (dest-examples (string-append share "/examples"))
> +                               (dest-doc (string-append share "/doc")))
> +                          (install-file "./build/orca" dest-bin)
> +                          (copy-recursively "./examples" dest-examples)
> +                          (install-file "./README.md" dest-doc)))))))
> +      (inputs (list ncurses portmidi))
> +      (native-inputs (list pkg-config))
> +      ;; The below are needed as propagated inputs to let orca interact with
> +      ;; alsa/pulse MIDI.
> +      (propagated-inputs `(("alsa-plugins" ,alsa-plugins) ("alsa-plugins:pulseaudio" ,alsa-plugins
> +                                                           "pulseaudio")))
> +      (native-search-paths (list
> +                             (search-path-specification
> +                              (variable "TERMINFO_DIRS")
> +                              (files '("share/terminfo")))))
> +      (synopsis "musical live-coding environment")
> +      (description
> +       "This is the C implementation of the ORCΛ language and terminal
> +livecoding environment. It's designed to be power efficient. It can handle
> +large files, even if your terminal is small.
> +
> +Orca is not a synthesizer, but a flexible livecoding environment capable of
> +sending MIDI, OSC, and UDP to your audio/visual interfaces like Ableton,
> +Renoise, VCV Rack, or SuperCollider.")
> +      (home-page "https://100r.co/site/orca.html")
> +      (license license:expat))))
diff mbox series

Patch

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 9c8203aa80..1240027050 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -6879,3 +6879,60 @@  (define-public musikcube
 streaming audio server.")
     (home-page "https://musikcube.com/")
     (license license:bsd-3)))
+(define-public orca-music
+  (let ((commit "5ba56ca67baae3db140f8b7a2b2fc46bbac5602f") (revision "1"))
+    (package
+      (name "orca-music")
+      ;; No upstream version numbers; Using commit instead.
+      (version (git-version "0" revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://git.sr.ht/~rabbits/orca")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1mnhk68slc6g5y5348vj86pmnz90a385jxvm3463fic79k90gckd"))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:phases (modify-phases %standard-phases
+                    (delete 'configure) ;; No autoconf
+                    (delete 'check) ;; No make check
+                    (replace 'build
+                      (lambda* (#:key inputs outputs #:allow-other-keys)
+                        (setenv "CC"
+                                ,(cc-for-target))
+                        (invoke "make" "release")))
+                    (replace 'install
+                      (lambda* (#:key outputs #:allow-other-keys)
+                        (let* ((out (assoc-ref outputs "out")) (dest-bin (string-append
+                                                                          out
+                                                                          "/bin"))
+                               (share (string-append out "/share"))
+                               (dest-examples (string-append share "/examples"))
+                               (dest-doc (string-append share "/doc")))
+                          (install-file "./build/orca" dest-bin)
+                          (copy-recursively "./examples" dest-examples)
+                          (install-file "./README.md" dest-doc)))))))
+      (inputs (list ncurses portmidi))
+      (native-inputs (list pkg-config))
+      ;; The below are needed as propagated inputs to let orca interact with
+      ;; alsa/pulse MIDI.
+      (propagated-inputs `(("alsa-plugins" ,alsa-plugins) ("alsa-plugins:pulseaudio" ,alsa-plugins
+                                                           "pulseaudio")))
+      (native-search-paths (list
+                             (search-path-specification
+                              (variable "TERMINFO_DIRS")
+                              (files '("share/terminfo")))))
+      (synopsis "musical live-coding environment")
+      (description
+       "This is the C implementation of the ORCΛ language and terminal
+livecoding environment. It's designed to be power efficient. It can handle
+large files, even if your terminal is small.
+
+Orca is not a synthesizer, but a flexible livecoding environment capable of
+sending MIDI, OSC, and UDP to your audio/visual interfaces like Ableton,
+Renoise, VCV Rack, or SuperCollider.")
+      (home-page "https://100r.co/site/orca.html")
+      (license license:expat))))