* [bug#63422] [PATCH 1/3] gnu: libfive: Fix install and wrap Studio.
2023-05-10 17:17 [bug#63422] [PATCH 0/3] gnu: libfive: Fixes Morgan.J.Smith
@ 2023-05-10 17:46 ` Morgan Smith
2023-05-18 17:50 ` bug#63422: [PATCH 0/3] gnu: libfive: Fixes Ludovic Courtès
1 sibling, 0 replies; 3+ messages in thread
From: Morgan Smith @ 2023-05-10 17:46 UTC (permalink / raw)
To: 63422
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
---
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 a8261dfbc1..1f7fdf942f 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 @@ (define-public libfive
(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 @@ (define-public libfive
(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
base-commit: e0c35d1578c10a8fe27c8372f3a8bb5dd88b01b8
--
2.39.2
^ permalink raw reply related [flat|nested] 3+ messages in thread