Jerry James ba7c267
# TESTING NOTE: "make test" does not work, because the test drivers are not
Jerry James ba7c267
# distributed with the released sources.  A Subversion repository containing
Jerry James ba7c267
# all of the sources, including the test drivers, was made available recently.
Jerry James ba7c267
# Once the next release of polymake occurs, we will extract the necessary test
Jerry James ba7c267
# drivers from subversion and produce a check script.
Jerry James ba7c267
98bd214
# If a library used by both polymake and Singular is updated, neither can be
98bd214
# rebuilt, because each BRs the other and both are linked against the old
98bd214
# version of the library.  Use this to rebuild polymake without Singular
98bd214
# support, rebuild Singular, then build polymake again with Singular support.
Jerry James 7e56fcd
%bcond_without singular
98bd214
4ad1335
# Date of the "perpetual beta" subversion snapshot
Jerry James 51c14ed
#%%global svndate 20140326
Jerry James ba7c267
Jerry James ba7c267
Name:           polymake
Jerry James 51c14ed
Version:        2.13
9a375a5
Release:        7%{?svndate:.svn%{svndate}}%{?dist}
Jerry James ba7c267
Summary:        Algorithms on convex polytopes and polyhedra
Jerry James ba7c267
Jerry James ba7c267
License:        GPLv2+
Jerry James ba7c267
URL:            http://polymake.org/
Jerry James 51c14ed
Source0:        http://polymake.org/lib/exe/fetch.php/download/%{name}-%{version}.tar.bz2
Jerry James ba7c267
# Man page written by Jerry James from text found in the sources.  Therefore,
Jerry James ba7c267
# the copyright and license are the same as for the sources.
Jerry James ba7c267
Source1:        %{name}.1
Jerry James 80eaa73
# Fake libsingular-config file to fool the configuration scripts.
Jerry James 80eaa73
Source2:        libsingular-config
Jerry James ba7c267
# This patch will not be sent upstream, since it is Fedora-specific.  Link
Jerry James ba7c267
# against existing system libraries instead of building them from source,
Jerry James ba7c267
# and do not use -rpath.
Jerry James ba7c267
Patch0:         %{name}-fedora.patch
Jerry James aeaf3f3
# This patch was sent upstream 20 Mar 2013.  Fix a call to an lrslib function
Jerry James aeaf3f3
# that segfaults when given a NULL argument.
4ad1335
Patch1:         %{name}-lrslib.patch
Jerry James 215e348
# Avoid -Werror=format-security failures.
Jerry James 215e348
Patch2:         %{name}-format.patch
Jerry James 80eaa73
# Fedora-specific patch.  Upstream code is written for Singular-3-1-6 + git,
Jerry James 80eaa73
# but we have vanilla Singular-3-1-6.  This patch adapts to the older Singular.
Jerry James f508679
Patch3:         %{name}-singular.patch
Jerry James 9ffc59e
# Adapt to libnormaliz 2.11
Jerry James 9ffc59e
Patch4:         %{name}-libnormaliz.patch
Jerry James ba7c267
Jerry James ba7c267
BuildRequires:  bliss-devel
4ad1335
BuildRequires:  boost-devel
Jerry James ba7c267
BuildRequires:  cddlib-devel
4ad1335
BuildRequires:  cmake
Jerry James f508679
BuildRequires:  eigen3-static
Jerry James 74d8a20
BuildRequires:  libnormaliz-devel
Jerry James ba7c267
BuildRequires:  libxml2-devel
Jerry James ba7c267
BuildRequires:  lrslib-devel
Jerry James ba7c267
BuildRequires:  mpfr-devel
Jerry James ba7c267
BuildRequires:  perl(ExtUtils::MakeMaker)
Jerry James ba7c267
BuildRequires:  perl(Term::ReadLine::Gnu)
Jerry James ba7c267
BuildRequires:  perl(XML::LibXSLT)
Jerry James ba7c267
BuildRequires:  perl(XML::SAX::Base)
Jerry James ba7c267
BuildRequires:  perl(XML::Writer)
Jerry James 74d8a20
BuildRequires:  ppl-devel
Jerry James ba7c267
BuildRequires:  sympol-devel
Jerry James ba7c267
BuildRequires:  xhtml1-dtds
98bd214
%if %{with singular}
98bd214
BuildRequires:  Singular-devel
98bd214
%endif
Jerry James ba7c267
Jerry James ba7c267
Requires:       perl(:MODULE_COMPAT_%{perl_version})
Jerry James 5d77b35
Requires:       perl = 4:%{perl_version}
Jerry James 5d77b35
Requires:       perl(Term::ReadLine::Gnu)
Jerry James ba7c267
Jerry James ba7c267
%global sover   %(echo %{version} | cut -d. -f1-2)
Jerry James ba7c267
%global major   %(echo %{version} | cut -d. -f1)
Jerry James ba7c267
%global polydir %{_libdir}/%{name}
Jerry James ba7c267
98bd214
# Don't expose private perl interfaces
98bd214
%global __provides_exclude perl\\\(Geomview.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(Graphviz.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(Metapost.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(PerlIO.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(Postscript.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(Povray.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(Sketch.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(SplitsTree.*\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(application\\\)
98bd214
%global __provides_exclude %{__provides_exclude}|perl\\\(_.*\\\)
98bd214
98bd214
# Exclude private perl interfaces that we don't Provide
6304c47
%global __requires_exclude perl\\\(it\\\)
98bd214
%global __requires_exclude %{__requires_exclude}|perl\\\(Polymake::Background\\\)
98bd214
%global __requires_exclude %{__requires_exclude}|perl\\\(Polymake::Core::RuleFilter\\\)
98bd214
%global __requires_exclude %{__requires_exclude}|perl\\\(Polymake::file_utils\.pl\\\)
98bd214
%global __requires_exclude %{__requires_exclude}|perl\\\(Polymake::Namespaces\\\)
98bd214
%global __requires_exclude %{__requires_exclude}|perl\\\(Polymake::regex\.pl\\\)
98bd214
%global __requires_exclude %{__requires_exclude}|perl\\\(Polymake::utils\.pl\\\)
Jerry James ba7c267
Jerry James ba7c267
%description
Jerry James ba7c267
Polymake is a tool to study the combinatorics and the geometry of convex
Jerry James ba7c267
polytopes and polyhedra.  It is also capable of dealing with simplicial
Jerry James ba7c267
complexes, matroids, polyhedral fans, graphs, tropical objects, and so
Jerry James ba7c267
forth.
Jerry James ba7c267
Jerry James ba7c267
Polymake can use various computational packages if they are installed.
Jerry James ba7c267
Those available from Fedora are: 4ti2, azove, gfan, latte-integrale,
Jerry James ba7c267
normaliz, ocaml-tplib-tools, qhull, Singular, TOPCOM, and vinci.
Jerry James ba7c267
Jerry James ba7c267
Polymake can interface with various visualization packages if they are
Jerry James ba7c267
installed.  Install one or more of the tools from the following list:
Jerry James ba7c267
evince, geomview, graphviz, gv, and okular.
Jerry James ba7c267
Jerry James ba7c267
%package devel
Jerry James ba7c267
Summary:        Development files for %{name}
Jerry James ba7c267
Requires:       %{name}%{?_isa} = %{version}-%{release}
Jerry James ba7c267
Jerry James ba7c267
%description devel
Jerry James ba7c267
This package contains header files and libraries for developing
Jerry James ba7c267
plugins (applications) that use %{name}.
Jerry James ba7c267
Jerry James ba7c267
%package doc
Jerry James ba7c267
Summary:        Documentation for %{name}
Jerry James ba7c267
Requires:       %{name}%{?_isa} = %{version}-%{release}
Jerry James ba7c267
Jerry James ba7c267
%description doc
Jerry James ba7c267
This package contains documentation for %{name}.
Jerry James ba7c267
Jerry James ba7c267
%prep
Jerry James ba7c267
%setup -q
Jerry James ba7c267
%patch0
Jerry James ba7c267
%patch1
Jerry James 215e348
%patch2
Jerry James f508679
%patch3
Jerry James 9ffc59e
%patch4
Jerry James ba7c267
Jerry James ba7c267
# Make sure we don't build against the bundled libraries.
4ad1335
rm -fr external/{cdd,lrs}
Jerry James ba7c267
Jerry James ba7c267
# Adapt to a newer version of sympol
Jerry James ba7c267
sed -i "s|yal/||;s|symmetrygroupconstruction/||" \
4ad1335
    bundled/group/apps/polytope/src/sympol_interface.cc
Jerry James ba7c267
Jerry James 80eaa73
# Adapt to the way the Fedora Singular package is assembled
Jerry James 80eaa73
%if %{with singular}
Jerry James 80eaa73
mkdir bin
Jerry James 80eaa73
cp -p %{SOURCE2} bin
Jerry James 80eaa73
sed -i 's,$singularprefix/lib/libSingular,%{_libdir}/libsingular,' \
Jerry James 80eaa73
    bundled/singular/configure.pl
Jerry James 80eaa73
%endif
Jerry James 80eaa73
Jerry James ba7c267
%build
Jerry James 80eaa73
export CFLAGS="$RPM_OPT_FLAGS -I%{_includedir}/eigen3 -Wno-unused-local-typedefs"
4ad1335
export CXXFLAGS="$CFLAGS"
Jerry James f508679
export LDFLAGS="$RPM_LD_FLAGS -Wl,--as-needed -ldl"
Jerry James ba7c267
export Arch=%{_arch}
Jerry James ba7c267
# NOT an autoconf-generated configure script; do not use %%configure.
Jerry James ba7c267
./configure --build=%{_arch} --prefix=%{_prefix} --libdir=%{_libdir} \
Jerry James 80eaa73
%if %{with singular}
Jerry James 80eaa73
  --with-singular=$PWD \
Jerry James 80eaa73
%endif
4ad1335
  --libexecdir=%{polydir} --without-java --without-javaview
Jerry James ba7c267
make %{?_smp_mflags} all
Jerry James ba7c267
Jerry James ba7c267
# Help the debuginfo generator find generated files
Jerry James ba7c267
cd build.%{_arch}
4ad1335
cp -p perlx-*linux-*/CPlusPlus.xxs lib/core/CPlusPlus.xxs
4ad1335
cp -p perlx-*linux-*/CPlusPlus.cc lib/core/CPlusPlus.cc
Jerry James ba7c267
Jerry James ba7c267
%install
Jerry James ba7c267
# Don't recompile the main library with DESTDIR compiled in
Jerry James ba7c267
sed -i "/conf\.make/d" support/corelib.make
Jerry James ba7c267
Jerry James ba7c267
# The release-docs target copies docs to their installed locations
Jerry James ba7c267
export Arch=%{_arch}
Jerry James ba7c267
make install release-docs DESTDIR=%{buildroot}
Jerry James ba7c267
Jerry James ba7c267
# The apps have undefined weak symbols.  However, fixing that kills the
Jerry James ba7c267
# documentation building step for reasons I can't seem to track down.  So
Jerry James ba7c267
# instead, we wait until after the docs have been generated, then relink.
Jerry James ba7c267
sed -e 's|^Libs :=.*|& -L$(wildcard ${BuildDir}/perlx-*-linux-*) -lpolymake|' \
Jerry James ba7c267
    -i support/app.make
Jerry James ba7c267
sed -e 's|-lgmp ${LIBS}|& -L${PerlExtDir} -lpolymake|' \
Jerry James ba7c267
    -e 's|^${CoreLib} :.*|& ${CallableLib}|' \
Jerry James ba7c267
    -i support/corelib.make
Jerry James ba7c267
rm -f build.%{_arch}/lib/*.so
Jerry James ba7c267
make %{?_smp_mflags} all
Jerry James ba7c267
chmod 0755 %{buildroot}%{polydir}/lib/*.so
Jerry James ba7c267
cp -p build.%{_arch}/lib/*.so %{buildroot}%{polydir}/lib
Jerry James ba7c267
Jerry James ba7c267
# Install the man page
Jerry James ba7c267
mkdir -p %{buildroot}%{_mandir}/man1
Jerry James ba7c267
sed "s/@VERSION@/%{version}/" %{SOURCE1} > %{buildroot}%{_mandir}/man1/%{name}.1
Jerry James ba7c267
touch -r %{SOURCE1} %{buildroot}%{_mandir}/man1/%{name}.1
Jerry James ba7c267
Jerry James ba7c267
# We don't want the documentation in /usr/share/polymake
Jerry James ba7c267
mv %{buildroot}%{_datadir}/%{name}/doc .
Jerry James ba7c267
Jerry James ba7c267
# Remove stuff that shouldn't be installed
Jerry James ba7c267
rm -fr %{buildroot}%{_datadir}/%{name}/apps/*/src \
Jerry James ba7c267
  %{buildroot}%{_datadir}/%{name}/java_build \
Jerry James ba7c267
  %{buildroot}%{polydir}/perlx/*/*/auto/Polymake/Ext/{.packlist,Ext.bs} \
Jerry James ba7c267
  %{buildroot}%{polydir}/lib/jreality
Jerry James ba7c267
Jerry James ba7c267
# Fix permissions
Jerry James ba7c267
chmod 0755 %{buildroot}%{_bindir}/*
Jerry James ba7c267
chmod 0755 %{buildroot}%{_libdir}/lib*
Jerry James ba7c267
find %{buildroot}%{polydir} -name \*.so | xargs chmod 0755
Jerry James ba7c267
4ad1335
# Remove the buildroot from configuration files
4ad1335
sed -i 's,%{buildroot},,' %{buildroot}%{polydir}/bundled/bliss/conf.make
4ad1335
sed -i 's,%{buildroot},,' %{buildroot}%{polydir}/bundled/group/conf.make
Jerry James 74d8a20
sed -i 's,%{buildroot},,' %{buildroot}%{polydir}/bundled/libnormaliz/conf.make
Jerry James 74d8a20
sed -i 's,%{buildroot},,' %{buildroot}%{polydir}/bundled/ppl/conf.make
98bd214
%if %{with singular}
Jerry James f508679
sed -i 's,%{buildroot},,' %{buildroot}%{polydir}/bundled/singular/conf.make
98bd214
%endif
4ad1335
Jerry James ba7c267
%post -p /sbin/ldconfig
Jerry James ba7c267
Jerry James ba7c267
%postun -p /sbin/ldconfig
Jerry James ba7c267
Jerry James ba7c267
%files
Jerry James ba7c267
%{_bindir}/%{name}
Jerry James ba7c267
%{_mandir}/man1/%{name}.1*
4ad1335
%{_libdir}/lib%{name}*.so.*
Jerry James ba7c267
%{polydir}/
Jerry James ba7c267
%{_datadir}/%{name}/
Jerry James ba7c267
%exclude %{_datadir}/%{name}/lib/
Jerry James ba7c267
Jerry James ba7c267
%files devel
Jerry James ba7c267
%{_bindir}/%{name}-config
Jerry James ba7c267
%{_includedir}/%{name}/
Jerry James ba7c267
%{_datadir}/%{name}/lib/
4ad1335
%{_libdir}/lib%{name}*.so
Jerry James ba7c267
Jerry James ba7c267
%files doc
Jerry James ba7c267
%doc doc/*
Jerry James ba7c267
Jerry James ba7c267
%changelog
9a375a5
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.13-7
9a375a5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
9a375a5
Jerry James 7e56fcd
* Fri Aug  8 2014 Jerry James <loganjerry@gmail.com> - 2.13-6
Jerry James 7e56fcd
- Rebuild with Singular support
Jerry James 7e56fcd
Jerry James 9ffc59e
* Tue Aug  5 2014 Jerry James <loganjerry@gmail.com> - 2.13-5
Jerry James 9ffc59e
- Rebuild for libnormaliz 2.11.2 and eigen3 3.2.2
Jerry James 9ffc59e
0b58bd9
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.13-4
0b58bd9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
0b58bd9
Jerry James 80eaa73
* Wed May 28 2014 Jerry James <loganjerry@gmail.com> - 2.13-3
Jerry James 80eaa73
- Rebuild for Singular 3-1-6
Jerry James 80eaa73
- Add configuration workarounds for Singular support
Jerry James 80eaa73
Petr Machata f0e6e1c
* Fri May 23 2014 Petr Machata <pmachata@redhat.com> - 2.13-2
Petr Machata f0e6e1c
- Rebuild for boost 1.55.0
Petr Machata f0e6e1c
10d40b3
* Tue Apr 29 2014 Jerry James <loganjerry@gmail.com> - 2.13-1
10d40b3
- New upstream release: build against rebuilt Singular
10d40b3
Jerry James 51c14ed
* Tue Apr 29 2014 Jerry James <loganjerry@gmail.com> - 2.13-0
Jerry James 51c14ed
- New upstream release: bootstrap build without Singular support
Jerry James 51c14ed
98bd214
* Wed Apr  2 2014 Jerry James <loganjerry@gmail.com> - 2.12-15.svn20140326
98bd214
- Update to latest "perpetual beta" for bug fixes
98bd214
- Add conditional to build without Singular support
98bd214
Jerry James f508679
* Wed Mar 12 2014 Jerry James <loganjerry@gmail.com> - 2.12-14.svn20131128
Jerry James f508679
- Build with Singular support
Jerry James f508679
- Make transitive dependency on eigen3 (via sympol) explicit
Jerry James f508679
6304c47
* Sat Jan 18 2014 Jerry James <loganjerry@gmail.com> - 2.12-13.svn20131128
6304c47
- Update Requires filters
6304c47
Jerry James 74d8a20
* Fri Jan 17 2014 Jerry James <loganjerry@gmail.com> - 2.12-12.svn20131128
Jerry James 74d8a20
- Update to latest "perpetual beta" for bug fixes
Jerry James 74d8a20
- Enable building new ppl and libnormaliz extensions
Jerry James 74d8a20
Jerry James f884958
* Wed Jan  8 2014 Jerry James <loganjerry@gmail.com> - 2.12-11.svn20130813
Jerry James f884958
- Rebuild for perl 5.18.2
Jerry James 215e348
- Add -format patch to fix -Werror=format-security failure
Jerry James f884958
4ad1335
* Wed Aug 14 2013 Jerry James <loganjerry@gmail.com> - 2.12-10.svn20130813
4ad1335
- Update to latest "perpetual beta" for perl 5.18 compatibility (bz 992813)
4ad1335
e5f4d16
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.12-9
e5f4d16
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
e5f4d16
78278d2
* Wed Jul 24 2013 Petr Pisar <ppisar@redhat.com> - 2.12-8
78278d2
- Perl 5.18 rebuild
78278d2
f14dd5b
* Sun Jul 21 2013 Rich Mattes <richmattes@gmail.com> - 2.12-7
f14dd5b
- Rebuild for eigen3-3.1.3
f14dd5b
Jerry James 5d77b35
* Wed May 15 2013 Jerry James <loganjerry@gmail.com> - 2.12-6
Jerry James 5d77b35
- Require version of perl used to build (bz 963486)
Jerry James 5d77b35
- perl(Term::ReadLine::Gnu) dependency is not autogenerated (bz 963486)
Jerry James 5d77b35
Jerry James aeaf3f3
* Wed Mar 20 2013 Jerry James <loganjerry@gmail.com> - 2.12-5
Jerry James aeaf3f3
- Add -lrslib patch to fix a segfault (bz 923269)
Jerry James aeaf3f3
Jerry James ba7c267
* Wed Feb 27 2013 Jerry James <loganjerry@gmail.com> - 2.12-4
Jerry James ba7c267
- Remove rpath and -L%%{_libdir} from polymake-config --ldflags output
Jerry James ba7c267
Jerry James ba7c267
* Thu Jan 24 2013 Jerry James <loganjerry@gmail.com> - 2.12-3
Jerry James ba7c267
- Also need to filter perl(Graphviz)
Jerry James ba7c267
Jerry James ba7c267
* Wed Jan 23 2013 Jerry James <loganjerry@gmail.com> - 2.12-2
Jerry James ba7c267
- Change -libs patch to also remove -rpath arguments
Jerry James ba7c267
- Filter Provides/Requires to hide private perl interfaces
Jerry James ba7c267
- Remove the broken check script and explain why
Jerry James ba7c267
Jerry James ba7c267
* Thu Jan 10 2013 Jerry James <loganjerry@gmail.com> - 2.12-1
Jerry James ba7c267
- Initial RPM