gnu: extempore: Update to 0.8.6.

* gnu/packages/music.scm (extempore): Update to 0.8.6.
[snippets]: Delete bundled dependencies.
[patches]: Add it.
* gnu/packages/patches/extempore-unbundle-external-dependencies.patch: Patch
  CMakeLists.txt to use system libraries.
* gnu/local.mk (dist_patch_DATA): Add it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Giacomo Leidi 2020-04-20 23:56:16 +02:00 committed by Ludovic Courtès
parent fc570fab80
commit 3ff2d2708c
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
3 changed files with 188 additions and 40 deletions

View File

@ -879,6 +879,7 @@ dist_patch_DATA = \
%D%/packages/patches/evolution-data-server-libical-compat.patch \
%D%/packages/patches/exiv2-CVE-2017-14860.patch \
%D%/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch \
%D%/packages/patches/extempore-unbundle-external-dependencies.patch \
%D%/packages/patches/extundelete-e2fsprogs-1.44.patch \
%D%/packages/patches/fastcap-mulGlobal.patch \
%D%/packages/patches/fastcap-mulSetup.patch \

View File

@ -27,6 +27,7 @@
;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net>
;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -625,63 +626,73 @@ MusePack, Monkey's Audio, and WavPack files.")
(define-public extempore
(package
(name "extempore")
(version "0.7.0")
(version "0.8.6")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/digego/extempore.git")
(commit version)))
(commit (string-append "v" version))))
(sha256
(base32
"12fsp7zkfxb9kykwq46l88kcbbici9arczrrsl4qn87m6vm5349l"))
(file-name (string-append name "-" version "-checkout"))))
"182jy23qv115dipny7kglwbn21z55dp253w1ykm0kh8n6vkgs7gp"))
(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/portaudio"
"src/pcre"))
#t))))
(build-system cmake-build-system)
(arguments
`(;; The default target also includes ahead-of-time compilation of the
;; standard libraries. However, during the "install" phase this would
;; happen *again* for unknown reasons. Hence we only build the
;; extempore executable during the build phase.
#:make-flags '("extempore")
#:configure-flags '("-DJACK=ON"
;; We want to distribute.
"-DIN_TREE=OFF"
;; Don't download any dependencies.
"-DBUILD_DEPS=OFF")
`(#:configure-flags (list "-DJACK=ON"
"-DPACKAGE=ON"
"-DEXTERNAL_SHLIBS_AUDIO=OFF"
"-DEXTERNAL_SHLIBS_GRAPHICS=OFF"
"-DCMAKE_BUILD_TYPE=Release"
(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)
;; Rewrite default path to runtime directory
(substitute* "src/Extempore.cpp"
(("runtimedir \\+= \"runtime\"")
(string-append "runtimedir = \""
(assoc-ref outputs "out")
"/lib/extempore/runtime\"")))
(substitute* "extras/extempore.el"
(("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)")
(string-append "(runtime-directory \""
(assoc-ref outputs "out")
"/lib/extempore/runtime"
"/share/extempore/runtime"
"\")")))
#t))
(add-after 'unpack 'link-with-additional-libs
(lambda _
;; The executable must be linked with libffi and zlib.
(substitute* "CMakeLists.txt"
(("add_dependencies\\(aot_extended extended_deps\\)") "")
(("target_link_libraries\\(extempore PRIVATE dl" line)
(string-append line " ffi z")))
#t))
;; FIXME: AOT compilation of the nanovg bindings fail with the error:
;; "Compiler Error could not bind _nvgLinearGradient"
(add-after 'unpack 'disable-nanovg
(lambda _
(substitute* "CMakeLists.txt"
(("aotcompile_lib\\(libs/external/nanovg.xtm.*") ""))
#t))
;; FIXME: All examples that are used as tests segfault for some
;; unknown reason.
(add-after 'unpack 'disable-broken-tests
@ -710,20 +721,16 @@ MusePack, Monkey's Audio, and WavPack files.")
("gl/glcompat-directbind" "libGL.so" "mesa")))
#t))
(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))
(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"
;; EXT_SHARE_DIR does not exist before installation, so the
;; working directory should be the source directory instead.
(("WORKING_DIRECTORY \\$\\{EXT_SHARE_DIR\\}")
"WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}")
;; 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.

View File

@ -0,0 +1,140 @@
Remove build machinery for bundled dependencies.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 89e6125e..c5e90750 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -36,7 +36,7 @@ endif()
if(PACKAGE)
# this needs to be set before project() is called
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12)
- set(ASSETS ON) # necessary for packaging
+ set(ASSETS OFF) # necessary for packaging
message(STATUS "Building Extempore for binary distribution (assets directory will be downloaded)")
endif()
@@ -134,71 +134,6 @@ else()
message(FATAL_ERROR "Sorry, Extempore isn't supported on this platform - macOS, Linux & Windows only.")
endif()
-########
-# PCRE #
-########
-
-# current in-tree PCRE version: 8.38
-
-add_library(pcre STATIC
- # headers
- src/pcre/config.h
- src/pcre/pcre.h
- src/pcre/ucp.h
- # source files
- src/pcre/pcre_chartables.c
- src/pcre/pcre_compile.c
- src/pcre/pcre_exec.c
- src/pcre/pcre_globals.c
- src/pcre/pcre_internal.h
- src/pcre/pcre_newline.c
- src/pcre/pcre_tables.c
- )
-
-target_compile_definitions(pcre
- PRIVATE -DHAVE_CONFIG_H
- )
-
-if(PACKAGE)
- target_compile_options(pcre
- PRIVATE -mtune=generic)
-endif()
-
-#############
-# portaudio #
-#############
-
-add_library(portaudio STATIC
- src/portaudio/src/common/pa_allocation.c
- src/portaudio/src/common/pa_allocation.h
- src/portaudio/src/common/pa_converters.c
- src/portaudio/src/common/pa_converters.h
- src/portaudio/src/common/pa_cpuload.c
- src/portaudio/src/common/pa_cpuload.h
- src/portaudio/src/common/pa_debugprint.c
- src/portaudio/src/common/pa_debugprint.h
- src/portaudio/src/common/pa_dither.c
- src/portaudio/src/common/pa_dither.h
- src/portaudio/src/common/pa_endianness.h
- src/portaudio/src/common/pa_front.c
- src/portaudio/src/common/pa_hostapi.h
- src/portaudio/src/common/pa_memorybarrier.h
- src/portaudio/src/common/pa_process.c
- src/portaudio/src/common/pa_process.h
- src/portaudio/src/common/pa_ringbuffer.c
- src/portaudio/src/common/pa_ringbuffer.h
- src/portaudio/src/common/pa_stream.c
- src/portaudio/src/common/pa_stream.h
- src/portaudio/src/common/pa_trace.c
- src/portaudio/src/common/pa_trace.h
- src/portaudio/src/common/pa_types.h
- src/portaudio/src/common/pa_util.h
- )
-
-target_include_directories(portaudio
- PRIVATE src/portaudio/include
- PRIVATE src/portaudio/src/common)
-
# platform-specific
if(APPLE)
@@ -224,25 +159,8 @@ if(APPLE)
elseif(UNIX AND NOT APPLE)
# use ALSA on Linux
- target_sources(portaudio
- PRIVATE src/portaudio/src/hostapi/alsa/pa_linux_alsa.c
- PRIVATE src/portaudio/src/os/unix/pa_unix_hostapis.c
- PRIVATE src/portaudio/src/os/unix/pa_unix_util.c
- )
- target_include_directories(portaudio
- PRIVATE src/portaudio/src/os/unix)
- target_compile_definitions(portaudio
- PRIVATE -DPA_USE_ALSA)
- target_link_libraries(portaudio
- PRIVATE asound)
if(JACK)
- target_sources(portaudio
- PRIVATE src/portaudio/src/hostapi/jack/pa_jack.c)
- target_compile_definitions(portaudio
- PRIVATE -DPA_USE_JACK)
- target_link_libraries(portaudio
- PRIVATE jack)
endif()
elseif(WIN32)
@@ -292,8 +210,6 @@ if(ASIO)
endif()
if(PACKAGE)
- target_compile_options(portaudio
- PRIVATE -mtune=generic)
endif()
##############
@@ -411,8 +327,6 @@ endif()
# dependencies
-add_dependencies(extempore pcre portaudio)
-
if(BUILD_LLVM)
if(WIN32)
add_dependencies(extempore LLVM-install)
@@ -553,7 +467,7 @@ else()
install(TARGETS extempore
RUNTIME
DESTINATION ".")
- install(DIRECTORY assets runtime libs examples tests
+ install(DIRECTORY runtime libs examples
DESTINATION "."
PATTERN ".DS_Store" EXCLUDE)
endif()