Skip to content

Distributions sagemath-{flint-arb,homfly,giac,gap}, add "sage_setup: distribution" to Cython modules #30666

Open
@mkoeppe

Description

@mkoeppe

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions