Blob Blame History Raw
# Doxygen HTML help is not suitable for packaging due to a minified JavaScript
# bundle inserted by Doxygen itself. See discussion at
# https://bugzilla.redhat.com/show_bug.cgi?id=2006555.
#
# We can enable the Doxygen PDF documentation as a substitute.
%bcond_without doc_pdf

# This package is arch-specific, because it computes properties of the system
# (such as endianness) and stores them in generated header files. Hence, the
# files DO vary by platform. However, there is no actual compiled code, so turn
# off debuginfo generation.
%global debug_package %{nil}

Name:           fflas-ffpack
Version:        2.4.3
Release:        %autorelease
Summary:        Finite field linear algebra subroutines

License:        LGPLv2+
URL:            https://linbox-team.github.io/fflas-ffpack/
Source0:        https://github.com/linbox-team/fflas-ffpack/releases/download/%{version}/fflas_ffpack-%{version}.tar.bz2
# Man page written for Fedora in groff_man(7) format based on --help output
Source1:        fflas-ffpack-config.1

# Fix memory leaks
# https://github.com/linbox-team/fflas-ffpack/pull/276
Patch0:         fflas-ffpack-mem-leak.patch

BuildRequires:  autoconf
BuildRequires:  automake
BuildRequires:  libtool

BuildRequires:  make
BuildRequires:  gcc-c++

BuildRequires:  pkgconfig(flexiblas)
BuildRequires:  pkgconfig(givaro)
BuildRequires:  gmp-devel

%if %{with doc_pdf}
BuildRequires:  doxygen
BuildRequires:  doxygen-latex
BuildRequires:  make
BuildRequires:  tex(stmaryrd.sty)
# Default font for graphviz/dot
BuildRequires:  font(freesans)
%endif

# Although there are references to linbox-devel files in this package,
# linbox-devel Requires fflas-ffpack-devel, not the other way around.

%description
The FFLAS-FFPACK library provides functionality for dense linear algebra
over word size prime finite fields.


%package devel
Summary:        Header files for developing with fflas-ffpack

Requires:       givaro-devel%{?_isa}
Requires:       gmp-devel%{?_isa}
Requires:       flexiblas-devel%{?_isa}

Provides:       fflas-ffpack-static = %{version}-%{release}

%description devel
The FFLAS-FFPACK library provides functionality for dense linear algebra
over word size prime finite fields.  This package provides the header
files for developing applications that use FFLAS-FFPACK.


%package doc
Summary:        API documentation for fflas-ffpack

BuildArch:      noarch

%description doc
API documentation for fflas-ffpack.


%prep
%autosetup -p0 -n fflas_ffpack-%{version}
# Skip test-echelon for now due to failures.
# See https://github.com/linbox-team/fflas-ffpack/issues/282
sed -i '/^[[:blank:]]*test-echelon/d' tests/Makefile.am

# Do not use env
sed -i 's,%{_bindir}/env bash,%{_bindir}/bash,' fflas-ffpack-config.in

# Remove parts of the configure script that select non-default architectures
# and ABIs. On x86_64, we could rely on up to SSE2, but there are no explicit
# SIMD routines below SSE4.1 in the library, so it is not worth worrying about.
sed -i '/INSTR_SET/,/fabi-version/d' configure.ac

cp -p '%{SOURCE1}' .

%if %{with doc_pdf}
# We enable the Doxygen PDF documentation as a substitute. We must enable
# GENERATE_LATEX and LATEX_BATCHMODE; the rest are precautionary and should
# already be set as we like them. We also disable GENERATE_HTML, since we will
# not use it.
sed -r -i \
    -e "s/^([[:blank:]]*(GENERATE_LATEX|LATEX_BATCHMODE|USE_PDFLATEX|\
PDF_HYPERLINKS)[[:blank:]]*=[[:blank:]]*)NO[[:blank:]]*/\1YES/" \
    -e "s/^([[:blank:]]*(LATEX_TIMESTAMP|GENERATE_HTML)\
[[:blank:]]*=[[:blank:]]*)YES[[:blank:]]*/\1NO/" \
    doc/Doxyfile doc/DoxyfileDev
%endif


%build
# Regenerate configure after monkeying with configure.ac
autoreconf --force --install --verbose

%configure \
  %{?with_doc_pdf:--enable-doc --docdir='%{_docdir}/fflas-ffpack'} \
  --disable-static \
  --enable-openmp \
  --disable-simd \
  --with-blas-cflags="$(pkgconf --cflags flexiblas)" \
  --with-blas-libs="$(pkgconf --libs flexiblas)"
chmod -v a+x fflas-ffpack-config
%make_build

%if %{with doc_pdf}
%make_build -C doc/latex
mv -v doc/latex/refman.pdf doc/fflas-ffpack.pdf
# Build the developer documentation, too.
rm -rf doc/latex
%make_build -C doc docs_dev
%make_build -C doc/latex
mv -v doc/latex/refman.pdf doc/fflas-ffpack-dev.pdf
%endif


%install
%make_install
rm -vrf '%{buildroot}%{_prefix}/docs'
install -t '%{buildroot}%{_mandir}/man1' -D -m 0644 -p fflas-ffpack-config.1


%check
export FLEXIBLAS=netlib
%make_build check


%files devel
%license COPYING COPYING.LESSER
%doc README.md

%{_bindir}/fflas-ffpack-config
%{_mandir}/man1/fflas-ffpack-config.1*

%{_includedir}/fflas-ffpack/

%{_libdir}/pkgconfig/fflas-ffpack.pc


%files doc
%license COPYING COPYING.LESSER
%doc AUTHORS
%doc ChangeLog
%doc README.md
%doc TODO
%if %{with doc_pdf}
%doc doc/fflas-ffpack.pdf
%doc doc/fflas-ffpack-dev.pdf
%endif


%changelog
%autochangelog