f624faa
# CVC4 1.4 and later need a modified glpk, unavailable in Fedora.  Therefore,
f624faa
# we currently build without glpk support.
f624faa
Jerry James b98f57b
Name:           cvc4
ded5ca8
Version:        1.7
36b3497
Release:        3%{?dist}
Jerry James b98f57b
Summary:        Automatic theorem prover for SMT problems
Jerry James b98f57b
Jerry James b98f57b
# License breakdown:
Jerry James b98f57b
# - Files containing code under the Boost license:
Jerry James b98f57b
#   o src/util/channel.h
Jerry James b98f57b
#   o examples/hashsmt/sha1.hpp
Jerry James b98f57b
# - Files containing code under the BSD license:
Jerry James b98f57b
#   o src/parser/antlr_input_imports.cpp
Jerry James b98f57b
#   o src/parser/bounded_token_buffer.cpp
Jerry James b98f57b
# - All other files are distributed under the MIT license
a2a8a7c
License:        Boost and BSD and MIT
d86605b
URL:            http://cvc4.cs.stanford.edu/
ded5ca8
Source0:        https://github.com/CVC4/CVC4/archive/%{version}/%{name}-%{version}.tar.gz
ded5ca8
# Fix detection of ABC
ded5ca8
Patch0:         %{name}-abc.patch
ded5ca8
# Do not override Fedora flags
ded5ca8
Patch1:         %{name}-flags.patch
ded5ca8
# Adapt to swig 4
ded5ca8
Patch2:         %{name}-swig4.patch
Jerry James b98f57b
f624faa
BuildRequires:  abc-devel
Jerry James b98f57b
BuildRequires:  antlr3-C-devel
Jerry James b98f57b
BuildRequires:  antlr3-tool
Jerry James b98f57b
BuildRequires:  boost-devel
a2a8a7c
BuildRequires:  cadical-devel
ded5ca8
BuildRequires:  cmake
a2a8a7c
BuildRequires:  cryptominisat-devel
Jerry James b98f57b
BuildRequires:  cxxtest
ded5ca8
BuildRequires:  drat2er-devel
d86605b
BuildRequires:  gcc-c++
7f3ec66
BuildRequires:  ghostscript
Jerry James b98f57b
BuildRequires:  gmp-devel
f624faa
BuildRequires:  java-devel
Jerry James b98f57b
BuildRequires:  jpackage-utils
a2a8a7c
BuildRequires:  lfsc-devel
7e5614b
BuildRequires:  libtool
0451dab
BuildRequires:  perl-interpreter
ded5ca8
BuildRequires:  python3-devel
Jerry James b98f57b
BuildRequires:  readline-devel
Jerry James b98f57b
BuildRequires:  swig
a2a8a7c
BuildRequires:  symfpu-devel
Jerry James b98f57b
Jerry James b98f57b
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
f624faa
ded5ca8
# This can be removed when Fedora 30 reaches EOL
ded5ca8
Obsoletes:      %{name}-doc < 1.7
ded5ca8
Provides:       %{name}-doc = %{version}-%{release}
ded5ca8
Jerry James b98f57b
%description
Jerry James b98f57b
CVC4 is an efficient open-source automatic theorem prover for
Jerry James b98f57b
satisfiability modulo theories (SMT) problems.  It can be used to prove
Jerry James b98f57b
the validity (or, dually, the satisfiability) of first-order formulas in
Jerry James b98f57b
a large number of built-in logical theories and their combination.
Jerry James b98f57b
Jerry James b98f57b
CVC4 is the fourth in the Cooperating Validity Checker family of tools
Jerry James b98f57b
(CVC, CVC Lite, CVC3) but does not directly incorporate code from any
Jerry James b98f57b
previous version.  A joint project of NYU and U Iowa, CVC4 aims to
Jerry James b98f57b
support the  features of CVC3 and SMT-LIBv2 while optimizing the design
Jerry James b98f57b
of the core system architecture and decision procedures to take
Jerry James b98f57b
advantage of recent engineering and algorithmic advances.
Jerry James b98f57b
Jerry James b98f57b
CVC4 is intended to be an open and extensible SMT engine, and it can be
Jerry James b98f57b
used as a stand-alone tool or as a library, with essentially no limit on
Jerry James b98f57b
its use for research or commercial purposes.
Jerry James b98f57b
Jerry James b98f57b
%package devel
Jerry James b98f57b
Summary:        Headers and other files for developing with %{name}
Jerry James b98f57b
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
Jerry James b98f57b
Jerry James b98f57b
%description devel
Jerry James b98f57b
Header files and library links for developing applications that use %{name}.
Jerry James b98f57b
Jerry James b98f57b
%package libs
Jerry James b98f57b
Summary:        Library containing an automatic theorem prover for SMT problems
Jerry James b98f57b
Jerry James b98f57b
%description libs
Jerry James b98f57b
Library containing the core of the %{name} automatic theorem prover for
Jerry James b98f57b
SMT problems.
Jerry James b98f57b
Jerry James b98f57b
%package java
Jerry James b98f57b
Summary:        Java interface to %{name}
Jerry James b98f57b
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
Jerry James b98f57b
Requires:       java-headless
Jerry James b98f57b
Requires:       jpackage-utils
Jerry James b98f57b
Jerry James b98f57b
%description java
Jerry James b98f57b
Java interface to %{name}.
Jerry James b98f57b
ded5ca8
%package python3
ded5ca8
Summary:        Python 3 interface to %{name}
ded5ca8
Requires:       %{name}-libs%{?_isa} = %{version}-%{release}
ded5ca8
ded5ca8
%description python3
ded5ca8
Python 3 interface to %{name}.
ded5ca8
Jerry James b98f57b
%prep
ded5ca8
%autosetup -p0 -n CVC4-%{version}
7e5614b
ded5ca8
# The Java interface uses type punning
ded5ca8
sed -i '/include_directories/aadd_compile_options("-fno-strict-aliasing")' \
ded5ca8
    src/bindings/java/CMakeLists.txt
