From patchwork Mon Apr 20 21:56:16 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Giacomo Leidi X-Patchwork-Id: 21374 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 1A69627BBE4; Mon, 20 Apr 2020 22:57:41 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_ADSP_ALL, DKIM_SIGNED,MAILING_LIST_MULTI,T_DKIM_INVALID,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTP id 5D76327BBE1 for ; Mon, 20 Apr 2020 22:57:40 +0100 (BST) Received: from localhost ([::1]:43050 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQeQ7-0003Lz-P8 for patchwork@mira.cbaines.net; Mon, 20 Apr 2020 17:57:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:46818) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQePd-0003Kf-S1 for guix-patches@gnu.org; Mon, 20 Apr 2020 17:57:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jQePZ-0008Ls-Pl for guix-patches@gnu.org; Mon, 20 Apr 2020 17:57:09 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:37052) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jQePX-0008KW-K0 for guix-patches@gnu.org; Mon, 20 Apr 2020 17:57:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1jQePX-0007rB-IQ for guix-patches@gnu.org; Mon, 20 Apr 2020 17:57:03 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#40739] [PATCH 4/5] gnu: extempore: Update to 0.8.6. Resent-From: Giacomo Leidi Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 20 Apr 2020 21:57:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40739 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 40739@debbugs.gnu.org Cc: Giacomo Leidi Received: via spool by 40739-submit@debbugs.gnu.org id=B40739.158741980830148 (code B ref 40739); Mon, 20 Apr 2020 21:57:03 +0000 Received: (at 40739) by debbugs.gnu.org; 20 Apr 2020 21:56:48 +0000 Received: from localhost ([127.0.0.1]:48593 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jQePG-0007q4-6k for submit@debbugs.gnu.org; Mon, 20 Apr 2020 17:56:48 -0400 Received: from latitanza.investici.org ([82.94.249.234]:37217) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jQeP8-0007pC-9l for 40739@debbugs.gnu.org; Mon, 20 Apr 2020 17:56:41 -0400 Received: from mx3.investici.org (unknown [127.0.0.1]) by latitanza.investici.org (Postfix) with ESMTP id AE32812164E; Mon, 20 Apr 2020 21:56:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=autistici.org; s=stigmate; t=1587419797; bh=8s41+rVooWeQTKLdnMMYtMs+FVR7nBdFoNPuQmo+M3g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kR8nR6oe+YNDl+m1Iryn3yIzep8tAzd5AFg8LNWnVa4d0bnnCvkQrQGyQs/4IvozB B2C+tA2IRKnoRff7I+ABcjnA0ymVpVJa6SXEpLd+vjb+1T/kz/hf4FVoSMPVlU8rEN xfp42PhVrhVq7LDJtSYwzxyJ3mV03Ik8bgPKv9O0= Received: from [82.94.249.234] (mx3.investici.org [82.94.249.234]) (Authenticated sender: goodoldpaul@autistici.org) by localhost (Postfix) with ESMTPSA id 725A51201B5; Mon, 20 Apr 2020 21:56:37 +0000 (UTC) From: Giacomo Leidi Date: Mon, 20 Apr 2020 23:56:16 +0200 Message-Id: <20200420215617.12194-4-goodoldpaul@autistici.org> X-Mailer: git-send-email 2.26.1 In-Reply-To: <20200420215617.12194-1-goodoldpaul@autistici.org> References: <20200420215617.12194-1-goodoldpaul@autistici.org> MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-Received-From: 209.51.188.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches * 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. --- gnu/local.mk | 1 + gnu/packages/music.scm | 87 ++++++----- ...mpore-unbundle-external-dependencies.patch | 138 ++++++++++++++++++ 3 files changed, 186 insertions(+), 40 deletions(-) create mode 100644 gnu/packages/patches/extempore-unbundle-external-dependencies.patch diff --git a/gnu/local.mk b/gnu/local.mk index 196ccc8800..fcc3a251c7 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -871,6 +871,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 \ diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index b12b25f030..3bafbe5c15 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -27,6 +27,7 @@ ;;; Copyright © 2019, 2020 Alexandros Theodotou ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Lars-Dominik Braun +;;; Copyright © 2020 Giacomo Leidi ;;; ;;; This file is part of GNU Guix. ;;; @@ -624,63 +625,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 (list (search-patch + "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 @@ -709,20 +720,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. diff --git a/gnu/packages/patches/extempore-unbundle-external-dependencies.patch b/gnu/packages/patches/extempore-unbundle-external-dependencies.patch new file mode 100644 index 0000000000..64d6dcaf15 --- /dev/null +++ b/gnu/packages/patches/extempore-unbundle-external-dependencies.patch @@ -0,0 +1,138 @@ +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()