all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* [bug#30851] [PATCH] Add SuperCollider, related changes
@ 2018-03-19  2:30 Maxim Cournoyer
  2018-03-19 18:31 ` ng0
  2018-03-22 11:58 ` bug#30851: " Ludovic Courtès
  0 siblings, 2 replies; 8+ messages in thread
From: Maxim Cournoyer @ 2018-03-19  2:30 UTC (permalink / raw)
  To: 30851

[-- Attachment #1: Type: text/plain, Size: 224 bytes --]

Hello!

After some cooperation with upstream to unbundle dependencies and
enable more tests, I think this SuperCollider package is in good shape!

Here's a screenshot to give you an idea of what the included IDE looks
like: 

[-- Attachment #2: SuperCollider.png --]
[-- Type: image/png, Size: 228580 bytes --]

[-- Attachment #3: Type: text/plain, Size: 517 bytes --]


Having a jackd service is not necessary (SuperCollider will start one if
it's not already running), but in case you'd like to have one I've found
the following to work with Shepherd:

--8<---------------cut here---------------start------------->8---
(define jackd
  (make <service>
    #:provides '(jackd)
    #:requires '()
    #:start (make-system-constructor "jackd -d alsa &")
    #:stop (make-system-destructor "pkill jackd")))
--8<---------------cut here---------------end--------------->8---

Thanks,

Maxim


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0001-doc-Add-index-entries-for-realtime-and-jackd-in-the-.patch --]
[-- Type: text/x-patch, Size: 900 bytes --]

From 59da2743aa90c9fb6f4099303f6481c636fc560e Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Sat, 10 Mar 2018 23:09:56 -0500
Subject: [PATCH] doc: Add index entries for realtime and jackd in the manual.

* doc/guix.texi (Base Services): Add realtime and jackd indices to the
`pam-limits-service' service, as the examples shows how they can be
configured.
---
 doc/guix.texi | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/doc/guix.texi b/doc/guix.texi
index 13187f2e8..ff6a24d07 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -10309,6 +10309,8 @@ to add @var{device} to the kernel's entropy pool.  The service will fail if
 @cindex session limits
 @cindex ulimit
 @cindex priority
+@cindex realtime
+@cindex jackd
 @deffn {Scheme Procedure} pam-limits-service [#:limits @code{'()}]
 
 Return a service that installs a configuration file for the
-- 
2.16.1


[-- Attachment #5: 0001-gnu-Add-boost-sync.patch --]
[-- Type: text/x-patch, Size: 2890 bytes --]

From 8f7d8aeeb455038b223a429d3273a4b42299a85d Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Sun, 4 Mar 2018 22:50:04 -0500
Subject: [PATCH 1/3] gnu: Add boost-sync.

* gnu/packages/boost.scm (boost-sync): New variable.
---
 gnu/packages/boost.scm | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)

diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
index f4ba82810..d347674ab 100644
--- a/gnu/packages/boost.scm
+++ b/gnu/packages/boost.scm
@@ -6,6 +6,7 @@
 ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,7 +27,10 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module (guix build utils)
   #:use-module (guix build-system gnu)
+  #:use-module (guix build-system trivial)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages icu4c)
@@ -124,6 +128,38 @@ across a broad spectrum of applications.")
                (base32
                 "1aaw48cmimsskzgiclwn0iifp62a5iw9cbqrhfari876af1828ap"))))))
 
+(define-public boost-sync
+  (let ((commit "c72891d9b90e2ceb466ec859f640cd012b2d8709")
+        (version "1.55")
+        (revision "1"))
+    (package
+      (name "boost-sync")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/boostorg/sync.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "197mp5z048vz5kv1m4v3jm447l2gqsyv0rbfz11dz0ns343ihbyx"))))
+      (build-system trivial-build-system)
+      (arguments
+       `(#:modules ((guix build utils))
+         #:builder
+         (begin
+           (use-modules (guix build utils))
+           (let ((source (assoc-ref %build-inputs "source")))
+             (copy-recursively (string-append source "/include")
+                               (string-append %output "/include"))))))
+      (home-page "https://github.com/boostorg/sync")
+      (synopsis "Boost.Sync library")
+      (description "The Boost.Sync library provides mutexes, semaphores, locks
+and events and other thread related facilities.  Boost.Sync originated from
+Boost.Thread.")
+      (license (license:x11-style "http://www.boost.org/LICENSE_1_0.txt")))))
+
 (define-public mdds
   (package
     (name "mdds")
-- 
2.16.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0002-gnu-yaml-cpp-Update-to-0.6.1.patch --]
[-- Type: text/x-patch, Size: 1299 bytes --]

From 44dc28c15144f8b3e7bc184a3271b34ba8132a40 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Mon, 5 Mar 2018 20:15:35 -0500
Subject: [PATCH 2/3] gnu: yaml-cpp: Update to 0.6.1.

* gnu/packages/serialization.scm (yaml-cpp): Update to 0.6.1.
---
 gnu/packages/serialization.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
index f72116575..7d2e88eac 100644
--- a/gnu/packages/serialization.scm
+++ b/gnu/packages/serialization.scm
@@ -248,7 +248,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
 (define-public yaml-cpp
   (package
     (name "yaml-cpp")
-    (version "0.5.3")
+    (version "0.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append
@@ -256,7 +256,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
                     "yaml-cpp-" version ".tar.gz"))
               (sha256
                (base32
-                "1ck7jk0wjfigrf4cgcjqsir4yp1s6vamhhxhpsgfvs46pgm5pk6y"))))
+                "038ddf771d1zrdfiwqzq2lsjdis1fxbaasbdja2w9f1av3k3gv15"))))
     (build-system cmake-build-system)
     (arguments
      '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
-- 
2.16.1


[-- Attachment #7: 0003-gnu-Add-supercollider.patch --]
[-- Type: text/x-patch, Size: 6823 bytes --]

From 2ca1117e8d6709364362e4c5d39b2568ed8f9db5 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Sun, 4 Mar 2018 23:03:26 -0500
Subject: [PATCH 3/3] gnu: Add supercollider.

* gnu/packages/audio.scm (supercollider): New variable.
---
 gnu/packages/audio.scm | 111 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 111 insertions(+)

diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index d8569096a..79f399eb7 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")
-- 
2.16.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [bug#30851] [PATCH] Add SuperCollider, related changes
  2018-03-19  2:30 [bug#30851] [PATCH] Add SuperCollider, related changes Maxim Cournoyer
@ 2018-03-19 18:31 ` ng0
  2018-03-22 11:58 ` bug#30851: " Ludovic Courtès
  1 sibling, 0 replies; 8+ messages in thread
From: ng0 @ 2018-03-19 18:31 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 30851

Maxim Cournoyer transcribed 314K bytes:
> Hello!
> 
> After some cooperation with upstream to unbundle dependencies and
> enable more tests, I think this SuperCollider package is in good shape!

Cool!
One comment, on Qt: When I packaged this, Ricardo thought we should
not include Qt by default. I think it makes sense to build the Qt enabled
Supercollider in a different package, similar to the change that is currently
pending for octave (Adding qtoctave).

Otherwise I'd say lokks good to me, when the package is split into Qt
and non-Qt.
> Here's a screenshot to give you an idea of what the included IDE looks
> like: 


> 
> Having a jackd service is not necessary (SuperCollider will start one if
> it's not already running), but in case you'd like to have one I've found
> the following to work with Shepherd:
> 
> --8<---------------cut here---------------start------------->8---
> (define jackd
>   (make <service>
>     #:provides '(jackd)
>     #:requires '()
>     #:start (make-system-constructor "jackd -d alsa &")
>     #:stop (make-system-destructor "pkill jackd")))
> --8<---------------cut here---------------end--------------->8---
> 
> Thanks,
> 
> Maxim
> 

> From 59da2743aa90c9fb6f4099303f6481c636fc560e Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Sat, 10 Mar 2018 23:09:56 -0500
> Subject: [PATCH] doc: Add index entries for realtime and jackd in the manual.
> 
> * doc/guix.texi (Base Services): Add realtime and jackd indices to the
> `pam-limits-service' service, as the examples shows how they can be
> configured.
> ---
>  doc/guix.texi | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/doc/guix.texi b/doc/guix.texi
> index 13187f2e8..ff6a24d07 100644
> --- a/doc/guix.texi
> +++ b/doc/guix.texi
> @@ -10309,6 +10309,8 @@ to add @var{device} to the kernel's entropy pool.  The service will fail if
>  @cindex session limits
>  @cindex ulimit
>  @cindex priority
> +@cindex realtime
> +@cindex jackd
>  @deffn {Scheme Procedure} pam-limits-service [#:limits @code{'()}]
>  
>  Return a service that installs a configuration file for the
> -- 
> 2.16.1
> 

> From 8f7d8aeeb455038b223a429d3273a4b42299a85d Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Sun, 4 Mar 2018 22:50:04 -0500
> Subject: [PATCH 1/3] gnu: Add boost-sync.
> 
> * gnu/packages/boost.scm (boost-sync): New variable.
> ---
>  gnu/packages/boost.scm | 36 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
> 
> diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm
> index f4ba82810..d347674ab 100644
> --- a/gnu/packages/boost.scm
> +++ b/gnu/packages/boost.scm
> @@ -6,6 +6,7 @@
>  ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
>  ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
>  ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
> +;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
>  ;;;
>  ;;; This file is part of GNU Guix.
>  ;;;
> @@ -26,7 +27,10 @@
>    #:use-module ((guix licenses) #:prefix license:)
>    #:use-module (guix packages)
>    #:use-module (guix download)
> +  #:use-module (guix git-download)
> +  #:use-module (guix build utils)
>    #:use-module (guix build-system gnu)
> +  #:use-module (guix build-system trivial)
>    #:use-module (gnu packages)
>    #:use-module (gnu packages compression)
>    #:use-module (gnu packages icu4c)
> @@ -124,6 +128,38 @@ across a broad spectrum of applications.")
>                 (base32
>                  "1aaw48cmimsskzgiclwn0iifp62a5iw9cbqrhfari876af1828ap"))))))
>  
> +(define-public boost-sync
> +  (let ((commit "c72891d9b90e2ceb466ec859f640cd012b2d8709")
> +        (version "1.55")
> +        (revision "1"))
> +    (package
> +      (name "boost-sync")
> +      (version (git-version version revision commit))
> +      (source (origin
> +                (method git-fetch)
> +                (uri (git-reference
> +                      (url "https://github.com/boostorg/sync.git")
> +                      (commit commit)))
> +                (file-name (git-file-name name version))
> +                (sha256
> +                 (base32
> +                  "197mp5z048vz5kv1m4v3jm447l2gqsyv0rbfz11dz0ns343ihbyx"))))
> +      (build-system trivial-build-system)
> +      (arguments
> +       `(#:modules ((guix build utils))
> +         #:builder
> +         (begin
> +           (use-modules (guix build utils))
> +           (let ((source (assoc-ref %build-inputs "source")))
> +             (copy-recursively (string-append source "/include")
> +                               (string-append %output "/include"))))))
> +      (home-page "https://github.com/boostorg/sync")
> +      (synopsis "Boost.Sync library")
> +      (description "The Boost.Sync library provides mutexes, semaphores, locks
> +and events and other thread related facilities.  Boost.Sync originated from
> +Boost.Thread.")
> +      (license (license:x11-style "http://www.boost.org/LICENSE_1_0.txt")))))
> +
>  (define-public mdds
>    (package
>      (name "mdds")
> -- 
> 2.16.1
> 

> From 44dc28c15144f8b3e7bc184a3271b34ba8132a40 Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Mon, 5 Mar 2018 20:15:35 -0500
> Subject: [PATCH 2/3] gnu: yaml-cpp: Update to 0.6.1.
> 
> * gnu/packages/serialization.scm (yaml-cpp): Update to 0.6.1.
> ---
>  gnu/packages/serialization.scm | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm
> index f72116575..7d2e88eac 100644
> --- a/gnu/packages/serialization.scm
> +++ b/gnu/packages/serialization.scm
> @@ -248,7 +248,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
>  (define-public yaml-cpp
>    (package
>      (name "yaml-cpp")
> -    (version "0.5.3")
> +    (version "0.6.1")
>      (source (origin
>                (method url-fetch)
>                (uri (string-append
> @@ -256,7 +256,7 @@ that implements both the msgpack and msgpack-rpc specifications.")
>                      "yaml-cpp-" version ".tar.gz"))
>                (sha256
>                 (base32
> -                "1ck7jk0wjfigrf4cgcjqsir4yp1s6vamhhxhpsgfvs46pgm5pk6y"))))
> +                "038ddf771d1zrdfiwqzq2lsjdis1fxbaasbdja2w9f1av3k3gv15"))))
>      (build-system cmake-build-system)
>      (arguments
>       '(#:configure-flags '("-DBUILD_SHARED_LIBS=ON")))
> -- 
> 2.16.1
> 

> From 2ca1117e8d6709364362e4c5d39b2568ed8f9db5 Mon Sep 17 00:00:00 2001
> From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
> Date: Sun, 4 Mar 2018 23:03:26 -0500
> Subject: [PATCH 3/3] gnu: Add supercollider.
> 
> * gnu/packages/audio.scm (supercollider): New variable.
> ---
>  gnu/packages/audio.scm | 111 +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 111 insertions(+)
> 
> diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
> index d8569096a..79f399eb7 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")
> -- 
> 2.16.1
> 


-- 
A88C8ADD129828D7EAC02E52E22F9BBFEE348588
https://n0.is

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#30851: [PATCH] Add SuperCollider, related changes
  2018-03-19  2:30 [bug#30851] [PATCH] Add SuperCollider, related changes Maxim Cournoyer
  2018-03-19 18:31 ` ng0
@ 2018-03-22 11:58 ` Ludovic Courtès
  2018-03-22 12:15   ` [bug#30851] " ng0
  1 sibling, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2018-03-22 11:58 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 30851-done

Hi Maxim,

Pushed, thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#30851] [PATCH] Add SuperCollider, related changes
  2018-03-22 11:58 ` bug#30851: " Ludovic Courtès
@ 2018-03-22 12:15   ` ng0
  2018-03-22 15:53     ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: ng0 @ 2018-03-22 12:15 UTC (permalink / raw)
  To: 30851, ludo, maxim.cournoyer

Ludovic Courtès transcribed 46 bytes:
> Hi Maxim,
> 
> Pushed, thanks!
> 
> Ludo’.

Should we still split it into Qt and non-Qt then later on as I
wrote?
-- 
A88C8ADD129828D7EAC02E52E22F9BBFEE348588
https://n0.is

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#30851] [PATCH] Add SuperCollider, related changes
  2018-03-22 12:15   ` [bug#30851] " ng0
@ 2018-03-22 15:53     ` Ludovic Courtès
  2018-03-22 17:56       ` ng0
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2018-03-22 15:53 UTC (permalink / raw)
  To: ng0; +Cc: 30851

ng0 <ng0@n0.is> skribis:

> Ludovic Courtès transcribed 46 bytes:
>> Hi Maxim,
>> 
>> Pushed, thanks!
>> 
>> Ludo’.
>
> Should we still split it into Qt and non-Qt then later on as I
> wrote?

Oh sorry for overlooking that.

I think you’re right, yes.  That could be done either with a separate
output or with a separate package, whichever is the most convenient.

Could you look into it, Maxim or ng0?

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#30851] [PATCH] Add SuperCollider, related changes
  2018-03-22 15:53     ` Ludovic Courtès
@ 2018-03-22 17:56       ` ng0
  2018-03-23 12:02         ` Maxim Cournoyer
  0 siblings, 1 reply; 8+ messages in thread
From: ng0 @ 2018-03-22 17:56 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 30851, ng0

Ludovic Courtès transcribed 454 bytes:
> ng0 <ng0@n0.is> skribis:
> 
> > Ludovic Courtès transcribed 46 bytes:
> >> Hi Maxim,
> >> 
> >> Pushed, thanks!
> >> 
> >> Ludo’.
> >
> > Should we still split it into Qt and non-Qt then later on as I
> > wrote?
> 
> Oh sorry for overlooking that.

No problem.

> I think you’re right, yes.  That could be done either with a separate
> output or with a separate package, whichever is the most convenient.
> 
> Could you look into it, Maxim or ng0?
> 
> Thanks,
> Ludo’.

Splitting is what works best here in my opinion. You could take a look at the
open patch for adding qtoctave. People who have to build the variant without
Qt don't have to pull in Qt only to throw it into an output they don't want.
-- 
A88C8ADD129828D7EAC02E52E22F9BBFEE348588
https://n0.is

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#30851] [PATCH] Add SuperCollider, related changes
  2018-03-22 17:56       ` ng0
@ 2018-03-23 12:02         ` Maxim Cournoyer
  2018-03-24 17:02           ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Maxim Cournoyer @ 2018-03-23 12:02 UTC (permalink / raw)
  To: ng0; +Cc: 30851

Hello!

ng0 <ng0@n0.is> writes:

> Ludovic Courtès transcribed 454 bytes:
>> ng0 <ng0@n0.is> skribis:
>> 
>> > Ludovic Courtès transcribed 46 bytes:
>> >> Hi Maxim,
>> >> 
>> >> Pushed, thanks!
>> >> 
>> >> Ludo’.
>> >

Thanks for pushing it!

>> > Should we still split it into Qt and non-Qt then later on as I
>> > wrote?
>> 
>> Oh sorry for overlooking that.
>
> No problem.
>
>> I think you’re right, yes.  That could be done either with a separate
>> output or with a separate package, whichever is the most convenient.
>> 
>> Could you look into it, Maxim or ng0?
>> 
>> Thanks,
>> Ludo’.
>
> Splitting is what works best here in my opinion. You could take a look at the
> open patch for adding qtoctave. People who have to build the variant without
> Qt don't have to pull in Qt only to throw it into an output they don't want.

For splitting to be "cheaper" (in terms of space and computation) than
using a separate output, the origin sources would have to be split into
core/sc-ide parts and be able to build the resulting parts distinctly.

I have to check, but I don't expect the IDE to be buildable reusing
supercollider-core as an input; I'd expect it to depend on many source
files in the project. If so, I'll opt for multiple outputs to spare the
build farm from recompiling/testing the same thing in double, otherwise
I'll opt for splitting.

This might take some time to happen as I have another patch set which is
of higher priority, so anyone should feel free to try beating me to it.

Thanks for reviewing!

Maxim

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [bug#30851] [PATCH] Add SuperCollider, related changes
  2018-03-23 12:02         ` Maxim Cournoyer
@ 2018-03-24 17:02           ` Ludovic Courtès
  0 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2018-03-24 17:02 UTC (permalink / raw)
  To: Maxim Cournoyer; +Cc: 30851, ng0

Hi Maxim,

Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:

> For splitting to be "cheaper" (in terms of space and computation) than
> using a separate output, the origin sources would have to be split into
> core/sc-ide parts and be able to build the resulting parts distinctly.
>
> I have to check, but I don't expect the IDE to be buildable reusing
> supercollider-core as an input; I'd expect it to depend on many source
> files in the project. If so, I'll opt for multiple outputs to spare the
> build farm from recompiling/testing the same thing in double, otherwise
> I'll opt for splitting.

Yeah, this sounds like the right criterion to me.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-03-24 17:05 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-19  2:30 [bug#30851] [PATCH] Add SuperCollider, related changes Maxim Cournoyer
2018-03-19 18:31 ` ng0
2018-03-22 11:58 ` bug#30851: " Ludovic Courtès
2018-03-22 12:15   ` [bug#30851] " ng0
2018-03-22 15:53     ` Ludovic Courtès
2018-03-22 17:56       ` ng0
2018-03-23 12:02         ` Maxim Cournoyer
2018-03-24 17:02           ` Ludovic Courtès

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.