Conversation
2. Added SMLP package support for Ubuntu >= 22.04
mdmitry1
left a comment
There was a problem hiding this comment.
Initial commit.
Regression passed with non-essential diffs: lines order in some JSON files does not match master.
mdmitry1
left a comment
There was a problem hiding this comment.
Added virtual environment test
2. Added mathsat support
zurabksmlp
left a comment
There was a problem hiding this comment.
Have verified that installation works and a couple of regression tests pass, including ne that required GUI. Approving the PR.
mdmitry1
left a comment
There was a problem hiding this comment.
Merge preparation - code will work after feature branch removal
2. Added virtual display initialization check
mdmitry1
left a comment
There was a problem hiding this comment.
Added OpenSuse support
mdmitry1
left a comment
There was a problem hiding this comment.
Added support of multiple OS:
- Ubuntu 22.04
- OpenSuse 15.5
- Alma Linux 9
- Virtual environment - validated on Ubuntu 24.04
commit 1912a6e1f2cabfec6ba1f1dfde0e0b5d9b3237a2 (HEAD -> master, origin/master, origin/HEAD)
Author: Franz Brauße <dev@karlchenofhell.org>
Date: Sat Mar 7 15:15:20 2026 +0100
fix compilation issue for macosx-sdk 26:
|
I'm running into build errors. First boost: pip-wheel.log.tail.txt I'm building in directory For reference, the command not found comes from the old ~/user-config.jam file: I'm removing this file and continue. However, ideally that file shouldn't influence the build process, so I'm documenting this error here. Can we do something about the |
|
Next: Up to now SMLP did not require the z3-solver pip package to be installed and I don't have it, locally. In fact, If the "pip wheel" process requires z3-solver, shouldn't it be part of the dependencies in pyproject.toml? On the other hand, the documentation of the envvars, specifically When running This |
|
After patching diff --git a/setup.py b/setup.py
index 9d32ba5..b659a59 100644
--- a/setup.py
+++ b/setup.py
@@ -624,19 +624,22 @@ def _write_z3_pc(z3_lib: Path) -> None:
pkgconfig_dir = z3_lib / "pkgconfig"
pkgconfig_dir.mkdir(parents=True, exist_ok=True)
pc_file = pkgconfig_dir / "z3.pc"
- pc_file.write_text(
- f"prefix={prefix}\n"
- f"libdir={z3_lib}\n"
- f"includedir={inc_dir}\n"
- "\n"
- "Name: z3\n"
- "Description: Z3 Theorem Prover\n"
- f"Version: {version}\n"
- "Libs: -L${libdir} -lz3\n"
- "Cflags: -I${includedir}\n"
- )
- print(f"[smlp build] Wrote pkg-config file: {pc_file}")
+ if os.path.exists(pc_file):
+ print(f"[smlp build] Using existing pkg-config file: {pc_file}")
+ else:
+ pc_file.write_text(
+ f"prefix={prefix}\n"
+ f"libdir={z3_lib}\n"
+ f"includedir={inc_dir}\n"
+ "\n"
+ "Name: z3\n"
+ "Description: Z3 Theorem Prover\n"
+ f"Version: {version}\n"
+ "Libs: -L${libdir} -lz3\n"
+ "Cflags: -I${includedir}\n"
+ )
+ print(f"[smlp build] Wrote pkg-config file: {pc_file}")
def _z3_prefix() -> Path:
"""Then |
|
Next up: However, I did originally believe we fixed this for Konstantin's pip-wheel attempt with: diff --git a/pyproject.toml b/pyproject.toml
index 0b6d2b1..cccd9ed 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,7 @@
[build-system]
requires = [
"setuptools>=68",
+ "meson",
"wheel",
]
build-backend = "setuptools.build_meta"However, that's not enough, because diff --git a/setup.py b/setup.py
index b659a59..a5a6852 100644
--- a/setup.py
+++ b/setup.py
@@ -160,7 +160,14 @@ def _meson_bin(build_tmp: Path) -> list[str]:
reuses it for internal calls like `meson install`, so it must be a real
executable file — not a -c string.
"""
+ print(f"[smlp build] Trying to locate 'meson'...")
+ meson_location = shutil.which('meson')
+ if meson_location:
+ print(f"[smlp build] Using default 'meson' at {meson_location}")
+ return [meson_location]
+
# Find where mesonbuild is installed via pip show
+ print(f"[smlp build] Trying to locate 'meson' via pip...")
mesonbuild_location = None
result = subprocess.run(
[sys.executable, "-m", "pip", "show", "meson"], |
|
Next: Well, in So: diff --git a/setup.py b/setup.py
index a5a6852..8a2e4f3 100644
--- a/setup.py
+++ b/setup.py
@@ -773,7 +773,7 @@ def _meson_build(poly_dir: Path, kay_dir: Path,
# Locate the installed smlp package (Meson may use a versioned python path)
candidates = (list(install_prefix.glob("lib/python*/dist-packages/smlp")) +
- list(install_prefix.glob("lib/python3/dist-packages/smlp")))
+ list(install_prefix.glob("lib/python*/site-packages/smlp")))
if not candidates:
sys.exit(
f"[smlp build] ERROR: could not find installed smlp package under "(I removed the Here, However, with this final patch, I get |
|
@mdmitry1 Do you want me to push the above changes to this branch or should I create a new one? |
|
I noticed another issue: The .whl contains It shouldn't. |
This disables flint (and hence, mpfr and BLAS dependencies), also disables static libs, no need for them: diff --git a/setup.py b/setup.py
index 8a2e4f3..8245423 100644
--- a/setup.py
+++ b/setup.py
@@ -754,6 +754,8 @@ def _meson_build(poly_dir: Path, kay_dir: Path,
f"--native-file={native_file}",
f"-Dkay-prefix={kay_dir}",
"-Dz3=enabled",
+ "-Dflint=disabled",
+ "-Dstatic=false",
"--prefix", str(install_prefix),
# Explicitly pass both source dir and build dir as absolute paths
# so Meson works correctly regardless of cwd
@@ -768,7 +770,7 @@ def _meson_build(poly_dir: Path, kay_dir: Path,
env=env,
)
- _run([_ninja_bin(), "-C", str(poly_dir / "build"), "install"],
+ _run([_ninja_bin(), "-vC", str(poly_dir / "build"), "install"],
cwd=str(poly_dir), env=env)
# Locate the installed smlp package (Meson may use a versioned python path) |
|
Can't force switching branches. diff --git a/setup.py b/setup.py
index 8245423..5f2c31d 100644
--- a/setup.py
+++ b/setup.py
@@ -812,13 +812,6 @@ class MesonBuildExt(_build_ext):
branch = os.environ.get("SMLP_BRANCH")
if branch:
_run(["git", "switch", branch], cwd=str(REPO_ROOT))
- else:
- result = subprocess.run(
- ["git", "branch", "-r", "--list", "origin/smlp_python311"],
- capture_output=True, text=True, cwd=str(REPO_ROOT)
- )
- if result.stdout.strip():
- _run(["git", "switch", "smlp_python311"], cwd=str(REPO_ROOT))
installed_pkg = _meson_build(poly_dir, kay_dir, boost_prefix, build_tmp)
|
|
According to Claude, manylinux build should be done in Docker using below image: git clone https://git@github.com/SMLP-Systems/smlp smlp_package_build
cd smlp_package_build
git switch smlp_python311
cd package_build/python3.11/manylinux_2_28
./run_docker_build |
|
Thanks, I'm aware of the manylinux docker images. I don't see how that addresses any of the issues or questions I raised in my comments above. |
fbrausse
left a comment
There was a problem hiding this comment.
Please see the detailed, specific issues and questions raised in my comments above. These should be addressed. A mere reference to some Docker instructions generated by AI does not address any of these concrete requests.
|
I don't see any reason to apply any of above changes before this PR is merged. |
Could you explain to me why software development communities have mostly agreed on using the PR-review procedure? Are there benefits to it in contrast to "just push whatever to master"?
Yeah, that's what one of my comments was about. We're not on v0.1.0 anymore, are we? |
|
It is not whatever - it is working prototype. |
|
With regards to the version - 0.1.0 is not intended for external users - it is just internal milestone. |
|
For the release I was planning to add python3.12 and python3.13 support, so SMLP package will be possible to use by people, who don't have python3.11. |
I strongly suggest you put that information into the title or description of the PR. This is the first time I read about this being a prototype. You praised it as extensively tested. If it indeed is a prototype, we should not advertise wheels just yet.
I don't understand. Please clarify how the externally visible package version 0.1.0 for the wheel containing the SMLP software is an "internal milestone", and what the latter actually means in comparison to the actual version of the SMLP software, which, as of this writing is 1.0.1.
Let me please note that running things inside 4 Docker containers executed on Linux (likely even using the same kernel version) differs from running things on 4 operating systems. In particular, it differs from the environment users¹ might use, which could potentially include a ~/user-config.jam. That's why testing on different configurations (not containers) is important. I suppose, testing also involves feedback. See comments above. ¹ Users here refers to both, pure wheel users, as well as those cloning the repo and doing things with it. Edit: I've now noticed the two pre-built wheels in |
080470d to
b428454
Compare
fbrausse
left a comment
There was a problem hiding this comment.
I've run the regression tests using the pip-installed wheel dist/smlp-0.1.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl this PR put in dist/. I get differences between master and this PR for the following test numbers: 63, 69, 79, 81, 85, 101, 103, 110, 113.
fbrausse
left a comment
There was a problem hiding this comment.
Never mind, re-running the test script didn't reproduce the differences observed yesterday evening. We need to make the tests more reliable. I'll approve this PR but will open issues regarding the identified problems as discussed earlier.

1. Added SMLP package support for manylinux_2_28
2. Added SMLP package support for Ubuntu >= 22.04