diff options
author | Danny Milosavljevic <dannym@friendly-machines.com> | 2025-03-26 02:08:08 +0100 |
---|---|---|
committer | Danny Milosavljevic <dannym@friendly-machines.com> | 2025-03-26 02:08:08 +0100 |
commit | e4ca2ae0954215864a107a875604d3679559e808 (patch) | |
tree | 0f747b5e084527445aaba9557730cdabbe18c2ab | |
parent | 169894151fdcde249ba6e2c248b3e894f74eaa15 (diff) | |
download | guix-e4ca2ae0954215864a107a875604d3679559e808.tar.gz guix-e4ca2ae0954215864a107a875604d3679559e808.zip |
gnu: Add lean4.
* gnu/packages/lean.scm (lean4): New variable.
Change-Id: I9f51b7475eabdecd98fb05378a2cf91ed516c5ed
-rw-r--r-- | gnu/packages/lean.scm | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/gnu/packages/lean.scm b/gnu/packages/lean.scm index 1533200426..82bca77dd7 100644 --- a/gnu/packages/lean.scm +++ b/gnu/packages/lean.scm @@ -21,7 +21,11 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages lean) + #:use-module (ice-9 match) + #:use-module (gnu packages base) #:use-module (gnu packages bash) + #:use-module (gnu packages llvm) + #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) #:use-module (guix build-system cmake) #:use-module (guix build-system python) @@ -31,7 +35,11 @@ #:use-module (guix git-download) #:use-module (guix download) #:use-module (gnu packages graphviz) + #:use-module (gnu packages libevent) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages version-control) + #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) @@ -75,6 +83,84 @@ core based on dependent typed theory, aiming to bridge the gap between interactive and automated theorem proving.") (license license:asl2.0))) +(define-public lean4 + (package + (name "lean4") + (version "4.17.0") + (home-page "https://lean-lang.org" ) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/leanprover/lean4.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fmjp8hqsbppn1fqzr8lyh6fhk8vhfj1m18wlmsfk1can00mx2za")))) + (build-system cmake-build-system) + (native-inputs + (list git ; for the tests + perl ; for the tests + pkg-config + python-wrapper + tzdata-for-tests)) + (inputs + (list cadical gmp libuv llvm)) + (arguments + (list + #:make-flags + #~(list "SHELL=bash -euo pipefail") + #:build-type "Release" ; default upstream build type + ;; XXX: Test phases currently fail on 32-bit sytems. + ;; Tests for those architectures have been temporarily + ;; disabled, pending further investigation. + #:tests? (and (not (%current-target-system)) + (let ((arch (%current-system))) + (not (or (string-prefix? "i686" arch) + (string-prefix? "armhf" arch))))) + #:phases + #~(modify-phases %standard-phases + (add-before 'configure 'patch + (lambda _ + (substitute* '("stage0/src/CMakeLists.txt" + "src/CMakeLists.txt") + ;; Convert clang option to GCC option. + (("--print-target-triple") "-dumpmachine")) ; -print-multiarch + (substitute* '("src/bin/leanc.in" + "src/util/ffi.cpp" + "stage0/src/bin/leanc.in" + "stage0/src/util/ffi.cpp") + ;; Prevent ld error from: + ;; "--start-group" "-lInit" "-lleanrt" "--end-group" "-lstdc++" + ;; "-lLake" "" + ((" @LEAN_EXTRA_LINKER_FLAGS@") + "@LEAN_EXTRA_LINKER_FLAGS@")) + (substitute* "src/lean.mk.in" + (("SHELL = /usr/bin/env bash") + "SHELL = bash")) + (setenv "SHELL" "bash -euo pipefail"))) + (replace 'check + (lambda* (#:key tests? parallel-tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "../source" + (invoke "ctest" "--preset" "release" "--test-dir" "../build/stage1" + "-E" "leancomptest_(doc_example|foreign)|leanlaketest_reverse-ffi|leanruntest_timeIO" + "-j" (if parallel-tests? + (number->string (parallel-job-count)) + "1")))))) + (add-before 'install 'delete-junk + (lambda _ + ;; Package is reproducible with ".git" deleted. + (for-each delete-file-recursively + (find-files "../source/src/lake/tests" "^\\.git$" + #:directories? #t))))))) + (synopsis "Theorem prover and programming language") + (description + "Lean is a theorem prover and programming language with a small trusted +core based on dependent typed theory, aiming to bridge the gap between +interactive and automated theorem proving.") + (license license:asl2.0))) + (define-public python-mathlibtools (package (name "python-mathlibtools") |