75fa8e5
Name:           cvc3
72c7f33
Version:        2.4.1
b4a92f5
Release:        6%{?dist}
75fa8e5
Summary:        Validity checker of many-sorted first-order formulas with theories
75fa8e5
75fa8e5
Group:          Applications/Engineering
72c7f33
License:        BSD and MIT
75fa8e5
URL:            http://www.cs.nyu.edu/acsys/cvc3/
b4a92f5
Source:         http://www.cs.nyu.edu/acsys/cvc3/download/%{version}/%{name}-%{version}.tar.gz
b8ae206
# This patch is Fedora-specific.  Set up doxygen so that the generated
b8ae206
# documentation meets packaging standards.
b4a92f5
Patch0:         %{name}-doc.patch
72c7f33
# This patch was sent upstream 6 Sep 2011.  It fixes some broken doxygen
72c7f33
# comments.
b4a92f5
Patch1:         %{name}-doxygen.patch
b4a92f5
# Not sent upstream, as cvc3 has reached end of life.  Add support for aarch64.
b4a92f5
Patch2:         %{name}-aarch64.patch
72c7f33
72c7f33
BuildRequires:  bison
72c7f33
BuildRequires:  doxygen
72c7f33
BuildRequires:  emacs
72c7f33
BuildRequires:  flex
72c7f33
BuildRequires:  gmp-devel
d1bd96e
BuildRequires:  java-devel >= 1:1.6.0
72c7f33
BuildRequires:  jpackage-utils
72c7f33
BuildRequires:  perl
72c7f33
BuildRequires:  python
72c7f33
BuildRequires:  time
72c7f33
BuildRequires:  transfig
72c7f33
BuildRequires:  tex(latex)
72c7f33
BuildRequires:  xemacs
75fa8e5
75fa8e5
%description
75fa8e5
CVC3 is an automatic theorem prover for Satisfiability Modulo Theories (SMT)
75fa8e5
problems.  It can be used to prove the validity (or, dually, the
75fa8e5
satisfiability) of first-order formulas in a large number of built-in logical
75fa8e5
theories and their combination.
75fa8e5
75fa8e5
CVC3 is the latest offspring of a series of popular SMT provers, which
75fa8e5
originated at Stanford University with the SVC system.  In particular, it
75fa8e5
builds on the code base of CVC Lite, its most recent predecessor.  Its high
75fa8e5
level design follows that of the Sammy prover.
75fa8e5
75fa8e5
CVC3 works with a version of first-order logic with polymorphic types and has
75fa8e5
a wide variety of features including:
75fa8e5
75fa8e5
 * several built-in base theories: rational and integer linear arithmetic,
75fa8e5
   arrays, tuples, records, inductive data types, bit vectors, and equality
75fa8e5
   over uninterpreted function symbols;
75fa8e5
 * support for quantifiers;
75fa8e5
 * an interactive text-based interface;
75fa8e5
 * a rich C and C++ API for embedding in other systems;
75fa8e5
 * proof and model generation abilities;
75fa8e5
 * predicate subtyping;
75fa8e5
 * essentially no limit on its use for research or commercial purposes (see
75fa8e5
   license).
75fa8e5
75fa8e5
For example, if you run 'cvc3 +interactive' and submit:
75fa8e5
  i, j: INT; ASSERT i = j + 1; QUERY i>j;
75fa8e5
it will determine "Valid."  If you then ask:
75fa8e5
  QUERY i
