#
-# TODO:
-# - external cudd
-# - update all BRs
+# Conditional build:
+%bcond_with zchaff # enable zChaff SAT Solver (zChaff is for non-commercial purposes only)
+#
+%define zchaff_ver 2008.10.12
+%define minisat_ver 070721
#
Summary: New Symbolic Model Verifier
Summary(pl.UTF-8): Nowy weryfikator modeli symbolicznych
Name: NuSMV
-Version: 2.4.3
-Release: 0.1
+Version: 2.5.4
+Release: 12
License: LGPL
Group: Applications
-Source0: http://nusmv.irst.itc.it/distrib/%{name}-%{version}.tar.gz
-# Source0-md5: f9fb88139b388c6ba8d31b0ad1ce5254
+Source0: http://nusmv.fbk.eu/distrib/%{name}-%{version}.tar.gz
+# Source0-md5: 4d8ae6136fbd916d875cd48f82d5f327
+Source1: http://minisat.se/downloads/minisat2-%{minisat_ver}.zip
+# Source1-md5: fb12db9a13f86a2133758abfba239546
+Source2: http://www.princeton.edu/~chaff/zchaff/zchaff.%{zchaff_ver}.zip
+# Source2-md5: 7398b3e984a5046755cb3ef6b0e44d2e
Patch0: %{name}-build.patch
-URL: http://nusmv.irst.itc.it/
+Patch1: %{name}-solvers.patch
+Patch2: format-security.patch
+Patch3: fork.patch
+Patch4: cxx.patch
+URL: http://nusmv.fbk.eu/
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: expat-devel
#BuildRequires: links
BuildRequires: perl-base
BuildRequires: readline-devel
-BuildRequires: tetex-dvips
-BuildRequires: tetex-makeindex
-BuildRequires: tetex-latex
+BuildRequires: texlive-dvips
+BuildRequires: texlive-latex
+BuildRequires: texlive-latex-bibtex
+BuildRequires: texlive-latex-carlisle
+BuildRequires: texlive-latex-extend
+BuildRequires: texlive-latex-psnfss
+BuildRequires: texlive-makeindex
+BuildRequires: unzip
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+# a lot of inter-library deps confusing install_post_check_so
+%define no_install_post_check_so 1
+
%description
NuSMV is a reimplementation and extension of SMV, the first model
checker based on BDDs. NuSMV has been designed to be an open
%prep
%setup -q
+install %{SOURCE1} MiniSat/
+cd MiniSat
+unzip -q *.zip
+cd ..
+install %{SOURCE2} zchaff/
+
%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
%build
-ICFLAGS="%{rpmcflags}"
+ICFLAGS="%{rpmcflags} -fPIC"
export ICFLAGS
+cd MiniSat/
+OPTFLAGS="%{rpmcxxflags} -fPIC" COPTIMIZE="%{rpmcxxflags} -fPIC" ./build.sh
+%if %{with zchaff}
+cd ../zchaff
+OPTFLAGS="%{rpmcxxflags} -fPIC" ./build.sh
+%endif
+cd ../cudd-*
%ifarch %{x8664}
-cd cudd-*
cp -f Makefile Makefile_32bit
cp -f Makefile_64bit Makefile
-cd ..
%endif
+%{__make}
+cd ..
cd nusmv
-%{__aclocal}
+%{__libtoolize}
+%{__aclocal} -I m4
%{__autoconf}
-%{__autoheader}
%{__automake}
%configure \
--enable-shared \
- --enable-psl
+ %{?with_zchaff:--enable-zchaff} \
+ --enable-minisat
+
%{__make}
-%{__make} docs
+
+%{__make} -j1 docs
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
-%{__make} -C nusmv install \
+%{__make} -j1 -C nusmv install \
+ INSTALL_DATA="cp -a" \
+ INSTALL_HEADER="install -p" \
DESTDIR=$RPM_BUILD_ROOT
cp -a nusmv/examples/* $RPM_BUILD_ROOT%{_examplesdir}/%{name}-%{version}
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/nusmv/{doc,examples,LGPL*,NEWS,README*}
+%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/*.la
+
%clean
rm -rf $RPM_BUILD_ROOT
%doc nusmv/doc/user-man/nusmv.p*
%doc nusmv/doc/html
%attr(755,root,root) %{_bindir}/*
-%attr(755,root,root) %{_libdir}/libnusmv*.so.*.*.*
+%attr(755,root,root) %{_libdir}/lib*smv*.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/lib*smv*.so.0
+%attr(755,root,root) %{_libdir}/librbcdag.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/librbcdag.so.0
%dir %{_datadir}/nusmv
%{_datadir}/nusmv/contrib
%{_datadir}/nusmv/help
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libnusmv*.so
-%{_libdir}/libnusmv*.la
+%attr(755,root,root) %{_libdir}/lib*smv*.so
+%attr(755,root,root) %{_libdir}/librbcdag.so
%{_includedir}/cudd*
%{_includedir}/nusmv
%{_pkgconfigdir}/*
%files static
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/libnusmv*.a
+%attr(755,root,root) %{_libdir}/lib*smv*.a
+%attr(755,root,root) %{_libdir}/librbcdag.a