Toggle quote (25 lines)
> 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.
Toggle quote (2 lines)
> 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.
Toggle quote (2 lines)
> 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?
Toggle quote (3 lines)
> 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.
Toggle quote (3 lines)
> "git" is not a version numberr, I suggest "0" instead.
> Also, why is a ‘random’ git commit used instead of an upstream version?
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.
Toggle quote (2 lines)
> 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.
Toggle quote (3 lines)
> 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(+)
Toggle diff (67 lines)
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