75fa8e5
it will determine "Invalid." and show an example demonstrating when the formula
75fa8e5
is not true (e.g., i = 0 and j = -1).
75fa8e5
75fa8e5
%package devel
75fa8e5
Group:          Development/Libraries
75fa8e5
Summary:        Header files for development with CVC3
72c7f33
Requires:       %{name}%{?_isa} = %{version}-%{release}
75fa8e5
75fa8e5
%description devel
75fa8e5
Header files need to develop with CVC3.
75fa8e5
75fa8e5
%package doc
75fa8e5
Group:          Documentation
75fa8e5
Summary:        API documentation for CVC3
75fa8e5
Requires:       %{name} = %{version}-%{release}
d7db038
BuildArch:      noarch
75fa8e5
75fa8e5
%description doc
75fa8e5
API documentation for CVC3.
75fa8e5
75fa8e5
%package java
75fa8e5
Group:          Development/Libraries/Java
75fa8e5
Summary:        Java interface for CVC3
72c7f33
Requires:       %{name}%{?_isa} = %{version}-%{release}, java, jpackage-utils
75fa8e5
75fa8e5
%description java
75fa8e5
Java interface for CVC3.
75fa8e5
75fa8e5
%package emacs
75fa8e5
Group:          Applications/Engineering
75fa8e5
Summary:        Compiled Emacs mode for CVC3
d7db038
Requires:       emacs(bin) >= %{_emacs_version}
75fa8e5
Requires:       %{name} = %{version}-%{release}
d7db038
BuildArch:      noarch
75fa8e5
75fa8e5
%description emacs
75fa8e5
This package contains the byte compiled CVC3 mode for Emacs.
75fa8e5
75fa8e5
%package emacs-el
75fa8e5
Group:          Applications/Engineering
75fa8e5
Summary:        Elisp source files for the CVC3 Emacs mode
75fa8e5
Requires:       %{name} = %{version}-%{release}
d7db038
BuildArch:      noarch
75fa8e5
75fa8e5
%description emacs-el
75fa8e5
This package contains the source Elisp files for the CVC3 mode for Emacs.  You
75fa8e5
do not need to install this package to run %{name}.  Install the %{name}-emacs
75fa8e5
package to use %{name} with Emacs.
75fa8e5
75fa8e5
%package xemacs
75fa8e5
Group:          Applications/Engineering
75fa8e5
Summary:        Compiled XEmacs mode for CVC3
b8ae206
Requires:       xemacs(bin) >= %{_xemacs_version}
75fa8e5
Requires:       %{name} = %{version}-%{release}
d7db038
BuildArch:      noarch
75fa8e5
75fa8e5
%description xemacs
75fa8e5
This package contains the byte compiled CVC3 mode for XEmacs.
75fa8e5
75fa8e5
%package xemacs-el
75fa8e5
Group:          Applications/Engineering
75fa8e5
Summary:        Elisp source files for the CVC3 XEmacs mode
75fa8e5
Requires:       %{name} = %{version}-%{release}
d7db038
BuildArch:      noarch
75fa8e5
75fa8e5
%description xemacs-el
75fa8e5
This package contains the source Elisp files for the CVC3 mode for XEmacs.  You
75fa8e5
do not need to install this package to run %{name}.  Install the %{name}-xemacs
75fa8e5
package to use %{name} with XEmacs.
75fa8e5
75fa8e5
%prep
75fa8e5
%setup -q
72c7f33
%patch0
72c7f33
%patch1
b4a92f5
%patch2
72c7f33
72c7f33
# Use the appropriate compiler flags
72c7f33
sed -e "s|^  LOCAL_CXXFLAGS = -O2|  LOCAL_CXXFLAGS =|" \
72c7f33
    -e "s|^LOCAL_CXXFLAGS += -Wall|LOCAL_CXXFLAGS +=|" \
72c7f33
    -i Makefile.std
75fa8e5
75fa8e5
# We can't use loadLibrary, since the JNI libaries are not in a standard place
75fa8e5
sed -i \
72c7f33
 "s|loadLibrary(\"cvc3jni\")|load(\"%{_libdir}/%{name}/libcvc3jni.so\")|" \
75fa8e5
 java/src/cvc3/Embedded.java
75fa8e5
e65a070
# Get rid of an unused direct shared library dependency
afbc0c5
sed -i "s|-lcvc3 \$(LD_LIBS)|-Wl,--as-needed -lcvc3 \$(LD_LIBS)|" java/Makefile
72c7f33
75fa8e5
%build
75fa8e5
%configure --with-build=optimized --enable-dynamic --enable-java \
Jerry James 8423de8
  --disable-zchaff --with-java-home=%{java_home}
