Compare commits

..

6 commits

Author SHA1 Message Date
Benjamin A. Beasley
0baa1447f4 Skip a test that fails on x86_64 with GCC 16 2026-01-11 00:01:53 +00:00
Fedora Release Engineering
629c1eb702 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-25 18:24:31 +00:00
Benjamin A. Beasley
7acb0cb61f Remove an unwanted hidden file from the docs 2025-05-10 22:34:26 -04:00
Benjamin A. Beasley
a3aef29bbe Update .rpmlintrc file for current rpmlint 2025-05-10 22:33:05 -04:00
Benjamin A. Beasley
a18465077d Update to 3.9.0 (close RHBZ#2355181) 2025-04-19 10:21:03 -04:00
Benjamin A. Beasley
8104d17ba5 Use %{x86_64}/%{arm64} instead of x86_64/aarch64, for generality 2025-03-05 11:17:41 -05:00
4 changed files with 94 additions and 12 deletions

1
.gitignore vendored
View file

@ -6,3 +6,4 @@
/sleef-3.6.1-filtered.tar.zst
/sleef-3.7-filtered.tar.zst
/sleef-3.8-filtered.tar.zst
/sleef-3.9.0-filtered.tar.zst

View file

@ -1,9 +1,12 @@
# These are not real spelling errors...
addFilter(r" spelling-error \('[Vv]ectorized', ")
addFilter(r"sleef-gnuabi\..*: spelling-error \('(lib(sleefgnuabi|mvec)|glibc)', ")
# All of the documentation is in the -doc subpackage.
addFilter(r" no-documentation")
# This Source cannot be a URL because we must filter out certain files.
addFilter(r" invalid-url Source[0-9]+: sleef-.*-filtered\.tar\.xz")
addFilter(r" invalid-url Source[0-9]+: sleef-.*-filtered\.tar\.zst")
# Bogus; it is a perfectly fine zstandard file.
addFilter(r" inconsistent-file-extension sleef-.*-filtered\.tar\.xz")
addFilter(r" inconsistent-file-extension sleef-.*-filtered\.tar\.zst")
# We are not sure why some files from docs/ are duplicated in docs/src/. The
# files are small compared to the documentation overall, so it does not seem
# worth too much investigation, and hardlinking them would be a little tedious.
addFilter(r" files-duplicate /.*/docs/src/")

View file

@ -6,9 +6,12 @@
# this feature disabled until someone asks for it.
%bcond static 0
# Adds a BuildRequires on tlfloat and enables more tests
%bcond tlfloat 1
Name: sleef
Version: 3.8.0
%global tag 3.8
Version: 3.9.0
%global tag %{version}
%global so_version 3
Release: %autorelease
Summary: Vectorized math library
@ -36,8 +39,38 @@ Source1: get_source.sh
# https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval
ExcludeArch: %{ix86}
# On aarch64, since 3.9.0, we cannot link at least bin/tester3svenofma when LTO
# is enabled, due to confusion about SVE.
#
# /builddir/build/BUILD/sleef-3.9.0-build/sleef-3.9.0/src/common/testerutil.c:
# In function memrand.constprop:
# /builddir/build/BUILD/sleef-3.9.0-build/sleef-3.9.0/src/common/testerutil.c:101:6:
# error: this operation requires the SVE ISA extension
# 101 | void memrand(void *p, int size) {
# | ^
# /builddir/build/BUILD/sleef-3.9.0-build/sleef-3.9.0/src/common/testerutil.c:101:6:
# note: you can enable SVE using the command-line option -march, or by
# using the target attribute or pragma
# /builddir/build/BUILD/sleef-3.9.0-build/sleef-3.9.0/src/common/testerutil.c:101:
# confused by earlier errors, bailing out
#
# This might be an upstream bug, but it is hard to understand. Upstream
# provides their own LTO option, SLEEF_ENABLE_LTO, but for does not support it
# in combination with shared libraries.
#
# - We could still build the library with LTO and not test it
# (-DSLEEF_BUILD_TESTS:BOOL=FALSE) on aarch64.
# - Its not clear how we could disable LTO *only for the tests*.
# - We choose to disable LTO entirely on aarch64, because we really want to run
# the tests. We hope that the performance impact is not significant. It
# currently does not seem necessary to disable LTO on other architectures.
%ifarch %{arm64}
%global _lto_cflags %{nil}
%endif
BuildRequires: cmake >= 3.4.3
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: ninja-build
# For tests only:
BuildRequires: pkgconfig(mpfr)
@ -47,10 +80,13 @@ BuildRequires: pkgconfig(libcrypto)
%if %{with dft}
BuildRequires: pkgconfig(fftw3)
%endif
%if %{with tlfloat}
BuildRequires: pkgconfig(tlfloat)
%endif
# See https://sleef.org/additional.xhtml#gnuabi. The gnuabi version of the
# library only applies to these architectures.
%global gnuabi_arches %{ix86} x86_64 aarch64
%global gnuabi_arches %{ix86} %{x86_64} %{arm64}
# See https://github.com/shibatch/sleef/pull/283.
%if %{with static}
%global inline_enabled 1
@ -167,12 +203,15 @@ developing applications that use sleef-quad.
%prep
%autosetup -n sleef-%{tag} -p1
# Remove an unwanted hidden file from the docs
find docs/ -type f -name .nojekyll -print -delete
%conf
# -GNinja: This used to be required for parallel builds; it is still faster.
#
# -DENFORCE_TESTER3: The build should fail if we cannot build all tests.
# -DENFORCE_TESTER4: Likewise, except that tester4 requires tlfloat.
#
# -DBUILD_INLINE_HEADERS: Do not build the “inline” headers. This would provide
# an arch-specific collection of sleefinline_*.h headers in _includedir, as
@ -181,14 +220,27 @@ developing applications that use sleef-quad.
# and would thus also be treated as a static library in the Fedora
# guidelines) should be omitted unless something in Fedora absolutely
# requires them.
#
# -DSLEEFDFT_ENABLE_STREAM: The author writes, “The recommended value for
# SLEEFDFT_ENABLE_STREAM depends on the architecture, and it is only
# recommended to be turned on on x86_64.”
# https://github.com/shibatch/sleef/discussions/654#discussioncomment-12860550
%cmake \
-GNinja \
-DSLEEF_BUILD_DFT:BOOL=%{?with_dft:TRUE}%{?!with_dft:FALSE} \
-DSLEEF_ENFORCE_DFT:BOOL=%{?with_dft:TRUE}%{?!with_dft:FALSE} \
%ifarch %{x86_64}
-DSLEEFDFT_ENABLE_STREAM:BOOL=TRUE \
%else
-DSLEEFDFT_ENABLE_STREAM:BOOL=FALSE \
%endif
-DSLEEF_BUILD_GNUABI_LIBS:BOOL=%{?gnuabi_enabled:TRUE}%{?!gnuabi_enabled:FALSE} \
-DSLEEF_BUILD_INLINE_HEADERS:BOOL=%{?inline_enabled:TRUE}%{?!inline_enabled:FALSE} \
-DSLEEF_BUILD_QUAD:BOOL=%{?with_quad:TRUE}%{?!with_quad:FALSE} \
-DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \
-DSLEEF_ENFORCE_TESTER3:BOOL=TRUE
-DSLEEF_BUILD_SHARED_LIBS:BOOL=TRUE \
-DSLEEF_ENFORCE_TESTER3:BOOL=TRUE \
-DSLEEF_ENFORCE_TESTER4:BOOL=%{?with_tlfloat:TRUE}%{?!with_tlfloat:FALSE} \
-DSLEEF_ENABLE_TLFLOAT:BOOL=%{?with_tlfloat:TRUE}%{?!with_tlfloat:FALSE}
%build
@ -200,17 +252,43 @@ developing applications that use sleef-quad.
%check
# Logging CPU features is helpful for debugging, especially in COPR builds
# where the builder hardware information is not necessarily logged separately.
echo '==== Build host CPU features ===='
cat /proc/cpuinfo
skips='^($.'
%ifarch aarch64
%ifarch %{arm64}
# Some tests are specifically for SVE code. We can only run these tests on
# builder hardware that has the SVE extensions, which are not part of the
# aarch64 baseline.
if ! grep -E '[Ff]lags.*\bsve\b' /proc/cpuinfo >/dev/null
if ! grep -E '[Ff](lags|eatures).*\bsve\b' /proc/cpuinfo >/dev/null
then
skips="${skips}|gnuabi_compatibility_SVE(_masked)?|qiutsve"
fi
%endif
%ifarch %{power64}
# Some tests are specifically for VSX3 code. We can only run these tests on
# builder hardware that has the VSX3 extensions (POWER 9 or later), which are
# not part of the ppc64le baseline (POWER 8).
if grep -E -i '\bPOWER8\b' /proc/cpuinfo >/dev/null
then
skips="${skips}|.*vsx3(nofma)?"
fi
%endif
%ifarch %{x86_64}
%if %{undefined fc43} && %{undefined fc42} && %{undefined el10}
# At least one test within this executable fails since GCC 16 landed in Fedora
# 44. Its not very easy to tell exactly what is going wrong, and upstream is
# not likely to be interested since (as determined by bisection) the failure
# was resolved upstream by the removal of no-FMA helpers in
# https://github.com/shibatch/sleef/pull/685. Lets just skip this while we
# await the next upstream release.
skips="${skips}|tester4ypurec_scalar"
%endif
%endif
skips="${skips})$"
@ -239,7 +317,7 @@ skips="${skips})$"
%files doc
%license LICENSE.txt
%doc CHANGELOG.md
%doc README.md
%doc README.adoc
%doc docs/

View file

@ -1 +1 @@
SHA512 (sleef-3.8-filtered.tar.zst) = 51942a633efb4e5b452530c3a34ac6983d7b77c7cf8f17dc0cd46934585ed6ae2745fce81438e0757aeb464be3b1677ab34d1421d7601a46069f490881cc9d89
SHA512 (sleef-3.9.0-filtered.tar.zst) = 4c55c310795569debed8c771cf0251a126e8291515bf562e6ac4b611dafe6df5fd0024d129dbeaf2c6bce39112bb8a826acabd762beebdd17de86259394b5933