papilo/papilo.spec

142 lines
3.9 KiB
RPMSpec
Raw Normal View History

2024-02-16 03:21:33 +00:00
# Architectures that have libquadmath
%ifarch x86_64 ppc64le
%global quadmath 1
%else
%global quadmath 0
%endif
# The papilo binary depends on several solvers that transitively depend on the
# papilo library. In a bootstrap situation, first build the binary without
# solver support, build the solvers, then do a non-bootstrap build.
%bcond bootstrap 0
2024-07-17 20:36:57 +00:00
%global giturl https://github.com/scipopt/papilo/
2024-02-16 03:21:33 +00:00
Name: papilo
Version: 2.3.1
2024-02-16 03:21:33 +00:00
Release: %autorelease
Summary: Parallel presolve for integer and linear optimization
# LGPL-3.0-or-later: the project as a whole
# BSL-1.0: src/papilo/misc/extended_euclidean.hpp
# Zlib: the header-only pdqsort project
# MIT: the bundled fmt project
License: LGPL-3.0-or-later AND BSL-1.0 AND Zlib AND MIT
2024-02-21 21:24:22 +00:00
URL: https://www.scipopt.org/
2024-07-17 20:36:57 +00:00
VCS: git:%{giturl}.git
Source: %{giturl}/archive/v%{version}/%{name}-%{version}.tar.gz
2024-02-16 03:21:33 +00:00
# Unbundle catch, LUSOL, pdqsort, and ska
2024-07-17 20:36:57 +00:00
Patch: %{name}-unbundle.patch
2024-02-16 03:21:33 +00:00
# Build a shared library instead of a static library
2024-07-17 20:36:57 +00:00
Patch: %{name}-shared.patch
2024-02-16 03:21:33 +00:00
# Avoid out-of-bounds vector access
# https://github.com/scipopt/papilo/pull/48
2024-07-17 20:36:57 +00:00
Patch: %{name}-vector-bounds.patch
2024-02-16 03:21:33 +00:00
# See https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
BuildRequires: boost-devel
BuildRequires: cmake
BuildRequires: cmake(catch2)
BuildRequires: cmake(tbb)
BuildRequires: gcc-c++
BuildRequires: help2man
BuildRequires: libatomic
2024-02-16 03:21:33 +00:00
%if %{quadmath}
BuildRequires: libquadmath-devel
%endif
BuildRequires: lusol-devel
BuildRequires: pdqsort-static
BuildRequires: pkgconfig(gmp)
%if %{without bootstrap}
# Solver support
BuildRequires: cmake(scip)
BuildRequires: cmake(soplex)
%endif
2024-02-16 03:21:33 +00:00
Requires: libpapilo%{?_isa} = %{version}-%{release}
%global _desc %{expand:
PaPILO provides parallel presolve routines for (mixed integer) linear
programming problems. The routines are implemented using templates
which allows switching to higher precision or rational arithmetic using
the boost multiprecision package.}
%description %_desc
%package -n libpapilo
Summary: Library interface to PaPILO
# The bundled version of fmt is incompatible with version 10 in Rawhide.
2024-06-19 14:58:50 +00:00
Provides: bundled(fmt) = 7.1.3
2024-02-16 03:21:33 +00:00
%description -n libpapilo %_desc
This package provides a library interface to the PaPILO functionality.
%package -n libpapilo-devel
Summary: Headers and library links for libpapilo
Requires: libpapilo%{?_isa} = %{version}-%{release}
Requires: boost-devel%{?_isa}
Requires: lusol-devel%{?_isa}
Requires: pdqsort-static
Requires: tbb-devel%{?_isa}
%description -n libpapilo-devel %_desc
This package contains headers and library links to develop applications
that use libpapilo.
%prep
%autosetup -p1
# Ensure none of the bundled code but fmt can be used
rm -fr src/papilo/external/{catch,lusol,pdqsort,ska}
# Fix installation directories
if [ '%{_lib}' != 'lib' ]; then
sed -i 's,\(DESTINATION \)lib,\1%{_lib},g' CMakeLists.txt
fi
%build
%cmake -DQUADMATH:BOOL=%{?quadmath:ON}%{!?quadmath:OFF}
%cmake_build
%install
%cmake_install
# Generate man pages
mkdir -p %{buildroot}%{_mandir}/man1
export LD_LIBRARY_PATH=$PWD/%{_vpath_builddir}
cd %{_vpath_builddir}/bin
help2man -N -h '' --version-string %{version} \
-n 'parallel presolve for integer and linear optimization' ./papilo > \
%{buildroot}%{_mandir}/man1/papilo.1
cd -
2024-06-24 15:20:39 +00:00
# Fix up the man page a little
2024-02-16 03:21:33 +00:00
sed -i 's,\./\(papilo\),\1,' %{buildroot}%{_mandir}/man1/papilo.1
%check
# Temporarily skip a test that is broken in the 2.3.1 release
%ctest -E 'q-solve-rgn\.mps-default\.set'
2024-02-16 03:21:33 +00:00
%files
%doc CHANGELOG README.md parameters.txt
%{_bindir}/papilo
%{_mandir}/man1/papilo.1*
%files -n libpapilo
%license COPYING COPYING.LESSER
%{_libdir}/libpapilo-core.so.0*
%files -n libpapilo-devel
%{_includedir}/papilo/
%{_libdir}/cmake/papilo/
%{_libdir}/libpapilo-core.so
%changelog
%autochangelog