ded5ca8
ded5ca8
# The header file installation script does not know about DESTDIR
ded5ca8
sed -i 's/\${CMAKE_INSTALL_PREFIX}/\\$ENV{DESTDIR}&/' src/CMakeLists.txt
ded5ca8
ded5ca8
# Fix installation directory on 64-bit arches
ded5ca8
if [ "%{_lib}" = "lib64" ]; then
ded5ca8
  sed -i 's/DESTINATION lib/&64/' src/CMakeLists.txt src/parser/CMakeLists.txt
Jerry James 1eebfe3
fi
ded5ca8
4e0920c
# One test exhausts all memory on 32-bit platforms; skip it
4e0920c
%ifarch %{arm} %{ix86}
4e0920c
sed -i '/replaceall-len-c/d' test/regress/CMakeLists.txt
4e0920c
%endif
4e0920c
ded5ca8
%build
bb8bce8
pyinc=$(python3-config --includes | sed -r 's/-I([^[:blank:]]+)[[:blank:]]*.*/\1/')
f294ef4
pylib=$(ls -1 %{_libdir}/libpython3.*.so)
ded5ca8
export CFLAGS="%{optflags} -fsigned-char -DABC_USE_STDINT_H -I%{_jvmdir}/java/include -I%{_jvmdir}/java/include/linux -I%{_includedir}/abc"
ded5ca8
export CXXFLAGS="$CFLAGS"
ded5ca8
%cmake \
ded5ca8
  -DCMAKE_SKIP_RPATH:BOOL=YES \
ded5ca8
  -DCMAKE_SKIP_INSTALL_RPATH:BOOL=YES \
ded5ca8
  -DBUILD_BINDINGS_JAVA:BOOL=ON \
ded5ca8
  -DBUILD_BINDINGS_PYTHON:BOOL=ON \
ded5ca8
  -DENABLE_GPL:BOOL=ON \
ded5ca8
  -DENABLE_OPTIMIZED:STRING=ON \
ded5ca8
  -DENABLE_PORTFOLIO:STRING=ON \
ded5ca8
  -DENABLE_PROOFS:STRING=ON \
ded5ca8
  -DENABLE_SHARED:STRING=ON \
ded5ca8
  -DUSE_ABC:STRING=ON \
ded5ca8
  -DABC_DIR:STRING=%{_prefix} \
