gnu: z3: Prefer CMake to build the package.
Z3 developer recommends to use CMake to build Z3 except the OCaml bindings. Use CMake also enable us to cross compile z3. * gnu/packages/maths.scm (z3)[build-system]: Use cmake-build-system. [arguments]<#:configure-flags>: Add flags for CMake. <#:phases>: Remove stale phase 'fix-compatability'. In phase 'check', build the z3 test binary and don't test when cross compiling. Add phase 'compile-python-modules' phase to generate python bytecode cache for z3 python binding. Add phase 'fix-z3-library-path' to help z3 pythong binding to find the z3 shared library. (ocaml-z3)[build-system]: Override the inherited value with 'gnu-build-system'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>master
parent
cec5142183
commit
0e64835b2e
|
@ -5829,8 +5829,8 @@ as equations, scalars, vectors, and matrices.")
|
||||||
(file-name (git-file-name name version))
|
(file-name (git-file-name name version))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
(build-system gnu-build-system)
|
|
||||||
"1vvb09q7w7zd29qc4qjysrrhyylszm1wf6azkff004ixwn026b05"))))
|
"1vvb09q7w7zd29qc4qjysrrhyylszm1wf6azkff004ixwn026b05"))))
|
||||||
|
(build-system cmake-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
(list
|
(list
|
||||||
#:imported-modules `((guix build python-build-system)
|
#:imported-modules `((guix build python-build-system)
|
||||||
|
@ -5838,43 +5838,40 @@ as equations, scalars, vectors, and matrices.")
|
||||||
#:modules '((guix build cmake-build-system)
|
#:modules '((guix build cmake-build-system)
|
||||||
(guix build utils)
|
(guix build utils)
|
||||||
((guix build python-build-system) #:select (site-packages)))
|
((guix build python-build-system) #:select (site-packages)))
|
||||||
|
#:configure-flags
|
||||||
|
#~(list "-DZ3_BUILD_PYTHON_BINDINGS=ON"
|
||||||
|
"-DZ3_LINK_TIME_OPTIMIZATION=ON"
|
||||||
|
(string-append
|
||||||
|
"-DCMAKE_INSTALL_PYTHON_PKG_DIR="
|
||||||
|
#$output "/lib/python"
|
||||||
|
#$(version-major+minor (package-version python-wrapper))
|
||||||
|
"/site-packages"))
|
||||||
#:phases
|
#:phases
|
||||||
#~(modify-phases %standard-phases
|
#~(modify-phases %standard-phases
|
||||||
(add-after 'unpack 'enable-bytecode-determinism
|
(replace 'check
|
||||||
|
(lambda* (#:key parallel-build? tests? #:allow-other-keys)
|
||||||
|
(when tests?
|
||||||
|
(invoke "make" "test-z3"
|
||||||
|
(format #f "-j~a"
|
||||||
|
(if parallel-build?
|
||||||
|
(parallel-job-count)
|
||||||
|
1)))
|
||||||
|
(invoke "./test-z3" "/a"))))
|
||||||
|
(add-after 'install 'compile-python-modules
|
||||||
(lambda _
|
(lambda _
|
||||||
(setenv "PYTHONHASHSEED" "0")
|
(setenv "PYTHONHASHSEED" "0")
|
||||||
#t))
|
|
||||||
(add-after 'unpack 'fix-compatability
|
(invoke "python" "-m" "compileall"
|
||||||
;; Versions after 4.8.3 have immintrin.h IFDEFed for Windows only.
|
"--invalidation-mode=unchecked-hash"
|
||||||
(lambda _
|
#$output)))
|
||||||
(substitute* "src/util/mpz.cpp"
|
;; This step is missing in the CMake build system, do it here.
|
||||||
(("#include <immintrin.h>") ""))
|
(add-after 'compile-python-modules 'fix-z3-library-path
|
||||||
#t))
|
|
||||||
(add-before 'configure 'bootstrap
|
|
||||||
(lambda _
|
|
||||||
(invoke "python" "scripts/mk_make.py")))
|
|
||||||
;; work around gnu-build-system's setting --enable-fast-install
|
|
||||||
;; (z3's `configure' is a wrapper around the above python file,
|
|
||||||
;; which fails when passed --enable-fast-install)
|
|
||||||
(replace 'configure
|
|
||||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
(invoke "./configure"
|
(let* ((dest (string-append (site-packages inputs outputs)
|
||||||
"--python"
|
"/z3/lib/libz3.so"))
|
||||||
(string-append "--prefix=" (assoc-ref outputs "out"))
|
(z3-lib (string-append #$output "/lib/libz3.so")))
|
||||||
(string-append "--pypkgdir=" (site-packages inputs outputs)))))
|
(mkdir-p (dirname dest))
|
||||||
(add-after 'configure 'change-directory
|
(symlink z3-lib dest)))))))
|
||||||
(lambda _
|
|
||||||
(chdir "build")
|
|
||||||
#t))
|
|
||||||
(add-before 'check 'make-test-z3
|
|
||||||
(lambda _
|
|
||||||
;; Build the test suite executable.
|
|
||||||
(invoke "make" "test-z3" "-j"
|
|
||||||
(number->string (parallel-job-count)))))
|
|
||||||
(replace 'check
|
|
||||||
(lambda _
|
|
||||||
;; Run all the tests that don't require arguments.
|
|
||||||
(invoke "./test-z3" "/a"))))))
|
|
||||||
(native-inputs
|
(native-inputs
|
||||||
(list which python-wrapper))
|
(list which python-wrapper))
|
||||||
(synopsis "Theorem prover")
|
(synopsis "Theorem prover")
|
||||||
|
@ -5886,6 +5883,7 @@ theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
|
||||||
(package
|
(package
|
||||||
(inherit z3)
|
(inherit z3)
|
||||||
(name "ocaml-z3")
|
(name "ocaml-z3")
|
||||||
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:imported-modules ((guix build python-build-system)
|
`(#:imported-modules ((guix build python-build-system)
|
||||||
,@%gnu-build-system-modules)
|
,@%gnu-build-system-modules)
|
||||||
|
|
Reference in New Issue