## START: Set by rpmautospec ## (rpmautospec version 0.2.6) %define autorelease(e:s:pb:) %{?-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*}}%{?dist} ## END: Set by rpmautospec Name: libfplll Version: 5.4.2 %global so_version 7 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 # - fplll/io/thread_pool.hpp is MIT # - fplll/io/json.hpp is MIT, but is unbundled # # 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 URL: https://fplll.github.io/fplll/ Source0: https://github.com/fplll/fplll/releases/download/%{version}/fplll-%{version}.tar.gz 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 BuildRequires: help2man # 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. # 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/. # # This can be unbundled once the package review is complete: # Review Request: cr-marcstevens-snippets - Collection of useful one-file C/C++ # headers # https://bugzilla.redhat.com/show_bug.cgi?id=2090707 Provides: bundled(cr-marcstevens-snippets-thread_pool-devel) = 0^20210722gite01ae88 %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} %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 -p1 -n fplll-%{version} # Unbundle “JSON for Modern C++”: echo '#include ' > fplll/io/json.hpp %build autoreconf --install --force --verbose # This is a formality; no extra flags are required in practice: %set_build_flags 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 %make_build # Build man pages with help2man. The result is not as good as hand-written, but # quite adequate. for cmd in fplll latticegen do LD_LIBRARY_PATH="${PWD}/fplll/.libs" \ help2man --no-info --output="${cmd}.1" "./fplll/${cmd}" done %install %make_install find '%{buildroot}' -type f -name '*.la' -print -delete install -t '%{buildroot}%{_mandir}/man1' -D -m 0644 -p *.1 %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 * 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.