Compare commits

...

70 Commits
f32 ... rawhide

Author SHA1 Message Date
Jerry James 7e13c11207 Fix python package library load name (bz 2255464) 2023-12-21 09:06:18 -07:00
Richard W.M. Jones 4b6c6d8a09 OCaml 5.1.1 + s390x code gen fix for Fedora 40 2023-12-18 17:56:01 +00:00
Richard W.M. Jones 28838627de OCaml 5.1.1 rebuild for Fedora 40 2023-12-12 16:17:08 +00:00
Jerry James 69a9e69b24 Version 4.12.4
Drop upstreamed patches: python, stdint, escapes
2023-12-10 10:31:57 -07:00
Richard W.M. Jones 6e97219e4f OCaml 5.1 rebuild for Fedora 40 2023-10-05 20:46:07 +01:00
Jerry James 75819831d1 Rebuild for ocaml-zarith 1.13 2023-07-27 10:28:07 -06:00
Jerry James e32772559e Exclude OCaml BRs on i386 2023-07-23 10:03:32 -06:00
Jerry James 7ce32a5a19 Do not build or install the i386 OCaml interface 2023-07-23 08:41:01 -06:00
Fedora Release Engineering 8f4eee1504 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-22 19:35:07 +00:00
Jerry James 7fe18e3f96 Exclude the OCaml and Java subpackages only on i386 2023-07-21 08:41:35 -06:00
Richard W.M. Jones 332c05596a OCaml 5.0 rebuild for Fedora 39 2023-07-12 15:30:38 +01:00
Richard W.M. Jones a9a7082547 ExcludeArch i686 (https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/SPML7CUBSZNI36NLXGVHEG7DNHU3EWOJ/) 2023-07-11 11:36:26 +01:00
Jerry James b4c9000b46 OCaml 5.0.0 rebuild 2023-07-10 16:55:13 -06:00
Jerry James 67bb880db8 Rebuild for OCaml 5.0 2023-06-21 13:39:46 -06:00
Python Maint 647df7bf04 Rebuilt for Python 3.12 2023-06-15 14:41:58 +02:00
Jerry James ee66c97a95 Version 4.12.2 2023-05-15 08:44:33 -06:00
Richard W.M. Jones 0c0af7bf22 Rebuild OCaml packages for F38 2023-01-24 09:20:14 +00:00
Jerry James 42e82b1a86 Version 4.12.1. 2023-01-21 10:25:11 -07:00
Fedora Release Engineering fed39e8c56 Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-01-21 08:09:46 +00:00
Jerry James 70124da6df Version 4.12.0.
Drop upstreamed -data-race and -uninit patches.
2023-01-17 15:01:03 -07:00
Jerry James aca6b5306f Add -data-race patch to fix segfault (bz 2157972).
Add -uninit patch to fix use of an uninitialized value.
2023-01-08 21:56:34 -07:00
Jerry James 6264c50021 Further clarify license of the doc subpackage (SPDX). 2022-12-14 16:15:48 -07:00
Jerry James 6bc865dcfc Version 4.11.2. 2022-09-04 13:17:38 -06:00
Jerry James 1b84535f23 Version 4.11.0. Clarify license of the doc subpackage. 2022-08-19 13:32:07 -06:00
Jerry James 52e2a85d5e Version 4.10.2. 2022-08-08 06:33:35 -06:00
Fedora Release Engineering 700febff68 Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-07-23 13:49:24 +00:00
Jerry James 013801252f Do not support Java on i686 (rhbz#2104112).
Use new OCaml macros.
2022-07-05 13:23:31 -06:00
Python Maint d607dff554 Rebuilt for Python 3.11 2022-06-20 10:45:53 +02:00
Richard W.M. Jones c6dc115d0d OCaml 4.14.0 rebuild 2022-06-18 15:25:55 +01:00
Python Maint 6bc7033f70 Rebuilt for Python 3.11 2022-06-13 17:27:26 +02:00
Jerry James d11a9bc22b Version 4.8.17. Drop upstreamed -ambiguous-overload patch. 2022-05-19 11:32:13 -06:00
Jerry James d44508e7e3 Add -ambiguous-overload patch to fix cppcheck build failure. 2022-03-24 13:58:33 -06:00
Jerry James 0d4eb3e8f9 Version 4.8.15. 2022-03-21 12:04:45 -06:00
Jiri d4a35ac719 Rebuilt for java-17-openjdk as system jdk
https://fedoraproject.org/wiki/Changes/Java17
2022-02-06 00:53:17 +01:00
Richard W.M. Jones cea5f750e3 OCaml 4.13.1 rebuild to remove package notes 2022-02-04 13:29:49 +00:00
Fedora Release Engineering 4a9d6bf0fd - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2022-01-22 05:46:08 +00:00
Jerry James 6ffdbbf843 Version 4.8.14. Conditionalize the %check script. 2021-12-24 11:30:57 -07:00
Jerry James 533bf73c99 Version 4.8.13. 2021-11-19 12:28:26 -07:00
Richard W.M. Jones 25c7a7705b OCaml 4.13.1 build 2021-10-04 20:45:36 +01:00
Fedora Release Engineering 969a5ffd21 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-07-23 22:12:33 +00:00
Jerry James 1db6cfa63f Version 4.8.12. 2021-07-13 13:11:43 -06:00
Jerry James 61301a359d Version 4.8.11. 2021-06-08 08:27:35 -06:00
Python Maint 306bdba1f5 Rebuilt for Python 3.10 2021-06-04 21:20:40 +02:00
Jerry James b504b06e75 Rebuild for ocaml-zarith 1.12. 2021-03-03 12:11:52 -07:00
Richard W.M. Jones bad77dc612 Bump release and rebuild. 2021-03-01 20:17:49 +00:00
Richard W.M. Jones 813e700557 Bump release and rebuild. 2021-03-01 19:41:17 +00:00
Richard W.M. Jones 2a1214c7dc OCaml 4.12.0 build 2021-03-01 16:57:46 +00:00
Jerry James 09e6f045f4 Version 4.8.10. 2021-02-13 09:47:28 -07:00
Fedora Release Engineering 6ca61cb935 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2021-01-28 00:37:04 +00:00
Jerry James a7058774ee Fix the python interface (bz 1910923). 2020-12-26 07:44:31 -07:00
Jerry James 259befebd7 Rebuild for ocaml-zarith 1.11. 2020-11-16 17:52:06 -07:00
Jerry James 1844f63fc1 Explicitly BR make. 2020-11-09 21:38:07 -07:00
Jerry James 753e0f37ec Rebuild for ocaml-zarith 1.10. 2020-09-25 12:23:02 -06:00
Jerry James b42ca529b7 Version 4.8.9. 2020-09-11 10:11:15 -06:00
Richard W.M. Jones 47902ea172 OCaml 4.11.1 rebuild 2020-09-01 20:15:25 +01:00
Richard W.M. Jones 6224468a06 OCaml 4.11.0 rebuild 2020-08-21 12:11:52 +01:00
Jerry James 13876e8c5c Remove %{?_isa} from Requires in noarch python3 subpackage. 2020-07-31 16:45:39 -06:00
Fedora Release Engineering 4c91858d05 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2020-07-29 15:18:04 +00:00
Jerry James 069e9003bb Build with cmake.
- Manually build the OCaml interface.
- Limit the class file version in the Java interface.
- Allow the library to hide internal symbols; this means that the
  binary can no longer be linked with the library, so the main
  package does not depend on the -libs package.
- The python package no longer contains an ELF object, so make it noarch.
2020-07-27 10:48:00 -06:00
Jerry James afbbbc365e Drop unnecessary %python_provide in Rawhide. 2020-07-21 20:55:25 -06:00
Jiri 1326348b3f Rebuilt for JDK-11 2020-07-11 09:18:01 +02:00
Miro Hrončok ffaa2f2743 Rebuilt for Python 3.9 2020-05-26 03:55:41 +02:00
Jerry James 7adeedfa23 Conditionalize the __isa_bits macro. 2020-05-15 10:50:35 -06:00
Jerry James bab37a06cd Put cmake files in the lookaside cache instead of in git. 2020-05-15 10:42:32 -06:00
Wolfgang Stöggl 40a2541855 Add Z3 cmake files required by find_package
So far, Z3 is not found when using cmake find_package(Z3).
The following files have been added, to enable find_package(Z3):
  Z3Config.cmake
  Z3ConfigVersion.cmake
  Z3Targets.cmake
  Z3Targets-release.cmake

Remarks:
- Z3 has a build system using CMake. However, it does not support
  building OCaml bindings yet. Therefore, stay with the classical
  configure and make build in the spec file here and provide the
  required cmake files manually.
- Version, lib and bitness are updated in above .cmake template files
  during the rpm prep stage using sed.
2020-05-15 17:12:35 +02:00
Jerry James dd0859c8cf Version 4.8.8. Drop all patches; all have been upstreamed. 2020-05-09 16:45:27 -06:00
Richard W.M. Jones f61d5ceefa OCaml 4.11.0+dev2-2020-04-22 rebuild 2020-05-04 23:20:33 +01:00
Richard W.M. Jones cbb2590453 OCaml 4.11.0 pre-release attempt 2 2020-04-21 17:08:32 +01:00
Richard W.M. Jones 1c67231cdd OCaml 4.11.0 pre-release 2020-04-17 22:05:15 +01:00
Richard W.M. Jones 126b79d98e Update all OCaml dependencies for RPM 4.16. 2020-04-02 23:08:08 +01:00
10 changed files with 464 additions and 192 deletions

1
.gitignore vendored
View File

@ -1,2 +1,3 @@
/z3-*.tar.gz
/Z3-*.tar.gz
/Z3_cmake_files.tar.gz

5
README.md Normal file
View File

@ -0,0 +1,5 @@
# z3
[Z3](https://github.com/Z3Prover/z3) is a theorem prover from Microsoft
Research. If you are not familiar with Z3, you can start
[here](https://github.com/Z3Prover/z3/wiki#background).

View File

@ -1 +1 @@
SHA512 (z3-4.8.7.tar.gz) = 145e2b2f1fa4edd0917107c7e1d54d779c7ed85c48af2ce6def4c90d1c4db05f74c9657e173cedf48770589fbe484c97fa1923295271cd3792523ffc4f67ed0c
SHA512 (z3-4.12.4.tar.gz) = fcb778d2e3e0d13fc68afcd8724548279f9edbbb4aac1bbb93e00959c33330ab2fd84f2c2e4b0b78f767819725a90b845fc606a9adc931ae1f0a11f4deae433b

View File

@ -1,12 +0,0 @@
Add explicit template instantiation to work around an s390x problem:
https://bugzilla.redhat.com/show_bug.cgi?id=1794127
--- a/src/util/lp/lp_primal_core_solver.cpp
+++ b/src/util/lp/lp_primal_core_solver.cpp
@@ -38,5 +38,6 @@ template void lp::lp_primal_core_solver<
template bool lp::lp_primal_core_solver<lp::mpq, lp::mpq>::update_basis_and_x_tableau(int, int, lp::mpq const&);
template bool lp::lp_primal_core_solver<double, double>::update_basis_and_x_tableau(int, int, double const&);
template bool lp::lp_primal_core_solver<lp::mpq, lp::numeric_pair<lp::mpq> >::update_basis_and_x_tableau(int, int, lp::numeric_pair<lp::mpq> const&);
+template void lp::lp_primal_core_solver<rational, lp::numeric_pair<rational> >::update_inf_cost_for_column_tableau(unsigned);
}

56
z3-ocaml.patch Normal file
View File

@ -0,0 +1,56 @@
--- z3-z3-4.12.2/scripts/mk_util.py.orig 2023-05-12 13:59:04.000000000 -0600
+++ z3-z3-4.12.2/scripts/mk_util.py 2023-07-06 11:53:06.045350565 -0600
@@ -34,7 +34,7 @@ EXAMP_DEBUG_FLAG=''
LDFLAGS=getenv("LDFLAGS", "")
JNI_HOME=getenv("JNI_HOME", None)
OCAMLC=getenv("OCAMLC", "ocamlc")
-OCAMLOPT=getenv("OCAMLOPT", "ocamlopt")
+OCAMLOPT=getenv("OCAMLOPT", None)
OCAML_LIB=getenv("OCAML_LIB", None)
OCAMLFIND=getenv("OCAMLFIND", "ocamlfind")
DOTNET="dotnet"
@@ -460,13 +460,9 @@ def check_ml():
raise MKException('Failed testing ocamlc compiler. Set environment variable OCAMLC with the path to the Ocaml compiler')
if is_verbose():
print ('Testing %s...' % OCAMLOPT)
- r = exec_cmd([OCAMLOPT, '-o', 'a.out', 'hello.ml'])
- if r != 0:
- raise MKException('Failed testing ocamlopt compiler. Set environment variable OCAMLOPT with the path to the Ocaml native compiler. Note that ocamlopt may require flexlink to be in your path.')
try:
rmf('hello.cmi')
rmf('hello.cmo')
- rmf('hello.cmx')
rmf('a.out')
rmf('hello.o')
except:
@@ -2069,7 +2065,7 @@ class MLComponent(Component):
out.write('\t%s -linkall -shared -o %s.cmxs -I . -I %s %s.cmxa\n' % (OCAMLOPTF, z3mls, self.sub_dir, z3mls))
out.write('\n')
- out.write('ml: %s.cma %s.cmxa %s.cmxs\n' % (z3mls, z3mls, z3mls))
+ out.write('ml: %s.cma\n' % z3mls)
if IS_OSX:
out.write('\tinstall_name_tool -id %s/libz3.dylib libz3.dylib\n' % (stubs_install_path))
out.write('\tinstall_name_tool -change libz3.dylib %s/libz3.dylib api/ml/dllz3ml.so\n' % (stubs_install_path))
@@ -2091,8 +2087,6 @@ class MLComponent(Component):
out.write(get_component(Z3_DLL_COMPONENT).dll_name + '$(SO_EXT) ')
out.write(os.path.join(self.sub_dir, 'META '))
out.write(os.path.join(self.sub_dir, 'z3ml.cma '))
- out.write(os.path.join(self.sub_dir, 'z3ml.cmxa '))
- out.write(os.path.join(self.sub_dir, 'z3ml.cmxs '))
def mk_install(self, out):
if is_ml_enabled() and self._install_bindings():
@@ -2119,12 +2113,9 @@ class MLComponent(Component):
else:
out.write(' ' + os.path.join(self.sub_dir, m) + '.mli')
out.write(' ' + os.path.join(self.sub_dir, m) + '.cmi')
- out.write(' ' + os.path.join(self.sub_dir, m) + '.cmx')
out.write(' %s' % ((os.path.join(self.sub_dir, 'libz3ml$(LIB_EXT)'))))
out.write(' %s' % ((os.path.join(self.sub_dir, 'z3ml$(LIB_EXT)'))))
out.write(' %s' % ((os.path.join(self.sub_dir, 'z3ml.cma'))))
- out.write(' %s' % ((os.path.join(self.sub_dir, 'z3ml.cmxa'))))
- out.write(' %s' % ((os.path.join(self.sub_dir, 'z3ml.cmxs'))))
out.write(' %s' % ((os.path.join(self.sub_dir, 'dllz3ml'))))
if is_windows() or is_cygwin_mingw() or is_msys2():
out.write('.dll')

View File

@ -1,13 +0,0 @@
diff --git a/doc/mk_api_doc.py b/doc/mk_api_doc.py
index bfe865e06..7bcc1c017 100644
--- a/doc/mk_api_doc.py
+++ b/doc/mk_api_doc.py
@@ -317,7 +317,7 @@ try:
if ML_ENABLED:
ml_output_dir = os.path.join(OUTPUT_DIRECTORY, 'html', 'ml')
mk_dir(ml_output_dir)
- if subprocess.call(['ocamldoc', '-html', '-d', ml_output_dir, '-sort', '-hide', 'Z3', '-I', '%s/api/ml' % BUILD_DIR, '%s/api/ml/z3enums.mli' % BUILD_DIR, '%s/api/ml/z3.mli' % BUILD_DIR]) != 0:
+ if subprocess.call(['ocamldoc', '-html', '-d', ml_output_dir, '-sort', '-hide', 'Z3', '-I', '+zarith', '-I', '%s/api/ml' % BUILD_DIR, '%s/api/ml/z3enums.mli' % BUILD_DIR, '%s/api/ml/z3.mli' % BUILD_DIR]) != 0:
print("ERROR: ocamldoc failed.")
exit(1)
print("Generated ML/OCaml documentation.")

View File

@ -1,11 +0,0 @@
--- a/src/parsers/util/scanner.cpp
+++ b/src/parsers/util/scanner.cpp
@@ -480,7 +480,7 @@ scanner::token scanner::scan() {
return read_number(ch, true);
case '#':
return read_bv_literal();
- case -1:
+ case static_cast<char>(-1):
m_state = EOF_TOKEN;
break;
default:

View File

@ -1,13 +0,0 @@
diff --git a/src/util/mpz.cpp b/src/util/mpz.cpp
index a8190df1b..9c2d3d5ff 100644
--- a/src/util/mpz.cpp
+++ b/src/util/mpz.cpp
@@ -72,6 +72,8 @@ inline uint64_t _trailing_zeros64(uint64_t x) {
#if defined(_WINDOWS) && !defined(_M_ARM) && !defined(_M_ARM64)
// _trailing_zeros32 already defined using intrinsics
+#elif defined(__GNUC__)
+// _trailing_zeros32 already defined using intrinsics
#else
inline uint32_t _trailing_zeros32(uint32_t x) {
uint32_t r = 0;

View File

@ -1,25 +0,0 @@
# THIS FILE IS FOR WHITELISTING RPMLINT ERRORS AND WARNINGS IN TASKOTRON
# https://fedoraproject.org/wiki/Taskotron/Tasks/dist.rpmlint#Whitelisting_errors
# The dictionary is missing some technical terms
addFilter(r'W: spelling-error .* ((S|s)atisfiability|datatypes)')
# Shared objects in the python arch directory are not devel files
addFilter(r'python3-z3\.[^:]+: W: devel-file-in-non-devel-package .*libz3\.so')
# The documentation is in the -doc subpackage
addFilter(r'W: no-documentation')
# Oh yes, we have no manual page
addFilter(r'W: no-manual-page-for-binary z3')
# The configure script is not an autotools-generated script
addFilter(r'z3\.spec:[^:]*: W: configure-without-libdir-spec')
# The spec file moves the shared object from /usr/lib to /usr/lib64 on 64-bit
# systems, the opposite of the problem this warning is intended to catch.
addFilter(r'z3\.spec:[^:]+: E: hardcoded-library-path in %{_prefix}/lib/libz3\.so\*')
# This is where JAR files are supposed to go when there is a binary interface.
addFilter(r'z3\.spec:[^:]+: E: hardcoded-library-path in %{_prefix}/lib/\*\.jar')
addFilter(r'z3\.spec:[^:]+: E: hardcoded-library-path in %{_prefix}/lib/lib%{name}java\.so')

518
z3.spec
View File

@ -1,36 +1,47 @@
%global medtag 30e7c225cd51
# TODO: A Julia interface is now available, but requires
# https://github.com/JuliaInterop/libcxxwrap-julia, which is not currently
# available in Fedora.
# TODO: A JavaScript interface is now available. Given the generally poor
# state of JavaScript in Fedora, I do not plan to add a subpackage for it
# unless somebody is really, really persuasive and available to help fix it
# if it breaks.
# Tests are off by default because some of the tests require more memory than
# the koji builders have available.
%bcond_with test
Name: z3
Version: 4.8.7
Release: 6%{?dist}
Version: 4.12.4
Release: 4%{?dist}
Summary: Satisfiability Modulo Theories (SMT) solver
License: MIT
URL: https://github.com/Z3Prover/z3
Source0: https://github.com/Z3Prover/z3/archive/%{name}-%{version}.tar.gz
# https://github.com/Z3Prover/z3/pull/2730
Patch0: %{name}-ocamldoc.patch
# https://github.com/Z3Prover/z3/commit/e212159f4e941c78fc03239e0884f2f0454f581f
Patch1: %{name}-trailing-zeros32.patch
# Fix a place where char is assumed to be signed
Patch2: %{name}-signed-char.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1794127
Patch3: %{name}-gcc-10-s390x.patch
# Do not try to build or install native OCaml artifacts on bytecode-only arches
Patch0: %{name}-ocaml.patch
BuildRequires: cmake
BuildRequires: doxygen
BuildRequires: gcc-c++
BuildRequires: gmp-devel
BuildRequires: graphviz
BuildRequires: help2man
%ifarch %{java_arches}
BuildRequires: java-devel
BuildRequires: javapackages-tools
%endif
BuildRequires: make
BuildRequires: ninja-build
%ifnarch %{ix86}
BuildRequires: ocaml
BuildRequires: ocaml-findlib
BuildRequires: ocaml-ocamldoc
BuildRequires: ocaml-zarith-devel
%endif
BuildRequires: python3-devel
BuildRequires: python3dist(setuptools)
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
BuildRequires: %{py3_dist setuptools}
%description
Z3 is a satisfiability modulo theories (SMT) solver; given a set of
@ -43,17 +54,55 @@ uninterpreted functions, and quantifiers.
%package libs
Summary: Library for applications that use z3 functionality
# This can be removed when F40 reaches EOL
%ifnarch %{java_arches}
Obsoletes: java-z3 < 4.8.17-5
%endif
%description libs
Library for applications that use z3 functionality.
%package devel
Summary: Header files for build applications that use z3
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: z3-libs%{?_isa} = %{version}-%{release}
%description devel
Header files for build applications that use z3.
%package doc
# The content is MIT.
# Two files in examples are GPL-3.0-or-later WITH Bison-exception 2.2:
# examples/tptp/tptp5.tab.c
# examples/tptp/tptp5.tab.c
# Other licenses are due to files installed by doxygen.
# html/bc_s.png: GPL-1.0-or-later
# html/bdwn.png: GPL-1.0-or-later
# html/closed.png: GPL-1.0-or-later
# html/doc.png: GPL-1.0-or-later
# html/doxygen.css: GPL-1.0-or-later
# html/doxygen.svg: GPL-1.0-or-later
# html/dynsections.js: MIT
# html/folderclosed.png: GPL-1.0-or-later
# html/folderopen.png: GPL-1.0-or-later
# html/jquery.js: MIT
# html/nav_f.png: GPL-1.0-or-later
# html/nav_g.png: GPL-1.0-or-later
# html/nav_h.png: GPL-1.0-or-later
# html/open.png: GPL-1.0-or-later
# html/search/search.css: GPL-1.0-or-later
# html/search/search.js: MIT
# html/search/search_l.png: GPL-1.0-or-later
# html/search/search_m.png: GPL-1.0-or-later
# html/search/search_r.png: GPL-1.0-or-later
# html/splitbar.png: GPL-1.0-or-later
# html/sync_off.png: GPL-1.0-or-later
# html/sync_on.png: GPL-1.0-or-later
# html/tab_a.png: GPL-1.0-or-later
# html/tab_b.png: GPL-1.0-or-later
# html/tab_h.png: GPL-1.0-or-later
# html/tab_s.png: GPL-1.0-or-later
# html/tabs.css: GPL-1.0-or-later
License: MIT AND GPL-3.0-or-later WITH Bison-exception-2.2 AND GPL-1.0-or-later
Summary: API documentation for Z3
# FIXME: this should be noarch, but we end up with different numbers of inheritance
# graphs on different architectures. Why?
@ -61,167 +110,402 @@ Summary: API documentation for Z3
%description doc
API documentation for Z3.
%package -n java-%{name}
%ifarch %{java_arches}
%package -n java-z3
Summary: Java interface to z3
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: z3-libs%{?_isa} = %{version}-%{release}
Requires: java
Requires: javapackages-tools
%description -n java-%{name}
%description -n java-z3
Java interface to z3.
%endif
%package -n ocaml-%{name}
# OCaml packages not built on i686 since OCaml 5 / Fedora 39.
%ifnarch %{ix86}
%package -n ocaml-z3
Summary: Ocaml interface to z3
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
Requires: z3-libs%{?_isa} = %{version}-%{release}
%description -n ocaml-%{name}
%description -n ocaml-z3
Ocaml interface to z3.
%package -n ocaml-%{name}-devel
%package -n ocaml-z3-devel
Summary: Files for building ocaml applications that use z3
Requires: ocaml-%{name}%{?_isa} = %{version}-%{release}
Requires: ocaml-z3%{?_isa} = %{version}-%{release}
Requires: ocaml-zarith-devel%{?_isa}
%description -n ocaml-%{name}-devel
%description -n ocaml-z3-devel
Files for building ocaml applications that use z3.
%endif
%package -n python3-%{name}
%{?python_provide:%python_provide python3-%{name}}
%package -n python3-z3
Summary: Python 3 interface to z3
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
BuildArch: noarch
Requires: z3-libs = %{version}-%{release}
%description -n python3-%{name}
%description -n python3-z3
Python 3 interface to z3.
%prep
%autosetup -p1 -n %{name}-%{name}-%{version}
%autosetup -N -n %{name}-%{name}-%{version}
%ifnarch %{ocaml_native_compiler}
%patch -P0 -p1
%endif
%autopatch -m 1 -p1
# Install python objects into the right place, enable verbose builds, use
# Fedora CFLAGS, preserve timestamps when installing, include the entire
# contents of the archives in the library, link the library with the correct
# flags, don't hide library symbols needed by the executable, add a version to
# the soname, and build the ocaml files with debug info.
sed -e "s|^\(PYTHON_PACKAGE_DIR=\).*|\1'%{python3_sitearch}'|" \
# Enable verbose builds, use Fedora CFLAGS, preserve timestamps when installing,
# include the entire contents of the archives in the library, link the library
# with the correct flags, and build the ocaml files with debuginfo.
sed \
-e 's/@$(CXX)/$(CXX)/' \
-e '/O3/d' \
-e "s/\(['\"]\)cp\([^[:alnum:]]\)/\1cp -p\2/" \
-e "s/\(SLIBEXTRAFLAGS = '\)'/\1-Wl,--no-whole-archive -Wl,--as-needed'/" \
-e "/SLIBFLAGS/s|-shared|& $RPM_LD_FLAGS -Wl,--whole-archive|" \
-e "s/\(SLIBEXTRAFLAGS = '\)'/\1-Wl,--no-whole-archive'/" \
-e '/SLIBFLAGS/s|-shared|& %{build_ldflags} -Wl,--whole-archive|' \
-e 's/\(libz3$(SO_EXT)\)\(\\n\)/\1 -Wl,--no-whole-archive\2/' \
-e 's/ -fvisibility=hidden//' \
-e "s/\(soname,libz3\.so\)'/\1.0'/" \
-e "s/OCAML_FLAGS = ''/OCAML_FLAGS = '-g'/" \
-i scripts/mk_util.py
# Comply with the Java packaging guidelines
sed -e '/catch/s,\(System\.load\)Library("\(.*\)"),\1("%{_libdir}/z3/\2.so"),' \
# Comply with the Java packaging guidelines and fill in the version for python
majver=$(cut -d. -f-2 <<< %{version})
sed -e '/libz3java/s,\(System\.load\)Library("\(.*\)"),\1("%{_libdir}/z3/\2.so"),' \
-e "s/'so'/'so.$majver'/" \
-i scripts/update_api.py
# Fix character encoding
iconv -f iso8859-1 -t utf-8 RELEASE_NOTES > RELEASE_NOTES.utf8
touch -r RELEASE_NOTES RELEASE_NOTES.utf8
mv -f RELEASE_NOTES.utf8 RELEASE_NOTES
# Turn off HTML timestamps for reproducible builds
sed -i '/HTML_TIMESTAMP/s/YES/NO/' doc/z3api.cfg.in doc/z3code.dox
%build
export CXXFLAGS="$RPM_OPT_FLAGS"
export LANG="C.UTF-8"
export PYTHON="%{__python3}"
export LANG=C.UTF-8
export PYTHON=%{python3}
%cmake -G Ninja \
-DCMAKE_INSTALL_INCLUDEDIR=%{_includedir}/z3 \
-DCMAKE_JAVA_COMPILE_FLAGS="-source;1.8;-target;1.8" \
-DZ3_BUILD_DOCUMENTATION:BOOL=ON \
%ifarch %{java_arches}
-DZ3_BUILD_JAVA_BINDINGS:BOOL=ON \
%endif
-DZ3_BUILD_PYTHON_BINDINGS:BOOL=ON \
-DZ3_INCLUDE_GIT_HASH:BOOL=OFF \
-DZ3_INCLUDE_GIT_DESCRIBE:BOOL=OFF \
-DZ3_USE_LIB_GMP:BOOL=ON
%cmake_build
%ifnarch %{ix86}
# The cmake build system does not build the OCaml interface. Do that manually.
#
# First, run the configure script to generate several files.
# This is NOT an autoconf-generated configure script.
./configure -p %{_prefix} --githash=%{medtag} --gmp --java --ml --python
# FIXME: intermittent build failures with %%{?_smp_mflags}
make -C build
./configure -p %{_prefix} --gmp --ml
# The z3 binary is NOT linked with libz3, but instead has duplicate copies of a
# lot of object files, so rebuild it. But first, add library links.
pushd build
mv libz3.so libz3.so.0.0.0
ln -s libz3.so.0.0.0 libz3.so.0
ln -s libz3.so.0 libz3.so
g++ $RPM_OPT_FLAGS -DNDEBUG -o z3 shell/*.o $RPM_LD_FLAGS -L. -lz3 -lgmp
popd
# Second, to prevent make from rebuilding the entire library, copy the
# cmake-built library to where make expects it.
cp -dp %{_vpath_builddir}/libz3.so* build
# Build the documentation
pushd doc
%{__python3} mk_api_doc.py --ml --no-dotnet
popd
# Third, make wants to rebuild libz3.so since its dependencies do not exist.
# Do selective Makefile surgery to prevent this.
sed -i '/^api/s/ libz3\$(SO_EXT)//g' build/Makefile
# Fourth, build the OCaml interface
%make_build -C build ml
%endif
%install
export LANG="C.UTF-8"
# Install the python3 interface
make -C build install DESTDIR=%{buildroot}
rm -f %{buildroot}%{python3_sitearch}/%{name}/lib/libz3.so
ln -s %{_libdir}/libz3.so.0 %{buildroot}%{python3_sitearch}/%{name}/lib/libz3.so
# On 64-bit systems, move the library to the right directory
if [ "%{_libdir}" != "%{_prefix}/lib" ]; then
mkdir -p %{buildroot}%{_libdir}
mv %{buildroot}%{_prefix}/lib/libz3.so* %{buildroot}%{_libdir}
fi
# Make library links
mv %{buildroot}%{_libdir}/libz3.so %{buildroot}%{_libdir}/libz3.so.0.0.0
ln -s libz3.so.0.0.0 %{buildroot}%{_libdir}/libz3.so.0
ln -s libz3.so.0 %{buildroot}%{_libdir}/libz3.so
# Move the header files into their own directory
mkdir -p %{buildroot}%{_includedir}/%{name}
mv %{buildroot}%{_includedir}/*.h %{buildroot}%{_includedir}/%{name}
# Install the C++, python3, and Java interfaces
%cmake_install
%ifarch %{java_arches}
# Move the Java interface to its correct location
mkdir -p %{buildroot}%{_libdir}/%{name}
mkdir -p %{buildroot}%{_libdir}/z3
mkdir -p %{buildroot}%{_jnidir}
mv %{buildroot}%{_prefix}/lib/*.jar %{buildroot}%{_jnidir}
ln -s %{_jnidir}/com.microsoft.z3.jar %{buildroot}%{_libdir}/%{name}
mv %{buildroot}%{_prefix}/lib/lib%{name}java.so %{buildroot}%{_libdir}/%{name}
mv %{buildroot}%{_javadir}/*.jar %{buildroot}%{_jnidir}
ln -s %{_jnidir}/com.microsoft.z3.jar %{buildroot}%{_libdir}/z3
mv %{buildroot}%{_libdir}/libz3java.so %{buildroot}%{_libdir}/z3
%endif
#%%check
# Some of the tests require more memory than the koji builders have available.
#
#export LANG="C.UTF-8"
#pushd build
#make test-z3
#./test-z3 /a
#popd
%ifnarch %{ix86}
# Install the OCaml interface
cd build/api/ml
mkdir -p %{buildroot}%{ocamldir}/Z3
%ifarch %{ocaml_native_compiler}
cp -p *.cmx{,a,s} %{buildroot}%{ocamldir}/Z3
%endif
cp -p META *.{a,cma,cmi,mli} %{buildroot}%{ocamldir}/Z3
mkdir -p %{buildroot}%{ocamldir}/stublibs
cp -p *.so %{buildroot}%{ocamldir}/stublibs
cd -
%endif
# We handle the documentation files below
rm -rf %{buildroot}%{_docdir}/Z3
# Make a man page
mkdir -p %{buildroot}%{_mandir}/man1
help2man -N -o %{buildroot}%{_mandir}/man1/z3.1 %{_vpath_builddir}/z3
# Fix the pkgconfig file
sed -i 's,//usr,,' %{buildroot}%{_libdir}/pkgconfig/z3.pc
%if %{with test}
%check
export LANG="C.UTF-8"
cd build
make test-z3
./test-z3 /a
cd -
%endif
%files
%doc README.md RELEASE_NOTES
%{_bindir}/%{name}
%doc README.md RELEASE_NOTES.md
%{_bindir}/z3
%{_mandir}/man1/z3.1*
%files libs
%license LICENSE.txt
%{_libdir}/lib%{name}.so.*
%{_libdir}/libz3.so.4.12*
%files devel
%{_includedir}/%{name}/
%{_libdir}/lib%{name}.so
%{_includedir}/z3/
%{_libdir}/libz3.so
%{_libdir}/cmake/z3/
%{_libdir}/pkgconfig/z3.pc
%files doc
%doc doc/api/html examples
%doc %{_vpath_builddir}/doc/api/html examples
%license LICENSE.txt
%files -n java-%{name}
%{_libdir}/%{name}/
%{_jnidir}/com.microsoft.z3.jar
%ifarch %{java_arches}
%files -n java-z3
%{_libdir}/z3/
%{_jnidir}/com.microsoft.z3*jar
%endif
%files -n ocaml-%{name}
%dir %{_libdir}/ocaml/Z3/
%{_libdir}/ocaml/Z3/META
%{_libdir}/ocaml/Z3/*.cma
%{_libdir}/ocaml/Z3/*.cmi
%{_libdir}/ocaml/Z3/*.cmxs
%{_libdir}/ocaml/Z3/*.so
%ifnarch %{ix86}
%files -n ocaml-z3
%dir %{ocamldir}/Z3/
%{ocamldir}/Z3/META
%{ocamldir}/Z3/*.cma
%{ocamldir}/Z3/*.cmi
%ifarch %{ocaml_native_compiler}
%{ocamldir}/Z3/*.cmxs
%endif
%{ocamldir}/stublibs/*.so
%files -n ocaml-%{name}-devel
%{_libdir}/ocaml/Z3/*.a
%{_libdir}/ocaml/Z3/*.cmx
%{_libdir}/ocaml/Z3/*.cmxa
%{_libdir}/ocaml/Z3/*.mli
%files -n ocaml-z3-devel
%{ocamldir}/Z3/*.a
%ifarch %{ocaml_native_compiler}
%{ocamldir}/Z3/*.cmx
%{ocamldir}/Z3/*.cmxa
%endif
%{ocamldir}/Z3/*.mli
%endif
%files -n python3-%{name}
%{python3_sitearch}/%{name}/
%files -n python3-z3
%{python3_sitelib}/z3/
%changelog
* Thu Dec 21 2023 Jerry James <loganjerry@gmail.com> - 4.12.4-4
- Fix python package library load name (bz 2255464)
* Mon Dec 18 2023 Richard W.M. Jones <rjones@redhat.com> - 4.12.4-3
- OCaml 5.1.1 + s390x code gen fix for Fedora 40
* Tue Dec 12 2023 Richard W.M. Jones <rjones@redhat.com> - 4.12.4-2
- OCaml 5.1.1 rebuild for Fedora 40
* Sat Dec 9 2023 Jerry James <loganjerry@gmail.com> - 4.12.4-1
- Version 4.12.4
- Drop upstreamed patches: python, stdint, escapes
* Thu Oct 05 2023 Richard W.M. Jones <rjones@redhat.com> - 4.12.2-7
- OCaml 5.1 rebuild for Fedora 40
* Thu Jul 27 2023 Jerry James <loganjerry@gmail.com> - 4.12.2-6
- Rebuild for ocaml-zarith 1.13
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.12.2-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Fri Jul 21 2023 Jerry James <loganjerry@gmail.com> - 4.12.2-4
- Exclude the OCaml and Java subpackages only on i386
* Wed Jul 12 2023 Richard W.M. Jones <rjones@redhat.com> - 4.12.2-4
- OCaml 5.0 rebuild for Fedora 39
* Mon Jul 10 2023 Jerry James <loganjerry@gmail.com> - 4.12.2-3
- OCaml 5.0.0 rebuild
* Thu Jun 15 2023 Python Maint <python-maint@redhat.com> - 4.12.2-2
- Rebuilt for Python 3.12
* Mon May 15 2023 Jerry James <loganjerry@gmail.com> - 4.12.2-1
- Version 4.12.2
* Tue Jan 24 2023 Richard W.M. Jones <rjones@redhat.com> - 4.12.1-2
- Rebuild OCaml packages for F38
* Sat Jan 21 2023 Jerry James <loganjerry@gmail.com> - 4.12.1-1
- Version 4.12.1
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 4.12.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Tue Jan 17 2023 Jerry James <loganjerry@gmail.com> - 4.12.0-1
- Version 4.12.0
- Drop upstreamed -data-race and -uninit patches
* Sun Jan 8 2023 Jerry James <loganjerry@gmail.com> - 4.11.2-2
- Add -data-race patch to fix segfault (bz 2157972)
- Add -uninit patch to fix use of an uninitialized value
* Wed Dec 14 2022 Jerry James <loganjerry@gmail.com> - 4.11.2-1
- Further clarify license of the doc subpackage (SPDX)
* Sun Sep 4 2022 Jerry James <loganjerry@gmail.com> - 4.11.2-1
- Version 4.11.2
* Fri Aug 19 2022 Jerry James <loganjerry@gmail.com> - 4.11.0-1
- Version 4.11.0
- Clarify license of the doc subpackage
* Mon Aug 8 2022 Jerry James <loganjerry@gmail.com> - 4.10.2-1
- Version 4.10.2
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.8.17-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Tue Jun 28 2022 Jerry James <loganjerry@gmail.com> - 4.8.17-5
- Do not support Java on i686 (rhbz#2104112)
- Use new OCaml macros
* Mon Jun 20 2022 Python Maint <python-maint@redhat.com> - 4.8.17-4
- Rebuilt for Python 3.11
* Sat Jun 18 2022 Richard W.M. Jones <rjones@redhat.com> - 4.8.17-3
- OCaml 4.14.0 rebuild
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 4.8.17-2
- Rebuilt for Python 3.11
* Mon May 16 2022 Jerry James <loganjerry@gmail.com> - 4.8.17-1
- Version 4.8.17
- Drop upstreamed -ambiguous-overload patch
* Thu Mar 24 2022 Jerry James <loganjerry@gmail.com> - 4.8.15-2
- Add -ambiguous-overload patch to fix cppcheck build failure
* Mon Mar 21 2022 Jerry James <loganjerry@gmail.com> - 4.8.15-1
- Version 4.8.15
* Sat Feb 05 2022 Jiri Vanek <jvanek@redhat.com> - 4.8.14-4
- Rebuilt for java-17-openjdk as system jdk
* Fri Feb 04 2022 Richard W.M. Jones <rjones@redhat.com> - 4.8.14-3
- OCaml 4.13.1 rebuild to remove package notes
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 4.8.14-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Fri Dec 24 2021 Jerry James <loganjerry@gmail.com> - 4.8.14-1
- Version 4.8.14
- Conditionalize the %%check script
* Fri Nov 19 2021 Jerry James <loganjerry@gmail.com> - 4.8.13-1
- Version 4.8.13
* Mon Oct 04 2021 Richard W.M. Jones <rjones@redhat.com> - 4.8.12-3
- OCaml 4.13.1 build
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.8.12-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Tue Jul 13 2021 Jerry James <loganjerry@gmail.com> - 4.8.12-1
- Version 4.8.12
* Sun Jun 6 2021 Jerry James <loganjerry@gmail.com> - 4.8.11-1
- Version 4.8.11
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 4.8.10-6
- Rebuilt for Python 3.10
* Wed Mar 3 2021 Jerry James <loganjerry@gmail.com> - 4.8.10-5
- Rebuild for ocaml-zarith 1.12
* Mon Mar 1 20:17:48 GMT 2021 Richard W.M. Jones <rjones@redhat.com> - 4.8.10-4
- Bump release and rebuild.
* Mon Mar 1 19:41:16 GMT 2021 Richard W.M. Jones <rjones@redhat.com> - 4.8.10-3
- Bump release and rebuild.
* Mon Mar 1 16:57:45 GMT 2021 Richard W.M. Jones <rjones@redhat.com> - 4.8.10-2
- OCaml 4.12.0 build
* Sat Feb 13 2021 Jerry James <loganjerry@gmail.com> - 4.8.10-1
- Version 4.8.10
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 4.8.9-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Dec 25 2020 Jerry James <loganjerry@gmail.com> - 4.8.9-4
- Fix the python interface (bz 1910923)
* Mon Nov 16 2020 Jerry James <loganjerry@gmail.com> - 4.8.9-3
- Rebuild for ocaml-zarith 1.11
* Fri Sep 25 2020 Jerry James <loganjerry@gmail.com> - 4.8.9-2
- Rebuild for ocaml-zarith 1.10
* Fri Sep 11 2020 Jerry James <loganjerry@gmail.com> - 4.8.9-1
- Version 4.8.9
* Tue Sep 01 2020 Richard W.M. Jones <rjones@redhat.com> - 4.8.8-7
- OCaml 4.11.1 rebuild
* Fri Aug 21 2020 Richard W.M. Jones <rjones@redhat.com> - 4.8.8-6
- OCaml 4.11.0 rebuild
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 4.8.8-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 27 2020 Jerry James <loganjerry@gmail.com> - 4.8.8-4
- Build with cmake
- Manually build the OCaml interface
- Limit the class file version in the Java interface
- Allow the library to hide internal symbols; this means that the binary can no
longer be linked with the library, so the main package does not depend on
the -libs package
- The python package no longer contains an ELF object, so make it noarch
* Sat Jul 11 2020 Jiri Vanek <jvanek@redhat.com> - 4.8.8-4
- Rebuilt for JDK-11, see https://fedoraproject.org/wiki/Changes/Java11
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 4.8.8-3
- Rebuilt for Python 3.9
* Thu May 14 2020 Wolfgang Stöggl <c72578@yahoo.de> - 4.8.8-2
- Add Z3 cmake files required by find_package(Z3)
* Sat May 9 2020 Jerry James <loganjerry@gmail.com> - 4.8.8-1
- Version 4.8.8
- Drop all patches; all have been upstreamed
* Mon May 04 2020 Richard W.M. Jones <rjones@redhat.com> - 4.8.7-10
- OCaml 4.11.0+dev2-2020-04-22 rebuild
* Tue Apr 21 2020 Richard W.M. Jones <rjones@redhat.com> - 4.8.7-9
- OCaml 4.11.0 pre-release attempt 2
* Fri Apr 17 2020 Richard W.M. Jones <rjones@redhat.com> - 4.8.7-8
- OCaml 4.11.0 pre-release
* Thu Apr 02 2020 Richard W.M. Jones <rjones@redhat.com> - 4.8.7-7
- Update all OCaml dependencies for RPM 4.16.
* Wed Feb 26 2020 Richard W.M. Jones <rjones@redhat.com> - 4.8.7-6
- OCaml 4.10.0 final.