diff options
author | Morgan Smith <Morgan.J.Smith@outlook.com> | 2023-05-10 13:46:16 -0400 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2023-05-18 19:38:27 +0200 |
commit | a062028bc36d744cc72c6083bf0ee3e7f3286e86 (patch) | |
tree | 1adc838422324717bd200502e0ded0dc68878c7b | |
parent | cd08d64b3a1d18cceba2fb7ec01c27b1c08f88d2 (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.scm | 47 |
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 |