GNU bug report logs - #40739
[PATCH] gnu: extempore: Update to 0.8.6 and unbundle dependencies

Previous Next

Package: guix-patches;

Reported by: goodoldpaul <at> autistici.org

Date: Mon, 20 Apr 2020 21:55:01 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 40739 in the body.
You can then email your comments to 40739 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#40739; Package guix-patches. (Mon, 20 Apr 2020 21:55:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to goodoldpaul <at> autistici.org:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 20 Apr 2020 21:55:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: goodoldpaul <at> autistici.org
To: guix-patches <at> gnu.org
Subject: [PATCH] gnu: extempore: Update to 0.8.6 and unbundle dependencies
Date: Mon, 20 Apr 2020 21:54:37 +0000
Hi Guix,
I'm sending a patch series to update Extempore to 0.8.6, update its 
dependencies and remove in-tree libraries (portaudio and pcre).

I tested both extempore and emacs-extempore-mode for some days now and I 
believe they are usable.

Thanks for reviewing this,

Giacomo




Information forwarded to guix-patches <at> gnu.org:
bug#40739; Package guix-patches. (Mon, 20 Apr 2020 21:57:02 GMT) Full text and rfc822 format available.

Message #8 received at 40739 <at> debbugs.gnu.org (full text, mbox):

From: Giacomo Leidi <goodoldpaul <at> autistici.org>
To: 40739 <at> debbugs.gnu.org
Cc: Giacomo Leidi <goodoldpaul <at> autistici.org>
Subject: [PATCH 1/5] gnu: llvm-for-extempore: Update to 3.8.
Date: Mon, 20 Apr 2020 23:56:13 +0200
* gnu/packages/llvm.scm (llvm-for-extempore): Update to 3.8.
[source]: Use upstream patched source.
* gnu/packages/patches/llvm-for-extempore.patch: Delete due to source being
already patched.
* gnu/local.mk (dist_patch_DATA): Remove it.
---
 gnu/local.mk                                  |   1 -
 gnu/packages/llvm.scm                         |  11 +-
 gnu/packages/patches/llvm-for-extempore.patch | 118 ------------------
 3 files changed, 8 insertions(+), 122 deletions(-)
 delete mode 100644 gnu/packages/patches/llvm-for-extempore.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index fb0454fd45..196ccc8800 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1176,7 +1176,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/lirc-localstatedir.patch			\
   %D%/packages/patches/lirc-reproducible-build.patch		\
   %D%/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch	\
-  %D%/packages/patches/llvm-for-extempore.patch			\
   %D%/packages/patches/lm-sensors-hwmon-attrs.patch		\
   %D%/packages/patches/lrcalc-includes.patch    		\
   %D%/packages/patches/lrzip-CVE-2017-8842.patch		\
diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm
index 7236567a5e..3af39ea256 100644
--- a/gnu/packages/llvm.scm
+++ b/gnu/packages/llvm.scm
@@ -14,6 +14,7 @@
 ;;; Copyright © 2019 Arm Ltd <David.Truby <at> arm.com>
 ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe <at> gmail.com>
 ;;; Copyright © 2019 Brett Gilio <brettg <at> gnu.org>
