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 in sage.libs.giac + dependency on libgiac)
- 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 (ex sage-brial in sage.rings.polynomial.pbori + sage.libs.polybori, sage.crypto.boolean_function)
sagemath-ntl
sagemath-ecl (sage.libs.ecl)
sagemath-maxima: requires sage-ecl
sagemath-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
Basically, we are making all external libraries optional, except for a minimal set of "core" libraries such as
cysignalsandgmpy2(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 assagemath-flint-arb-e_antic).List of distributions:
- '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.
giacpy_sageinsage.libs.giac+ dependency onlibgiac)- sage/libs/giac/giac.pyx
- '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_arbmake SAGE_WHEELS=yes SAGE_CHECK=yes sagemath_gapmake SAGE_WHEELS=yes SAGE_CHECK=yes sagemath_giacmake SAGE_WHEELS=yes SAGE_CHECK=yes sagemath_homflyIn follow-up tickets:
sagemath-brial(exsage-brialinsage.rings.polynomial.pbori+sage.libs.polybori,sage.crypto.boolean_function)sagemath-ntlsagemath-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-pynacsagemath-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