Skip to content

Commit bc49814

Browse files
chore: bump Lean to v4.17.0 (#8)
Extra: * Overwrite `BLAKE3_USE_NEON=0` and ignore `blake3_neon.c` * Tag `Blake3Test` as the test driver * tag `Blake3` lib as the default target for `lake build` * Use `lean-action` for CI
1 parent 3eea8a5 commit bc49814

File tree

4 files changed

+25
-25
lines changed

4 files changed

+25
-25
lines changed

.github/workflows/ci.yml

+4-9
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,10 @@ on:
66
- main
77
jobs:
88
build:
9-
name: Build
109
runs-on: ubuntu-latest
1110
steps:
12-
- name: install elan
13-
run: |
14-
set -o pipefail
15-
curl -sSfL https://github.com/leanprover/elan/releases/download/v4.0.0/elan-x86_64-unknown-linux-gnu.tar.gz | tar xz
16-
./elan-init -y --default-toolchain none
17-
echo "$HOME/.elan/bin" >> $GITHUB_PATH
1811
- uses: actions/checkout@v4
19-
- name: Run Blake3Test
20-
run: lake exe Blake3Test
12+
- uses: leanprover/lean-action@v1
13+
with:
14+
build-args: "--wfail"
15+
test: true

Blake3Test.lean

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ abbrev output : ByteArray := ⟨#[
1111
def main : IO UInt32 := do
1212
println! s!"BLAKE3 version: {Blake3.version}"
1313
if (Blake3.hash input).val.data != output.data
14-
then IO.println "BLAKE3 test failed"; return 1
15-
else IO.println "BLAKE3 test succeeded"; return 0
14+
then IO.eprintln "BLAKE3 test failed"; return 1
15+
else IO.println "BLAKE3 test succeeded"; return 0

lakefile.lean

+18-13
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ open Lake DSL
44

55
package Blake3
66

7+
@[default_target]
78
lean_lib Blake3
89

10+
@[test_driver]
911
lean_exe Blake3Test
1012

1113
abbrev blake3RepoURL := "https://github.com/BLAKE3-team/BLAKE3"
@@ -27,38 +29,41 @@ target cloneBlake3 pkg : GitRepo := do
2729
def blake3CDir (blake3Repo : GitRepo) : System.FilePath :=
2830
blake3Repo.dir / "c"
2931

30-
abbrev blake3Flags : Array String :=
31-
#["-DBLAKE3_NO_SSE2", "-DBLAKE3_NO_SSE41", "-DBLAKE3_NO_AVX2", "-DBLAKE3_NO_AVX512"]
32+
abbrev blake3Flags : Array String := #[
33+
"-DBLAKE3_NO_SSE2",
34+
"-DBLAKE3_NO_SSE41",
35+
"-DBLAKE3_NO_AVX2",
36+
"-DBLAKE3_NO_AVX512",
37+
"-DBLAKE3_USE_NEON=0"
38+
]
3239

3340
abbrev compiler := "cc"
3441

35-
def buildBlake3Obj (pkg : Package) (fileName : String) (addFlags : Bool) := do
42+
def buildBlake3Obj (pkg : Package) (fileName : String) := do
3643
let blake3Repo ← cloneBlake3.fetch >>= (·.await)
3744
let cDir := blake3CDir blake3Repo
3845
let srcJob ← inputTextFile $ cDir / fileName |>.addExtension "c"
3946
let oFile := pkg.buildDir / fileName |>.addExtension "o"
4047
let includeArgs := #["-I", cDir.toString]
41-
let weakArgs := if addFlags then includeArgs ++ blake3Flags else includeArgs
48+
let weakArgs := includeArgs ++ blake3Flags
4249
buildO oFile srcJob weakArgs #[] compiler getLeanTrace
4350

4451
target ffi.o pkg : System.FilePath := do
4552
let blake3Repo ← cloneBlake3.fetch >>= (·.await)
4653
let oFile := pkg.buildDir / "ffi.o"
4754
let srcJob ← inputTextFile $ pkg.dir / "ffi.c"
48-
let includeDir ← getLeanIncludeDir
55+
let leanIncludeDir ← getLeanIncludeDir
4956
let cDir := blake3CDir blake3Repo
50-
let weakArgs := #["-I", includeDir.toString, "-I", cDir.toString]
57+
let weakArgs := #["-I", leanIncludeDir.toString, "-I", cDir.toString]
5158
buildO oFile srcJob weakArgs #[] compiler getLeanTrace
5259

5360
extern_lib ffi pkg := do
5461
-- Gather all `.o` file build jobs
55-
let mut oFileJobs := #[]
56-
oFileJobs := oFileJobs.push $ ← buildBlake3Obj pkg "blake3" false
57-
oFileJobs := oFileJobs.push $ ← buildBlake3Obj pkg "blake3_dispatch" true
58-
oFileJobs := oFileJobs.push $ ← buildBlake3Obj pkg "blake3_portable" true
59-
if (← IO.getEnv "BLAKE3_USE_NEON") == some "1" then
60-
oFileJobs := oFileJobs.push $ ← buildBlake3Obj pkg "blake3_neon" true
61-
oFileJobs := oFileJobs.push $ ← ffi.o.fetch
62+
let blake3O ← buildBlake3Obj pkg "blake3"
63+
let blake3DispatchO ← buildBlake3Obj pkg "blake3_dispatch"
64+
let blake3PortableO ← buildBlake3Obj pkg "blake3_portable"
65+
let ffiO ← ffi.o.fetch
66+
let oFileJobs := #[blake3O, blake3DispatchO, blake3PortableO, ffiO]
6267

6368
let name := nameToStaticLib "ffi"
6469
buildStaticLib (pkg.nativeLibDir / name) oFileJobs

lean-toolchain

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
leanprover/lean4:v4.16.0
1+
leanprover/lean4:v4.17.0

0 commit comments

Comments
 (0)