+;;; Copyright © 2020 Giacomo Leidi <goodoldpaul <at> autistici.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -601,12 +602,16 @@ output), and Binutils.")
                    #:patches '("clang-3.5-libc-search-path.patch")))
 
 (define-public llvm-for-extempore
-  (package (inherit llvm-3.7)
+  (package (inherit llvm-3.8)
     (name "llvm-for-extempore")
     (source
      (origin
-       (inherit (package-source llvm-3.7))
-       (patches (list (search-patch "llvm-for-extempore.patch")))))
+       (method url-fetch)
+       (uri (string-append "http://extempore.moso.com.au/extras/"
+                           "llvm-3.8.0.src-patched-for-extempore.tar.xz"))
+       (sha256
+        (base32
+         "1svdl6fxn8l01ni8mpm0bd5h856ahv3h9sdzgmymr6fayckjvqzs"))))
     ;; Extempore refuses to build on architectures other than x86_64
     (supported-systems '("x86_64-linux"))))
 
diff --git a/gnu/packages/patches/llvm-for-extempore.patch b/gnu/packages/patches/llvm-for-extempore.patch
deleted file mode 100644
index 614682c6cb..0000000000
--- a/gnu/packages/patches/llvm-for-extempore.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-This patch to LLVM is required by the developers of the Extempore language.
-The following explanation was posted to the extemporelang <at> googlegroups.com
-mailing list:
-
-"There is an assumption in the parser that all definitions occur within the
-same compilation unit - i.e. the parser has local state about what has been
-parsed in this unit of work.  Extempore obviously does lots of little units
-rather than one big unit and this causes problems for named types that were
-defined in another unit - which they always are.  The patch simply checks the
-current module to see if the type has been previously defined, and intervenes
-appropriately if it has."
-
-Message-ID: <CAOjrPOqoreXuZo4ZpDBvHE7M_tgAR_V8Txq5JFjh1HnGRn2EsA <at> mail.gmail.com>
-
---- llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h	2015-04-11 12:11:45.000000000 +1000
-+++ llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h	2015-09-14 09:22:56.000000000 +1000
-@@ -16,7 +16,6 @@
- 
- #include "llvm/ADT/StringRef.h"
- #include "llvm/MC/MCSection.h"
--#include "llvm/Support/COFF.h"
- 
- namespace llvm {
- class MCSymbol;
-
---- llvm-3.7.1.src/lib/AsmParser/LLParser.cpp	2015-07-11 20:30:36.000000000 +1000
-+++ llvm-3.7.1.src/lib/AsmParser/LLParser.cpp	2015-09-14 09:20:57.000000000 +1000
-@@ -1754,8 +1754,14 @@
-     // If the type hasn't been defined yet, create a forward definition and
-     // remember where that forward def'n was seen (in case it never is defined).
-     if (!Entry.first) {
--      Entry.first = StructType::create(Context, Lex.getStrVal());
--      Entry.second = Lex.getLoc();
-+      // this here for extempore
-+      if (M->getTypeByName(Lex.getStrVal())) {
-+        Entry.first = M->getTypeByName(Lex.getStrVal());
-+        Entry.second = SMLoc();
-+      } else {
-+        Entry.first = StructType::create(Context, Lex.getStrVal());
-+        Entry.second = Lex.getLoc();
-+      }
-     }
-     Result = Entry.first;
-     Lex.Lex();
-
---- llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp	2015-07-01 05:10:31.000000000 +1000
-+++ llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp	2015-09-14 09:23:40.000000000 +1000
-@@ -32,6 +32,7 @@
- #include "llvm/MC/MCStreamer.h"
- #include "llvm/MC/MCSymbolELF.h"
- #include "llvm/MC/MCValue.h"
-+#include "llvm/Support/COFF.h"
- #include "llvm/Support/Dwarf.h"
- #include "llvm/Support/ELF.h"
- #include "llvm/Support/ErrorHandling.h"
-
---- llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp	2015-07-31 02:31:16.000000000 +1000
-+++ llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp	2015-09-14 09:21:28.000000000 +1000
-@@ -524,6 +524,17 @@
-         rv.IntVal = APInt(32, PF(ArgValues[0].IntVal.getZExtValue()));
-         return rv;
-       }
-+      if (FTy->getNumParams() == 1 &&
-+          RetTy->isVoidTy() &&
-+          FTy->getParamType(0)->isPointerTy()) {
-+        GenericValue rv;
-+        //void (*PF)(char *) = (void(*)(char *))(intptr_t)FPtr;
-+        //printf("are symbols available: %d\n",isSymbolSearchingDisabled());
-+        void (*PF)(char *) = (void(*)(char *))FPtr;
-+        char* mzone = (char*) GVTOP(ArgValues[0]);
-+        PF(mzone);
-+        return rv;
-+      }      
-       break;
-     }
-   }
-
---- llvm-3.7.1.src/lib/MC/MCContext.cpp	2015-06-23 21:31:32.000000000 +1000
-+++ llvm-3.7.1.src/lib/MC/MCContext.cpp	2015-09-14 09:24:01.000000000 +1000
-@@ -23,6 +23,7 @@
- #include "llvm/MC/MCSymbolCOFF.h"
- #include "llvm/MC/MCSymbolELF.h"
- #include "llvm/MC/MCSymbolMachO.h"
-+#include "llvm/Support/COFF.h"
- #include "llvm/Support/ELF.h"
- #include "llvm/Support/ErrorHandling.h"
- #include "llvm/Support/FileSystem.h"
-
---- llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp	2015-06-25 10:28:42.000000000 +1000
-+++ llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp	2015-09-14 09:24:17.000000000 +1000
-@@ -16,6 +16,7 @@
- #include "llvm/MC/MCSectionCOFF.h"
- #include "llvm/MC/MCSectionELF.h"
- #include "llvm/MC/MCSectionMachO.h"
-+#include "llvm/Support/COFF.h"
- using namespace llvm;
- 
- static bool useCompactUnwind(const Triple &T) {
-
---- llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp	2015-06-09 10:31:39.000000000 +1000
-+++ llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp	2015-09-14 09:24:25.000000000 +1000
-@@ -11,6 +11,7 @@
- #include "llvm/MC/MCAsmInfo.h"
- #include "llvm/MC/MCContext.h"
- #include "llvm/MC/MCSymbol.h"
-+#include "llvm/Support/COFF.h"
- #include "llvm/Support/raw_ostream.h"
- using namespace llvm;
- 
---- llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp	2015-06-27 04:55:48.000000000 +1000
-+++ llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp	2015-09-14 09:25:03.000000000 +1000
-@@ -16,6 +16,7 @@
- #include "llvm/MC/MCSectionCOFF.h"
- #include "llvm/MC/MCSectionELF.h"
- #include "llvm/MC/MCValue.h"
-+#include "llvm/Support/COFF.h"
- #include "llvm/Support/Dwarf.h"
- #include "llvm/Target/TargetLowering.h"
-- 
2.26.1





Information forwarded to guix-patches <at> gnu.org:
bug#40739; Package guix-patches. (Mon, 20 Apr 2020 21:57:02 GMT) Full text and rfc822 format available.

Message #11 received at 40739 <at> debbugs.gnu.org (full text, mbox):

From: Giacomo Leidi <goodoldpaul <at> autistici.org>
To: 40739 <at> debbugs.gnu.org
Cc: Giacomo Leidi <goodoldpaul <at> autistici.org>
Subject: [PATCH 3/5] gnu: portmidi-for-extempore: Update to 217-0.8602f54.
Date: Mon, 20 Apr 2020 23:56:15 +0200
* gnu/packages/music.scm (portmidi-for-extempore): Update to 217-0.8602f54.
[version]: Use git-version to include latest changes.
---
 gnu/packages/music.scm | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index cad6bf35ea..b12b25f030 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1978,24 +1978,27 @@ using a system-independent interface.")
     (license license:expat)))
 
 (define-public portmidi-for-extempore
-  (package (inherit portmidi)
-    (name "portmidi-for-extempore")
-    (version "217")
-    (source (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/extemporelang/portmidi.git")
-                    (commit version)))
-              (file-name (git-file-name name version))
-              (sha256
-               (base32
-                "1inriyrjf7xx2b7r54x0vmf9ngyqgr7g5060c22bwkbsgg53apzv"))))
-    (build-system cmake-build-system)
-    (arguments `(#:tests? #f)) ; no tests
-    (native-inputs '())
-    ;; Extempore refuses to build on architectures other than x86_64
-    (supported-systems '("x86_64-linux"))
-    (home-page "https://github.com/extemporelang/portmidi/")))
+  (let ((version "217")
+        (revision "0")
+        (commit "8602f548f71daf5ef638b2f7d224753400cb2158"))
+    (package (inherit portmidi)
+      (name "portmidi-for-extempore")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/extemporelang/portmidi.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "1qidzl1s3kzhczzm96rcd2ppn27a97k2axgfh1zhvyf0s52d7m4w"))))
+      (build-system cmake-build-system)
+      (arguments `(#:tests? #f))        ; no tests
+      (native-inputs '())
+      ;; Extempore refuses to build on architectures other than x86_64
+      (supported-systems '("x86_64-linux"))
+      (home-page "https://github.com/extemporelang/portmidi/"))))
 
 (define-public python-pyportmidi
   (package
-- 
2.26.1





Information forwarded to guix-patches <at> gnu.org:
bug#40739; Package guix-patches. (Mon, 20 Apr 2020 21:57:03 GMT) Full text and rfc822 format available.

Message #14 received at 40739 <at> debbugs.gnu.org (full text, mbox):

From: Giacomo Leidi <goodoldpaul <at> autistici.org>
To: 40739 <at> debbugs.gnu.org
Cc: Giacomo Leidi <goodoldpaul <at> autistici.org>
Subject: [PATCH 5/5] gnu: emacs-extempore-mode: Update to 0.0.0-1.09518ae.
Date: Mon, 20 Apr 2020 23:56:17 +0200
* gnu/packages/emacs-xyz.scm (emacs-extempore-mode): Update to to 0.0.0-1.09518ae.
---
 gnu/packages/emacs-xyz.scm | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index cd80e57efb..95cfda6b4f 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -2430,7 +2430,7 @@ work with Emacs 24 and 25.")
 
 (define-public emacs-extempore-mode
   ;; Use the latest commit at time of packaging.  There are no releases or tags.
-  (let ((commit "848ad0084f27b92d1cf98dabffbad29f959a642d")
+  (let ((commit "09518ae6650d7be33a4633a4c0f31b7130d04c6e")
         (revision "1"))
     (package
       (name "emacs-extempore-mode")
@@ -2443,7 +2443,7 @@ work with Emacs 24 and 25.")
                (commit commit)))
          (file-name (git-file-name name version))
          (sha256
-          (base32 "00wr025php7nl33x541s9rjm99hj0jbdcmnw9ljx5hqpm04aqm7c"))))
+          (base32 "0hfza9lzdsz94gxhmzyp9fwviscv19rmnjgd0q613faayn11sjsp"))))
       (build-system emacs-build-system)
       (home-page "https://github.com/extemporelang/extempore-emacs-mode")
       (synopsis "Emacs major mode for Extempore source files")
-- 
2.26.1





Information forwarded to guix-patches <at> gnu.org:
bug#40739; Package guix-patches. (Mon, 20 Apr 2020 21:57:03 GMT) Full text and rfc822 format available.

Message #17 received at 40739 <at> debbugs.gnu.org (full text, mbox):

From: Giacomo Leidi <goodoldpaul <at> autistici.org>
To: 40739 <at> debbugs.gnu.org
Cc: Giacomo Leidi <goodoldpaul <at> autistici.org>
Subject: [PATCH 4/5] gnu: extempore: Update to 0.8.6.
Date: Mon, 20 Apr 2020 23:56:16 +0200
* 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 <alex <at> zrythm.org>
 ;;; Copyright © 2020 Vincent Legoll <vincent.legoll <at> gmail.com>
 ;;; Copyright © 2020 Lars-Dominik Braun <lars <at> 6xq.net>
+;;; Copyright © 2020 Giacomo Leidi <goodoldpaul <at> autistici.org>
 ;;;
 ;;; 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()
-- 
2.26.1





Information forwarded to guix-patches <at> gnu.org:
bug#40739; Package guix-patches. (Mon, 20 Apr 2020 21:57:03 GMT) Full text and rfc822 format available.

Message #20 received at 40739 <at> debbugs.gnu.org (full text, mbox):

From: Giacomo Leidi <goodoldpaul <at> autistici.org>
To: 40739 <at> debbugs.gnu.org
Cc: Giacomo Leidi <goodoldpaul <at> autistici.org>
Subject: [PATCH 2/5] gnu: nanovg-for-extempore: Update to 0.7.1-0.3c60175.
Date: Mon, 20 Apr 2020 23:56:14 +0200
* gnu/packages/gl.scm (nanovg-for-extempore): Update to 0.7.1-0.3c60175.
[source]: Switch to Git source to include latest changes.
[version]: Use git-version.
---
 gnu/packages/gl.scm | 47 +++++++++++++++++++++++++--------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm
index 01241cd88e..fd2e543461 100644
--- a/gnu/packages/gl.scm
+++ b/gnu/packages/gl.scm
@@ -12,6 +12,7 @@
 ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me <at> tobias.gr>
 ;;; Copyright © 2019 Pierre Neidhardt <mail <at> ambrevar.xyz>
 ;;; Copyright © 2020 Marius Bakke <mbakke <at> fastmail.com>
+;;; Copyright © 2020 Giacomo Leidi <goodoldpaul <at> autistici.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -742,30 +743,34 @@ and surfaces, receiving input and events.")
     (license license:zlib)))
 
 (define-public nanovg-for-extempore
-  (package
-    (name "nanovg-for-extempore")
-    (version "0.7.1")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/extemporelang/nanovg/"
-                                  "archive/"  version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0ivs1sagq19xiw8jxd9f8w2b39svi0n9hrbmdvckwvqg95r8701g"))))
-    (build-system cmake-build-system)
-    (arguments `(#:tests? #f)) ; no tests included
-    (inputs
-     `(("mesa" ,mesa)))
-    ;; Extempore refuses to build on architectures other than x86_64
-    (supported-systems '("x86_64-linux"))
-    (home-page "https://github.com/extemporelang/nanovg")
-    (synopsis "2D vector drawing library on top of OpenGL")
-    (description "NanoVG is small antialiased vector graphics rendering
+  (let ((version "0.7.1")
+        (revision "0")
+        (commit "3c60175fcc2e5fe305b04355cdce35d499c80310"))
+    (package
+      (name "nanovg-for-extempore")
+      (version (git-version version revision commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/extemporelang/nanovg.git")
+                      (commit commit)))
+                (file-name (git-file-name name version))
+                (sha256
+                 (base32
+                  "0ddn3d3mxqn8hj9967v3pss7lz1wn08pcdnqzc118g7yjkq7hxzy"))))
+      (build-system cmake-build-system)
+      (arguments `(#:tests? #f))        ; no tests included
+      (inputs
+       `(("mesa" ,mesa)))
+      ;; Extempore refuses to build on architectures other than x86_64
+      (supported-systems '("x86_64-linux"))
+      (home-page "https://github.com/extemporelang/nanovg")
+      (synopsis "2D vector drawing library on top of OpenGL")
+      (description "NanoVG is small antialiased vector graphics rendering
 library for OpenGL.  It has lean API modeled after HTML5 canvas API.  It is
 aimed to be a practical and fun toolset for building scalable user interfaces
 and visualizations.")
-    (license license:zlib)))
+      (license license:zlib))))
 
 (define-public gl2ps
   (package
-- 
2.26.1





Information forwarded to guix-patches <at> gnu.org:
bug#40739; Package guix-patches. (Sat, 02 May 2020 14:20:02 GMT) Full text and rfc822 format available.

Message #23 received at 40739 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Giacomo Leidi <goodoldpaul <at> autistici.org>
Cc: 40739 <at> debbugs.gnu.org
Subject: Re: [bug#40739] [PATCH 4/5] gnu: extempore: Update to 0.8.6.
Date: Sat, 02 May 2020 16:18:53 +0200
[Message part 1 (text/plain, inline)]
Hi,

Giacomo Leidi <goodoldpaul <at> autistici.org> skribis:

> * 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.

Applied this (and the previous patches) with the minor change below.

Thanks,
Ludo’.

[Message part 2 (text/x-patch, inline)]
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 456a90a642..d6a9afe319 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -636,8 +636,8 @@ MusePack, Monkey's Audio, and WavPack files.")
                (base32
                 "182jy23qv115dipny7kglwbn21z55dp253w1ykm0kh8n6vkgs7gp"))
               (file-name (git-file-name name version))
-              (patches (list (search-patch
-                              "extempore-unbundle-external-dependencies.patch")))
+              (patches (search-patches
+                        "extempore-unbundle-external-dependencies.patch"))
               (modules '((guix build utils)))
               (snippet
                '(begin
diff --git a/gnu/packages/patches/extempore-unbundle-external-dependencies.patch b/gnu/packages/patches/extempore-unbundle-external-dependencies.patch
index 64d6dcaf15..e9484f7994 100644
--- a/gnu/packages/patches/extempore-unbundle-external-dependencies.patch
+++ b/gnu/packages/patches/extempore-unbundle-external-dependencies.patch
@@ -1,3 +1,5 @@
+Remove build machinery for bundled dependencies.
+
 diff --git a/CMakeLists.txt b/CMakeLists.txt
 index 89e6125e..c5e90750 100644
 --- a/CMakeLists.txt

Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Sat, 02 May 2020 14:21:02 GMT) Full text and rfc822 format available.

Notification sent to goodoldpaul <at> autistici.org:
bug acknowledged by developer. (Sat, 02 May 2020 14:21:02 GMT) Full text and rfc822 format available.

Message #28 received at 40739-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Giacomo Leidi <goodoldpaul <at> autistici.org>
Cc: 40739-done <at> debbugs.gnu.org
Subject: Re: [bug#40739] [PATCH 5/5] gnu: emacs-extempore-mode: Update to
 0.0.0-1.09518ae.
Date: Sat, 02 May 2020 16:20:16 +0200
Giacomo Leidi <goodoldpaul <at> autistici.org> skribis:

> * gnu/packages/emacs-xyz.scm (emacs-extempore-mode): Update to to 0.0.0-1.09518ae.

And applied.  Thanks for the patches!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 31 May 2020 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 16 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.