From 247384d069e2dee6bf1c7d7876490746673c3a16 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sun, 4 Mar 2018 23:03:26 -0500 Subject: gnu: Add supercollider. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/audio.scm (supercollider): New variable. Signed-off-by: Ludovic Courtès --- gnu/packages/audio.scm | 111 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index d35c90537a..9a63beddee 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice ;;; Copyright © 2018 Oleg Pykhalov ;;; Copyright © 2018 okapi +;;; Copyright © 2018 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -62,6 +63,7 @@ #:use-module (gnu packages gnome) #:use-module (gnu packages gnunet) ; libmicrohttpd #:use-module (gnu packages gperf) + #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages ncurses) #:use-module (gnu packages qt) @@ -75,6 +77,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages rdf) #:use-module (gnu packages readline) + #:use-module (gnu packages serialization) #:use-module (gnu packages telephony) #:use-module (gnu packages tls) #:use-module (gnu packages video) @@ -2053,6 +2056,114 @@ supporting silence processing for automatic pause, file splitting, and background file post-processing.") (license license:gpl2+))) +(define-public supercollider + (package + (name "supercollider") + (version "3.9.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/supercollider/supercollider" + "/releases/download/Version-" version + "/SuperCollider-" version "-Source-linux.tar.bz2")) + (sha256 + (base32 + "150fgnjcmb06r3pa3mbsvb4iwnqlimjwdxgbs6p55zz6g8wbln7a")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on" + "-DSC_EL=off") ;scel is packaged individually as + ;emacs-scel. + #:modules ((guix build utils) + (guix build cmake-build-system) + (ice-9 ftw)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'rm-bundled-libs + (lambda _ + ;; The build system doesn't allow us to unbundle the following + ;; libraries. hidapi is also heavily patched and upstream not + ;; actively maintained. + (let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6" + "oscpack_1_1_0" "." ".."))) + (with-directory-excursion "./external_libraries" + (for-each + delete-file-recursively + (scandir "." + (lambda (x) + (and (eq? (stat:type (stat x)) 'directory) + (not (member (basename x) keep-dirs)))))))) + #t)) + ;; Some tests are broken (see: + ;; https://github.com/supercollider/supercollider/issues/3555 and + ;; https://github.com/supercollider/supercollider/issues/1736 + (add-after 'rm-bundled-libs 'disable-broken-tests + (lambda _ + (substitute* "testsuite/supernova/CMakeLists.txt" + (("server_test.cpp") + "") + (("perf_counter_test.cpp") + "")) + (delete-file "testsuite/supernova/server_test.cpp") + (delete-file "testsuite/supernova/perf_counter_test.cpp") + (substitute* "testsuite/CMakeLists.txt" + (("add_subdirectory\\(sclang\\)") + "")) + (delete-file "testsuite/sclang/CMakeLists.txt") + #t)) + ;; TODO: Remove after version 3.9.2 is released + ;; (see: https://github.com/supercollider/supercollider/pull/3558). + (add-after 'disable-broken-tests 'apply-system-yaml-cpp-fix + (lambda _ + ;; cmake: correctly include yaml-cpp (commit f82cec5ae). + (substitute* "editors/sc-ide/CMakeLists.txt" + (("external_libraries/boost\\)$") + "external_libraries/boost) +include_directories(${YAMLCPP_INCLUDE_DIR})") + ((" yaml") + " ${YAMLCPP_LIBRARY}")) + ;; set YAMLCPP_LIBRARY and YAMLCPP_INCLUDE_DIR if not using + ;; system (commit 031922987). + (substitute* "external_libraries/CMakeLists.txt" + (("set_property\\( TARGET yaml PROPERTY FOLDER 3rdparty \\)") + "set_property( TARGET yaml PROPERTY FOLDER 3rdparty ) +set(YAMLCPP_LIBRARY yaml) +set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/\ +external_libraries/yaml-cpp/include)")) + #t))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("qttools" ,qttools))) + (inputs + `(("jack" ,jack-1) + ("libsndfile" ,libsndfile) + ("fftw" ,fftw) + ("libxt" ,libxt) + ("readline" ,readline) ;readline support for sclang's CLI + ("alsa" ,alsa-lib) ;for sclang's MIDI interface + ("eudev" ,eudev) ;for user interactions with devices + ("avahi" ,avahi) ;zeroconf service discovery support + ("icu4c" ,icu4c) + ("boost" ,boost) + ("boost-sync" ,boost-sync) + ("yaml-cpp" ,yaml-cpp) + ("qtbase" ,qtbase) ;IDE support + ("qtwebkit" ,qtwebkit) + ("qtsensors" ,qtsensors) + ("qtdeclarative" ,qtdeclarative) + ("qtlocation" ,qtlocation))) + (home-page "https://github.com/supercollider/supercollider") + (synopsis "Synthesis engine and programming language") + (description "SuperCollider is a synthesis engine (@code{scsynth} or +@code{supernova}) and programming language (@code{sclang}). It can be used +for experimenting with sound synthesis and algorithmic composition. + +SuperCollider requires jackd to be installed in your user profile and your +user must be allowed to access the realtime features of the kernel. Search +for \"realtime\" in the index of the Guix manual to learn how to achieve this +using GuixSD.") + (license license:gpl2+))) + (define-public raul (package (name "raul") -- cgit 1.4.1