aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2023-12-25 21:49:08 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-04-07 14:54:54 +0200
commit8eb8959c8bac379d738afb9a4643b2eb0b5bdb3a (patch)
tree497cec62489ad1136edae737dc0850ce02c611c9
parentbuild: package Z3 solver native libraries (diff)
downloadrefinery-8eb8959c8bac379d738afb9a4643b2eb0b5bdb3a.tar.gz
refinery-8eb8959c8bac379d738afb9a4643b2eb0b5bdb3a.tar.zst
refinery-8eb8959c8bac379d738afb9a4643b2eb0b5bdb3a.zip
chore(z3): bump to z3 4.12.6
We still have to build Z3 for linux-aarch64, because the official release requires glibc 2.35 (and the corresponding libstdc++), while Amazon Linux 2023 only supports glibc 2.34. Also enabled optimization flags from Amazon Linux 2023 for the aarch64 Z3 build. This tecnically excludes older armv8-a platforms (like Raspberry Pi 4), but most modern SBC (like Raspberry Pi 5) already support armv8.2-a+crypto. At any rate, the need to run Refinery on such paltforms in unlikely. At any rate, the build flags should be supported on Neoverse N1-based cloud providers (including Amazon and Hetzner), as well as Apple M devices (armv8.5-a).
-rwxr-xr-xz3/docker/build_in_docker.sh8
-rwxr-xr-xz3/docker/cross_build.sh3
-rw-r--r--z3/gradle.properties2
-rw-r--r--z3/gradle/libs.versions.toml6
-rwxr-xr-xz3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.sobin29479296 -> 30654912 bytes
-rw-r--r--z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license2
-rwxr-xr-xz3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.sobin295952 -> 308224 bytes
-rw-r--r--z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license2
8 files changed, 13 insertions, 10 deletions
diff --git a/z3/docker/build_in_docker.sh b/z3/docker/build_in_docker.sh
index cd28bd32..549e823d 100755
--- a/z3/docker/build_in_docker.sh
+++ b/z3/docker/build_in_docker.sh
@@ -15,7 +15,11 @@ apt-get install -y python3 make gcc-aarch64-linux-gnu g++-aarch64-linux-gnu unzi
15wget "https://github.com/Z3Prover/z3/archive/refs/tags/z3-${z3_version}.zip" 15wget "https://github.com/Z3Prover/z3/archive/refs/tags/z3-${z3_version}.zip"
16unzip "z3-${z3_version}.zip" 16unzip "z3-${z3_version}.zip"
17cd "z3-z3-${z3_version}" 17cd "z3-z3-${z3_version}"
18CXX=aarch64-linux-gnu-g++ CC=aarch64-linux-gnu-gcc python3 scripts/mk_unix_dist.py -f --nodotnet --arch=arm64 18export CC=aarch64-linux-gnu-gcc
19export CXX=aarch64-linux-gnu-g++
20# See https://docs.aws.amazon.com/linux/al2023/ug/performance-optimizations.html
21export CFLAGS="-march=armv8.2-a+crypto -mtune=neoverse-n1 -ftree-vectorize"
22export CXXFLAGS="${CFLAGS}"
23python3 scripts/mk_unix_dist.py -f --nodotnet --arch=arm64
19cp --preserve=all "./dist/z3-${z3_version}-arm64-glibc-2.31/bin"/*.so /data/out/ 24cp --preserve=all "./dist/z3-${z3_version}-arm64-glibc-2.31/bin"/*.so /data/out/
20chown "${target_uid}:${target_gid}" /data/out/* 25chown "${target_uid}:${target_gid}" /data/out/*
21
diff --git a/z3/docker/cross_build.sh b/z3/docker/cross_build.sh
index fe5edd2f..522d5c02 100755
--- a/z3/docker/cross_build.sh
+++ b/z3/docker/cross_build.sh
@@ -11,6 +11,5 @@ z3_version="$(grep '^version=' ../gradle.properties | cut -d'=' -f2)"
11rm -rf out 11rm -rf out
12mkdir out 12mkdir out
13docker run --platform linux/amd64 --rm -it -v "${PWD}:/data" --entrypoint /bin/bash docker.io/eclipse-temurin:17-jdk-focal /data/build_in_docker.sh "${z3_version}" "$(id -u)" "$(id -g)" 13docker run --platform linux/amd64 --rm -it -v "${PWD}:/data" --entrypoint /bin/bash docker.io/eclipse-temurin:17-jdk-focal /data/build_in_docker.sh "${z3_version}" "$(id -u)" "$(id -g)"
14rm -rf ../subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/* 14rm -rf ../subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/*.so
15cp ./out/* ../subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/ 15cp ./out/* ../subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/
16
diff --git a/z3/gradle.properties b/z3/gradle.properties
index 3ef49dc6..73b4d596 100644
--- a/z3/gradle.properties
+++ b/z3/gradle.properties
@@ -6,4 +6,4 @@ file.encoding=UTF-8
6group=tools.refinery.z3 6group=tools.refinery.z3
7org.gradle.configuration-cache=false 7org.gradle.configuration-cache=false
8org.gradle.parallel=true 8org.gradle.parallel=true
9version=4.12.2 9version=4.12.6
diff --git a/z3/gradle/libs.versions.toml b/z3/gradle/libs.versions.toml
index 88cf8083..7c6c5ad7 100644
--- a/z3/gradle/libs.versions.toml
+++ b/z3/gradle/libs.versions.toml
@@ -3,13 +3,13 @@
3# SPDX-License-Identifier: Apache-2.0 3# SPDX-License-Identifier: Apache-2.0
4 4
5[versions] 5[versions]
6junit = "5.10.1" 6junit = "5.10.2"
7 7
8[libraries] 8[libraries]
9asm = { group = "org.ow2.asm", name = "asm", version = "9.6" } 9asm = { group = "org.ow2.asm", name = "asm", version = "9.6" }
10jna = { group = "net.java.dev.jna", name = "jna", version = "5.13.0" } 10jna = { group = "net.java.dev.jna", name = "jna", version = "5.14.0" }
11junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" } 11junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api", version.ref = "junit" }
12junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" } 12junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine", version.ref = "junit" }
13 13
14[plugins] 14[plugins]
15versions = { id = "com.github.ben-manes.versions", version = "0.50.0" } 15versions = { id = "com.github.ben-manes.versions", version = "0.51.0" }
diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so
index f7013e4f..574ee3ab 100755
--- a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so
+++ b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so
Binary files differ
diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license
index 6f1e5a96..0993dbf7 100644
--- a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license
+++ b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3.so.license
@@ -2,5 +2,5 @@ Copyright (c) Microsoft Corporations
2 2
3SPDX-License-Identifier: MIT 3SPDX-License-Identifier: MIT
4 4
5This file was created from the Z3 4.12.2 release sources using the 5This file was created from the Z3 4.12.6 release sources using the
6z3/docker/cross_build.sh script in this repository. 6z3/docker/cross_build.sh script in this repository.
diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so
index e37c7cdb..aace2c30 100755
--- a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so
+++ b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so
Binary files differ
diff --git a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license
index 6f1e5a96..0993dbf7 100644
--- a/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license
+++ b/z3/subprojects/solver-linux-aarch64/src/main/resources/z3java-linux-aarch64/libz3java.so.license
@@ -2,5 +2,5 @@ Copyright (c) Microsoft Corporations
2 2
3SPDX-License-Identifier: MIT 3SPDX-License-Identifier: MIT
4 4
5This file was created from the Z3 4.12.2 release sources using the 5This file was created from the Z3 4.12.6 release sources using the
6z3/docker/cross_build.sh script in this repository. 6z3/docker/cross_build.sh script in this repository.