me
/
guix
Archived
1
0
Fork 0

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>
master
Morgan Smith 2023-05-10 13:46:16 -04:00 committed by Ludovic Courtès
parent cd08d64b3a
commit a062028bc3
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
1 changed files with 32 additions and 15 deletions

View File

@ -20,7 +20,7 @@
;;; Copyright © 2020, 2021 Ekaitz Zarraga <ekaitz@elenq.tech> ;;; Copyright © 2020, 2021 Ekaitz Zarraga <ekaitz@elenq.tech>
;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com> ;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego@posteo.net> ;;; 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 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com> ;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
@ -908,17 +908,21 @@ fonts to gEDA.")
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
(list (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" #:test-target "libfive-test"
#:configure-flags
#~(list (string-append "-DGUILE_CCACHE_DIR="
#$output "/lib/guile/3.0/site-ccache"))
#:phases #:phases
#~(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'unpack 'fix-autocompilation
(lambda _ (setenv "HOME" "/tmp")))
(add-after 'unpack 'remove-native-compilation (add-after 'unpack 'remove-native-compilation
(lambda _ (lambda _
(substitute* "CMakeLists.txt" (("-march=native") "")))) (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 (add-after 'unpack 'fix-library-location
(lambda _ (lambda _
(substitute* "libfive/bind/guile/libfive/lib.scm" (substitute* "libfive/bind/guile/libfive/lib.scm"
@ -926,19 +930,32 @@ fonts to gEDA.")
(string-append m "\n\"" #$output "/lib/\"")) (string-append m "\n\"" #$output "/lib/\""))
(("\\(get-environment-variable \"LIBFIVE_STDLIB_DIR\"\\)" m) (("\\(get-environment-variable \"LIBFIVE_STDLIB_DIR\"\\)" m)
(string-append m "\n\"" #$output "/lib/\""))))) (string-append m "\n\"" #$output "/lib/\"")))))
(add-after 'install 'install-scm-files (add-after 'unpack 'do-not-build-guile-bindings
(lambda _ (lambda _
(for-each (delete-file "libfive/bind/guile/CMakeLists.txt")
(lambda (file) (call-with-output-file
(install-file file "libfive/bind/guile/CMakeLists.txt"
(string-append #$output (lambda (port)
"/share/guile/site/3.0/libfive"))) (display "add_custom_target(libfive-guile)\n" port)))))
(find-files "../source/libfive/bind/guile/libfive" (add-after 'build 'guile-build
"\\.scm$"))))))) (lambda args
(apply (assoc-ref guile:%standard-phases 'build)
#:source-directory "../source/libfive/bind/guile"
args)))
(add-after 'install 'wrap-studio
(lambda _
(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 (native-inputs
(list pkg-config)) (list pkg-config))
(inputs (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") (home-page "https://libfive.com")
(synopsis "Tool for programmatic computer-aided design") (synopsis "Tool for programmatic computer-aided design")
(description (description