Name: python-polybori Version: 0.7.1 Release: 3%{?dist} Summary: Framework for Boolean Rings Group: Development/Libraries License: GPLv2+ URL: http://polybori.sourceforge.net/ Source0: http://downloads.sourceforge.net/polybori/polybori-%{version}.tar.gz Source1: polybori.desktop # Use system CUDD libraries instead of building the included CUDD sources Patch0: polybori-dont-build-libcudd.patch # Adapt to m4ri 20110613 Patch1: polybori-m4ri.patch # Fix a broken import Patch2: polybori-import.patch BuildRequires: boost-devel BuildRequires: cudd-devel BuildRequires: cudd-static BuildRequires: desktop-file-utils BuildRequires: doxygen BuildRequires: gd-devel BuildRequires: m4ri-devel BuildRequires: pyparsing BuildRequires: PyQt4-devel BuildRequires: python2-devel BuildRequires: python-imaging-devel BuildRequires: scons BuildRequires: tex4ht Requires: ipython Requires: python-imaging Requires: pyparsing %global __provides_exclude_from %{python_sitearch}/.*\\\.so$ %description PolyBoRi is a special purpose computer algebra system for computations in Boolean Rings. The core is a C++ library, which provides high-level data types for Boolean polynomials and related structures. As a unique approach, binary decision diagrams are used as internal storage type for polynomial structures. On top of this, we provide a Python interface for parsing of complex polynomial systems, as well as for sophisticated and extendable strategies for Gröbner base computation. %package gui Summary: Qt GUI for %{name} Group: Applications/Engineering Requires: %{name}%{?_isa} = %{version}-%{release} Requires: PyQt4 %description gui Qt GUI for %{name}. %package docs Summary: Documentation for %{name} Group: Documentation %description docs Documentation for %{name}. %package devel Summary: Development files for %{name} Group: Development/Libraries Requires: %{name}%{?_isa} = %{version}-%{release} Requires: boost-devel%{?_isa} Requires: cudd-devel%{?_isa} %description devel Development headers and libraries for %{name}. %package static Summary: Static libraries for %{name} Group: Development/Libraries Requires: %{name}-devel%{?_isa} = %{version}-%{release} %description static Static libraries for %{name}. %prep %setup -q -n polybori-0.7 %patch0 %patch1 %patch2 # Save a doc file mv Singular/README README.Singular # Remove private copy of system libs (cudd, m4ri, and singular) rm -rf Cudd M4RI Singular sed -r -i 's|^(#[[:blank:]]*include[[:blank:]]+)"(cudd.*)"|\1<\2>|' \ polybori/include/CCuddDDFacade.h polybori/include/CCuddInterface.h \ polybori/include/CDDOperations.h polybori/include/CRingCore.h \ polybori/include/pbori_algo.h polybori/include/pbori_defs.h \ polybori/src/BoolePolyRing.cc polybori/src/pbori_routines.cc \ polybori/src/testobj.cc testsuite/src/monomial.cc # Remove private copy of pyparsing rm -f PyPolyBoRi/pyparsing.py # Fix library path for 64 bit systems if [ %{__isa_bits} = "64" ]; then sed -i -e "s|DevelInstPath('lib')|DevelInstPath('lib64')|" SConstruct fi %build # scons = suck # we have to build in the install section %install scons %{?_smp_mflags} install devel-install \ PREFIX=$RPM_BUILD_ROOT%{_prefix} \ INSTALLDIR=$RPM_BUILD_ROOT%{_datadir}/%{name} \ DOCDIR=$RPM_BUILD_ROOT%{_docdir}/%{name} \ MANDIR=$RPM_BUILD_ROOT%{_mandir} \ PYINSTALLPREFIX=$RPM_BUILD_ROOT%{python_sitearch} \ DEVEL_PREFIX=$RPM_BUILD_ROOT%{_prefix} \ CCFLAGS="%{optflags} -I%{_includedir}/cudd -I%{_includedir}/m4ri" \ LIBS="-lcudd -lcuddutil" # Relink against a minimal set of libraries to eliminate rpmlint warnings # about unused direct dependencies on libraries. Also, scons produces shared # libraries such that libgroebner contains all of the individual object files # of libpolybori (instead of being linked to libpolybori), and the python # interface PyPolyBoRi.so contains all of the individual object files of both # libpolybori and libgroebner (instead of being linked to libgroebner). g++ -o $RPM_BUILD_ROOT%{_libdir}/libpolybori-%{version}.so.0.0.0 -shared \ -Wl,-soname,libpolybori-%{version}.so.0 polybori/src/*.os -nodefaultlibs \ -lcudd -lcuddutil -lstdc++ -lc g++ -o $RPM_BUILD_ROOT%{_libdir}/libgroebner-%{version}.so.0.0.0 -shared \ -Wl,-soname,libgroebner-%{version}.so.0 groebner/src/*.os \ -L$RPM_BUILD_ROOT%{_libdir} -lpolybori-%{version} -lgd -lm4ri g++ -o $RPM_BUILD_ROOT%{python_sitearch}/polybori/PyPolyBoRi.so -shared \ PyPolyBoRi/*.os -L$RPM_BUILD_ROOT%{_libdir} -lboost_python -lgroebner # Empty header --- seems to be used, keep it for now #rm $RPM_BUILD_ROOT%%{_includedir}/polybori/cacheopts.h # Remove buildroot from a generated file sed -i -e 's|%{buildroot}||' %{buildroot}%{_datadir}/%{name}/ipbori/ipythonrc-polybori # Install the desktop file cp -p %{SOURCE1} . desktop-file-install --dir=$RPM_BUILD_ROOT%{_datadir}/applications \ polybori.desktop %post -p /sbin/ldconfig %posttrans update-desktop-database -q >& /dev/null || : %postun /sbin/ldconfig if [ $1 -eq 0 ]; then update-desktop-database -q >& /dev/null || : fi %files %defattr(-,root,root,-) %doc LICENSE README README.Singular %{_bindir}/ipbori %{_mandir}/man1/ipbori.1* %{_datadir}/%{name} %{python_sitearch}/polybori %{_libdir}/lib*.so.* %exclude %{_datadir}/%{name}/gui %files gui %{_bindir}/PolyGUI %{_datadir}/applications/polybori.desktop %{_datadir}/%{name}/gui %{_mandir}/man1/PolyGUI.1* %files docs %{_docdir}/%{name} %files devel %doc ChangeLog %{_libdir}/lib*.so %{_includedir}/polybori %files static %{_libdir}/lib*.a %changelog * Thu Jul 21 2011 Jerry James - 0.7.1-3 - Rebuild for new m4ri and new boost - Use new rpm 4.9 filter scheme * Fri Jun 17 2011 Jerry James - 0.7.1-2 - Rebuild for new m4ri - Fix a broken python import that crashes the GUI * Mon May 23 2011 Jerry James - 0.7.1-1 - New upstream version * Wed Apr 20 2011 Jerry James - 0.7-1 - New upstream version - Drop BuildRoot tag, clean script, and clean at start of install script - Adapt to latest version of m4ri - Add -gui subpackage * Tue Feb 08 2011 Fedora Release Engineering - 0.5-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Sun Feb 06 2011 Thomas Spura - 0.5-12 - rebuild for new boost * Wed Sep 29 2010 jkeating - 0.5-11 - Rebuilt for gcc bug 634757 * Fri Sep 24 2010 Dan Horák - 0.5-10 - add s390x and sparc64 to 64-bit platforms * Tue Sep 14 2010 Toshio Kuratomi - 0.5-9 - Rebuilt for broken deps on old boost * Thu Jul 22 2010 David Malcolm - 0.5-8 - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild * Fri Jan 22 2010 Rahul Sundaram - 0.5-7 - Rebuild for Boost soname bump * Sun Jul 26 2009 Fedora Release Engineering - 0.5-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Sat Mar 28 2009 Conrad Meyer - 0.5-5 - Add cudd-devel Requires to -devel subpackage. - Link against cudd at build time. - Fixed encoding of ChangeLog. * Tue Mar 24 2009 Conrad Meyer - 0.5-4 - Fix SF.net source0. - Fix License. - Fix rpm defines (should be globals). - Don't strip debugging information. - Fix Requires. * Mon Mar 23 2009 Conrad Meyer - 0.5-3 - Remove buildroot from an installed file (thanks, Mamoru). * Wed Mar 18 2009 Conrad Meyer - 0.5-2 - Add BR on scons. * Mon Dec 8 2008 Conrad Meyer - 0.5-1 - Initial package.