Subject: [bug#54529] [PATCH v3] Added orca-lang package

From: Christine Lemmer-Webber <[email-masked]>
Date: Fri, 25 Mar 2022 17:55:12 -0400

First: this is awesome.  Second...

Christopher Rodriguez <[email-masked]> 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))))