ded5ca8
  -DUSE_CADICAL:BOOL=ON \
ded5ca8
  -DCADICAL_DIR:STRING=%{_prefix} \
ded5ca8
  -DUSE_CRYPTOMINISAT:BOOL=ON \
ded5ca8
  -DCRYPTOMINISAT_DIR:STRING=%{_prefix} \
ded5ca8
  -DUSE_DRAT2ER:BOOL=ON \
ded5ca8
  -DDRAT2ER_DIR:STRING=%{_prefix} \
ded5ca8
  -DDrat2Er_INCLUDE_DIR:STRING=%{_includedir}/drat2er \
ded5ca8
  -DDrat2Er_LIBRARIES:STRING=-ldrat2er \
ded5ca8
  -DDratTrim_LIBRARIES:STRING=-ldrat2er \
ded5ca8
  -DUSE_LFSC:BOOL=ON \
ded5ca8
  -DLFSC_DIR:STRING=%{_prefix} \
ded5ca8
  -DUSE_PYTHON3:BOOL=ON \
ded5ca8
  -DUSE_READLINE:STRING=ON \
ded5ca8
  -DUSE_SYMFPU:BOOL=ON \
ded5ca8
  -DSYMFPU_DIR:STRING=%{_prefix} \
ded5ca8
  -DPYTHON_EXECUTABLE:FILEPATH=%{_bindir}/python%{python3_version} \
bb8bce8
  -DPYTHON_LIBRARY:FILEPATH=$pylib \
bb8bce8
  -DPYTHON_INCLUDE_DIR:FILEPATH=$pyinc \
ded5ca8
  .
ded5ca8
ded5ca8
# Tell swig to build for python 3
ded5ca8
sed -i 's/swig -python/& -py3/' \
ded5ca8
  src/bindings/python/CMakeFiles/CVC4_swig_compilation.dir/build.make
Jerry James b98f57b
Jerry James b98f57b
make %{?_smp_mflags}
Jerry James b98f57b
make doc
Jerry James b98f57b
Jerry James b98f57b
%install
Jerry James b98f57b
%make_install
Jerry James b98f57b
ded5ca8
# BUG: CVC4 1.7 does not install the Java interface
ded5ca8
mkdir -p %{buildroot}%{_javadir}
ded5ca8
cp -p src/bindings/java/CVC4.jar %{buildroot}%{_javadir}
ded5ca8
mkdir -p %{buildroot}%{_jnidir}/%{name}
ded5ca8
cp -p src/bindings/java/libcvc4jni.so %{buildroot}%{_jnidir}/%{name}
Jerry James b98f57b
Jerry James b98f57b
%check
4e0920c
# The tests use a large amount of stack space.
4e0920c
# Only do this on s390x to workaround bz 1688841.
4e0920c
%ifarch s390x
Jerry James b98f57b
ulimit -s unlimited
4e0920c
%endif
Jerry James b98f57b
7e5614b
# Fix the Java test's access to the JNI object it needs
7e5614b
sed 's,loadLibrary("cvc4jni"),load("%{buildroot}%{_jnidir}/%{name}/libcvc4jni.so"),' \
7e5614b
    -i test/system/CVC4JavaTest.java
