Put in earplugs
This commit is contained in:
parent
c2730721bb
commit
e9ab173831
1 changed files with 323 additions and 0 deletions
323
channel/zzkt/packages/supercollider.scm
Normal file
323
channel/zzkt/packages/supercollider.scm
Normal file
|
@ -0,0 +1,323 @@
|
||||||
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
|
;;; Copyright © 2023 nik gaffney <nik@fo.am>
|
||||||
|
;;;
|
||||||
|
;;; This file is not (yet) part of GNU Guix.
|
||||||
|
;;;
|
||||||
|
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||||
|
;;; under the terms of the GNU General Public License as published by
|
||||||
|
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||||
|
;;; your option) any later version.
|
||||||
|
;;;
|
||||||
|
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||||
|
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;;; GNU General Public License for more details.
|
||||||
|
;;;
|
||||||
|
;;; You should have received a copy of the GNU General Public License
|
||||||
|
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
|
||||||
|
;; add option for cli only version -> -D SC_QT=OFF
|
||||||
|
|
||||||
|
;; maybe as variant?
|
||||||
|
;; https://guix.gnu.org/manual/en/html_node/Defining-Package-Variants.html
|
||||||
|
|
||||||
|
;; or multiple outputs ->
|
||||||
|
;; https://guix.gnu.org/manual/en/html_node/Packages-with-Multiple-Outputs.html
|
||||||
|
|
||||||
|
;; non GUI version of standard build can be modified via env
|
||||||
|
;; % export QT_QPA_PLATFORM=offscreen
|
||||||
|
;; % sclang
|
||||||
|
|
||||||
|
(define-module (zzkt packages supercollider)
|
||||||
|
#:use-module (ice-9 regex)
|
||||||
|
#:use-module (guix utils)
|
||||||
|
#:use-module ((guix licenses)
|
||||||
|
#:prefix license:)
|
||||||
|
#:use-module (guix packages)
|
||||||
|
#:use-module (guix download)
|
||||||
|
#:use-module (guix gexp)
|
||||||
|
#:use-module (guix git-download)
|
||||||
|
#:use-module (guix build-system cmake)
|
||||||
|
#:use-module (guix build-system trivial))
|
||||||
|
|
||||||
|
|
||||||
|
;; via https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/audio.scm
|
||||||
|
|
||||||
|
(define-public supercollider-next
|
||||||
|
(package
|
||||||
|
(name "supercollider-next")
|
||||||
|
(version "3.13.0")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/supercollider/supercollider")
|
||||||
|
(commit (string-append "Version-" version))
|
||||||
|
;; for nova-simd, nova-tt, hidapi, TLSF, oscpack
|
||||||
|
(recursive? #t)))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1dkpnaly4m2j41ypy7xj5m2yhbl4ykw3vbnam345z4dk6qhyj9b1"))
|
||||||
|
(modules '((guix build utils)
|
||||||
|
(ice-9 ftw)))
|
||||||
|
(snippet
|
||||||
|
;; 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)))))))
|
||||||
|
;; To find the Guix provided ableton-link library.
|
||||||
|
(substitute* "lang/CMakeLists.txt"
|
||||||
|
(("include\\(\\.\\./external_libraries/link/\
|
||||||
|
AbletonLinkConfig\\.cmake\\)")
|
||||||
|
"find_package(AbletonLink NAMES AbletonLink ableton-link \
|
||||||
|
link REQUIRED)"))))))
|
||||||
|
(build-system cmake-build-system)
|
||||||
|
(outputs
|
||||||
|
'("out" ;core language
|
||||||
|
"ide")) ;qt ide
|
||||||
|
(arguments
|
||||||
|
(list
|
||||||
|
#:configure-flags
|
||||||
|
#~(list "-DSYSTEM_BOOST=ON"
|
||||||
|
"-DSYSTEM_YAMLCPP=ON"
|
||||||
|
"-DSC_QT=ON"
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DFORTIFY=ON"
|
||||||
|
"-DLIBSCSYNTH=ON"
|
||||||
|
"-DSC_EL=OFF") ;scel is packaged individually as emacs-scel
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
;; HOME must be defined otherwise supercollider throws a "ERROR:
|
||||||
|
;; Primitive '_FileMkDir' failed." error when generating the doc.
|
||||||
|
;; The graphical tests also hang without it.
|
||||||
|
(add-after 'unpack 'set-home-directory
|
||||||
|
(lambda _
|
||||||
|
(setenv "HOME" (getcwd))))
|
||||||
|
(add-after 'unpack 'patch-scclass-dir
|
||||||
|
(lambda _
|
||||||
|
(let* ((scclass-dir
|
||||||
|
(string-append #$output
|
||||||
|
"/share/SuperCollider/SCClassLibrary")))
|
||||||
|
(substitute* "lang/LangSource/SC_LanguageConfig.cpp"
|
||||||
|
(((string-append
|
||||||
|
"SC_Filesystem::instance\\(\\)\\.getDirectory"
|
||||||
|
"\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
|
||||||
|
(string-append "Path(\"" scclass-dir "\")"))))))
|
||||||
|
(add-after 'patch-scclass-dir 'fix-struct-SOUNDFILE-tag
|
||||||
|
(lambda _
|
||||||
|
(display (getcwd)) (newline)
|
||||||
|
(substitute* "include/plugin_interface/SC_SndBuf.h"
|
||||||
|
(("SNDFILE_tag")
|
||||||
|
"sf_private_tag"))))
|
||||||
|
(add-before 'build 'prepare-x
|
||||||
|
(lambda _
|
||||||
|
(system "Xvfb &")
|
||||||
|
(setenv "DISPLAY" ":0")))
|
||||||
|
(add-before 'install 'install-ide
|
||||||
|
(lambda _
|
||||||
|
(let* ((ide #$output:ide)
|
||||||
|
(scide "editors/sc-ide/scide"))
|
||||||
|
(install-file scide
|
||||||
|
(string-append ide "/bin"))
|
||||||
|
(delete-file scide)))))))
|
||||||
|
(native-inputs
|
||||||
|
(list ableton-link pkg-config qttools-5 xorg-server-for-tests))
|
||||||
|
(inputs (list jack-1
|
||||||
|
libsndfile
|
||||||
|
fftw
|
||||||
|
libxt
|
||||||
|
readline ;readline support for sclang's CLI
|
||||||
|
alsa-lib ;for sclang's MIDI interface
|
||||||
|
eudev ;for user interactions with devices
|
||||||
|
avahi ;zeroconf service discovery support
|
||||||
|
icu4c
|
||||||
|
boost
|
||||||
|
boost-sync
|
||||||
|
yaml-cpp
|
||||||
|
python-wrapper ;there were warnings in the build process
|
||||||
|
ruby ;there were warnings in the build process
|
||||||
|
qtbase-5
|
||||||
|
qtdeclarative-5
|
||||||
|
qtsvg-5
|
||||||
|
qtwebchannel-5
|
||||||
|
qtwebsockets-5))
|
||||||
|
(propagated-inputs ;to get native-search-path
|
||||||
|
(list qtwebengine-5))
|
||||||
|
(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 Guix System.")
|
||||||
|
(license license:gpl2+)))
|
||||||
|
|
||||||
|
;; variants
|
||||||
|
|
||||||
|
(define-public supercollider-cli
|
||||||
|
(package
|
||||||
|
(name "supercollider-cli")
|
||||||
|
(inherit supercollider)
|
||||||
|
|
||||||
|
;; remove qt inputs
|
||||||
|
(inputs (modify-inputs
|
||||||
|
(package-inputs supercollider)
|
||||||
|
(delete "qtbase-5"
|
||||||
|
"qtdeclarative-5"
|
||||||
|
"qtsvg-5"
|
||||||
|
"qtwebchannel-5"
|
||||||
|
"qtwebsockets-5")))
|
||||||
|
;; use slightly modified build options
|
||||||
|
(arguments
|
||||||
|
(list
|
||||||
|
#:configure-flags
|
||||||
|
#~(list "-DSYSTEM_BOOST=ON"
|
||||||
|
"-DSYSTEM_YAMLCPP=ON"
|
||||||
|
;; CLI only. buiild without Qt and IDE
|
||||||
|
"-DSC_QT=OFF"
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DFORTIFY=ON"
|
||||||
|
"-DLIBSCSYNTH=ON"
|
||||||
|
"-DSC_EL=OFF")
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
;; HOME must be defined otherwise supercollider throws a "ERROR:
|
||||||
|
;; Primitive '_FileMkDir' failed." error when generating the doc.
|
||||||
|
;; The graphical tests also hang without it.
|
||||||
|
(add-after 'unpack 'set-home-directory
|
||||||
|
(lambda _
|
||||||
|
(setenv "HOME" (getcwd))))
|
||||||
|
(add-after 'unpack 'patch-scclass-dir
|
||||||
|
(lambda _
|
||||||
|
(let* ((scclass-dir
|
||||||
|
(string-append #$output
|
||||||
|
"/share/SuperCollider/SCClassLibrary")))
|
||||||
|
(substitute* "lang/LangSource/SC_LanguageConfig.cpp"
|
||||||
|
(((string-append
|
||||||
|
"SC_Filesystem::instance\\(\\)\\.getDirectory"
|
||||||
|
"\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
|
||||||
|
(string-append "Path(\"" scclass-dir "\")"))))))
|
||||||
|
(add-after 'patch-scclass-dir 'fix-struct-SOUNDFILE-tag
|
||||||
|
(lambda _
|
||||||
|
(display (getcwd)) (newline)
|
||||||
|
(substitute* "include/plugin_interface/SC_SndBuf.h"
|
||||||
|
(("SNDFILE_tag")
|
||||||
|
"sf_private_tag")))))))
|
||||||
|
(synopsis "Synthesis engine and programming language. CLI version without Qt GUI")))
|
||||||
|
|
||||||
|
;; non-inherted variant
|
||||||
|
|
||||||
|
(define-public supercollider-cli-2
|
||||||
|
(package
|
||||||
|
(name "supercollider-cli")
|
||||||
|
(version "3.13.0")
|
||||||
|
(source
|
||||||
|
(origin
|
||||||
|
(method git-fetch)
|
||||||
|
(uri (git-reference
|
||||||
|
(url "https://github.com/supercollider/supercollider")
|
||||||
|
(commit (string-append "Version-" version))
|
||||||
|
(recursive? #t)))
|
||||||
|
(file-name (git-file-name name version))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1dkpnaly4m2j41ypy7xj5m2yhbl4ykw3vbnam345z4dk6qhyj9b1"))
|
||||||
|
(modules '((guix build utils)
|
||||||
|
(ice-9 ftw)))
|
||||||
|
(snippet
|
||||||
|
;; 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)))))))
|
||||||
|
;; To find the Guix provided ableton-link library.
|
||||||
|
(substitute* "lang/CMakeLists.txt"
|
||||||
|
(("include\\(\\.\\./external_libraries/link/\
|
||||||
|
AbletonLinkConfig\\.cmake\\)")
|
||||||
|
"find_package(AbletonLink NAMES AbletonLink ableton-link \
|
||||||
|
link REQUIRED)"))))))
|
||||||
|
(build-system cmake-build-system)
|
||||||
|
(outputs
|
||||||
|
'("out"))
|
||||||
|
(arguments
|
||||||
|
(list
|
||||||
|
#:configure-flags
|
||||||
|
#~(list "-DSYSTEM_BOOST=ON"
|
||||||
|
"-DSYSTEM_YAMLCPP=ON"
|
||||||
|
;; CLI only. buiild without Qt and IDE
|
||||||
|
"-DSC_QT=OFF"
|
||||||
|
"-DCMAKE_BUILD_TYPE=Release"
|
||||||
|
"-DFORTIFY=ON"
|
||||||
|
"-DLIBSCSYNTH=ON"
|
||||||
|
"-DSC_EL=OFF")
|
||||||
|
#:phases
|
||||||
|
#~(modify-phases %standard-phases
|
||||||
|
;; HOME must be defined otherwise supercollider throws a "ERROR:
|
||||||
|
;; Primitive '_FileMkDir' failed." error when generating the doc.
|
||||||
|
;; The graphical tests also hang without it.
|
||||||
|
(add-after 'unpack 'set-home-directory
|
||||||
|
(lambda _
|
||||||
|
(setenv "HOME" (getcwd))))
|
||||||
|
(add-after 'unpack 'patch-scclass-dir
|
||||||
|
(lambda _
|
||||||
|
(let* ((scclass-dir
|
||||||
|
(string-append #$output
|
||||||
|
"/share/SuperCollider/SCClassLibrary")))
|
||||||
|
(substitute* "lang/LangSource/SC_LanguageConfig.cpp"
|
||||||
|
(((string-append
|
||||||
|
"SC_Filesystem::instance\\(\\)\\.getDirectory"
|
||||||
|
"\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME"))
|
||||||
|
(string-append "Path(\"" scclass-dir "\")"))))))
|
||||||
|
(add-after 'patch-scclass-dir 'fix-struct-SOUNDFILE-tag
|
||||||
|
(lambda _
|
||||||
|
(display (getcwd)) (newline)
|
||||||
|
(substitute* "include/plugin_interface/SC_SndBuf.h"
|
||||||
|
(("SNDFILE_tag")
|
||||||
|
"sf_private_tag")))))))
|
||||||
|
(native-inputs
|
||||||
|
(list ableton-link pkg-config))
|
||||||
|
(inputs (list jack-1
|
||||||
|
libsndfile
|
||||||
|
fftw
|
||||||
|
libxt
|
||||||
|
readline ;readline support for sclang's CLI
|
||||||
|
alsa-lib ;for sclang's MIDI interface
|
||||||
|
eudev ;for user interactions with devices
|
||||||
|
avahi ;zeroconf service discovery support
|
||||||
|
icu4c
|
||||||
|
boost
|
||||||
|
boost-sync
|
||||||
|
yaml-cpp
|
||||||
|
python-wrapper ;there were warnings in the build process
|
||||||
|
ruby)) ;there were warnings in the build process
|
||||||
|
(home-page "https://github.com/supercollider/supercollider")
|
||||||
|
(synopsis "Synthesis engine and programming language. CLI version without Qt GUI")
|
||||||
|
(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 Guix System.")
|
||||||
|
(license license:gpl2+)))
|
Loading…
Reference in a new issue