GNU bug report logs -
#63422
[PATCH 0/3] gnu: libfive: Fixes
Previous Next
Reported by: Morgan.J.Smith <at> outlook.com
Date: Wed, 10 May 2023 17:23:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 63422 in the body.
You can then email your comments to 63422 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#63422
; Package
guix-patches
.
(Wed, 10 May 2023 17:23:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Morgan.J.Smith <at> outlook.com
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Wed, 10 May 2023 17:23:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[PATCH 1/3] gnu: libfive: Fix install and wrap Studio.
[PATCH 2/3] gnu: libfive: Add Python bindings.
[PATCH 3/3] gnu: libfive: Generate bindings instead of using
Information forwarded
to
guix-patches <at> gnu.org
:
bug#63422
; Package
guix-patches
.
(Wed, 10 May 2023 17:48:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 63422 <at> debbugs.gnu.org (full text, mbox):
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 <at> elenq.tech>
;;; Copyright © 2020 B. Wilson <elaexuotee <at> wilsonb.com>
;;; Copyright © 2020, 2021, 2022, 2023 Vinicius Monego <monego <at> posteo.net>
-;;; Copyright © 2020, 2021 Morgan Smith <Morgan.J.Smith <at> outlook.com>
+;;; Copyright © 2020, 2021, 2023 Morgan Smith <Morgan.J.Smith <at> outlook.com>
;;; Copyright © 2021 qblade <qblade <at> protonmail.com>
;;; Copyright © 2021 Gerd Heber <gerd.heber <at> gmail.com>
;;; Copyright © 2021, 2022 Guillaume Le Vaillant <glv <at> 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
Information forwarded
to
guix-patches <at> gnu.org
:
bug#63422
; Package
guix-patches
.
(Wed, 10 May 2023 17:50:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 63422 <at> debbugs.gnu.org (full text, mbox):
* gnu/packages/engineering.scm (libfive)
[configure-flags]: Add python site-dir.
[phases]<fix-library-location>: Fix for python as well.
<wrap-studio>: Wrap for python as well.
[inputs]: Add python-wrapper. Alphabetize.
[description]: Add python.
---
gnu/packages/engineering.scm | 33 +++++++++++++++++++++++++--------
1 file changed, 25 insertions(+), 8 deletions(-)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index 1f7fdf942f..be7e235fcc 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -914,6 +914,14 @@ (define-public libfive
((guix build guile-build-system) #:prefix guile:)
(guix build utils))
#:test-target "libfive-test"
+ #:configure-flags #~(list
+ (string-append
+ "-DPYTHON_SITE_PACKAGES_DIR="
+ #$output "/lib/python"
+ #$(version-major+minor
+ (package-version
+ (this-package-input "python-wrapper")))
+ "/site-packages"))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'remove-native-compilation
@@ -929,7 +937,10 @@ (define-public libfive
(("\\(get-environment-variable \"LIBFIVE_FRAMEWORK_DIR\"\\)" m)
(string-append m "\n\"" #$output "/lib/\""))
(("\\(get-environment-variable \"LIBFIVE_STDLIB_DIR\"\\)" m)
- (string-append m "\n\"" #$output "/lib/\"")))))
+ (string-append m "\n\"" #$output "/lib/\"")))
+ (substitute* "libfive/bind/python/libfive/ffi.py"
+ (("os.environ.get\\('LIBFIVE_FRAMEWORK_DIR'\\)" m)
+ (string-append m " or \"" #$output "/lib/\"")))))
(add-after 'unpack 'do-not-build-guile-bindings
(lambda _
(delete-file "libfive/bind/guile/CMakeLists.txt")
@@ -948,22 +959,28 @@ (define-public libfive
(scm (string-append #$output "/share/guile/site/"
effective-version))
(go (string-append #$output "/lib/guile/"
- effective-version "/site-ccache")))
+ effective-version "/site-ccache"))
+ (py (string-append #$output "/lib/python"
+ #$(version-major+minor
+ (package-version
+ (this-package-input "python-wrapper")))
+ "/site-packages")))
(wrap-program (string-append #$output "/bin/Studio")
`("GUILE_LOAD_PATH" ":" prefix (,scm))
- `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go)))))))))
+ `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,go))
+ `("GUIX_PYTHONPATH" ":" prefix (,py)))))))))
(native-inputs
(list pkg-config))
(inputs
- (list boost libpng qtbase eigen guile-3.0 bash-minimal))
+ (list bash-minimal boost eigen guile-3.0 libpng python-wrapper qtbase))
(home-page "https://libfive.com")
(synopsis "Tool for programmatic computer-aided design")
(description
"Libfive is a tool for programmatic computer-aided design (CAD). In
-libfive, solid models are defined as Scheme scripts, and there are no opaque
-function calls into the geometry kernel: everything is visible to the user.
-Even fundamental, primitive shapes are represented as code in the user-level
-language.")
+libfive, solid models are defined as Scheme or Python scripts, and there are
+no opaque function calls into the geometry kernel: everything is visible to
+the user. Even fundamental, primitive shapes are represented as code in the
+user-level language.")
(license (list license:mpl2.0 ;library
license:gpl2+)) ;Guile bindings and GUI
--
2.39.2
Information forwarded
to
guix-patches <at> gnu.org
:
bug#63422
; Package
guix-patches
.
(Wed, 10 May 2023 17:50:02 GMT)
Full text and
rfc822 format available.
Message #14 received at 63422 <at> debbugs.gnu.org (full text, mbox):
* gnu/packages/engineering.scm (libfive)[phases]: Add phase 'generate-bindings
to generate the bindings
---
gnu/packages/engineering.scm | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index be7e235fcc..ec3071129e 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -941,6 +941,16 @@ (define-public libfive
(substitute* "libfive/bind/python/libfive/ffi.py"
(("os.environ.get\\('LIBFIVE_FRAMEWORK_DIR'\\)" m)
(string-append m " or \"" #$output "/lib/\"")))))
+ (add-before 'build 'generate-bindings
+ (lambda _
+ ;; These files already exist but we regenerate them from source
+ (with-directory-excursion "../source/libfive/stdlib"
+ (substitute* '("gen_scm.py" "gen_c.py" "gen_py.py")
+ (("datetime.now\\(\\)\\.strftime\\([^)]+)") "\"N/A\"")
+ (("os\\.getlogin\\(\\)") "\"guix\""))
+ (invoke "python" "gen_scm.py")
+ (invoke "python" "gen_c.py")
+ (invoke "python" "gen_py.py"))))
(add-after 'unpack 'do-not-build-guile-bindings
(lambda _
(delete-file "libfive/bind/guile/CMakeLists.txt")
--
2.39.2
Reply sent
to
Ludovic Courtès <ludo <at> gnu.org>
:
You have taken responsibility.
(Thu, 18 May 2023 17:51:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
Morgan.J.Smith <at> outlook.com
:
bug acknowledged by developer.
(Thu, 18 May 2023 17:51:02 GMT)
Full text and
rfc822 format available.
Message #19 received at 63422-done <at> debbugs.gnu.org (full text, mbox):
Hi,
Morgan.J.Smith <at> outlook.com skribis:
> [PATCH 1/3] gnu: libfive: Fix install and wrap Studio.
> [PATCH 2/3] gnu: libfive: Add Python bindings.
> [PATCH 3/3] gnu: libfive: Generate bindings instead of using
Applied, thanks!
Ludo’.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Fri, 16 Jun 2023 11:24:07 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 329 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.