--- > 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(+) 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)))) -- 2.34.0