@@ 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")