guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

03/15: gnu: libfive: Fix install and wrap Studio.


From: guix-commits
Subject: 03/15: gnu: libfive: Fix install and wrap Studio.
Date: Thu, 18 May 2023 14:07:07 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit a062028bc36d744cc72c6083bf0ee3e7f3286e86
Author: Morgan Smith <Morgan.J.Smith@outlook.com>
AuthorDate: Wed May 10 13:46:16 2023 -0400

    gnu: libfive: Fix install and wrap Studio.
    
    The old install phase didn't handle nested directories (which there are) and
    the cmake files didn't seem to install the go files in a way that guile 
would
    use so I just used the guile build system instead.
    
    Also Studio works much better when it know where the libraries are.
    
    * gnu/packages/engineering.scm (libfive)
    [imported-modules]: Add (guix build guile-build-system).
    [modules]: Add (guix build guile-build-system).
    [configure-flags]: Remove.
    [phases]: Remove phases 'fix-autocompilation and 'install-scm-files.  Add
    phase 'do-not-build-guile-bindings and add phase 'guile-build which uses the
    guile build system.  Add wrap-studio phase.
    [inputs]: Add bash-minimal for the wrapper.  Use qtbase instead of qtbase-5
    
    Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
 gnu/packages/engineering.scm | 47 ++++++++++++++++++++++++++++++--------------
 1 file changed, 32 insertions(+), 15 deletions(-)

diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 465154abf4..15e55f5637 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -20,7 +20,7 @@
 ;;; Copyright © 2020, 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
 ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net>
-;;; Copyright © 2020, 2021 Morgan Smith <Morgan.J.Smith@outlook.com>
+;;; Copyright © 2020, 2021, 2023 Morgan Smith <Morgan.J.Smith@outlook.com>
 ;;; Copyright © 2021 qblade <qblade@protonmail.com>
 ;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
 ;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
@@ -908,17 +908,21 @@ fonts to gEDA.")
       (build-system cmake-build-system)
       (arguments
        (list
+        #:imported-modules `((guix build guile-build-system)
+                             ,@%cmake-build-system-modules)
+        #:modules '((guix build cmake-build-system)
+                    ((guix build guile-build-system) #:prefix guile:)
+                    (guix build utils))
         #:test-target "libfive-test"
-        #:configure-flags
-        #~(list (string-append "-DGUILE_CCACHE_DIR="
-                               #$output "/lib/guile/3.0/site-ccache"))
         #:phases
         #~(modify-phases %standard-phases
-            (add-after 'unpack 'fix-autocompilation
-              (lambda _ (setenv "HOME" "/tmp")))
             (add-after 'unpack 'remove-native-compilation
               (lambda _
                 (substitute* "CMakeLists.txt" (("-march=native") ""))))
+            (add-after 'unpack 'remove-environment-variable-override
+              (lambda _
+                (substitute* "studio/src/guile/interpreter.cpp"
+                  (("qputenv\\(\"GUILE_LOAD_COMPILED_PATH\".*") ""))))
             (add-after 'unpack 'fix-library-location
               (lambda _
                 (substitute* "libfive/bind/guile/libfive/lib.scm"
@@ -926,19 +930,32 @@ fonts to gEDA.")
                    (string-append m "\n\"" #$output "/lib/\""))
                   (("\\(get-environment-variable \"LIBFIVE_STDLIB_DIR\"\\)" m)
                    (string-append m "\n\"" #$output "/lib/\"")))))
-            (add-after 'install 'install-scm-files
+            (add-after 'unpack 'do-not-build-guile-bindings
+              (lambda _
+                (delete-file "libfive/bind/guile/CMakeLists.txt")
+                (call-with-output-file
+                    "libfive/bind/guile/CMakeLists.txt"
+                  (lambda (port)
+                    (display "add_custom_target(libfive-guile)\n" port)))))
+            (add-after 'build 'guile-build
+              (lambda args
+                (apply (assoc-ref guile:%standard-phases 'build)
+                       #:source-directory "../source/libfive/bind/guile"
+                       args)))
+            (add-after 'install 'wrap-studio
               (lambda _
-                (for-each
-                 (lambda (file)
-                   (install-file file
-                                 (string-append #$output
-                                                
"/share/guile/site/3.0/libfive")))
-                 (find-files "../source/libfive/bind/guile/libfive"
-                             "\\.scm$")))))))
+                (let* ((effective-version 
(guile:target-guile-effective-version))
+                       (scm (string-append #$output "/share/guile/site/"
+                                           effective-version))
+                       (go (string-append #$output "/lib/guile/"
+                                          effective-version "/site-ccache")))
+                  (wrap-program (string-append #$output "/bin/Studio")
+                    `("GUILE_LOAD_PATH" ":" prefix (,scm))
+                    `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go)))))))))
       (native-inputs
        (list pkg-config))
       (inputs
-       (list boost libpng qtbase-5 eigen guile-3.0))
+       (list boost libpng qtbase eigen guile-3.0 bash-minimal))
       (home-page "https://libfive.com";)
       (synopsis "Tool for programmatic computer-aided design")
       (description



reply via email to

[Prev in Thread] Current Thread [Next in Thread]