Jerry James 8423de8
# FIXME: %%{?_smp_mflags} sometimes leads to build failures
Jerry James 8423de8
make
75fa8e5
75fa8e5
# Build the documentation
72c7f33
make -C doc
72c7f33
rm -f doc/html/*.{map,md5}
75fa8e5
75fa8e5
%install
75fa8e5
mkdir -p %{buildroot}%{_libdir}/%{name}
75fa8e5
%makeinstall javadir=%{buildroot}%{_libdir}/%{name}
75fa8e5
75fa8e5
# Byte compile the CVC3 mode file for Emacs
d7db038
mkdir -p %{buildroot}%{_emacs_sitelispdir}
d7db038
cp -p emacs/cvc-mode.el %{buildroot}%{_emacs_sitelispdir}
d7db038
pushd %{buildroot}%{_emacs_sitelispdir}
d7db038
%{_emacs_bytecompile} cvc-mode.el
75fa8e5
popd
75fa8e5
75fa8e5
# Byte compile the CVC3 mode file for XEmacs
d7db038
mkdir -p %{buildroot}%{_xemacs_sitelispdir}
d7db038
cp -p emacs/cvc-mode.el %{buildroot}%{_xemacs_sitelispdir}
d7db038
pushd %{buildroot}%{_xemacs_sitelispdir}
d7db038
%{_xemacs_bytecompile} cvc-mode.el
75fa8e5
popd
75fa8e5
75fa8e5
# Add missing executable bits to the shared libraries
75fa8e5
chmod a+x %{buildroot}%{_libdir}/*.so.*
75fa8e5
75fa8e5
# Move the JNI libraries to the right place
75fa8e5
mv %{buildroot}%{_libdir}/libcvc3jni.* %{buildroot}%{_libdir}/%{name}
75fa8e5
75fa8e5
%check
e65a070
# Due to Fedora's policy of changing System.loadLibrary() with a mutable path
e65a070
# to System.load() with a fixed path, it is not possible to run the Java tests,
e65a070
# since the JNI shared objects are not in the fixed location until the RPM is
e65a070
# installed.
e65a070
sed -i "s/^BUILD_JAVA = 1/BUILD_JAVA = 0/" Makefile.local
72c7f33
LD_LIBRARY_PATH=`pwd`/lib make regress4
75fa8e5
75fa8e5
%post -p /sbin/ldconfig
75fa8e5
75fa8e5
%postun -p /sbin/ldconfig
75fa8e5
75fa8e5
%files
72c7f33
%doc INSTALL LICENSE PEOPLE README
75fa8e5
%{_bindir}/cvc3
75fa8e5
%{_libdir}/libcvc3.so.*
75fa8e5
75fa8e5
%files devel
75fa8e5
%{_includedir}/cvc3
75fa8e5
%{_libdir}/*.so
72c7f33
%{_libdir}/pkgconfig/%{name}.pc
75fa8e5
75fa8e5
%files doc
75fa8e5
%doc doc/html
75fa8e5
75fa8e5
%files java
75fa8e5
%{_libdir}/%{name}
75fa8e5
75fa8e5
%files emacs
d7db038
%{_emacs_sitelispdir}/*.elc
75fa8e5
75fa8e5
%files emacs-el
d7db038
%{_emacs_sitelispdir}/*.el
75fa8e5
75fa8e5
%files xemacs
d7db038
%{_xemacs_sitelispdir}/*.elc
75fa8e5
75fa8e5
%files xemacs-el
d7db038
%{_xemacs_sitelispdir}/*.el
75fa8e5
75fa8e5
%changelog
b4a92f5
* Mon Apr 29 2013 Jerry James <loganjerry@gmail.com> - 2.4.1-6
b4a92f5
- Add -aarch64 support (bz 925213)
Jerry James 8423de8
- Turn off parallel builds; they sometimes fail while building the Java code
b4a92f5
907a5e1
* Wed Feb 13 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.1-5
907a5e1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
907a5e1
0bc0329
* Wed Jul 18 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.1-4
0bc0329
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
0bc0329
9bb5ad1
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.4.1-3
9bb5ad1
- Rebuilt for c++ ABI breakage
9bb5ad1
afbc0c5
* Fri Jan  6 2012 Jerry James <loganjerry@gmail.com> - 2.4.1-2
afbc0c5
- Rebuild for GCC 4.7
afbc0c5
3434f1f
* Thu Oct 20 2011 Marcela Mašláňová <mmaslano@redhat.com> - 2.4.1-1.2
3434f1f
- rebuild with new gmp without compat lib
3434f1f
1243d9d
* Mon Oct 10 2011 Peter Schiffer <pschiffe@redhat.com> - 2.4.1-1.1
1243d9d
- rebuild with new gmp
1243d9d
72c7f33
* Tue Sep  6 2011 Jerry James <loganjerry@gmail.com> - 2.4.1-1
72c7f33
- New upstream version
72c7f33
- Drop unnecessary spec file elements (BuildRoot, etc.)
e65a070
- Don't run the Java tests; they can't find the JNI shared objects
72c7f33
1d0a540
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.2-3
1d0a540
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
1d0a540
fb3f538
* Thu Jun  3 2010 Jerry James <loganjerry@gmail.com> - 2.2-2
fb3f538
- Add python BR (bz 599887)
fb3f538
b8ae206
* Thu Nov 19 2009 Jerry James <loganjerry@gmail.com> - 2.2-1
b8ae206
- Update to 2.2
b8ae206
- Drop upstreamed patches (gcc4 and java)
b8ae206
d7db038
* Tue Oct 27 2009 Jerry James <loganjerry@gmail.com> - 2.1-3
d7db038
- Drop the graphviz BR to block generation of huge class graphs
d7db038
- Use the new (X)Emacs RPM macros to simplify the spec file
d7db038
75fa8e5
* Mon Oct 19 2009 Jerry James <loganjerry@gmail.com> - 2.1-2
75fa8e5
- Fix problems found on review
75fa8e5
- Enable the Java interface
75fa8e5
75fa8e5
* Thu Oct 15 2009 Jerry James <loganjerry@gmail.com> - 2.1-1
75fa8e5
- Initial RPM