7e5614b
ded5ca8
export LC_ALL=C.UTF-8
7e5614b
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
Jerry James b98f57b
make check 
Jerry James b98f57b
Jerry James b98f57b
%files
ded5ca8
%doc AUTHORS NEWS README.md THANKS
ded5ca8
%{_bindir}/%{name}
ded5ca8
%{_bindir}/p%{name}
f624faa
%{_datadir}/%{name}/
ded5ca8
%{_mandir}/man1/%{name}.1*
ded5ca8
%{_mandir}/man1/p%{name}.1*
ded5ca8
%{_mandir}/man5/%{name}.5*
Jerry James b98f57b
Jerry James b98f57b
%files libs
ded5ca8
%license COPYING licenses/channel.h-LICENSE
ded5ca8
%{_libdir}/lib%{name}.so.6
ded5ca8
%{_libdir}/lib%{name}parser.so.6
Jerry James b98f57b
Jerry James b98f57b
%files devel
Jerry James b98f57b
%{_includedir}/%{name}/
ded5ca8
%{_libdir}/lib%{name}.so
ded5ca8
%{_libdir}/lib%{name}parser.so
Jerry James b98f57b
%{_mandir}/man3/*
Jerry James b98f57b
Jerry James b98f57b
%files java
ded5ca8
%{_javadir}/CVC4.jar
Jerry James b98f57b
%{_jnidir}/%{name}/
Jerry James b98f57b
ded5ca8
%files python3
ded5ca8
%{python3_sitearch}/CVC4.py
ded5ca8
%{python3_sitearch}/_CVC4.so
ded5ca8
%{python3_sitearch}/__pycache__/CVC4.*
ded5ca8
Jerry James b98f57b
%changelog
36b3497
* Thu Jul 18 2019 Jerry James <loganjerry@gmail.com> - 1.7-3
36b3497
- Rebuild for cadical 1.0.3 (bz 1731031)
36b3497
bb8bce8
* Sat Jun 29 2019 Jerry James <loganjerry@gmail.com> - 1.7-2
bb8bce8
- Fix finding the python include dir and lib (bz 1724142)
bb8bce8
ded5ca8
* Wed Jun 12 2019 Jerry James <loganjerry@gmail.com> - 1.7-1
ded5ca8
- New upstream release
ded5ca8
- Drop -autoconf, -cadical, -doxygen, -symfpu, and -vec patches
ded5ca8
- Drop -doc subpackage; upstream no longer supports doxygen
ded5ca8
- Build with python 3 instead of python 2
ded5ca8
- Build with drat2er support
ded5ca8
- Add -abc and -flags patches
ded5ca8
- Add -swig4 patch (bz 1707353)
ded5ca8
e594904
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 1.6-6
e594904
- Rebuild for readline 8.0
e594904
a2421c2
* Thu Jan 31 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-5
a2421c2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
a2421c2
dc7daa1
* Tue Jan 29 2019 Jonathan Wakely <jwakely@redhat.com> - 1.6-4
dc7daa1
- Rebuilt for Boost 1.69
dc7daa1
b906ba7
* Mon Nov 26 2018 Jerry James <loganjerry@gmail.com> - 1.6-3
b906ba7
- Rebuild for updated abc
b906ba7
059d328
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.6-2
059d328
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
059d328
a2a8a7c
* Tue Jul 10 2018 Jerry James <loganjerry@gmail.com> - 1.6-1
a2a8a7c
- New upstream release
a2a8a7c
e37cc64
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-6
e37cc64
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
e37cc64
c18a97c
* Thu Feb  1 2018 Jerry James <loganjerry@gmail.com> - 1.5-5
c18a97c
- Fix FTBFS with automake 1.5.1 (bz 1482152)
c18a97c
2e0d78b
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-4
2e0d78b
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
2e0d78b
1c5a9c2
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 1.5-3
1c5a9c2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
1c5a9c2
4714cf4
* Fri Jul 21 2017 Kalev Lember <klember@redhat.com> - 1.5-2
4714cf4
- Rebuilt for Boost 1.64
4714cf4
7e5614b
* Sat Jul 15 2017 Jerry James <loganjerry@gmail.com> - 1.5-1
7e5614b
- New upstream release
7e5614b
- Drop upstreamed patches: -signed, -boolean, -minisat
7e5614b
- Add -constant patch to fix undefined symbols in the JNI shared object
7e5614b
- Add cryptominisat4 support
7e5614b
d5f5a58
* Mon May 15 2017 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-15
d5f5a58
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild
d5f5a58
ff83d75
* Fri Mar  3 2017 Jerry James <loganjerry@gmail.com> - 1.4-14
ff83d75
- Fix FTBFS (bz 1427891)
ff83d75
87a98e5
* Tue Feb 07 2017 Kalev Lember <klember@redhat.com> - 1.4-13
87a98e5
- Rebuilt for Boost 1.63
87a98e5
Igor Gnatenko 0cb6d37
* Thu Jan 12 2017 Igor Gnatenko <ignatenko@redhat.com> - 1.4-12
Igor Gnatenko 0cb6d37
- Rebuild for readline 7.x
Igor Gnatenko 0cb6d37
867ad49
* Tue May 17 2016 Jonathan Wakely <jwakely@redhat.com> - 1.4-11
867ad49
- Rebuilt for linker errors in boost (#1331983)
867ad49
13f2867
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 1.4-10
13f2867
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
13f2867
a1ee81d
* Fri Jan 15 2016 Jonathan Wakely <jwakely@redhat.com> - 1.4-9
a1ee81d
- Rebuilt for Boost 1.60
a1ee81d
a2cafdd
* Thu Aug 27 2015 Jonathan Wakely <jwakely@redhat.com> - 1.4-8
a2cafdd
- Rebuilt for Boost 1.59
a2cafdd
369ec59
* Wed Jul 29 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-7
369ec59
- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159
369ec59
e0f4509
* Wed Jul 22 2015 David Tardon <dtardon@redhat.com> - 1.4-6
e0f4509
- rebuild for Boost 1.58
e0f4509
7aad03e
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.4-5
7aad03e
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
7aad03e
5b4a2d1
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 1.4-4
5b4a2d1
- Rebuilt for GCC 5 C++11 ABI change
5b4a2d1
Jerry James b938af9
* Fri Mar 20 2015 Jerry James <loganjerry@gmail.com> - 1.4-3
Jerry James b938af9
- Don't use perftools at all due to random weirdness on multiple platforms
Jerry James b938af9
- Also Obsoletes/Provides lfsc-devel
Jerry James b938af9
Jerry James ebc8ce8
* Wed Mar 11 2015 Jerry James <loganjerry@gmail.com> - 1.4-2
Jerry James ebc8ce8
- Add -boolean, -minisat, and -signed patches to fix test failures
Jerry James ebc8ce8
- Fix boost detection with g++ 5.0
Jerry James ebc8ce8
- Fix access to an uninitialized variable
Jerry James ebc8ce8
- Help the documentation generator find COPYING
Jerry James ebc8ce8
- Build with -fsigned-char to fix the arm build
Jerry James ebc8ce8
- Prevent rebuilds while running checks
Jerry James 7bd0d82
- Remove i686 from have_perftools due to test failures
Jerry James ebc8ce8
Petr Machata 6e15f19
* Tue Jan 27 2015 Petr Machata <pmachata@redhat.com> - 1.4-2
Petr Machata 6e15f19
- Rebuild for boost 1.57.0
Petr Machata 6e15f19
f624faa
* Thu Jan  1 2015 Jerry James <loganjerry@gmail.com> - 1.4-1
f624faa
- New upstream release
f624faa
- Drop updated test files, now included upstream
f624faa
- Drop obsolete workarounds for glpk compatibility
f624faa
- Drop lfsc BR/R, as it has been incorporated into cvc4
f624faa
Jerry James 9feb5dc
* Fri Aug 22 2014 Jerry James <loganjerry@gmail.com> - 1.3-7
Jerry James 9feb5dc
- Remove arm platforms from have_perftools due to bz 1109309
Jerry James 9feb5dc
bf0a467
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3-7
bf0a467
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
bf0a467
08380b2
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.3-6
08380b2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
08380b2
f079f09
* Fri May 23 2014 David Tardon <dtardon@redhat.com> - 1.3-5
f079f09
- rebuild for boost 1.55.0
f079f09
Jerry James 4ead8ba
* Thu Mar  6 2014 Jerry James <loganjerry@gmail.com> - 1.3-4
Jerry James 4ead8ba
- Merge changes from Dan HorĂ¡k to fix secondary arch builds
Jerry James 4ead8ba
Jerry James 8891b6f
* Tue Feb  4 2014 Jerry James <loganjerry@gmail.com> - 1.3-3
Jerry James 8891b6f
- glibc Provides /sbin/ldconfig, not /usr/sbin/ldconfig
Jerry James 8891b6f
Jerry James b98f57b
* Mon Jan 27 2014 Jerry James <loganjerry@gmail.com> - 1.3-2
Jerry James b98f57b
- Install JNI objects in %%{_jnidir}
Jerry James 17debdc
- The documentation is arch-specific after all
Jerry James b98f57b
Jerry James b98f57b
* Wed Jan 22 2014 Jerry James <loganjerry@gmail.com> - 1.3-1
Jerry James b98f57b
- Initial RPM