summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMorgan Smith <Morgan.J.Smith@outlook.com>2023-05-10 13:46:16 -0400
committerLudovic Courtès <ludo@gnu.org>2023-05-18 19:38:27 +0200
commita062028bc36d744cc72c6083bf0ee3e7f3286e86 (patch)
tree1adc838422324717bd200502e0ded0dc68878c7b
parentcd08d64b3a1d18cceba2fb7ec01c27b1c08f88d2 (diff)
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>
-rw-r--r--gnu/packages/engineering.scm47
1 files 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