aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2018-03-04 23:03:26 -0500
committerLudovic Courtès <ludo@gnu.org>2018-03-22 12:31:00 +0100
commit247384d069e2dee6bf1c7d7876490746673c3a16 (patch)
tree28cb63d36cef698a365092e8caccc5567d25cec9
parent6f976d28803512680f5babeddfecbd00866ac03e (diff)
downloadgnu-guix-247384d069e2dee6bf1c7d7876490746673c3a16.tar
gnu-guix-247384d069e2dee6bf1c7d7876490746673c3a16.tar.gz
gnu: Add supercollider.
* gnu/packages/audio.scm (supercollider): New variable. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
-rw-r--r--gnu/packages/audio.scm111
1 files changed, 111 insertions, 0 deletions
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 <me@tobias.gr>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 okapi <okapi@firemail.cc>
+;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; 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")