summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Orlitzky <mjo@gentoo.org>2024-06-26 18:09:31 -0400
committerMichael Orlitzky <mjo@gentoo.org>2024-06-26 18:20:04 -0400
commitf6d99555e8a35a1080174120515c87c59dc37a5e (patch)
tree4f23d09ca4eaec926d564fdcb0b2d5c199034057 /sci-mathematics/flint
parentnet-libs/quiche: drop 0.21.0 (diff)
downloadgentoo-f6d99555e8a35a1080174120515c87c59dc37a5e.tar.gz
gentoo-f6d99555e8a35a1080174120515c87c59dc37a5e.tar.bz2
gentoo-f6d99555e8a35a1080174120515c87c59dc37a5e.zip
sci-mathematics/flint: add 3.1.3_p1
Closes: https://bugs.gentoo.org/934463 Signed-off-by: Michael Orlitzky <mjo@gentoo.org>
Diffstat (limited to 'sci-mathematics/flint')
-rw-r--r--sci-mathematics/flint/Manifest1
-rw-r--r--sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch320
-rw-r--r--sci-mathematics/flint/flint-3.1.3_p1.ebuild89
3 files changed, 410 insertions, 0 deletions
diff --git a/sci-mathematics/flint/Manifest b/sci-mathematics/flint/Manifest
index b1c7fc7e9dbf..9afbef59fe6e 100644
--- a/sci-mathematics/flint/Manifest
+++ b/sci-mathematics/flint/Manifest
@@ -1,3 +1,4 @@
DIST flint-2.9.0.tar.gz 5283894 BLAKE2B a790437ee142d8acb5cec1e6c7d21812f8d83f5d30d1e8c07e799713e96791d87792f25fbd4ce2d0d68f6a8ee2f0cde2b8d9f8db8ab26922a48485e0e90394aa SHA512 4494cba6a4e215e817d7c74ef6834c4e05a832488f4808bbd7bea8b02a4a35d47ef3c63a4f213230c712b32842f5588c503fc1cf23e5e2ddc4a4a5a1627a02ba
DIST flint-3.0.1.tar.gz 7624944 BLAKE2B 0d94252075945f39af3dd2e49803cbe16aa65b108964dfc0c12bdfd9188748944c1e839401e17b974f8f6f8832e4da84d62a63f20b63cfff0ff5c2736bfd2d47 SHA512 4b5b432b962135cd708a0ce4242343f3226f0fdf73c3f541728ed4540e7ef6cb7812a48b6b46e65a8fcc1f5cae93d8bb59838d24728024cd9aa0f7b8e5c6f98f
DIST flint-3.1.0.tar.gz 7585407 BLAKE2B 697be5bd88e7793eb160d5f0e2110a7b8371ef8d3ca82b576c4cc755983a660a884d35d3cbb442288caa074b7f41699f4c6bc3c244272d9e9f5755d8d209004d SHA512 1d33bb35853f4bdca047899ebb4ac9873748c6d57ad3b6aded32219261e95713fb26b394d8c86f6183b9f44db58697def07e6c565ac789461d5ccc4dca3e9ba7
+DIST flint-3.1.3_p1.tar.gz 7588734 BLAKE2B 87acf8778e21e37c01e12b198ff81e62ab113df3e0e9c6155ff7dd505828f79d5c49d85093e261ea96397e906350caa03477e3ecbdd1fc09d6ae5c984397a2be SHA512 1b16ff2fb9cb2ac4b75513278b8c14683e8d83db39985631df14d6ea74bee4d6ea818a200321d5f0de6f1af89898f7a99dc7088f712f4c6db1a2546199aefba7
diff --git a/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch b/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch
new file mode 100644
index 000000000000..1ebe43d6243b
--- /dev/null
+++ b/sci-mathematics/flint/files/flint-3.1.3_p1-c99-I.patch
@@ -0,0 +1,320 @@
+From 1b93e73d00881be12e04b7f13e070214a3c9e1cc Mon Sep 17 00:00:00 2001
+From: Dima Pasechnik <dima@pasechnik.info>
+Date: Wed, 19 Jun 2024 22:16:34 +0100
+Subject: [PATCH] ensure C99 compliance in headers, as 'I' is reserved
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Note that the following code
+---- cut here: save as t.c
+---- cut here
+
+fails to compile with a suffciently new compiler, e.g. clang 16 or gcc 14.
+
+$ gcc -c t.c
+In file included from t.c:1:
+/usr/include/flint/mpoly.h:1319:43: error: expected ‘)’ before ‘__extension__’
+ 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars);
+ | ^
+In file included from /usr/include/flint/fmpz_types.h:15,
+ from /usr/include/flint/fmpz_mod_types.h:15,
+ from /usr/include/flint/mpoly_types.h:15,
+ from /usr/include/flint/mpoly.h:23,
+ from t.c:2:
+/usr/include/flint/mpoly.h:1319:46: error: expected ‘;’, ‘,’ or ‘)’ before ‘mp_limb_signed_t’
+ 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars);
+
+...
+---
+ src/fft_small.h | 6 +++---
+ src/fmpz_mod_mpoly_factor.h | 8 ++++----
+ src/fmpz_mpoly.h | 2 +-
+ src/fmpz_mpoly_factor.h | 18 +++++++++---------
+ src/fq_nmod_mpoly_factor.h | 6 +++---
+ src/fq_zech_mpoly_factor.h | 6 +++---
+ src/mpoly.h | 18 +++++++++---------
+ src/nmod_mpoly.h | 4 ++--
+ src/nmod_mpoly_factor.h | 6 +++---
+ 9 files changed, 37 insertions(+), 37 deletions(-)
+
+diff --git a/src/fft_small.h b/src/fft_small.h
+index 3f62f2e988..b7404f196d 100644
+--- a/src/fft_small.h
++++ b/src/fft_small.h
+@@ -242,10 +242,10 @@ FLINT_INLINE double sd_fft_ctx_get_fft_index(double* d, ulong i)
+ }
+
+ /* sd_fft.c */
+-void sd_fft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc);
++void sd_fft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc);
+
+ /* sd_ifft.c */
+-void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong z, ulong n, int f);
++void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong z, ulong n, int f);
+
+ /* sd_fft_ctx.c */
+ void sd_fft_ctx_clear(sd_fft_ctx_t Q);
+@@ -428,7 +428,7 @@ typedef struct {
+
+ typedef mpn_ctx_struct mpn_ctx_t[1];
+
+-void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong I);
++void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong Iv);
+ ulong flint_mpn_nbits(const ulong* a, ulong an);
+ int flint_mpn_cmp_ui_2exp(const ulong* a, ulong an, ulong b, ulong e);
+ unsigned char flint_mpn_add_inplace_c(ulong* z, ulong zn, ulong* a, ulong an, unsigned char cf);
+diff --git a/src/fmpz_mod_mpoly_factor.h b/src/fmpz_mod_mpoly_factor.h
+index 359fdd1e3d..460695dd23 100644
+--- a/src/fmpz_mod_mpoly_factor.h
++++ b/src/fmpz_mod_mpoly_factor.h
+@@ -1203,15 +1203,15 @@ typedef struct {
+ typedef fmpz_mod_mpoly_pfrac_struct fmpz_mod_mpoly_pfrac_t[1];
+
+
+-int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t I,
++int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t Iv,
+ flint_bitcnt_t bits, slong l, slong r, const fmpz_mod_mpoly_struct * betas,
+ const fmpz * alpha, const fmpz_mod_mpoly_ctx_t ctx);
+
+-void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t I,
++void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t Iv,
+ const fmpz_mod_mpoly_ctx_t ctx);
+
+ int fmpz_mod_mpoly_pfrac(slong r, fmpz_mod_mpoly_t t, const slong * deg,
+- fmpz_mod_mpoly_pfrac_t I, const fmpz_mod_mpoly_ctx_t ctx);
++ fmpz_mod_mpoly_pfrac_t Iv, const fmpz_mod_mpoly_ctx_t ctx);
+
+ int fmpz_mod_mpoly_hlift(slong m, fmpz_mod_mpoly_struct * f, slong r,
+ const fmpz * alpha, const fmpz_mod_mpoly_t A, const slong * degs,
+@@ -1290,7 +1290,7 @@ int fmpz_mod_mpolyn_gcd_brown_smprime(
+ fmpz_mod_mpolyn_t B,
+ slong var,
+ const fmpz_mod_mpoly_ctx_t ctx,
+- const mpoly_gcd_info_t I,
++ const mpoly_gcd_info_t Iv,
+ fmpz_mod_poly_polyun_mpolyn_stack_t St);
+
+ int fmpz_mod_mpolyl_gcdp_zippel(
+diff --git a/src/fmpz_mpoly.h b/src/fmpz_mpoly.h
+index b7c9677915..4be3d05c56 100644
+--- a/src/fmpz_mpoly.h
++++ b/src/fmpz_mpoly.h
+@@ -1084,7 +1084,7 @@ void fmpz_mpoly_vec_randtest_not_zero(fmpz_mpoly_vec_t vec, flint_rand_t state,
+
+ void fmpz_mpoly_spoly(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_t g, const fmpz_mpoly_ctx_t ctx);
+ void fmpz_mpoly_vec_set_primitive_unique(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx);
+-void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t I, const fmpz_mpoly_ctx_t ctx);
++void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t Iv, const fmpz_mpoly_ctx_t ctx);
+ int fmpz_mpoly_vec_is_groebner(const fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx);
+ void fmpz_mpoly_buchberger_naive(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx);
+ int fmpz_mpoly_buchberger_naive_with_limits(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F,
+diff --git a/src/fmpz_mpoly_factor.h b/src/fmpz_mpoly_factor.h
+index 0da7c1052b..a04ef8021e 100644
+--- a/src/fmpz_mpoly_factor.h
++++ b/src/fmpz_mpoly_factor.h
+@@ -298,11 +298,11 @@ void fmpz_mpoly_from_mpolyl_perm_inflate(fmpz_mpoly_t A,
+
+ int fmpz_mpolyl_gcd_brown(fmpz_mpoly_t G,
+ fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B,
+- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I);
++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv);
+
+ int fmpz_mpolyl_gcd_brown_threaded_pool(fmpz_mpoly_t G,
+ fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B,
+- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I,
++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv,
+ const thread_pool_handle * handles, slong num_handles);
+
+ int fmpz_mpolyl_gcd_zippel(fmpz_mpoly_t G, fmpz_mpoly_t Abar,
+@@ -340,15 +340,15 @@ typedef struct {
+
+ typedef fmpz_poly_pfrac_struct fmpz_poly_pfrac_t[1];
+
+-void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t I);
++void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t Iv);
+
+-void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t I);
++void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t Iv);
+
+-int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t I,
++int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t Iv,
+ const fmpz_poly_struct * b, slong r);
+
+ int fmpz_poly_pfrac_precomp(fmpz_poly_struct * c,
+- const fmpz_poly_t A, fmpz_poly_pfrac_t I);
++ const fmpz_poly_t A, fmpz_poly_pfrac_t Iv);
+
+ typedef struct {
+ flint_bitcnt_t bits;
+@@ -372,15 +372,15 @@ typedef struct {
+
+ typedef fmpz_mpoly_pfrac_struct fmpz_mpoly_pfrac_t[1];
+
+-int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t I, flint_bitcnt_t bits,
++int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t Iv, flint_bitcnt_t bits,
+ slong r, slong w, const fmpz_mpoly_struct * betas,
+ const fmpz * alpha, const fmpz_mpoly_ctx_t ctx);
+
+-void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t I,
++void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t Iv,
+ const fmpz_mpoly_ctx_t ctx);
+
+ int fmpz_mpoly_pfrac(slong l, fmpz_mpoly_t t, const slong * degs,
+- fmpz_mpoly_pfrac_t I, const fmpz_mpoly_ctx_t ctx);
++ fmpz_mpoly_pfrac_t Iv, const fmpz_mpoly_ctx_t ctx);
+
+ int fmpz_mpoly_hlift(slong m, fmpz_mpoly_struct * f, slong r,
+ const fmpz * alpha, const fmpz_mpoly_t A, const slong * degs,
+diff --git a/src/fq_nmod_mpoly_factor.h b/src/fq_nmod_mpoly_factor.h
+index 6289d3f1c5..29caa99aa4 100644
+--- a/src/fq_nmod_mpoly_factor.h
++++ b/src/fq_nmod_mpoly_factor.h
+@@ -427,7 +427,7 @@ typedef fq_nmod_mpoly_pfrac_struct fq_nmod_mpoly_pfrac_t[1];
+
+
+ int fq_nmod_mpoly_pfrac_init(
+- fq_nmod_mpoly_pfrac_t I,
++ fq_nmod_mpoly_pfrac_t Iv,
+ flint_bitcnt_t bits,
+ slong l, slong r,
+ const fq_nmod_mpoly_struct * betas,
+@@ -435,14 +435,14 @@ int fq_nmod_mpoly_pfrac_init(
+ const fq_nmod_mpoly_ctx_t ctx);
+
+ void fq_nmod_mpoly_pfrac_clear(
+- fq_nmod_mpoly_pfrac_t I,
++ fq_nmod_mpoly_pfrac_t Iv,
+ const fq_nmod_mpoly_ctx_t ctx);
+
+ int fq_nmod_mpoly_pfrac(
+ slong r,
+ fq_nmod_mpoly_t t,
+ const slong * deg,
+- fq_nmod_mpoly_pfrac_t I,
++ fq_nmod_mpoly_pfrac_t Iv,
+ const fq_nmod_mpoly_ctx_t ctx);
+
+ int fq_nmod_mpoly_hlift(
+diff --git a/src/fq_zech_mpoly_factor.h b/src/fq_zech_mpoly_factor.h
+index 06f31369f9..3d3c51419f 100644
+--- a/src/fq_zech_mpoly_factor.h
++++ b/src/fq_zech_mpoly_factor.h
+@@ -652,7 +652,7 @@ typedef fq_zech_mpoly_pfrac_struct fq_zech_mpoly_pfrac_t[1];
+
+
+ int fq_zech_mpoly_pfrac_init(
+- fq_zech_mpoly_pfrac_t I,
++ fq_zech_mpoly_pfrac_t Iv,
+ flint_bitcnt_t bits,
+ slong l, slong r,
+ const fq_zech_mpoly_struct * betas,
+@@ -660,14 +660,14 @@ int fq_zech_mpoly_pfrac_init(
+ const fq_zech_mpoly_ctx_t ctx);
+
+ void fq_zech_mpoly_pfrac_clear(
+- fq_zech_mpoly_pfrac_t I,
++ fq_zech_mpoly_pfrac_t Iv,
+ const fq_zech_mpoly_ctx_t ctx);
+
+ int fq_zech_mpoly_pfrac(
+ slong r,
+ fq_zech_mpoly_t t,
+ const slong * deg,
+- fq_zech_mpoly_pfrac_t I,
++ fq_zech_mpoly_pfrac_t Iv,
+ const fq_zech_mpoly_ctx_t ctx);
+
+ int fq_zech_mpoly_hlift(
+diff --git a/src/mpoly.h b/src/mpoly.h
+index b0950e3a48..fe0ccbe7c4 100644
+--- a/src/mpoly.h
++++ b/src/mpoly.h
+@@ -1363,9 +1363,9 @@ typedef struct
+
+ typedef mpoly_gcd_info_struct mpoly_gcd_info_t[1];
+
+-void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars);
++void mpoly_gcd_info_init(mpoly_gcd_info_t Iv, slong nvars);
+
+-void mpoly_gcd_info_clear(mpoly_gcd_info_t I);
++void mpoly_gcd_info_clear(mpoly_gcd_info_t Iv);
+
+ void mpoly_gcd_info_limits(ulong * Amax_exp, ulong * Amin_exp,
+ slong * Amax_exp_count, slong * Amin_exp_count,
+@@ -1378,25 +1378,25 @@ void mpoly_gcd_info_stride(ulong * strides,
+ const ulong * Bmax_exp, const ulong * Bmin_exp,
+ const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_set_perm(mpoly_gcd_info_t I,
++void mpoly_gcd_info_set_perm(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t I,
++slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t Iv,
+ slong var, slong bound);
+
+-void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+-void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t I,
++void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t Iv,
+ slong Alength, slong Blength, const mpoly_ctx_t mctx);
+
+ int mpoly_monomial_cofactors(fmpz * Abarexps, fmpz * Bbarexps,
+diff --git a/src/nmod_mpoly.h b/src/nmod_mpoly.h
+index 2a8136e6eb..716ac9669a 100644
+--- a/src/nmod_mpoly.h
++++ b/src/nmod_mpoly.h
+@@ -1619,13 +1619,13 @@ int nmod_mpolyn_gcd_brown_smprime_bivar(
+ int nmod_mpolyn_gcd_brown_smprime(nmod_mpolyn_t G,
+ nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar,
+ nmod_mpolyn_t A, nmod_mpolyn_t B, slong var,
+- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I,
++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv,
+ nmod_poly_stack_t Sp);
+
+ int nmod_mpolyn_gcd_brown_smprime_threaded_pool(nmod_mpolyn_t G,
+ nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar,
+ nmod_mpolyn_t A, nmod_mpolyn_t B, slong var,
+- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I,
++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv,
+ const thread_pool_handle * handles, slong num_workers);
+
+ int nmod_mpolyn_gcd_brown_lgprime(nmod_mpolyn_t G,
+diff --git a/src/nmod_mpoly_factor.h b/src/nmod_mpoly_factor.h
+index a46afc860f..b16c802b9b 100644
+--- a/src/nmod_mpoly_factor.h
++++ b/src/nmod_mpoly_factor.h
+@@ -362,15 +362,15 @@ typedef struct {
+ typedef nmod_mpoly_pfrac_struct nmod_mpoly_pfrac_t[1];
+
+
+-int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t I, flint_bitcnt_t bits,
++int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t Iv, flint_bitcnt_t bits,
+ slong l, slong r, const nmod_mpoly_struct * betas,
+ const mp_limb_t * alpha, const nmod_mpoly_ctx_t ctx);
+
+-void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t I,
++void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t Iv,
+ const nmod_mpoly_ctx_t ctx);
+
+ int nmod_mpoly_pfrac(slong r, nmod_mpoly_t t, const slong * deg,
+- nmod_mpoly_pfrac_t I, const nmod_mpoly_ctx_t ctx);
++ nmod_mpoly_pfrac_t Iv, const nmod_mpoly_ctx_t ctx);
+
+ int nmod_mpoly_hlift(slong m, nmod_mpoly_struct * f, slong r,
+ const mp_limb_t * alpha, const nmod_mpoly_t A, const slong * degs,
diff --git a/sci-mathematics/flint/flint-3.1.3_p1.ebuild b/sci-mathematics/flint/flint-3.1.3_p1.ebuild
new file mode 100644
index 000000000000..09d8ddd97e09
--- /dev/null
+++ b/sci-mathematics/flint/flint-3.1.3_p1.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cmake flag-o-matic python-any-r1
+
+DESCRIPTION="Fast Library for Number Theory"
+HOMEPAGE="https://www.flintlib.org/"
+
+MY_PV="${PV/_/-}"
+SRC_URI="https://github.com/flintlib/flint/archive/refs/tags/v${MY_PV}.tar.gz
+ -> ${P}.tar.gz"
+S="${WORKDIR}/${PN}-${MY_PV}"
+LICENSE="LGPL-2.1+"
+
+# Based off the soname, e.g. /usr/lib64/libflint.so -> libflint.so.15
+SLOT="0/19"
+
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="doc ntl test"
+
+RESTRICT="!test? ( test )"
+
+BDEPEND="${PYTHON_DEPS}
+ doc? (
+ app-text/texlive-core
+ dev-python/sphinx
+ dev-tex/latexmk
+ dev-texlive/texlive-latex
+ dev-texlive/texlive-latexextra
+ )
+"
+DEPEND="dev-libs/gmp:=
+ dev-libs/mpfr:=
+ ntl? ( dev-libs/ntl:= )
+ virtual/cblas"
+# flint 3 includes arb and arb cannot use flint 3.
+RDEPEND="${DEPEND}
+ !sci-mathematics/arb"
+
+# The rst files are API docs, but they're very low-effort compared to
+# the PDF and HTML docs, so we ship them unconditionally and hide only
+# the painful parts behind USE=doc.
+DOCS="AUTHORS README.md doc/source/*.rst"
+
+PATCHES=(
+ "${FILESDIR}/flint-3.0.1-find-cblas.patch"
+ "${FILESDIR}/flint-3.1.3_p1-c99-I.patch"
+)
+
+src_configure() {
+ # Test failures:
+ # * https://bugs.gentoo.org/934463
+ # * https://github.com/flintlib/flint/issues/2029
+ filter-flags -floop-nest-optimize \
+ -ftree-loop-linear \
+ -floop-strip-mine \
+ -floop-block \
+ -fgraphite-identity
+
+ local mycmakeargs=(
+ -DWITH_NTL="$(usex ntl)"
+ -DBUILD_TESTING="$(usex test)"
+ -DBUILD_DOCS="$(usex doc)"
+ )
+
+ cmake_src_configure
+
+ if use doc; then
+ # Avoid the "html/_source" directory that will contain a copy of
+ # the rst sources we've already installed, and also avoid
+ # installing html/objects.inv.
+ HTML_DOCS="${BUILD_DIR}/html/*.html
+ ${BUILD_DIR}/html/*.js
+ ${BUILD_DIR}/html/_static"
+ DOCS+=" ${BUILD_DIR}/latex/Flint.pdf"
+ fi
+}
+
+src_compile() {
+ cmake_src_compile
+
+ if use doc; then
+ cmake_build html
+ cmake_build pdf
+ fi
+}