gnu: Remove extempore.

* gnu/packages/music.scm (extempore): Delete variable.

Change-Id: Ifd801d299c429f01dc20c1e0292243c7f7a6fb43
This commit is contained in:
Andreas Enge 2025-09-19 21:36:06 +02:00
parent 11dcc36d5e
commit 6ff714dfb1
No known key found for this signature in database
GPG key ID: F7D5C9BF765C61E3

View file

@ -1150,224 +1150,6 @@ It supports MP3, MP2, MP4/AAC, FLAC, Ogg Opus, Ogg Speex, Ogg Vorbis,
MusePack, Monkey's Audio, and WavPack files.")
(license license:gpl2+)))
(define-public extempore
(package
(name "extempore")
(version "0.8.9")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/digego/extempore")
(commit (string-append "v" version))))
(sha256
(base32
"16i12zl3g1zpx6lhg5pg821xirdf9rxx5m11b68inf83wn6hknhb"))
(file-name (git-file-name name version))
(patches (search-patches
"extempore-unbundle-external-dependencies.patch"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove bundled sources.
(map delete-file-recursively
'("src/pcre"))
#t))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags (list "-DJACK=ON"
"-DPACKAGE=ON"
(string-append "-DEXT_SHARE_DIR="
(assoc-ref %outputs "out")
"/share"))
#:modules ((ice-9 match)
(guix build cmake-build-system)
(guix build utils))
#:phases
(modify-phases %standard-phases
(add-after 'build 'build-aot-libs
(lambda _
(for-each (lambda (target)
(invoke "make" target))
'("aot_base"
"aot_math"
"aot_instruments"))
#t))
(add-after 'unpack 'patch-install-locations
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "CMakeLists.txt"
(("EXT_SHARE_DIR=\"\\.\"\\)")
"EXT_SHARE_DIR=\"${EXT_SHARE_DIR}/extempore\")")
(("DESTINATION \"\\.\"\\)") "DESTINATION bin)")
(("DESTINATION \"\\.\"\n") "DESTINATION share/extempore\n"))
#t))
(add-after 'unpack 'patch-directories
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "extras/extempore.el"
(("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)")
(string-append "(runtime-directory \""
(assoc-ref outputs "out")
"/share/extempore/runtime"
"\")")))
#t))
(add-after 'unpack 'link-with-additional-libs
(lambda _
;; The executable must be linked with libffi and zlib.
(substitute* "CMakeLists.txt"
(("target_link_libraries\\(extempore PRIVATE dl" line)
(string-append line " ffi z")))
#t))
;; FIXME: All examples that are used as tests segfault for some
;; unknown reason.
(add-after 'unpack 'disable-broken-tests
(lambda _
(substitute* "CMakeLists.txt"
(("extempore_add_example_as_test\\(.*") ""))
#t))
(add-after 'unpack 'hardcode-external-lib-paths
(lambda* (#:key inputs #:allow-other-keys)
(use-modules (ice-9 match))
(for-each
(match-lambda
((file-name lib pkg-name)
(substitute* (string-append "libs/external/" file-name ".xtm")
((lib) (string-append (assoc-ref inputs pkg-name)
"/lib/" lib)))))
'(("assimp" "libassimp.so" "assimp")
("portmidi" "libportmidi.so" "portmidi")
("sndfile" "libsndfile.so" "libsndfile")
("fft" "libkiss_fft.so" "kiss-fft")
("stb_image" "libstb_image.so" "stb-image")
("nanovg" "libnanovg.so" "nanovg")
("glext" "libGL.so" "mesa")
("glfw3" "libglfw.so" "glfw")
("gl/glcore-directbind" "libGL.so" "mesa")
("gl/glcompat-directbind" "libGL.so" "mesa")))
#t))
(add-after 'hardcode-external-lib-paths 'hardcode-contrib-lib-paths
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "libs/contrib/rtmidi.xtm"
(("librtmidic.so")
(search-input-file inputs "lib/librtmidi.so")))))
(add-after 'unpack 'use-own-llvm
(lambda* (#:key inputs #:allow-other-keys)
(setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm"))
;; Our LLVM builds shared libraries, so Extempore should use
;; those.
(substitute* "CMakeLists.txt"
(("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY"))
#t))
(add-after 'unpack 'fix-aot-compilation
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "CMakeLists.txt"
;; Extempore needs to be told where the runtime is to be found.
;; While we're at it we disable automatic tuning for a specific
;; CPU to make binary substitution possible.
(("COMMAND extempore" prefix)
(string-append prefix " --sharedir " (getcwd)
" --mcpu=generic --attr=none")))
#t))
(add-after 'unpack 'symlink-assets
(lambda* (#:key inputs #:allow-other-keys)
(let ((assets (assoc-ref inputs "extempore-assets")))
(symlink assets "assets")
#t))))))
(inputs
`(("llvm"
,(package
(inherit llvm-3.8)
(name "llvm-for-extempore")
(source
(origin
(method url-fetch)
(uri (string-append "http://extempore.moso.com.au/extras/"
"llvm-3.8.0.src-patched-for-extempore.tar.xz"))
(sha256
(base32
"1svdl6fxn8l01ni8mpm0bd5h856ahv3h9sdzgmymr6fayckjvqzs"))))))
("extempore-assets"
,(let ((commit "0c9f32c18169b3fbc24bc1ad66283125b54a0c85")
(revision "0")
(version "0.0.0"))
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/extemporelang/extempore-assets")
(commit commit)))
(file-name (git-file-name "extempore-assets"
(git-version version revision commit)))
(sha256
(base32 "1pxmcbngd9qx8m71d5rfsmf4h31jnsnd3wjh8vb0rwskif22xz8l")))))
("libffi" ,libffi)
("jack" ,jack-1)
("libsndfile" ,libsndfile)
("rtmidi" ,rtmidi-4.0)
("glfw" ,glfw)
("apr" ,apr)
("stb-image"
,(let ((revision "1")
(commit "152a250a702bf28951bb0220d63bc0c99830c498"))
(package
(inherit stb-image)
(name "stb-image-for-extempore")
(version (git-version "0" revision commit))
(source
(origin (method git-fetch)
(uri (git-reference
(url "https://github.com/extemporelang/stb")
(commit commit)))
(sha256
(base32
"0y0aa20pj9311x2ii06zg8xs34idg14hfgldqc5ymizc6cf1qiqv"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments `(#:tests? #f)) ;no tests included
(inputs '()))))
("kiss-fft" ,kiss-fft-for-extempore)
("nanovg" ,nanovg-for-extempore)
("portmidi"
,(let ((version "217")
(revision "0")
(commit "8602f548f71daf5ef638b2f7d224753400cb2158"))
(package
(inherit portmidi)
(name "portmidi-for-extempore")
(version (git-version version revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/extemporelang/portmidi")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1qidzl1s3kzhczzm96rcd2ppn27a97k2axgfh1zhvyf0s52d7m4w"))))
(build-system cmake-build-system)
(arguments `(#:tests? #f)) ;no tests
(native-inputs '()))))
("assimp" ,assimp)
("alsa-lib" ,alsa-lib)
("portaudio" ,portaudio)
("mesa" ,mesa)
("pcre" ,pcre)
("zlib" ,zlib)))
(native-inputs
`(("perl" ,perl)
("emacs" ,emacs-no-x)))
;; Extempore refuses to build on architectures other than x86_64
(supported-systems '("x86_64-linux"))
(home-page "https://github.com/digego/extempore")
(synopsis "Programming environment for live coding of multimedia")
(description
"Extempore is a programming language and runtime environment designed
with live programming in mind. It supports interactive programming in a REPL
style, compiling and binding code just-in-time. Although Extempore has its
roots in 'live coding' of audiovisual media art, it is suitable for any task
domain where dynamic run-time modifiability and good numerical performance are
required. Extempore also has strong timing and concurrency semantics, which
are helpful when working in problem spaces where timing is important (such as
audio and video).")
(license license:bsd-2)))
(define-public flacon
(package
(name "flacon")