## START: Set by rpmautospec ## (rpmautospec version 0.6.0) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 3; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec %bcond bundled_thread_pool 0 Name: libfplll Version: 5.5.0 %global so_version 9 Release: %autorelease Summary: Lattice algorithms using floating-point arithmetic # The entire source is LGPL-2.1-or-later, except: # # - The contents of fplll/enum-parallel/ are MIT # # The header-only libraries are unbundled; since header-only libraries are # treated as static libraries, their licenses still contribute to the licenses # of the binary RPMs # - cr-marcstevens-snippets-thread_pool-static is MIT; it replaces # fplll/io/thread_pool.hpp # - json-static is is MIT AND CC0-1.0 (the latter because it includes # Hedley); it replaces fplll/io/json.hpp # # Additionally, a number of autoconf build system sources, which do not # contribute to the binary RPM license because they are neither installed nor # linked into any installed file, are under various other permissible licenses: # # - INSTALL, {,fplll/,tests/}Makefile.in, aclocal.m4, compile, config.guess, # config.sub, configure, depcomp, install-sh, ltmain.sh, missing, # test-driver, */Makefile.in, m4/*.m4 License: LGPL-2.1-or-later AND MIT AND CC0-1.0 URL: https://fplll.github.io/fplll/ Source0: https://github.com/fplll/fplll/releases/download/%{version}/fplll-%{version}.tar.gz # Man pages hand-written for Fedora in groff_man(7) format based on --help # output and README.md: Source1: fplll.1 Source2: latticegen.1 # https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} BuildRequires: autoconf BuildRequires: automake BuildRequires: libtool BuildRequires: gcc-c++ BuildRequires: make BuildRequires: pkgconfig(mpfr) BuildRequires: pkgconfig(qd) # BR on *-static required for tracking header-only libraries BuildRequires: pkgconfig(nlohmann_json) BuildRequires: json-static # The contents of fplll/enum-parallel/ are based on, but heavily modified from, # https://github.com/cr-marcstevens/fplll-extenum. We do not treat this as a # bundled dependency because the separate fplll-extenum library was integrated # into fplll and is no longer separately developed. %if %{without bundled_thread_pool} BuildRequires: cr-marcstevens-snippets-thread_pool-devel # https://docs.fedoraproject.org/en-US/packaging-guidelines/#_packaging_header_only_libraries BuildRequires: cr-marcstevens-snippets-thread_pool-static %else # The file fplll/io/thread_pool.hpp is a copy of cxxheaderonly/thread_pool.hpp # from commit e01ae885cdbef3af265341110a434f6fa7b8e8ac (or, equivalently, a # number of earlier commits that did not modify that file) of # https://github.com/cr-marcstevens/snippets/. Provides: bundled(cr-marcstevens-snippets-thread_pool-devel) = 0^20210722gite01ae88 %endif %description fplll contains implementations of several lattice algorithms. The implementation relies on floating-point orthogonalization, and LLL is central to the code, hence the name. It includes implementations of floating-point LLL reduction algorithms, offering different speed/guarantees ratios. It contains a 'wrapper' choosing the estimated best sequence of variants in order to provide a guaranteed output as fast as possible. In the case of the wrapper, the succession of variants is oblivious to the user. It includes an implementation of the BKZ reduction algorithm, including the BKZ-2.0 improvements (extreme enumeration pruning, pre-processing of blocks, early termination). Additionally, Slide reduction and self dual BKZ are supported. It also includes a floating-point implementation of the Kannan-Fincke-Pohst algorithm that finds a shortest non-zero lattice vector. Finally, it contains a variant of the enumeration algorithm that computes a lattice vector closest to a given vector belonging to the real span of the lattice. %package devel Summary: Development files for libfplll Requires: libfplll%{?_isa} = %{version}-%{release} Requires: qd-devel%{?_isa} # We unbundled this; the API header now references the system copy of the # header, so dependent packages need it installed. (Technically, dependent # packages that directly or indirectly include should also # explicitly BR the -static package, since they are indirectly using the # header-only library.) Requires: json-devel Requires: json-static %if %{without bundled_thread_pool} # Similarly to the json-devel case above; technically, dependent packages that # directly or indirectly include or # should also explicitly BR the -static package. Requires: cr-marcstevens-snippets-thread_pool-devel Requires: cr-marcstevens-snippets-thread_pool-static %endif %description devel The libfplll-devel package contains libraries and header files for developing applications that use libfplll. # The static library is required by Macaulay2. See its spec file for a full # explanation; the essential justification is excerpted below: # # We have to use the static version of the libfplll and givaro library. They # have global objects whose constructors run before GC is initialized. If we # allow the shared libraries to be unloaded, which happens as a normal part # of Macaulay2's functioning, then GC tries to free objects it did not # allocate, which leads to a segfault. %package static Summary: Static library for libfplll Requires: libfplll-devel%{?_isa} = %{version}-%{release} %description static The libfplll-static package contains a static library for libfplll. %package tools Summary: Command line tools that use libfplll Requires: libfplll%{?_isa} = %{version}-%{release} %description tools The libfplll-tools package contains command-line tools that expose the functionality of libfplll. %prep %autosetup -n fplll-%{version} # Unbundle “JSON for Modern C++”: echo '#include ' > fplll/io/json.hpp %if %{without bundled_thread_pool} # Unbundle cr-marcstevens-snippets-thread_pool-devel echo '#include ' > fplll/io/thread_pool.hpp %endif %conf autoreconf --install --force --verbose # This is a formality; no extra flags are required in practice: export CFLAGS="${CFLAGS-} $(pkgconf --cflags nlohmann_json)" export LDFLAGS="${LDFLAGS-} $(pkgconf --libs nlohmann_json)" %configure --disable-silent-rules # Eliminate hardcoded rpaths, and work around libtool moving all -Wl options # after the libraries to be linked sed -e 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' \ -e 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' \ -e 's|-nostdlib|-Wl,--as-needed &|' \ -i libtool %build %make_build %install %make_install find '%{buildroot}' -type f -name '*.la' -print -delete install -t '%{buildroot}%{_mandir}/man1' -D -m 0644 -p \ '%{SOURCE1}' '%{SOURCE2}' %check LD_LIBRARY_PATH="${PWD}/src/.libs" %make_build check %files %doc NEWS README.md %license COPYING %{_libdir}/libfplll.so.%{so_version}{,.*} %{_datadir}/fplll/ %files devel %{_includedir}/fplll.h %{_includedir}/fplll/ %{_libdir}/libfplll.so %{_libdir}/pkgconfig/fplll.pc %files static %{_libdir}/libfplll.a %files tools %{_bindir}/fplll %{_bindir}/latticegen %{_mandir}/man1/fplll.1* %{_mandir}/man1/latticegen.1* %changelog ## START: Generated by rpmautospec * Thu Nov 14 2024 Benjamin A. Beasley - 5.5.0-3 - Fix unbundling of header-only dependencies * Thu Nov 14 2024 Benjamin A. Beasley - 5.5.0-2 - F42+: Drop i686 support since this is now a leaf package on that arch. * Thu Nov 14 2024 Benjamin A. Beasley - 5.5.0-1 - Update to 5.5.0 (close RHBZ#2326146) * Sat Nov 02 2024 Benjamin A. Beasley - 5.4.5-5 - Invoke autoreconf and configure in %%conf rather than in %%build * Thu Jul 18 2024 Fedora Release Engineering - 5.4.5-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Thu Jan 25 2024 Fedora Release Engineering - 5.4.5-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Sun Jan 21 2024 Fedora Release Engineering - 5.4.5-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Thu Oct 19 2023 Benjamin A. Beasley - 5.4.5-1 - Update to 5.4.5 (close RHBZ#2244911) * Tue Aug 15 2023 Benjamin A. Beasley - 5.4.4-5 - Unbundle cr-marcstevens-snippets-thread_pool-devel * Thu Jul 20 2023 Fedora Release Engineering - 5.4.4-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Sat Jun 03 2023 Benjamin A. Beasley - 5.4.4-3 - Remove explicit %%set_build_flags, not needed since F36 * Thu Jan 19 2023 Fedora Release Engineering - 5.4.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Thu Jan 12 2023 Benjamin A. Beasley - 5.4.4-1 - Update to 5.4.4 (close RHBZ#2155414) - Bumps .so version to 8 * Thu Jan 12 2023 Benjamin A. Beasley - 5.4.2-5 - Improved, hand-written man pages * Tue Jan 10 2023 Benjamin A. Beasley - 5.4.2-4 - Update License to include header-only dependencies * Fri Aug 05 2022 Benjamin A. Beasley - 5.4.2-3 - Update License to SPDX * Thu Jul 21 2022 Fedora Release Engineering - 5.4.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Thu May 26 2022 Benjamin A. Beasley - 5.4.2-1 - Update to 5.4.2 (close RHBZ#2090122) - Better document licensing - Document bundled cr-marcstevens-snippets-thread_pool-devel, and prepare to unbundle it - Unbundle json-devel * Thu Jan 20 2022 Fedora Release Engineering - 5.4.1-11 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Fri Dec 10 2021 Benjamin A. Beasley - 5.4.1-10 - More style tweaks according to personal preference * Fri Dec 10 2021 Benjamin A. Beasley - 5.4.1-9 - Stop patching the AC_CHECK_HEADER_STDBOOL test * Fri Dec 10 2021 Benjamin A. Beasley - 5.4.1-8 - Update summary and description from upstream * Fri Dec 10 2021 Benjamin A. Beasley - 5.4.1-7 - Stop adding LIBS=-lpthread * Fri Dec 10 2021 Benjamin A. Beasley - 5.4.1-6 - Style tweaks according to personal preference * Fri Dec 10 2021 Benjamin A. Beasley - 5.4.1-5 - Add comment justifying the static library * Fri Dec 10 2021 Benjamin A. Beasley - 5.4.1-4 - Re-enable LTO on armv7hl and s390x * Thu Jul 22 2021 Fedora Release Engineering - 5.4.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild * Fri May 14 2021 Jerry James - 5.4.1-1 - Version 5.4.1 - Drop upstreamed -gcc11 patch * Tue Jan 26 2021 Fedora Release Engineering - 5.4.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Thu Dec 10 2020 Jerry James - 5.4.0-1 - Version 5.4.0 * Sat Aug 01 2020 Fedora Release Engineering - 5.3.3-3 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue Jul 28 2020 Fedora Release Engineering - 5.3.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Wed Jul 1 2020 Jerry James - 5.3.3-1 - Version 5.3.3 * Wed Jan 29 2020 Fedora Release Engineering - 5.3.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Thu Jan 9 2020 Jerry James - 5.3.2-1 - Version 5.3.2 * Tue Dec 17 2019 Jerry James - 5.3.1-1 - Version 5.3.1 - All patches have been upstreamed; drop them all * Thu Nov 28 2019 Jerry James - 5.3.0-1 - Version 5.3.0 * Wed Oct 9 2019 Jerry James - 5.2.1-5 - Rebuild for mpfr 4 * Thu Jul 25 2019 Fedora Release Engineering - 5.2.1-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Fri Feb 01 2019 Fedora Release Engineering - 5.2.1-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild * Fri Jul 13 2018 Fedora Release Engineering - 5.2.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Sat Jun 2 2018 Jerry James - 5.2.1-1 - New upstream release (bz 1499072) - Update URL - Drop upstreamed -rounding patch * Wed Feb 07 2018 Fedora Release Engineering - 5.1.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild * Wed Sep 27 2017 Jerry James - 5.1.0-1 - New upstream release * Thu Aug 03 2017 Fedora Release Engineering - 5.0.3-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild * Wed Jul 26 2017 Fedora Release Engineering - 5.0.3-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild * Mon May 15 2017 Fedora Release Engineering - 5.0.3-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild * Wed Apr 5 2017 Jerry James - 5.0.3-1 - New upstream release - Add a -static library for Macaulay2, which needs to control constructor order * Fri Feb 10 2017 Fedora Release Engineering - 4.0.5-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Tue Aug 9 2016 pcpa - 4.0.5-1 - Update to version required by sagemath 7.3 * Thu Feb 04 2016 Fedora Release Engineering - 4.0.4-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild * Wed Jun 17 2015 Fedora Release Engineering - 4.0.4-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild * Sat May 02 2015 Kalev Lember - 4.0.4-6 - Rebuilt for GCC 5 C++11 ABI change * Tue Feb 17 2015 Jerry James - 4.0.4-5 - Update project URL - Use license macro * Sun Aug 17 2014 Fedora Release Engineering - 4.0.4-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild * Sat Jun 07 2014 Fedora Release Engineering - 4.0.4-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild * Sat Aug 03 2013 Fedora Release Engineering - 4.0.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild * Fri May 31 2013 Jerry James - 4.0.4-1 - New upstream release - All patches have been upstreamed * Mon May 6 2013 Jerry James - 4.0.3-1 - New upstream release * Tue Mar 26 2013 Jerry James - 4.0.2-2 - Add support for aarch64 (bz 925727) * Mon Jan 28 2013 Jerry James - 4.0.2-1 - New upstream release * Sat Oct 20 2012 pcpa - 4.0.1-2 - Add extra compatibility support with fplll3 (#868579) * Thu Sep 27 2012 Jerry James - 4.0.1-1 - New upstream release - Separate binaries into a -tools subpackage - Modernize the spec file * Thu Jul 19 2012 Fedora Release Engineering - 3.0.12-5.2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild * Tue Feb 28 2012 Fedora Release Engineering - 3.0.12-4.2 - Rebuilt for c++ ABI breakage * Fri Jan 13 2012 Fedora Release Engineering - 3.0.12-3.2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild * Fri Oct 21 2011 Marcela Mašláňová - 3.0.12-2.2 - rebuild with new gmp without compat lib * Wed Oct 12 2011 Peter Schiffer - 3.0.12-2.1 - rebuild with new gmp * Wed Feb 09 2011 Fedora Release Engineering - 3.0.12-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild * Sat Aug 8 2009 Conrad Meyer - 3.0.12-1 - Bump to new version (3.0.12). * Fri Jul 24 2009 Fedora Release Engineering - 3.0.11-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild * Wed Feb 25 2009 Fedora Release Engineering - 3.0.11-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild * Fri Dec 12 2008 Conrad Meyer - 3.0.11-1 - Bump to new version (3.0.11). * Fri Oct 17 2008 Conrad Meyer - 3.0.9-2 - Rename 'generate' binary to 'fplll_generate'. - Move generically-named header files to fplll subdirectory of includedir. - Add %%check. * Sun Oct 12 2008 Conrad Meyer - 3.0.9-1 - Initial package. ## END: Generated by rpmautospec