diff --git a/.gitignore b/.gitignore index 707f265..ae7c8f0 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,3 @@ /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 diff --git a/sleef.rpmlintrc b/sleef.rpmlintrc index 7a1f9b5..16b8bfd 100644 --- a/sleef.rpmlintrc +++ b/sleef.rpmlintrc @@ -1,12 +1,9 @@ # 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\.zst") +addFilter(r" invalid-url Source[0-9]+: sleef-.*-filtered\.tar\.xz") # Bogus; it is a perfectly fine zstandard file. -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/") +addFilter(r" inconsistent-file-extension sleef-.*-filtered\.tar\.xz") diff --git a/sleef.spec b/sleef.spec index ea7b1d4..e3da8d1 100644 --- a/sleef.spec +++ b/sleef.spec @@ -6,12 +6,9 @@ # 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.9.0 -%global tag %{version} +Version: 3.8.0 +%global tag 3.8 %global so_version 3 Release: %autorelease Summary: Vectorized math library @@ -39,38 +36,8 @@ 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. -# - It’s 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) @@ -80,13 +47,10 @@ 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} %{arm64} +%global gnuabi_arches %{ix86} x86_64 aarch64 # See https://github.com/shibatch/sleef/pull/283. %if %{with static} %global inline_enabled 1 @@ -203,15 +167,12 @@ 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 @@ -220,27 +181,14 @@ find docs/ -type f -name .nojekyll -print -delete # 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=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} + -DSLEEF_BUILD_SHARED_LIBS:BOOL=ON \ + -DSLEEF_ENFORCE_TESTER3:BOOL=TRUE %build @@ -252,43 +200,17 @@ find docs/ -type f -name .nojekyll -print -delete %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 %{arm64} +%ifarch aarch64 # 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|eatures).*\bsve\b' /proc/cpuinfo >/dev/null +if ! grep -E '[Ff]lags.*\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. It’s 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. Let’s just skip this while we -# await the next upstream release. -skips="${skips}|tester4ypurec_scalar" -%endif -%endif skips="${skips})$" @@ -317,7 +239,7 @@ skips="${skips})$" %files doc %license LICENSE.txt %doc CHANGELOG.md -%doc README.adoc +%doc README.md %doc docs/ diff --git a/sources b/sources index a0b715a..573d70b 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (sleef-3.9.0-filtered.tar.zst) = 4c55c310795569debed8c771cf0251a126e8291515bf562e6ac4b611dafe6df5fd0024d129dbeaf2c6bce39112bb8a826acabd762beebdd17de86259394b5933 +SHA512 (sleef-3.8-filtered.tar.zst) = 51942a633efb4e5b452530c3a34ac6983d7b77c7cf8f17dc0cd46934585ed6ae2745fce81438e0757aeb464be3b1677ab34d1421d7601a46069f490881cc9d89