Description
Basically, we are making all external libraries optional, except for a minimal set of "core" libraries such as cysignals
and gmpy2
(see #29865).
(from #30371): See #29705 under the items titled "Deploy mildly modularized distributions", "Further modularization" for a sketch of such distributions. Basically, one distribution for each major C/C++ library (such as sagemath-ntl
) - but some libraries come in packs that would not make much sense to separate (such as sagemath-flint-arb-e_antic
).
List of distributions:
- sagemath-flint-arb
- 'sage/libs/arb/arb_version.pyx',
- 'sage/libs/arb/arith.pyx',
- 'sage/matrix/matrix_complex_ball_dense.pyx',
- 'sage/rings/complex_arb.pyx',
- 'sage/rings/number_field/number_field_element_quadratic.pyx',
- 'sage/rings/polynomial/polynomial_complex_arb.pyx',
- 'sage/rings/real_arb.pyx'
- etc. - sagemath-homfly: 'sage/libs/homfly.pyx'
- sagemath-giac (ex
giacpy_sage
insage.libs.giac
+ dependency onlibgiac
)
- sage/libs/giac/giac.pyx - sagemath-gap:
- 'sage/coding/codecan/codecan.pyx',
- 'sage/combinat/enumeration_mod_permgroup.pyx',
- 'sage/combinat/root_system/reflection_group_c.pyx',
- 'sage/combinat/root_system/reflection_group_element.pyx',
- 'sage/graphs/spanning_tree.pyx',
- 'sage/groups/libgap_wrapper.pyx',
- 'sage/groups/matrix_gps/group_element.pyx',
- 'sage/groups/perm_gps/permgroup_element.pyx',
- 'sage/groups/perm_gps/partn_ref/automorphism_group_canonical_label.pyx',
- 'sage/groups/perm_gps/partn_ref/canonical_augmentation.pyx',
- 'sage/groups/perm_gps/partn_ref/data_structures.pyx',
- 'sage/groups/perm_gps/partn_ref/double_coset.pyx',
- 'sage/groups/perm_gps/partn_ref/refinement_binary.pyx',
- 'sage/groups/perm_gps/partn_ref/refinement_graphs.pyx',
- 'sage/groups/perm_gps/partn_ref/refinement_lists.pyx',
- 'sage/groups/perm_gps/partn_ref/refinement_matrices.pyx',
- 'sage/groups/perm_gps/partn_ref/refinement_python.pyx',
- 'sage/groups/perm_gps/partn_ref/refinement_sets.pyx',
- 'sage/groups/perm_gps/partn_ref2/refinement_generic.pyx',
- 'sage/libs/gap/element.pyx',
- 'sage/libs/gap/libgap.pyx',
- 'sage/libs/gap/util.pyx',
- 'sage/matrix/matrix_gap.pyx',
- 'sage/sets/disjoint_set.pyx'
To test:
make SAGE_WHEELS=yes SAGE_CHECK=yes sagemath_flint_arb
make SAGE_WHEELS=yes SAGE_CHECK=yes sagemath_gap
make SAGE_WHEELS=yes SAGE_CHECK=yes sagemath_giac
make SAGE_WHEELS=yes SAGE_CHECK=yes sagemath_homfly
In follow-up tickets:
sagemath-brial
(exsage-brial
insage.rings.polynomial.pbori
+sage.libs.polybori
,sage.crypto.boolean_function
)sagemath-ntl
sagemath-ecl
(sage.libs.ecl
)sagemath-maxima
: requires sage-eclsagemath-singular
: (some of these files actually may be better put in the pynac distribution)
- 'sage/algebras/letterplace/free_algebra_element_letterplace.pyx',
- 'sage/algebras/letterplace/free_algebra_letterplace.pyx',
- 'sage/algebras/letterplace/letterplace_ideal.pyx',
- 'sage/libs/pynac/constant.pyx',
- 'sage/libs/pynac/pynac.pyx',
- 'sage/libs/singular/function.pyx',
- 'sage/libs/singular/groebner_strategy.pyx',
- 'sage/libs/singular/option.pyx',
- 'sage/libs/singular/polynomial.pyx',
- 'sage/libs/singular/ring.pyx',
- 'sage/libs/singular/singular.pyx',
- 'sage/matrix/matrix_mpolynomial_dense.pyx',
- 'sage/rings/polynomial/multi_polynomial_ideal_libsingular.pyx',
- 'sage/rings/polynomial/multi_polynomial_libsingular.pyx',
- 'sage/rings/polynomial/plural.pyx',
- 'sage/symbolic/comparison.pyx',
- 'sage/symbolic/constants_c.pyx',
- 'sage/symbolic/expression.pyx',
- 'sage/symbolic/function.pyx',
- 'sage/symbolic/getitem.pyx',
- 'sage/symbolic/ring.pyx',
- 'sage/symbolic/series.pyx',
- 'sage/symbolic/substitution_map.pyx',sagemath-pynac
sagemath-linbox
:
- 'sage/libs/linbox/linbox_flint_interface.pyx',
- 'sage/matrix/matrix_integer_sparse.pyx',
- 'sage/matrix/matrix_modn_dense_double.pyx',
- 'sage/matrix/matrix_modn_dense_float.pyx',
- 'sage/matrix/matrix_modn_sparse.pyx'sagemath-znpoly
(subject to removal in zn_poly removal #32841?)
- 'sage/modular/modsym/p1list.pyx',
- 'sage/modular/pollack_stevens/dist.pyx',
- 'sage/rings/fraction_field_FpT.pyx',
- 'sage/rings/polynomial/polynomial_zmod_flint.pyx',
- 'sage/schemes/hyperelliptic_curves/hypellfrob.pyx',sagemath-mari
(also requiring pbori and pbori-groebner):
- 'sage/matrix/matrix_gf2e_dense.pyx',
- 'sage/matrix/matrix_integer_dense.pyx',
- 'sage/matrix/matrix_mod2_dense.pyx',
- 'sage/matrix/matrix_rational_dense.pyx',
- 'sage/modules/vector_mod2_dense.pyx',
- 'sage/rings/polynomial/pbori/pbori.pyx',
- 'sage/rings/polynomial/polynomial_gf2x.pyx'
This is preparation for Meta-ticket #29705 (Modularization) and #30371.
Depends on #31031
Depends on #34855
Depends on #34839
CC: @tobiasdiez @dimpase
Component: refactoring
Keywords: sd111
Author: Matthias Koeppe
Reviewer: Dima Pasechnik
Issue created by migration from https://trac.sagemath.org/ticket/30666