diff --git a/srcpkgs/sagemath/patches/40520-Use_accelerate_for_Conda_on_macos.patch b/srcpkgs/sagemath/patches/40520-Use_accelerate_for_Conda_on_macos.patch new file mode 100644 index 00000000000000..43d0dc9938bb7d --- /dev/null +++ b/srcpkgs/sagemath/patches/40520-Use_accelerate_for_Conda_on_macos.patch @@ -0,0 +1,2003 @@ +diff --git a/src/sage/algebras/finite_dimensional_algebras/meson.build b/src/sage/algebras/finite_dimensional_algebras/meson.build +index 5cf644da91b..7f13ad17471 100644 +--- a/src/sage/algebras/finite_dimensional_algebras/meson.build ++++ b/src/sage/algebras/finite_dimensional_algebras/meson.build +@@ -10,7 +10,7 @@ py.install_sources( + ) + + extension_data = { +- 'finite_dimensional_algebra_element' : files( ++ 'finite_dimensional_algebra_element': files( + 'finite_dimensional_algebra_element.pyx', + ), + } +diff --git a/src/sage/algebras/fusion_rings/meson.build b/src/sage/algebras/fusion_rings/meson.build +index 4dec6963a36..ca204c31ec0 100644 +--- a/src/sage/algebras/fusion_rings/meson.build ++++ b/src/sage/algebras/fusion_rings/meson.build +@@ -16,7 +16,7 @@ py.install_sources( + ) + + extension_data = { +- 'fast_parallel_fusion_ring_braid_repn' : files( ++ 'fast_parallel_fusion_ring_braid_repn': files( + 'fast_parallel_fusion_ring_braid_repn.pyx', + ), + } +diff --git a/src/sage/algebras/lie_algebras/meson.build b/src/sage/algebras/lie_algebras/meson.build +index b08b21eaf80..f4df322b84b 100644 +--- a/src/sage/algebras/lie_algebras/meson.build ++++ b/src/sage/algebras/lie_algebras/meson.build +@@ -29,7 +29,7 @@ py.install_sources( + subdir: 'sage/algebras/lie_algebras', + ) + +-extension_data = {'lie_algebra_element' : files('lie_algebra_element.pyx')} ++extension_data = {'lie_algebra_element': files('lie_algebra_element.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/algebras/meson.build b/src/sage/algebras/meson.build +index 59262513251..3ea2e21c30f 100644 +--- a/src/sage/algebras/meson.build ++++ b/src/sage/algebras/meson.build +@@ -48,9 +48,9 @@ py.install_sources( + ) + + extension_data = { +- 'clifford_algebra_element' : files('clifford_algebra_element.pyx'), +- 'exterior_algebra_groebner' : files('exterior_algebra_groebner.pyx'), +- 'octonion_algebra' : files('octonion_algebra.pyx'), ++ 'clifford_algebra_element': files('clifford_algebra_element.pyx'), ++ 'exterior_algebra_groebner': files('exterior_algebra_groebner.pyx'), ++ 'octonion_algebra': files('octonion_algebra.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/arith/meson.build b/src/sage/arith/meson.build +index b11957b8743..335ac643b80 100644 +--- a/src/sage/arith/meson.build ++++ b/src/sage/arith/meson.build +@@ -19,12 +19,12 @@ py.install_sources( + ) + + extension_data = { +- 'functions' : files('functions.pyx'), +- 'multi_modular' : files('multi_modular.pyx'), +- 'numerical_approx' : files('numerical_approx.pyx'), +- 'power' : files('power.pyx'), +- 'rational_reconstruction' : files('rational_reconstruction.pyx'), +- 'srange' : files('srange.pyx'), ++ 'functions': files('functions.pyx'), ++ 'multi_modular': files('multi_modular.pyx'), ++ 'numerical_approx': files('numerical_approx.pyx'), ++ 'power': files('power.pyx'), ++ 'rational_reconstruction': files('rational_reconstruction.pyx'), ++ 'srange': files('srange.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/calculus/meson.build b/src/sage/calculus/meson.build +index 60f5cac8614..a90345327d8 100644 +--- a/src/sage/calculus/meson.build ++++ b/src/sage/calculus/meson.build +@@ -22,12 +22,12 @@ py.install_sources( + ) + + extension_data = { +- 'integration' : files('integration.pyx'), +- 'interpolation' : files('interpolation.pyx'), +- 'interpolators' : files('interpolators.pyx'), +- 'ode' : files('ode.pyx'), +- 'riemann' : files('riemann.pyx'), +- 'var' : files('var.pyx'), ++ 'integration': files('integration.pyx'), ++ 'interpolation': files('interpolation.pyx'), ++ 'interpolators': files('interpolators.pyx'), ++ 'ode': files('ode.pyx'), ++ 'riemann': files('riemann.pyx'), ++ 'var': files('var.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/calculus/transforms/meson.build b/src/sage/calculus/transforms/meson.build +index 3876840f7cc..568602ac5d5 100644 +--- a/src/sage/calculus/transforms/meson.build ++++ b/src/sage/calculus/transforms/meson.build +@@ -9,7 +9,7 @@ py.install_sources( + subdir: 'sage/calculus/transforms', + ) + +-extension_data = {'dwt' : files('dwt.pyx'), 'fft' : files('fft.pyx')} ++extension_data = {'dwt': files('dwt.pyx'), 'fft': files('fft.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/categories/examples/meson.build b/src/sage/categories/examples/meson.build +index 41580a11cca..b249a5d9be9 100644 +--- a/src/sage/categories/examples/meson.build ++++ b/src/sage/categories/examples/meson.build +@@ -37,7 +37,7 @@ py.install_sources( + subdir: 'sage/categories/examples', + ) + +-extension_data = {'semigroups_cython' : files('semigroups_cython.pyx')} ++extension_data = {'semigroups_cython': files('semigroups_cython.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/categories/meson.build b/src/sage/categories/meson.build +index 984e8d50d99..ae9f9072852 100644 +--- a/src/sage/categories/meson.build ++++ b/src/sage/categories/meson.build +@@ -210,13 +210,13 @@ py.install_sources( + ) + + extension_data = { +- 'action' : files('action.pyx'), +- 'category_cy_helper' : files('category_cy_helper.pyx'), +- 'category_singleton' : files('category_singleton.pyx'), +- 'coercion_methods' : files('coercion_methods.pyx'), +- 'functor' : files('functor.pyx'), +- 'map' : files('map.pyx'), +- 'morphism' : files('morphism.pyx'), ++ 'action': files('action.pyx'), ++ 'category_cy_helper': files('category_cy_helper.pyx'), ++ 'category_singleton': files('category_singleton.pyx'), ++ 'coercion_methods': files('coercion_methods.pyx'), ++ 'functor': files('functor.pyx'), ++ 'map': files('map.pyx'), ++ 'morphism': files('morphism.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/coding/codecan/meson.build b/src/sage/coding/codecan/meson.build +index 67e74deea79..e88c99dccaf 100644 +--- a/src/sage/coding/codecan/meson.build ++++ b/src/sage/coding/codecan/meson.build +@@ -8,8 +8,8 @@ py.install_sources( + ) + + extension_data = { +- 'autgroup_can_label' : files('autgroup_can_label.pyx'), +- 'codecan' : files('codecan.pyx'), ++ 'autgroup_can_label': files('autgroup_can_label.pyx'), ++ 'codecan': files('codecan.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/coding/meson.build b/src/sage/coding/meson.build +index 8e042ee0a5a..f22db3d34a5 100644 +--- a/src/sage/coding/meson.build ++++ b/src/sage/coding/meson.build +@@ -42,9 +42,9 @@ py.install_sources( + ) + + extension_data = { +- 'ag_code_decoders' : files('ag_code_decoders.pyx'), +- 'binary_code' : files('binary_code.pyx'), +- 'kasami_codes' : files('kasami_codes.pyx'), ++ 'ag_code_decoders': files('ag_code_decoders.pyx'), ++ 'binary_code': files('binary_code.pyx'), ++ 'kasami_codes': files('kasami_codes.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/combinat/crystals/meson.build b/src/sage/combinat/crystals/meson.build +index ee8da89b536..7353b581a7c 100644 +--- a/src/sage/combinat/crystals/meson.build ++++ b/src/sage/combinat/crystals/meson.build +@@ -44,10 +44,10 @@ py.install_sources( + ) + + extension_data = { +- 'letters' : files('letters.pyx'), +- 'pbw_datum' : files('pbw_datum.pyx'), +- 'spins' : files('spins.pyx'), +- 'tensor_product_element' : files('tensor_product_element.pyx'), ++ 'letters': files('letters.pyx'), ++ 'pbw_datum': files('pbw_datum.pyx'), ++ 'spins': files('spins.pyx'), ++ 'tensor_product_element': files('tensor_product_element.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/combinat/designs/meson.build b/src/sage/combinat/designs/meson.build +index 6f835bac5d1..1553c59f2e8 100644 +--- a/src/sage/combinat/designs/meson.build ++++ b/src/sage/combinat/designs/meson.build +@@ -29,13 +29,13 @@ py.install_sources( + ) + + extension_data = { +- 'designs_pyx' : files('designs_pyx.pyx'), +- 'evenly_distributed_sets' : files('evenly_distributed_sets.pyx'), +- 'gen_quadrangles_with_spread' : files('gen_quadrangles_with_spread.pyx'), +- 'orthogonal_arrays_find_recursive' : files( ++ 'designs_pyx': files('designs_pyx.pyx'), ++ 'evenly_distributed_sets': files('evenly_distributed_sets.pyx'), ++ 'gen_quadrangles_with_spread': files('gen_quadrangles_with_spread.pyx'), ++ 'orthogonal_arrays_find_recursive': files( + 'orthogonal_arrays_find_recursive.pyx', + ), +- 'subhypergraph_search' : files('subhypergraph_search.pyx'), ++ 'subhypergraph_search': files('subhypergraph_search.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/combinat/integer_lists/meson.build b/src/sage/combinat/integer_lists/meson.build +index cf3521f832c..3008fe329dc 100644 +--- a/src/sage/combinat/integer_lists/meson.build ++++ b/src/sage/combinat/integer_lists/meson.build +@@ -9,7 +9,7 @@ py.install_sources( + subdir: 'sage/combinat/integer_lists', + ) + +-extension_data = {'base' : files('base.pyx'), 'invlex' : files('invlex.pyx')} ++extension_data = {'base': files('base.pyx'), 'invlex': files('invlex.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/combinat/meson.build b/src/sage/combinat/meson.build +index 9ee037678c8..bcd9d93a801 100644 +--- a/src/sage/combinat/meson.build ++++ b/src/sage/combinat/meson.build +@@ -145,17 +145,17 @@ py.install_sources( + ) + + extension_data = { +- 'combinat_cython' : files('combinat_cython.pyx'), +- 'debruijn_sequence' : files('debruijn_sequence.pyx'), +- 'degree_sequences' : files('degree_sequences.pyx'), +- 'enumeration_mod_permgroup' : files('enumeration_mod_permgroup.pyx'), +- 'expnums' : files('expnums.pyx'), +- 'fast_vector_partitions' : files('fast_vector_partitions.pyx'), +- 'partitions' : files('partitions.pyx'), +- 'permutation_cython' : files('permutation_cython.pyx'), +- 'q_bernoulli' : files('q_bernoulli.pyx'), +- 'set_partition_iterator' : files('set_partition_iterator.pyx'), +- 'subword_complex_c' : files('subword_complex_c.pyx'), ++ 'combinat_cython': files('combinat_cython.pyx'), ++ 'debruijn_sequence': files('debruijn_sequence.pyx'), ++ 'degree_sequences': files('degree_sequences.pyx'), ++ 'enumeration_mod_permgroup': files('enumeration_mod_permgroup.pyx'), ++ 'expnums': files('expnums.pyx'), ++ 'fast_vector_partitions': files('fast_vector_partitions.pyx'), ++ 'partitions': files('partitions.pyx'), ++ 'permutation_cython': files('permutation_cython.pyx'), ++ 'q_bernoulli': files('q_bernoulli.pyx'), ++ 'set_partition_iterator': files('set_partition_iterator.pyx'), ++ 'subword_complex_c': files('subword_complex_c.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/combinat/posets/meson.build b/src/sage/combinat/posets/meson.build +index 32c323c9dd0..ef7555d8465 100644 +--- a/src/sage/combinat/posets/meson.build ++++ b/src/sage/combinat/posets/meson.build +@@ -22,9 +22,9 @@ py.install_sources( + ) + + extension_data = { +- 'hasse_cython' : files('hasse_cython.pyx'), +- 'hasse_cython_flint' : files('hasse_cython_flint.pyx'), +- 'linear_extension_iterator' : files('linear_extension_iterator.pyx'), ++ 'hasse_cython': files('hasse_cython.pyx'), ++ 'hasse_cython_flint': files('hasse_cython_flint.pyx'), ++ 'linear_extension_iterator': files('linear_extension_iterator.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/combinat/rigged_configurations/meson.build b/src/sage/combinat/rigged_configurations/meson.build +index 549150d8ea6..c4422d13c7b 100644 +--- a/src/sage/combinat/rigged_configurations/meson.build ++++ b/src/sage/combinat/rigged_configurations/meson.build +@@ -27,7 +27,7 @@ py.install_sources( + subdir: 'sage/combinat/rigged_configurations', + ) + +-extension_data = {'rigged_partition' : files('rigged_partition.pyx')} ++extension_data = {'rigged_partition': files('rigged_partition.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/combinat/root_system/meson.build b/src/sage/combinat/root_system/meson.build +index 66c596818b9..c79fedc2f4d 100644 +--- a/src/sage/combinat/root_system/meson.build ++++ b/src/sage/combinat/root_system/meson.build +@@ -62,9 +62,9 @@ py.install_sources( + ) + + extension_data = { +- 'braid_orbit' : files('braid_orbit.pyx'), +- 'reflection_group_c' : files('reflection_group_c.pyx'), +- 'reflection_group_element' : files('reflection_group_element.pyx'), ++ 'braid_orbit': files('braid_orbit.pyx'), ++ 'reflection_group_c': files('reflection_group_c.pyx'), ++ 'reflection_group_element': files('reflection_group_element.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/combinat/words/meson.build b/src/sage/combinat/words/meson.build +index 943528e2fa1..1fa9bf3baee 100644 +--- a/src/sage/combinat/words/meson.build ++++ b/src/sage/combinat/words/meson.build +@@ -23,8 +23,8 @@ py.install_sources( + ) + + extension_data = { +- 'word_char' : files('word_char.pyx'), +- 'word_datatypes' : files('word_datatypes.pyx'), ++ 'word_char': files('word_char.pyx'), ++ 'word_datatypes': files('word_datatypes.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/cpython/meson.build b/src/sage/cpython/meson.build +index 850d414b24f..e675ca84dad 100644 +--- a/src/sage/cpython/meson.build ++++ b/src/sage/cpython/meson.build +@@ -28,14 +28,14 @@ py.install_sources( + ) + + extension_data = { +- 'atexit' : files('atexit.pyx'), +- 'builtin_types' : files('builtin_types.pyx'), +- 'cython_metaclass' : files('cython_metaclass.pyx'), +- 'debug' : files('debug.pyx'), +- 'dict_del_by_value' : files('dict_del_by_value.pyx'), +- 'getattr' : files('getattr.pyx'), +- 'string' : files('string.pyx'), +- 'type' : files('type.pyx'), ++ 'atexit': files('atexit.pyx'), ++ 'builtin_types': files('builtin_types.pyx'), ++ 'cython_metaclass': files('cython_metaclass.pyx'), ++ 'debug': files('debug.pyx'), ++ 'dict_del_by_value': files('dict_del_by_value.pyx'), ++ 'getattr': files('getattr.pyx'), ++ 'string': files('string.pyx'), ++ 'type': files('type.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/crypto/meson.build b/src/sage/crypto/meson.build +index 62d6f49faa5..102a606c32b 100644 +--- a/src/sage/crypto/meson.build ++++ b/src/sage/crypto/meson.build +@@ -19,8 +19,8 @@ py.install_sources( + ) + + extension_data = { +- 'boolean_function' : files('boolean_function.pyx'), +- 'sbox' : files('sbox.pyx'), ++ 'boolean_function': files('boolean_function.pyx'), ++ 'sbox': files('sbox.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/data_structures/meson.build b/src/sage/data_structures/meson.build +index f0f33d885cb..0cc6d13bf83 100644 +--- a/src/sage/data_structures/meson.build ++++ b/src/sage/data_structures/meson.build +@@ -25,12 +25,12 @@ py.install_sources( + ) + + extension_data = { +- 'binary_search' : files('binary_search.pyx'), +- 'bitset' : files('bitset.pyx'), +- 'bitset_base' : files('bitset_base.pyx'), +- 'blas_dict' : files('blas_dict.pyx'), +- 'bounded_integer_sequences' : files('bounded_integer_sequences.pyx'), +- 'list_of_pairs' : files('list_of_pairs.pyx'), ++ 'binary_search': files('binary_search.pyx'), ++ 'bitset': files('bitset.pyx'), ++ 'bitset_base': files('bitset_base.pyx'), ++ 'blas_dict': files('blas_dict.pyx'), ++ 'bounded_integer_sequences': files('bounded_integer_sequences.pyx'), ++ 'list_of_pairs': files('list_of_pairs.pyx'), + } + + foreach name, pyx : extension_data +@@ -49,7 +49,7 @@ foreach name, pyx : extension_data + ) + endforeach + +-extension_data_cpp = {'pairing_heap' : files('pairing_heap.pyx')} ++extension_data_cpp = {'pairing_heap': files('pairing_heap.pyx')} + + foreach name, pyx : extension_data_cpp + py.extension_module( +diff --git a/src/sage/dynamics/arithmetic_dynamics/meson.build b/src/sage/dynamics/arithmetic_dynamics/meson.build +index 6f56eb5d8cd..ca46499c713 100644 +--- a/src/sage/dynamics/arithmetic_dynamics/meson.build ++++ b/src/sage/dynamics/arithmetic_dynamics/meson.build +@@ -14,7 +14,7 @@ py.install_sources( + subdir: 'sage/dynamics/arithmetic_dynamics', + ) + +-extension_data = {'projective_ds_helper' : files('projective_ds_helper.pyx')} ++extension_data = {'projective_ds_helper': files('projective_ds_helper.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/dynamics/complex_dynamics/meson.build b/src/sage/dynamics/complex_dynamics/meson.build +index f39e2237898..5319488776e 100644 +--- a/src/sage/dynamics/complex_dynamics/meson.build ++++ b/src/sage/dynamics/complex_dynamics/meson.build +@@ -6,7 +6,7 @@ py.install_sources( + subdir: 'sage/dynamics/complex_dynamics', + ) + +-extension_data = {'mandel_julia_helper' : files('mandel_julia_helper.pyx')} ++extension_data = {'mandel_julia_helper': files('mandel_julia_helper.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/env.py b/src/sage/env.py +index 57b7371dd6a..6c3df0d93a7 100644 +--- a/src/sage/env.py ++++ b/src/sage/env.py +@@ -324,17 +324,8 @@ def sage_include_directories(use_sources=False): + return dirs + + +-def get_cblas_pc_module_name() -> str: +- """ +- Return the name of the BLAS libraries to be used. +- """ +- import pkgconfig +- cblas_pc_modules = CBLAS_PC_MODULES.split(':') +- return next(blas_lib for blas_lib in cblas_pc_modules if pkgconfig.exists(blas_lib)) +- +- + default_required_modules = ('fflas-ffpack', 'givaro', 'gsl', 'linbox', 'Singular', +- 'libpng', 'gdlib', 'm4ri', 'zlib', 'cblas', 'ecl') ++ 'libpng', 'gdlib', 'm4ri', 'zlib', 'ecl') + + + default_optional_modules = ('lapack',) +@@ -359,7 +350,7 @@ def cython_aliases(required_modules=None, optional_modules=None): + sage: cython_aliases() + {...} + sage: sorted(cython_aliases().keys()) +- ['CBLAS_CFLAGS', ++ ['ECL_CFLAGS', + ..., + 'ZLIB_LIBRARIES'] + sage: cython_aliases(required_modules=('module-that-is-assumed-to-not-exist')) +@@ -406,8 +397,6 @@ def cython_aliases(required_modules=None, optional_modules=None): + for lib, required in itertools.chain(((lib, True) for lib in required_modules), + ((lib, False) for lib in optional_modules)): + var = lib.upper().replace("-", "") + "_" +- if lib == 'cblas': +- lib = get_cblas_pc_module_name() + if lib == 'zlib': + aliases[var + "CFLAGS"] = "" + try: +diff --git a/src/sage/ext/interpreters/meson.build b/src/sage/ext/interpreters/meson.build +index f965ce83da0..8445b7028c5 100644 +--- a/src/sage/ext/interpreters/meson.build ++++ b/src/sage/ext/interpreters/meson.build +@@ -41,12 +41,12 @@ interpreters = custom_target( + #endforeach + + extension_data = { +- 'wrapper_cc' : interpreters[7], +- 'wrapper_cdf' : interpreters[9], +- 'wrapper_el' : interpreters[11], +- 'wrapper_py' : interpreters[13], +- 'wrapper_rdf' : interpreters[15], +- 'wrapper_rr' : interpreters[17], ++ 'wrapper_cc': interpreters[7], ++ 'wrapper_cdf': interpreters[9], ++ 'wrapper_el': interpreters[11], ++ 'wrapper_py': interpreters[13], ++ 'wrapper_rdf': interpreters[15], ++ 'wrapper_rr': interpreters[17], + } + + interpreters_dep = declare_dependency( +diff --git a/src/sage/ext/meson.build b/src/sage/ext/meson.build +index 3c8ee5056d8..833684f832a 100644 +--- a/src/sage/ext/meson.build ++++ b/src/sage/ext/meson.build +@@ -14,9 +14,9 @@ py.install_sources( + ) + + extension_data = { +- 'fast_callable' : files('fast_callable.pyx'), +- 'fast_eval' : files('fast_eval.pyx'), +- 'memory' : files('memory.pyx'), ++ 'fast_callable': files('fast_callable.pyx'), ++ 'fast_eval': files('fast_eval.pyx'), ++ 'memory': files('memory.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/functions/meson.build b/src/sage/functions/meson.build +index c37ec96e9ff..2616fd37e50 100644 +--- a/src/sage/functions/meson.build ++++ b/src/sage/functions/meson.build +@@ -24,7 +24,7 @@ py.install_sources( + subdir: 'sage/functions', + ) + +-extension_data = {'prime_pi' : files('prime_pi.pyx')} ++extension_data = {'prime_pi': files('prime_pi.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/games/meson.build b/src/sage/games/meson.build +index 11e322b4f67..d2aada916b1 100644 +--- a/src/sage/games/meson.build ++++ b/src/sage/games/meson.build +@@ -8,7 +8,7 @@ py.install_sources( + subdir: 'sage/games', + ) + +-extension_data = {'sudoku_backtrack' : files('sudoku_backtrack.pyx')} ++extension_data = {'sudoku_backtrack': files('sudoku_backtrack.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/geometry/meson.build b/src/sage/geometry/meson.build +index 2acd9926344..25cef06e740 100644 +--- a/src/sage/geometry/meson.build ++++ b/src/sage/geometry/meson.build +@@ -30,12 +30,12 @@ py.install_sources( + ) + + extension_data = { +- 'abc' : files('abc.pyx'), +- 'integral_points_generic_dense' : files('integral_points_generic_dense.pyx'), +- 'integral_points_integer_dense' : files('integral_points_integer_dense.pyx'), +- 'palp_normal_form' : files('palp_normal_form.pyx'), +- 'point_collection' : files('point_collection.pyx'), +- 'toric_lattice_element' : files('toric_lattice_element.pyx'), ++ 'abc': files('abc.pyx'), ++ 'integral_points_generic_dense': files('integral_points_generic_dense.pyx'), ++ 'integral_points_integer_dense': files('integral_points_integer_dense.pyx'), ++ 'palp_normal_form': files('palp_normal_form.pyx'), ++ 'point_collection': files('point_collection.pyx'), ++ 'toric_lattice_element': files('toric_lattice_element.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/geometry/polyhedron/combinatorial_polyhedron/meson.build b/src/sage/geometry/polyhedron/combinatorial_polyhedron/meson.build +index a183940837c..9d023ed141d 100644 +--- a/src/sage/geometry/polyhedron/combinatorial_polyhedron/meson.build ++++ b/src/sage/geometry/polyhedron/combinatorial_polyhedron/meson.build +@@ -20,13 +20,13 @@ py.install_sources( + ) + + extension_data = { +- 'base' : files('base.pyx'), +- 'combinatorial_face' : files('combinatorial_face.pyx'), +- 'conversions' : files('conversions.pyx'), +- 'face_iterator' : files('face_iterator.pyx'), +- 'face_list_data_structure' : files('face_list_data_structure.pyx'), +- 'list_of_faces' : files('list_of_faces.pyx'), +- 'polyhedron_face_lattice' : files('polyhedron_face_lattice.pyx'), ++ 'base': files('base.pyx'), ++ 'combinatorial_face': files('combinatorial_face.pyx'), ++ 'conversions': files('conversions.pyx'), ++ 'face_iterator': files('face_iterator.pyx'), ++ 'face_list_data_structure': files('face_list_data_structure.pyx'), ++ 'list_of_faces': files('list_of_faces.pyx'), ++ 'polyhedron_face_lattice': files('polyhedron_face_lattice.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/graphs/base/meson.build b/src/sage/graphs/base/meson.build +index 903db152bfe..25922eb6154 100644 +--- a/src/sage/graphs/base/meson.build ++++ b/src/sage/graphs/base/meson.build +@@ -22,11 +22,11 @@ py.install_sources( + ) + + extension_data = { +- 'dense_graph' : files('dense_graph.pyx'), +- 'graph_backends' : files('graph_backends.pyx'), +- 'sparse_graph' : files('sparse_graph.pyx'), +- 'static_dense_graph' : files('static_dense_graph.pyx'), +- 'static_sparse_backend' : files('static_sparse_backend.pyx'), ++ 'dense_graph': files('dense_graph.pyx'), ++ 'graph_backends': files('graph_backends.pyx'), ++ 'sparse_graph': files('sparse_graph.pyx'), ++ 'static_dense_graph': files('static_dense_graph.pyx'), ++ 'static_sparse_backend': files('static_sparse_backend.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/graphs/generators/meson.build b/src/sage/graphs/generators/meson.build +index eda4837c26c..6cbee41a2ef 100644 +--- a/src/sage/graphs/generators/meson.build ++++ b/src/sage/graphs/generators/meson.build +@@ -20,8 +20,8 @@ py.install_sources( + ) + + extension_data = { +- 'distance_regular' : files('distance_regular.pyx'), +- 'trees' : files('trees.pyx'), ++ 'distance_regular': files('distance_regular.pyx'), ++ 'trees': files('trees.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/graphs/graph_decompositions/meson.build b/src/sage/graphs/graph_decompositions/meson.build +index e30b80fac1e..06763ab1771 100644 +--- a/src/sage/graphs/graph_decompositions/meson.build ++++ b/src/sage/graphs/graph_decompositions/meson.build +@@ -31,13 +31,13 @@ py.install_sources( + ) + + extension_data = { +- 'bandwidth' : files('bandwidth.pyx'), +- 'cutwidth' : files('cutwidth.pyx'), +- 'fast_digraph' : files('fast_digraph.pyx'), +- 'graph_products' : files('graph_products.pyx'), +- 'rankwidth' : files('rankwidth.pyx'), +- 'tree_decomposition' : files('tree_decomposition.pyx'), +- 'vertex_separation' : files('vertex_separation.pyx'), ++ 'bandwidth': files('bandwidth.pyx'), ++ 'cutwidth': files('cutwidth.pyx'), ++ 'fast_digraph': files('fast_digraph.pyx'), ++ 'graph_products': files('graph_products.pyx'), ++ 'rankwidth': files('rankwidth.pyx'), ++ 'tree_decomposition': files('tree_decomposition.pyx'), ++ 'vertex_separation': files('vertex_separation.pyx'), + } + + foreach name, pyx : extension_data +@@ -57,8 +57,8 @@ endforeach + + extension_data_cpp = { + 'clique_separators': files('clique_separators.pyx'), +- 'slice_decomposition' : files('slice_decomposition.pyx'), +- 'modular_decomposition' : files('modular_decomposition.pyx'), ++ 'slice_decomposition': files('slice_decomposition.pyx'), ++ 'modular_decomposition': files('modular_decomposition.pyx'), + } + + foreach name, pyx : extension_data_cpp +diff --git a/src/sage/graphs/meson.build b/src/sage/graphs/meson.build +index d55d4013b03..fce249794c7 100644 +--- a/src/sage/graphs/meson.build ++++ b/src/sage/graphs/meson.build +@@ -94,27 +94,27 @@ py.install_sources( + + + extension_data = { +- 'asteroidal_triples' : files('asteroidal_triples.pyx'), +- 'centrality' : files('centrality.pyx'), +- 'chrompoly' : files('chrompoly.pyx'), +- 'cliquer' : files('cliquer.pyx'), +- 'comparability' : files('comparability.pyx'), +- 'connectivity' : files('connectivity.pyx'), +- 'convexity_properties' : files('convexity_properties.pyx'), +- 'distances_all_pairs' : files('distances_all_pairs.pyx'), +- 'generic_graph_pyx' : files('generic_graph_pyx.pyx'), +- 'genus' : files('genus.pyx'), +- 'graph_generators_pyx' : files('graph_generators_pyx.pyx'), +- 'hyperbolicity' : files('hyperbolicity.pyx'), +- 'independent_sets' : files('independent_sets.pyx'), +- 'isoperimetric_inequalities' : files('isoperimetric_inequalities.pyx'), +- 'line_graph' : files('line_graph.pyx'), +- 'matchpoly' : files('matchpoly.pyx'), +- 'planarity' : files('planarity.pyx'), +- 'spanning_tree' : files('spanning_tree.pyx'), +- 'strongly_regular_db' : files('strongly_regular_db.pyx'), +- 'views' : files('views.pyx'), +- 'weakly_chordal' : files('weakly_chordal.pyx'), ++ 'asteroidal_triples': files('asteroidal_triples.pyx'), ++ 'centrality': files('centrality.pyx'), ++ 'chrompoly': files('chrompoly.pyx'), ++ 'cliquer': files('cliquer.pyx'), ++ 'comparability': files('comparability.pyx'), ++ 'connectivity': files('connectivity.pyx'), ++ 'convexity_properties': files('convexity_properties.pyx'), ++ 'distances_all_pairs': files('distances_all_pairs.pyx'), ++ 'generic_graph_pyx': files('generic_graph_pyx.pyx'), ++ 'genus': files('genus.pyx'), ++ 'graph_generators_pyx': files('graph_generators_pyx.pyx'), ++ 'hyperbolicity': files('hyperbolicity.pyx'), ++ 'independent_sets': files('independent_sets.pyx'), ++ 'isoperimetric_inequalities': files('isoperimetric_inequalities.pyx'), ++ 'line_graph': files('line_graph.pyx'), ++ 'matchpoly': files('matchpoly.pyx'), ++ 'planarity': files('planarity.pyx'), ++ 'spanning_tree': files('spanning_tree.pyx'), ++ 'strongly_regular_db': files('strongly_regular_db.pyx'), ++ 'views': files('views.pyx'), ++ 'weakly_chordal': files('weakly_chordal.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/groups/matrix_gps/meson.build b/src/sage/groups/matrix_gps/meson.build +index 00ab019a0b1..0faf67b8329 100644 +--- a/src/sage/groups/matrix_gps/meson.build ++++ b/src/sage/groups/matrix_gps/meson.build +@@ -29,8 +29,8 @@ py.install_sources( + ) + + extension_data = { +- 'group_element' : files('group_element.pyx'), +- 'group_element_gap' : files('group_element_gap.pyx'), ++ 'group_element': files('group_element.pyx'), ++ 'group_element_gap': files('group_element_gap.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/groups/meson.build b/src/sage/groups/meson.build +index 256c3a76b92..86c294ea3ce 100644 +--- a/src/sage/groups/meson.build ++++ b/src/sage/groups/meson.build +@@ -33,8 +33,8 @@ py.install_sources( + ) + + extension_data = { +- 'group' : files('group.pyx'), +- 'libgap_wrapper' : files('libgap_wrapper.pyx'), ++ 'group': files('group.pyx'), ++ 'libgap_wrapper': files('libgap_wrapper.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/groups/perm_gps/meson.build b/src/sage/groups/perm_gps/meson.build +index 0ea630f847d..1c3461bea81 100644 +--- a/src/sage/groups/perm_gps/meson.build ++++ b/src/sage/groups/perm_gps/meson.build +@@ -13,7 +13,7 @@ py.install_sources( + subdir: 'sage/groups/perm_gps', + ) + +-extension_data = {'permgroup_element' : files('permgroup_element.pyx')} ++extension_data = {'permgroup_element': files('permgroup_element.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/groups/perm_gps/partn_ref/meson.build b/src/sage/groups/perm_gps/partn_ref/meson.build +index 3e5687721ec..c047b23bd03 100644 +--- a/src/sage/groups/perm_gps/partn_ref/meson.build ++++ b/src/sage/groups/perm_gps/partn_ref/meson.build +@@ -25,18 +25,18 @@ py.install_sources( + ) + + extension_data = { +- 'automorphism_group_canonical_label' : files( ++ 'automorphism_group_canonical_label': files( + 'automorphism_group_canonical_label.pyx', + ), +- 'canonical_augmentation' : files('canonical_augmentation.pyx'), +- 'data_structures' : files('data_structures.pyx'), +- 'double_coset' : files('double_coset.pyx'), +- 'refinement_binary' : files('refinement_binary.pyx'), +- 'refinement_graphs' : files('refinement_graphs.pyx'), +- 'refinement_lists' : files('refinement_lists.pyx'), +- 'refinement_matrices' : files('refinement_matrices.pyx'), +- 'refinement_python' : files('refinement_python.pyx'), +- 'refinement_sets' : files('refinement_sets.pyx'), ++ 'canonical_augmentation': files('canonical_augmentation.pyx'), ++ 'data_structures': files('data_structures.pyx'), ++ 'double_coset': files('double_coset.pyx'), ++ 'refinement_binary': files('refinement_binary.pyx'), ++ 'refinement_graphs': files('refinement_graphs.pyx'), ++ 'refinement_lists': files('refinement_lists.pyx'), ++ 'refinement_matrices': files('refinement_matrices.pyx'), ++ 'refinement_python': files('refinement_python.pyx'), ++ 'refinement_sets': files('refinement_sets.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/groups/perm_gps/partn_ref2/meson.build b/src/sage/groups/perm_gps/partn_ref2/meson.build +index 55e2ad83c52..7d0da166ddc 100644 +--- a/src/sage/groups/perm_gps/partn_ref2/meson.build ++++ b/src/sage/groups/perm_gps/partn_ref2/meson.build +@@ -6,7 +6,7 @@ py.install_sources( + subdir: 'sage/groups/perm_gps/partn_ref2', + ) + +-extension_data = {'refinement_generic' : files('refinement_generic.pyx')} ++extension_data = {'refinement_generic': files('refinement_generic.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/groups/semimonomial_transformations/meson.build b/src/sage/groups/semimonomial_transformations/meson.build +index e9b3232b24a..d210dca2aff 100644 +--- a/src/sage/groups/semimonomial_transformations/meson.build ++++ b/src/sage/groups/semimonomial_transformations/meson.build +@@ -8,7 +8,7 @@ py.install_sources( + ) + + extension_data = { +- 'semimonomial_transformation' : files('semimonomial_transformation.pyx'), ++ 'semimonomial_transformation': files('semimonomial_transformation.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/interacts/meson.build b/src/sage/interacts/meson.build +index b3e2bbdddeb..ad9212363db 100644 +--- a/src/sage/interacts/meson.build ++++ b/src/sage/interacts/meson.build +@@ -11,7 +11,7 @@ py.install_sources( + subdir: 'sage/interacts', + ) + +-extension_data = {'library_cython' : files('library_cython.pyx')} ++extension_data = {'library_cython': files('library_cython.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/interfaces/meson.build b/src/sage/interfaces/meson.build +index 18d13e7771b..6245e54154b 100644 +--- a/src/sage/interfaces/meson.build ++++ b/src/sage/interfaces/meson.build +@@ -65,8 +65,8 @@ py.install_sources( + ) + + extension_data = { +- 'process' : files('process.pyx'), +- 'sagespawn' : files('sagespawn.pyx'), ++ 'process': files('process.pyx'), ++ 'sagespawn': files('sagespawn.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/lfunctions/meson.build b/src/sage/lfunctions/meson.build +index 09a51db11bb..8537e233edc 100644 +--- a/src/sage/lfunctions/meson.build ++++ b/src/sage/lfunctions/meson.build +@@ -9,7 +9,7 @@ py.install_sources( + subdir: 'sage/lfunctions', + ) + +-extension_data = {'zero_sums' : files('zero_sums.pyx')} ++extension_data = {'zero_sums': files('zero_sums.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/libs/arb/meson.build b/src/sage/libs/arb/meson.build +index a3ee01097af..e58eddb2f6f 100644 +--- a/src/sage/libs/arb/meson.build ++++ b/src/sage/libs/arb/meson.build +@@ -19,7 +19,7 @@ py.install_sources( + subdir: 'sage/libs/arb', + ) + +-extension_data = {'arith' : files('arith.pyx')} ++extension_data = {'arith': files('arith.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/libs/flint/meson.build b/src/sage/libs/flint/meson.build +index 2350dbaf013..eeefdc536ea 100644 +--- a/src/sage/libs/flint/meson.build ++++ b/src/sage/libs/flint/meson.build +@@ -162,17 +162,17 @@ py.install_sources( + ) + + extension_data = { +- 'arith' : files('arith.pyx'), +- 'arith_sage' : files('arith_sage.pyx'), +- 'flint_sage' : files('flint_sage.pyx'), +- 'fmpq_poly_sage' : files('fmpq_poly_sage.pyx'), +- 'fmpz_factor_sage' : files('fmpz_factor_sage.pyx'), +- 'fmpz_poly' : files('fmpz_poly.pyx'), +- 'fmpz_poly_sage' : files('fmpz_poly_sage.pyx'), +- 'qsieve' : files('qsieve.pyx'), +- 'qsieve_sage' : files('qsieve_sage.pyx'), +- 'ulong_extras' : files('ulong_extras.pyx'), +- 'ulong_extras_sage' : files('ulong_extras_sage.pyx'), ++ 'arith': files('arith.pyx'), ++ 'arith_sage': files('arith_sage.pyx'), ++ 'flint_sage': files('flint_sage.pyx'), ++ 'fmpq_poly_sage': files('fmpq_poly_sage.pyx'), ++ 'fmpz_factor_sage': files('fmpz_factor_sage.pyx'), ++ 'fmpz_poly': files('fmpz_poly.pyx'), ++ 'fmpz_poly_sage': files('fmpz_poly_sage.pyx'), ++ 'qsieve': files('qsieve.pyx'), ++ 'qsieve_sage': files('qsieve_sage.pyx'), ++ 'ulong_extras': files('ulong_extras.pyx'), ++ 'ulong_extras_sage': files('ulong_extras_sage.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/libs/gap/meson.build b/src/sage/libs/gap/meson.build +index ed0bad3bcce..af77ea307b0 100644 +--- a/src/sage/libs/gap/meson.build ++++ b/src/sage/libs/gap/meson.build +@@ -23,9 +23,9 @@ py.install_sources( + fs.copyfile('sage.gaprc') + + extension_data = { +- 'element' : files('element.pyx'), +- 'libgap' : files('libgap.pyx'), +- 'util' : files('util.pyx'), ++ 'element': files('element.pyx'), ++ 'libgap': files('libgap.pyx'), ++ 'util': files('util.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/libs/gmp/meson.build b/src/sage/libs/gmp/meson.build +index 42a1e652267..26bf24d5084 100644 +--- a/src/sage/libs/gmp/meson.build ++++ b/src/sage/libs/gmp/meson.build +@@ -15,7 +15,7 @@ py.install_sources( + subdir: 'sage/libs/gmp', + ) + +-extension_data = {'pylong' : files('pylong.pyx')} ++extension_data = {'pylong': files('pylong.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/libs/gsl/meson.build b/src/sage/libs/gsl/meson.build +index b96776f35a8..a70c61d1297 100644 +--- a/src/sage/libs/gsl/meson.build ++++ b/src/sage/libs/gsl/meson.build +@@ -68,7 +68,7 @@ py.install_sources( + subdir: 'sage/libs/gsl', + ) + +-extension_data = {'array' : files('array.pyx')} ++extension_data = {'array': files('array.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/libs/mpmath/meson.build b/src/sage/libs/mpmath/meson.build +index a49cfaa64df..cc8cdc84e98 100644 +--- a/src/sage/libs/mpmath/meson.build ++++ b/src/sage/libs/mpmath/meson.build +@@ -12,10 +12,10 @@ py.install_sources( + ) + + extension_data = { +- 'ext_impl' : files('ext_impl.pyx'), +- 'ext_libmp' : files('ext_libmp.pyx'), +- 'ext_main' : files('ext_main.pyx'), +- 'utils' : files('utils.pyx'), ++ 'ext_impl': files('ext_impl.pyx'), ++ 'ext_libmp': files('ext_libmp.pyx'), ++ 'ext_main': files('ext_main.pyx'), ++ 'utils': files('utils.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/libs/pari/meson.build b/src/sage/libs/pari/meson.build +index 9df9ad0861e..817aca83c0c 100644 +--- a/src/sage/libs/pari/meson.build ++++ b/src/sage/libs/pari/meson.build +@@ -21,14 +21,14 @@ py.install_sources( + ) + + extension_data = { +- 'convert_flint' : files('convert_flint.pyx'), +- 'convert_gmp' : files('convert_gmp.pyx'), +- 'convert_sage' : files('convert_sage.pyx'), +- 'convert_sage_complex_double' : files('convert_sage_complex_double.pyx'), +- 'convert_sage_matrix' : files('convert_sage_matrix.pyx'), +- 'convert_sage_real_double' : files('convert_sage_real_double.pyx'), +- 'convert_sage_real_mpfr' : files('convert_sage_real_mpfr.pyx'), +- 'misc' : files('misc.pyx'), ++ 'convert_flint': files('convert_flint.pyx'), ++ 'convert_gmp': files('convert_gmp.pyx'), ++ 'convert_sage': files('convert_sage.pyx'), ++ 'convert_sage_complex_double': files('convert_sage_complex_double.pyx'), ++ 'convert_sage_matrix': files('convert_sage_matrix.pyx'), ++ 'convert_sage_real_double': files('convert_sage_real_double.pyx'), ++ 'convert_sage_real_mpfr': files('convert_sage_real_mpfr.pyx'), ++ 'misc': files('misc.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/libs/symmetrica/meson.build b/src/sage/libs/symmetrica/meson.build +index 2cc224eb082..6d14c74c397 100644 +--- a/src/sage/libs/symmetrica/meson.build ++++ b/src/sage/libs/symmetrica/meson.build +@@ -15,7 +15,7 @@ py.install_sources( + subdir: 'sage/libs/symmetrica', + ) + +-extension_data = {'symmetrica' : files('symmetrica.pyx')} ++extension_data = {'symmetrica': files('symmetrica.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/matrix/meson.build b/src/sage/matrix/meson.build +index 3e703312d11..c15ff3f0dd6 100644 +--- a/src/sage/matrix/meson.build ++++ b/src/sage/matrix/meson.build +@@ -101,40 +101,40 @@ py.install_sources( + ) + + extension_data = { +- 'action' : files('action.pyx'), +- 'args' : files('args.pyx'), +- 'change_ring' : files('change_ring.pyx'), +- 'constructor' : files('constructor.pyx'), +- 'echelon_matrix' : files('echelon_matrix.pyx'), +- 'matrix0' : files('matrix0.pyx'), +- 'matrix1' : files('matrix1.pyx'), +- 'matrix2' : files('matrix2.pyx'), +- 'matrix_cdv' : files('matrix_cdv.pyx'), +- 'matrix_complex_ball_dense' : files('matrix_complex_ball_dense.pyx'), +- 'matrix_complex_double_dense' : files('matrix_complex_double_dense.pyx'), +- 'matrix_dense' : files('matrix_dense.pyx'), +- 'matrix_double_dense' : files('matrix_double_dense.pyx'), +- 'matrix_double_sparse' : files('matrix_double_sparse.pyx'), +- 'matrix_gap' : files('matrix_gap.pyx'), +- 'matrix_generic_dense' : files('matrix_generic_dense.pyx'), +- 'matrix_generic_sparse' : files('matrix_generic_sparse.pyx'), +- 'matrix_gfpn_dense' : files('matrix_gfpn_dense.pyx'), ++ 'action': files('action.pyx'), ++ 'args': files('args.pyx'), ++ 'change_ring': files('change_ring.pyx'), ++ 'constructor': files('constructor.pyx'), ++ 'echelon_matrix': files('echelon_matrix.pyx'), ++ 'matrix0': files('matrix0.pyx'), ++ 'matrix1': files('matrix1.pyx'), ++ 'matrix2': files('matrix2.pyx'), ++ 'matrix_cdv': files('matrix_cdv.pyx'), ++ 'matrix_complex_ball_dense': files('matrix_complex_ball_dense.pyx'), ++ 'matrix_complex_double_dense': files('matrix_complex_double_dense.pyx'), ++ 'matrix_dense': files('matrix_dense.pyx'), ++ 'matrix_double_dense': files('matrix_double_dense.pyx'), ++ 'matrix_double_sparse': files('matrix_double_sparse.pyx'), ++ 'matrix_gap': files('matrix_gap.pyx'), ++ 'matrix_generic_dense': files('matrix_generic_dense.pyx'), ++ 'matrix_generic_sparse': files('matrix_generic_sparse.pyx'), ++ 'matrix_gfpn_dense': files('matrix_gfpn_dense.pyx'), + 'matrix_gf2e_dense': files('matrix_gf2e_dense.pyx'), +- 'matrix_laurent_mpolynomial_dense' : files( ++ 'matrix_laurent_mpolynomial_dense': files( + 'matrix_laurent_mpolynomial_dense.pyx', + ), +- 'matrix_numpy_dense' : files('matrix_numpy_dense.pyx'), +- 'matrix_numpy_integer_dense' : files('matrix_numpy_integer_dense.pyx'), +- 'matrix_polynomial_dense' : files('matrix_polynomial_dense.pyx'), +- 'matrix_real_double_dense' : files('matrix_real_double_dense.pyx'), +- 'matrix_sparse' : files('matrix_sparse.pyx'), +- 'matrix_symbolic_dense' : files('matrix_symbolic_dense.pyx'), +- 'matrix_symbolic_sparse' : files('matrix_symbolic_sparse.pyx'), +- 'matrix_window' : files('matrix_window.pyx'), +- 'misc' : files('misc.pyx'), +- 'misc_flint' : files('misc_flint.pyx'), +- 'misc_mpfr' : files('misc_mpfr.pyx'), +- 'strassen' : files('strassen.pyx'), ++ 'matrix_numpy_dense': files('matrix_numpy_dense.pyx'), ++ 'matrix_numpy_integer_dense': files('matrix_numpy_integer_dense.pyx'), ++ 'matrix_polynomial_dense': files('matrix_polynomial_dense.pyx'), ++ 'matrix_real_double_dense': files('matrix_real_double_dense.pyx'), ++ 'matrix_sparse': files('matrix_sparse.pyx'), ++ 'matrix_symbolic_dense': files('matrix_symbolic_dense.pyx'), ++ 'matrix_symbolic_sparse': files('matrix_symbolic_sparse.pyx'), ++ 'matrix_window': files('matrix_window.pyx'), ++ 'misc': files('misc.pyx'), ++ 'misc_flint': files('misc_flint.pyx'), ++ 'misc_mpfr': files('misc_mpfr.pyx'), ++ 'strassen': files('strassen.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/matroids/meson.build b/src/sage/matroids/meson.build +index 98187387863..a69fcbef5fb 100644 +--- a/src/sage/matroids/meson.build ++++ b/src/sage/matroids/meson.build +@@ -47,20 +47,20 @@ py.install_sources( + ) + + extension_data = { +- 'basis_exchange_matroid' : files('basis_exchange_matroid.pyx'), +- 'basis_matroid' : files('basis_matroid.pyx'), +- 'circuit_closures_matroid' : files('circuit_closures_matroid.pyx'), +- 'circuits_matroid' : files('circuits_matroid.pyx'), +- 'extension' : files('extension.pyx'), +- 'lean_matrix' : files('lean_matrix.pyx'), +- 'linear_matroid' : files('linear_matroid.pyx'), +- 'matroid' : files('matroid.pyx'), +- 'set_system' : files('set_system.pyx'), +- 'transversal_matroid' : files('transversal_matroid.pyx'), +- 'union_matroid' : files('union_matroid.pyx'), +- 'unpickling' : files('unpickling.pyx'), +- 'flats_matroid' : files('flats_matroid.pyx'), +- 'graphic_matroid' : files('graphic_matroid.pyx'), ++ 'basis_exchange_matroid': files('basis_exchange_matroid.pyx'), ++ 'basis_matroid': files('basis_matroid.pyx'), ++ 'circuit_closures_matroid': files('circuit_closures_matroid.pyx'), ++ 'circuits_matroid': files('circuits_matroid.pyx'), ++ 'extension': files('extension.pyx'), ++ 'lean_matrix': files('lean_matrix.pyx'), ++ 'linear_matroid': files('linear_matroid.pyx'), ++ 'matroid': files('matroid.pyx'), ++ 'set_system': files('set_system.pyx'), ++ 'transversal_matroid': files('transversal_matroid.pyx'), ++ 'union_matroid': files('union_matroid.pyx'), ++ 'unpickling': files('unpickling.pyx'), ++ 'flats_matroid': files('flats_matroid.pyx'), ++ 'graphic_matroid': files('graphic_matroid.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/misc/cython.py b/src/sage/misc/cython.py +index 5c2b53217a2..82ab564d4e1 100644 +--- a/src/sage/misc/cython.py ++++ b/src/sage/misc/cython.py +@@ -50,16 +50,12 @@ def _standard_libs_libdirs_incdirs_aliases(): + {...}) + """ + aliases = cython_aliases() +- standard_libs = [ +- 'mpfr', 'gmp', 'gmpxx', 'pari', 'm', +- 'ec', 'gsl', +- ] + aliases["CBLAS_LIBRARIES"] + [ +- 'ntl'] ++ standard_libs = ["mpfr", "gmp", "gmpxx", "pari", "m", "ec", "gsl", "ntl"] + standard_libdirs = [] + if SAGE_LOCAL: + standard_libdirs.append(os.path.join(SAGE_LOCAL, "lib")) +- standard_libdirs.extend(aliases["CBLAS_LIBDIR"] + aliases["NTL_LIBDIR"]) +- standard_incdirs = [dir.as_posix() for dir in get_include_dirs()] + aliases["CBLAS_INCDIR"] + aliases["NTL_INCDIR"] ++ standard_libdirs.extend(aliases["NTL_LIBDIR"]) ++ standard_incdirs = [dir.as_posix() for dir in get_include_dirs()] + aliases["NTL_INCDIR"] + return standard_libs, standard_libdirs, standard_incdirs, aliases + + ################################################################ +diff --git a/src/sage/misc/meson.build b/src/sage/misc/meson.build +index f44095ff136..e56df568eb2 100644 +--- a/src/sage/misc/meson.build ++++ b/src/sage/misc/meson.build +@@ -119,38 +119,38 @@ py.install_sources( + ) + + extension_data = { +- 'allocator' : files('allocator.pyx'), +- 'binary_tree' : files('binary_tree.pyx'), +- 'c3' : files('c3.pyx'), +- 'c3_controlled' : files('c3_controlled.pyx'), +- 'cachefunc' : files('cachefunc.pyx'), +- 'callable_dict' : files('callable_dict.pyx'), +- 'citation' : files('citation.pyx'), +- 'classcall_metaclass' : files('classcall_metaclass.pyx'), +- 'constant_function' : files('constant_function.pyx'), +- 'derivative' : files('derivative.pyx'), +- 'fast_methods' : files('fast_methods.pyx'), +- 'fpickle' : files('fpickle.pyx'), +- 'function_mangling' : files('function_mangling.pyx'), +- 'inherit_comparison' : files('inherit_comparison.pyx'), +- 'instancedoc' : files('instancedoc.pyx'), +- 'lazy_attribute' : files('lazy_attribute.pyx'), +- 'lazy_import' : files('lazy_import.pyx'), +- 'lazy_list' : files('lazy_list.pyx'), +- 'lazy_string' : files('lazy_string.pyx'), +- 'misc_c' : files('misc_c.pyx'), +- 'nested_class' : files('nested_class.pyx'), +- 'parser' : files('parser.pyx'), +- 'persist' : files('persist.pyx'), +- 'pickle_old' : files('pickle_old.pyx'), +- 'randstate' : files('randstate.pyx'), +- 'reset' : files('reset.pyx'), +- 'sage_ostools' : files('sage_ostools.pyx'), +- 'sage_timeit_class' : files('sage_timeit_class.pyx'), +- 'search' : files('search.pyx'), +- 'session' : files('session.pyx'), +- 'stopgap' : files('stopgap.pyx'), +- 'weak_dict' : files('weak_dict.pyx'), ++ 'allocator': files('allocator.pyx'), ++ 'binary_tree': files('binary_tree.pyx'), ++ 'c3': files('c3.pyx'), ++ 'c3_controlled': files('c3_controlled.pyx'), ++ 'cachefunc': files('cachefunc.pyx'), ++ 'callable_dict': files('callable_dict.pyx'), ++ 'citation': files('citation.pyx'), ++ 'classcall_metaclass': files('classcall_metaclass.pyx'), ++ 'constant_function': files('constant_function.pyx'), ++ 'derivative': files('derivative.pyx'), ++ 'fast_methods': files('fast_methods.pyx'), ++ 'fpickle': files('fpickle.pyx'), ++ 'function_mangling': files('function_mangling.pyx'), ++ 'inherit_comparison': files('inherit_comparison.pyx'), ++ 'instancedoc': files('instancedoc.pyx'), ++ 'lazy_attribute': files('lazy_attribute.pyx'), ++ 'lazy_import': files('lazy_import.pyx'), ++ 'lazy_list': files('lazy_list.pyx'), ++ 'lazy_string': files('lazy_string.pyx'), ++ 'misc_c': files('misc_c.pyx'), ++ 'nested_class': files('nested_class.pyx'), ++ 'parser': files('parser.pyx'), ++ 'persist': files('persist.pyx'), ++ 'pickle_old': files('pickle_old.pyx'), ++ 'randstate': files('randstate.pyx'), ++ 'reset': files('reset.pyx'), ++ 'sage_ostools': files('sage_ostools.pyx'), ++ 'sage_timeit_class': files('sage_timeit_class.pyx'), ++ 'search': files('search.pyx'), ++ 'session': files('session.pyx'), ++ 'stopgap': files('stopgap.pyx'), ++ 'weak_dict': files('weak_dict.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/modular/arithgroup/meson.build b/src/sage/modular/arithgroup/meson.build +index 14de8056ac4..f099b12eb07 100644 +--- a/src/sage/modular/arithgroup/meson.build ++++ b/src/sage/modular/arithgroup/meson.build +@@ -17,8 +17,8 @@ py.install_sources( + ) + + extension_data = { +- 'arithgroup_element' : files('arithgroup_element.pyx'), +- 'congroup' : files('congroup.pyx'), ++ 'arithgroup_element': files('arithgroup_element.pyx'), ++ 'congroup': files('congroup.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/modular/meson.build b/src/sage/modular/meson.build +index ce0b69b112e..4d66ac75fc1 100644 +--- a/src/sage/modular/meson.build ++++ b/src/sage/modular/meson.build +@@ -17,7 +17,7 @@ py.install_sources( + subdir: 'sage/modular', + ) + +-extension_data = {'hypergeometric_misc' : files('hypergeometric_misc.pyx')} ++extension_data = {'hypergeometric_misc': files('hypergeometric_misc.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/modular/modform/meson.build b/src/sage/modular/modform/meson.build +index 11ec687d275..0ed9fee9966 100644 +--- a/src/sage/modular/modform/meson.build ++++ b/src/sage/modular/modform/meson.build +@@ -32,8 +32,8 @@ py.install_sources( + ) + + extension_data = { +- 'eis_series_cython' : files('eis_series_cython.pyx'), +- 'l_series_gross_zagier_coeffs' : files('l_series_gross_zagier_coeffs.pyx'), ++ 'eis_series_cython': files('eis_series_cython.pyx'), ++ 'l_series_gross_zagier_coeffs': files('l_series_gross_zagier_coeffs.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/modular/modsym/meson.build b/src/sage/modular/modsym/meson.build +index 63e8ced7d53..6b284a0766a 100644 +--- a/src/sage/modular/modsym/meson.build ++++ b/src/sage/modular/modsym/meson.build +@@ -27,11 +27,11 @@ py.install_sources( + ) + + extension_data = { +- 'apply' : files('apply.pyx'), +- 'heilbronn' : files('heilbronn.pyx'), +- 'manin_symbol' : files('manin_symbol.pyx'), +- 'p1list' : files('p1list.pyx'), +- 'relation_matrix_pyx' : files('relation_matrix_pyx.pyx'), ++ 'apply': files('apply.pyx'), ++ 'heilbronn': files('heilbronn.pyx'), ++ 'manin_symbol': files('manin_symbol.pyx'), ++ 'p1list': files('p1list.pyx'), ++ 'relation_matrix_pyx': files('relation_matrix_pyx.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/modular/pollack_stevens/meson.build b/src/sage/modular/pollack_stevens/meson.build +index 8724ee0df43..f34fc978707 100644 +--- a/src/sage/modular/pollack_stevens/meson.build ++++ b/src/sage/modular/pollack_stevens/meson.build +@@ -13,7 +13,7 @@ py.install_sources( + subdir: 'sage/modular/pollack_stevens', + ) + +-extension_data = {'dist' : files('dist.pyx')} ++extension_data = {'dist': files('dist.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/modules/meson.build b/src/sage/modules/meson.build +index 6d73f06888c..e74fa44c904 100644 +--- a/src/sage/modules/meson.build ++++ b/src/sage/modules/meson.build +@@ -68,20 +68,20 @@ py.install_sources( + ) + + extension_data = { +- 'finite_submodule_iter' : files('finite_submodule_iter.pyx'), +- 'free_module_element' : files('free_module_element.pyx'), +- 'module' : files('module.pyx'), +- 'vector_complex_double_dense' : files('vector_complex_double_dense.pyx'), +- 'vector_double_dense' : files('vector_double_dense.pyx'), +- 'vector_integer_dense' : files('vector_integer_dense.pyx'), +- 'vector_integer_sparse' : files('vector_integer_sparse.pyx'), +- 'vector_modn_dense' : files('vector_modn_dense.pyx'), +- 'vector_modn_sparse' : files('vector_modn_sparse.pyx'), +- 'vector_numpy_dense' : files('vector_numpy_dense.pyx'), +- 'vector_numpy_integer_dense' : files('vector_numpy_integer_dense.pyx'), +- 'vector_rational_dense' : files('vector_rational_dense.pyx'), +- 'vector_rational_sparse' : files('vector_rational_sparse.pyx'), +- 'vector_real_double_dense' : files('vector_real_double_dense.pyx'), ++ 'finite_submodule_iter': files('finite_submodule_iter.pyx'), ++ 'free_module_element': files('free_module_element.pyx'), ++ 'module': files('module.pyx'), ++ 'vector_complex_double_dense': files('vector_complex_double_dense.pyx'), ++ 'vector_double_dense': files('vector_double_dense.pyx'), ++ 'vector_integer_dense': files('vector_integer_dense.pyx'), ++ 'vector_integer_sparse': files('vector_integer_sparse.pyx'), ++ 'vector_modn_dense': files('vector_modn_dense.pyx'), ++ 'vector_modn_sparse': files('vector_modn_sparse.pyx'), ++ 'vector_numpy_dense': files('vector_numpy_dense.pyx'), ++ 'vector_numpy_integer_dense': files('vector_numpy_integer_dense.pyx'), ++ 'vector_rational_dense': files('vector_rational_dense.pyx'), ++ 'vector_rational_sparse': files('vector_rational_sparse.pyx'), ++ 'vector_real_double_dense': files('vector_real_double_dense.pyx'), + } + + foreach name, pyx : extension_data +@@ -96,7 +96,7 @@ foreach name, pyx : extension_data + endforeach + + extension_data_cpp = { +- 'numpy_util' : files('numpy_util.pyx'), ++ 'numpy_util': files('numpy_util.pyx'), + 'vector_mod2_dense': files('vector_mod2_dense.pyx'), + } + +diff --git a/src/sage/modules/with_basis/meson.build b/src/sage/modules/with_basis/meson.build +index 971012fcf4c..f96bfba3cf7 100644 +--- a/src/sage/modules/with_basis/meson.build ++++ b/src/sage/modules/with_basis/meson.build +@@ -11,7 +11,7 @@ py.install_sources( + subdir: 'sage/modules/with_basis', + ) + +-extension_data = {'indexed_element' : files('indexed_element.pyx')} ++extension_data = {'indexed_element': files('indexed_element.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/monoids/meson.build b/src/sage/monoids/meson.build +index 9b590ee95df..8f07db72cb2 100644 +--- a/src/sage/monoids/meson.build ++++ b/src/sage/monoids/meson.build +@@ -18,7 +18,7 @@ py.install_sources( + ) + + extension_data = { +- 'free_abelian_monoid_element' : files('free_abelian_monoid_element.pyx'), ++ 'free_abelian_monoid_element': files('free_abelian_monoid_element.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/numerical/backends/meson.build b/src/sage/numerical/backends/meson.build +index 57454e81e88..c9fa626eafe 100644 +--- a/src/sage/numerical/backends/meson.build ++++ b/src/sage/numerical/backends/meson.build +@@ -38,17 +38,17 @@ py.install_sources( + ) + + extension_data = { +- 'cvxopt_backend' : files('cvxopt_backend.pyx'), +- 'cvxopt_sdp_backend' : files('cvxopt_sdp_backend.pyx'), +- 'cvxpy_backend' : files('cvxpy_backend.pyx'), +- 'generic_backend' : files('generic_backend.pyx'), +- 'generic_sdp_backend' : files('generic_sdp_backend.pyx'), +- 'glpk_backend' : files('glpk_backend.pyx'), +- 'glpk_exact_backend' : files('glpk_exact_backend.pyx'), +- 'glpk_graph_backend' : files('glpk_graph_backend.pyx'), +- 'interactivelp_backend' : files('interactivelp_backend.pyx'), +- 'matrix_sdp_backend' : files('matrix_sdp_backend.pyx'), +- 'ppl_backend' : files('ppl_backend.pyx'), ++ 'cvxopt_backend': files('cvxopt_backend.pyx'), ++ 'cvxopt_sdp_backend': files('cvxopt_sdp_backend.pyx'), ++ 'cvxpy_backend': files('cvxpy_backend.pyx'), ++ 'generic_backend': files('generic_backend.pyx'), ++ 'generic_sdp_backend': files('generic_sdp_backend.pyx'), ++ 'glpk_backend': files('glpk_backend.pyx'), ++ 'glpk_exact_backend': files('glpk_exact_backend.pyx'), ++ 'glpk_graph_backend': files('glpk_graph_backend.pyx'), ++ 'interactivelp_backend': files('interactivelp_backend.pyx'), ++ 'matrix_sdp_backend': files('matrix_sdp_backend.pyx'), ++ 'ppl_backend': files('ppl_backend.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/numerical/meson.build b/src/sage/numerical/meson.build +index 718df394a61..cf7ad6b7c3b 100644 +--- a/src/sage/numerical/meson.build ++++ b/src/sage/numerical/meson.build +@@ -19,11 +19,11 @@ py.install_sources( + ) + + extension_data = { +- 'gauss_legendre' : files('gauss_legendre.pyx'), +- 'linear_functions' : files('linear_functions.pyx'), +- 'linear_tensor_element' : files('linear_tensor_element.pyx'), +- 'mip' : files('mip.pyx'), +- 'sdp' : files('sdp.pyx'), ++ 'gauss_legendre': files('gauss_legendre.pyx'), ++ 'linear_functions': files('linear_functions.pyx'), ++ 'linear_tensor_element': files('linear_tensor_element.pyx'), ++ 'mip': files('mip.pyx'), ++ 'sdp': files('sdp.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/plot/meson.build b/src/sage/plot/meson.build +index aa0ef708923..28eaedf478c 100644 +--- a/src/sage/plot/meson.build ++++ b/src/sage/plot/meson.build +@@ -34,7 +34,7 @@ py.install_sources( + subdir: 'sage/plot', + ) + +-extension_data = {'complex_plot' : files('complex_plot.pyx')} ++extension_data = {'complex_plot': files('complex_plot.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/plot/plot3d/meson.build b/src/sage/plot/plot3d/meson.build +index cf8e33a2c5d..ab5e1d17d99 100644 +--- a/src/sage/plot/plot3d/meson.build ++++ b/src/sage/plot/plot3d/meson.build +@@ -28,12 +28,12 @@ py.install_sources( + ) + + extension_data = { +- 'base' : files('base.pyx'), +- 'implicit_surface' : files('implicit_surface.pyx'), +- 'index_face_set' : files('index_face_set.pyx'), +- 'shapes' : files('shapes.pyx'), +- 'transform' : files('transform.pyx'), +- 'parametric_surface' : files('parametric_surface.pyx'), ++ 'base': files('base.pyx'), ++ 'implicit_surface': files('implicit_surface.pyx'), ++ 'index_face_set': files('index_face_set.pyx'), ++ 'shapes': files('shapes.pyx'), ++ 'transform': files('transform.pyx'), ++ 'parametric_surface': files('parametric_surface.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/probability/meson.build b/src/sage/probability/meson.build +index 008efb6bf34..b58d3c10cea 100644 +--- a/src/sage/probability/meson.build ++++ b/src/sage/probability/meson.build +@@ -7,7 +7,7 @@ py.install_sources( + ) + + extension_data = { +- 'probability_distribution' : files('probability_distribution.pyx'), ++ 'probability_distribution': files('probability_distribution.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/quadratic_forms/meson.build b/src/sage/quadratic_forms/meson.build +index d7d8bb0a6c1..170c8920dba 100644 +--- a/src/sage/quadratic_forms/meson.build ++++ b/src/sage/quadratic_forms/meson.build +@@ -36,9 +36,9 @@ py.install_sources( + ) + + extension_data = { +- 'count_local_2' : files('count_local_2.pyx'), +- 'quadratic_form__evaluate' : files('quadratic_form__evaluate.pyx'), +- 'ternary' : files('ternary.pyx'), ++ 'count_local_2': files('count_local_2.pyx'), ++ 'quadratic_form__evaluate': files('quadratic_form__evaluate.pyx'), ++ 'ternary': files('ternary.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/quivers/meson.build b/src/sage/quivers/meson.build +index 6d93bb01a06..451056ea4bb 100644 +--- a/src/sage/quivers/meson.build ++++ b/src/sage/quivers/meson.build +@@ -15,8 +15,8 @@ py.install_sources( + ) + + extension_data = { +- 'algebra_elements' : files('algebra_elements.pyx'), +- 'paths' : files('paths.pyx'), ++ 'algebra_elements': files('algebra_elements.pyx'), ++ 'paths': files('paths.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/rings/convert/meson.build b/src/sage/rings/convert/meson.build +index 2e248c33814..61dba9fe0e6 100644 +--- a/src/sage/rings/convert/meson.build ++++ b/src/sage/rings/convert/meson.build +@@ -6,7 +6,7 @@ py.install_sources( + subdir: 'sage/rings/convert', + ) + +-extension_data = {'mpfi' : files('mpfi.pyx')} ++extension_data = {'mpfi': files('mpfi.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/rings/finite_rings/meson.build b/src/sage/rings/finite_rings/meson.build +index 41ee9f0f0c6..8af2dd5b89a 100644 +--- a/src/sage/rings/finite_rings/meson.build ++++ b/src/sage/rings/finite_rings/meson.build +@@ -40,16 +40,16 @@ py.install_sources( + ) + + extension_data = { +- 'element_base' : files('element_base.pyx'), +- 'element_pari_ffelt' : files('element_pari_ffelt.pyx'), +- 'finite_field_base' : files('finite_field_base.pyx'), +- 'hom_finite_field' : files('hom_finite_field.pyx'), +- 'hom_prime_finite_field' : files('hom_prime_finite_field.pyx'), +- 'integer_mod' : files('integer_mod.pyx'), +- 'residue_field' : files('residue_field.pyx'), +- 'residue_field_givaro' : files('residue_field_givaro.pyx'), +- 'residue_field_ntl_gf2e' : files('residue_field_ntl_gf2e.pyx'), +- 'residue_field_pari_ffelt' : files('residue_field_pari_ffelt.pyx'), ++ 'element_base': files('element_base.pyx'), ++ 'element_pari_ffelt': files('element_pari_ffelt.pyx'), ++ 'finite_field_base': files('finite_field_base.pyx'), ++ 'hom_finite_field': files('hom_finite_field.pyx'), ++ 'hom_prime_finite_field': files('hom_prime_finite_field.pyx'), ++ 'integer_mod': files('integer_mod.pyx'), ++ 'residue_field': files('residue_field.pyx'), ++ 'residue_field_givaro': files('residue_field_givaro.pyx'), ++ 'residue_field_ntl_gf2e': files('residue_field_ntl_gf2e.pyx'), ++ 'residue_field_pari_ffelt': files('residue_field_pari_ffelt.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/rings/function_field/meson.build b/src/sage/rings/function_field/meson.build +index d99579c9c54..b8673f2b9fa 100644 +--- a/src/sage/rings/function_field/meson.build ++++ b/src/sage/rings/function_field/meson.build +@@ -38,11 +38,11 @@ py.install_sources( + ) + + extension_data = { +- 'element' : files('element.pyx'), +- 'element_polymod' : files('element_polymod.pyx'), +- 'element_rational' : files('element_rational.pyx'), +- 'hermite_form_polynomial' : files('hermite_form_polynomial.pyx'), +- 'khuri_makdisi' : files('khuri_makdisi.pyx'), ++ 'element': files('element.pyx'), ++ 'element_polymod': files('element_polymod.pyx'), ++ 'element_rational': files('element_rational.pyx'), ++ 'hermite_form_polynomial': files('hermite_form_polynomial.pyx'), ++ 'khuri_makdisi': files('khuri_makdisi.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/rings/meson.build b/src/sage/rings/meson.build +index 743c223dcc7..ec65cf584b5 100644 +--- a/src/sage/rings/meson.build ++++ b/src/sage/rings/meson.build +@@ -121,42 +121,42 @@ py.install_sources( + ) + + extension_data = { +- 'abc' : files('abc.pyx'), +- 'complex_arb' : files('complex_arb.pyx'), +- 'complex_conversion' : files('complex_conversion.pyx'), +- 'complex_interval' : files('complex_interval.pyx'), +- 'complex_mpc' : files('complex_mpc.pyx'), +- 'complex_mpfr' : files('complex_mpfr.pyx'), +- 'factorint' : files('factorint.pyx'), +- 'factorint_flint' : files('factorint_flint.pyx'), +- 'factorint_pari' : files('factorint_pari.pyx'), +- 'fast_arith' : files('fast_arith.pyx'), +- 'fraction_field_element' : files('fraction_field_element.pyx'), +- 'integer' : files('integer.pyx'), +- 'integer_ring' : files('integer_ring.pyx'), +- 'laurent_series_ring_element' : files('laurent_series_ring_element.pyx'), +- 'morphism' : files('morphism.pyx'), +- 'noncommutative_ideals' : files('noncommutative_ideals.pyx'), +- 'power_series_mpoly' : files('power_series_mpoly.pyx'), +- 'power_series_pari' : files('power_series_pari.pyx'), +- 'power_series_poly' : files('power_series_poly.pyx'), +- 'power_series_ring_element' : files('power_series_ring_element.pyx'), +- 'puiseux_series_ring_element' : files('puiseux_series_ring_element.pyx'), +- 'real_arb' : files('real_arb.pyx'), +- 'real_double' : files('real_double.pyx'), +- 'real_double_element_gsl' : files('real_double_element_gsl.pyx'), +- 'real_interval_absolute' : files('real_interval_absolute.pyx'), +- 'real_lazy' : files('real_lazy.pyx'), +- 'real_mpfi' : files('real_mpfi.pyx'), +- 'real_mpfr' : files('real_mpfr.pyx'), +- 'ring' : files('ring.pyx'), +- 'ring_extension' : files('ring_extension.pyx'), +- 'ring_extension_conversion' : files('ring_extension_conversion.pyx'), +- 'ring_extension_element' : files('ring_extension_element.pyx'), +- 'ring_extension_morphism' : files('ring_extension_morphism.pyx'), +- 'sum_of_squares' : files('sum_of_squares.pyx'), +- 'tate_algebra_element' : files('tate_algebra_element.pyx'), +- 'tate_algebra_ideal' : files('tate_algebra_ideal.pyx'), ++ 'abc': files('abc.pyx'), ++ 'complex_arb': files('complex_arb.pyx'), ++ 'complex_conversion': files('complex_conversion.pyx'), ++ 'complex_interval': files('complex_interval.pyx'), ++ 'complex_mpc': files('complex_mpc.pyx'), ++ 'complex_mpfr': files('complex_mpfr.pyx'), ++ 'factorint': files('factorint.pyx'), ++ 'factorint_flint': files('factorint_flint.pyx'), ++ 'factorint_pari': files('factorint_pari.pyx'), ++ 'fast_arith': files('fast_arith.pyx'), ++ 'fraction_field_element': files('fraction_field_element.pyx'), ++ 'integer': files('integer.pyx'), ++ 'integer_ring': files('integer_ring.pyx'), ++ 'laurent_series_ring_element': files('laurent_series_ring_element.pyx'), ++ 'morphism': files('morphism.pyx'), ++ 'noncommutative_ideals': files('noncommutative_ideals.pyx'), ++ 'power_series_mpoly': files('power_series_mpoly.pyx'), ++ 'power_series_pari': files('power_series_pari.pyx'), ++ 'power_series_poly': files('power_series_poly.pyx'), ++ 'power_series_ring_element': files('power_series_ring_element.pyx'), ++ 'puiseux_series_ring_element': files('puiseux_series_ring_element.pyx'), ++ 'real_arb': files('real_arb.pyx'), ++ 'real_double': files('real_double.pyx'), ++ 'real_double_element_gsl': files('real_double_element_gsl.pyx'), ++ 'real_interval_absolute': files('real_interval_absolute.pyx'), ++ 'real_lazy': files('real_lazy.pyx'), ++ 'real_mpfi': files('real_mpfi.pyx'), ++ 'real_mpfr': files('real_mpfr.pyx'), ++ 'ring': files('ring.pyx'), ++ 'ring_extension': files('ring_extension.pyx'), ++ 'ring_extension_conversion': files('ring_extension_conversion.pyx'), ++ 'ring_extension_element': files('ring_extension_element.pyx'), ++ 'ring_extension_morphism': files('ring_extension_morphism.pyx'), ++ 'sum_of_squares': files('sum_of_squares.pyx'), ++ 'tate_algebra_element': files('tate_algebra_element.pyx'), ++ 'tate_algebra_ideal': files('tate_algebra_ideal.pyx'), + } + + foreach name, pyx : extension_data +@@ -226,7 +226,7 @@ extension_data_cpp = { + ), + 'bernoulli_mod_p': files('bernoulli_mod_p.pyx'), + # Has to be compiled as c++ due to https://github.com/cython/cython/issues/6524 +- 'complex_double' : files('complex_double.pyx'), ++ 'complex_double': files('complex_double.pyx'), + 'fraction_field_FpT': files('fraction_field_FpT.pyx'), + 'rational': files('rational.pyx'), + } +diff --git a/src/sage/rings/number_field/meson.build b/src/sage/rings/number_field/meson.build +index f8659c09448..6a2d77e7d14 100644 +--- a/src/sage/rings/number_field/meson.build ++++ b/src/sage/rings/number_field/meson.build +@@ -37,11 +37,11 @@ py.install_sources( + ) + + extension_data = { +- 'number_field_base' : files('number_field_base.pyx'), +- 'number_field_element_base' : files('number_field_element_base.pyx'), +- 'number_field_morphisms' : files('number_field_morphisms.pyx'), +- 'totallyreal' : files('totallyreal.pyx'), +- 'totallyreal_data' : files('totallyreal_data.pyx'), ++ 'number_field_base': files('number_field_base.pyx'), ++ 'number_field_element_base': files('number_field_element_base.pyx'), ++ 'number_field_morphisms': files('number_field_morphisms.pyx'), ++ 'totallyreal': files('totallyreal.pyx'), ++ 'totallyreal_data': files('totallyreal_data.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/rings/padics/meson.build b/src/sage/rings/padics/meson.build +index b85d18ca5ed..f40436ebe60 100644 +--- a/src/sage/rings/padics/meson.build ++++ b/src/sage/rings/padics/meson.build +@@ -82,24 +82,24 @@ py.install_sources( + ) + + extension_data = { +- 'common_conversion' : files('common_conversion.pyx'), +- 'local_generic_element' : files('local_generic_element.pyx'), +- 'morphism' : files('morphism.pyx'), +- 'padic_capped_absolute_element' : files('padic_capped_absolute_element.pyx'), +- 'padic_capped_relative_element' : files('padic_capped_relative_element.pyx'), +- 'padic_fixed_mod_element' : files('padic_fixed_mod_element.pyx'), +- 'padic_floating_point_element' : files('padic_floating_point_element.pyx'), +- 'padic_generic_element' : files('padic_generic_element.pyx'), +- 'padic_relaxed_element' : files('padic_relaxed_element.pyx'), +- 'padic_relaxed_errors' : files('padic_relaxed_errors.pyx'), +- 'qadic_flint_CA' : files('qadic_flint_CA.pyx'), +- 'qadic_flint_CR' : files('qadic_flint_CR.pyx'), +- 'qadic_flint_FM' : files('qadic_flint_FM.pyx'), +- 'qadic_flint_FP' : files('qadic_flint_FP.pyx'), +- 'relative_ramified_CA' : files('relative_ramified_CA.pyx'), +- 'relative_ramified_CR' : files('relative_ramified_CR.pyx'), +- 'relative_ramified_FM' : files('relative_ramified_FM.pyx'), +- 'relative_ramified_FP' : files('relative_ramified_FP.pyx'), ++ 'common_conversion': files('common_conversion.pyx'), ++ 'local_generic_element': files('local_generic_element.pyx'), ++ 'morphism': files('morphism.pyx'), ++ 'padic_capped_absolute_element': files('padic_capped_absolute_element.pyx'), ++ 'padic_capped_relative_element': files('padic_capped_relative_element.pyx'), ++ 'padic_fixed_mod_element': files('padic_fixed_mod_element.pyx'), ++ 'padic_floating_point_element': files('padic_floating_point_element.pyx'), ++ 'padic_generic_element': files('padic_generic_element.pyx'), ++ 'padic_relaxed_element': files('padic_relaxed_element.pyx'), ++ 'padic_relaxed_errors': files('padic_relaxed_errors.pyx'), ++ 'qadic_flint_CA': files('qadic_flint_CA.pyx'), ++ 'qadic_flint_CR': files('qadic_flint_CR.pyx'), ++ 'qadic_flint_FM': files('qadic_flint_FM.pyx'), ++ 'qadic_flint_FP': files('qadic_flint_FP.pyx'), ++ 'relative_ramified_CA': files('relative_ramified_CA.pyx'), ++ 'relative_ramified_CR': files('relative_ramified_CR.pyx'), ++ 'relative_ramified_FM': files('relative_ramified_FM.pyx'), ++ 'relative_ramified_FP': files('relative_ramified_FP.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/rings/polynomial/meson.build b/src/sage/rings/polynomial/meson.build +index 64df9a6b861..5db1364f8f3 100644 +--- a/src/sage/rings/polynomial/meson.build ++++ b/src/sage/rings/polynomial/meson.build +@@ -102,28 +102,28 @@ py.install_sources( + ) + + extension_data = { +- 'commutative_polynomial' : files('commutative_polynomial.pyx'), +- 'cyclotomic' : files('cyclotomic.pyx'), +- 'evaluation_flint' : files('evaluation_flint.pyx'), +- 'hilbert' : files('hilbert.pyx'), +- 'laurent_polynomial' : files('laurent_polynomial.pyx'), +- 'laurent_polynomial_mpair' : files('laurent_polynomial_mpair.pyx'), +- 'multi_polynomial' : files('multi_polynomial.pyx'), +- 'multi_polynomial_ring_base' : files('multi_polynomial_ring_base.pyx'), +- 'ore_polynomial_element' : files('ore_polynomial_element.pyx'), +- 'polydict' : files('polydict.pyx'), +- 'polynomial_compiled' : files('polynomial_compiled.pyx'), +- 'polynomial_complex_arb' : files('polynomial_complex_arb.pyx'), +- 'polynomial_element' : files('polynomial_element.pyx'), +- 'polynomial_number_field' : files('polynomial_number_field.pyx'), +- 'polynomial_real_mpfr_dense' : files('polynomial_real_mpfr_dense.pyx'), +- 'polynomial_ring_homomorphism' : files('polynomial_ring_homomorphism.pyx'), +- 'real_roots' : files('real_roots.pyx'), +- 'refine_root' : files('refine_root.pyx'), +- 'skew_polynomial_element' : files('skew_polynomial_element.pyx'), +- 'skew_polynomial_finite_field' : files('skew_polynomial_finite_field.pyx'), +- 'skew_polynomial_finite_order' : files('skew_polynomial_finite_order.pyx'), +- 'symmetric_reduction' : files('symmetric_reduction.pyx'), ++ 'commutative_polynomial': files('commutative_polynomial.pyx'), ++ 'cyclotomic': files('cyclotomic.pyx'), ++ 'evaluation_flint': files('evaluation_flint.pyx'), ++ 'hilbert': files('hilbert.pyx'), ++ 'laurent_polynomial': files('laurent_polynomial.pyx'), ++ 'laurent_polynomial_mpair': files('laurent_polynomial_mpair.pyx'), ++ 'multi_polynomial': files('multi_polynomial.pyx'), ++ 'multi_polynomial_ring_base': files('multi_polynomial_ring_base.pyx'), ++ 'ore_polynomial_element': files('ore_polynomial_element.pyx'), ++ 'polydict': files('polydict.pyx'), ++ 'polynomial_compiled': files('polynomial_compiled.pyx'), ++ 'polynomial_complex_arb': files('polynomial_complex_arb.pyx'), ++ 'polynomial_element': files('polynomial_element.pyx'), ++ 'polynomial_number_field': files('polynomial_number_field.pyx'), ++ 'polynomial_real_mpfr_dense': files('polynomial_real_mpfr_dense.pyx'), ++ 'polynomial_ring_homomorphism': files('polynomial_ring_homomorphism.pyx'), ++ 'real_roots': files('real_roots.pyx'), ++ 'refine_root': files('refine_root.pyx'), ++ 'skew_polynomial_element': files('skew_polynomial_element.pyx'), ++ 'skew_polynomial_finite_field': files('skew_polynomial_finite_field.pyx'), ++ 'skew_polynomial_finite_order': files('skew_polynomial_finite_order.pyx'), ++ 'symmetric_reduction': files('symmetric_reduction.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/rings/polynomial/weil/meson.build b/src/sage/rings/polynomial/weil/meson.build +index 86a37c42c2f..4f3e0073121 100644 +--- a/src/sage/rings/polynomial/weil/meson.build ++++ b/src/sage/rings/polynomial/weil/meson.build +@@ -6,7 +6,7 @@ py.install_sources( + subdir: 'sage/rings/polynomial/weil', + ) + +-extension_data = {'weil_polynomials' : files('weil_polynomials.pyx')} ++extension_data = {'weil_polynomials': files('weil_polynomials.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/rings/semirings/meson.build b/src/sage/rings/semirings/meson.build +index b92ea837850..ae143c6ef83 100644 +--- a/src/sage/rings/semirings/meson.build ++++ b/src/sage/rings/semirings/meson.build +@@ -9,7 +9,7 @@ py.install_sources( + subdir: 'sage/rings/semirings', + ) + +-extension_data = {'tropical_semiring' : files('tropical_semiring.pyx')} ++extension_data = {'tropical_semiring': files('tropical_semiring.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/sat/solvers/meson.build b/src/sage/sat/solvers/meson.build +index ef9d98ea04c..ac37d2c3ced 100644 +--- a/src/sage/sat/solvers/meson.build ++++ b/src/sage/sat/solvers/meson.build +@@ -9,7 +9,7 @@ py.install_sources( + subdir: 'sage/sat/solvers', + ) + +-extension_data = {'satsolver' : files('satsolver.pyx')} ++extension_data = {'satsolver': files('satsolver.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/schemes/elliptic_curves/meson.build b/src/sage/schemes/elliptic_curves/meson.build +index 155f8e8a2d9..fd1488b36be 100644 +--- a/src/sage/schemes/elliptic_curves/meson.build ++++ b/src/sage/schemes/elliptic_curves/meson.build +@@ -59,9 +59,9 @@ py.install_sources( + ) + + extension_data = { +- 'descent_two_isogeny' : files('descent_two_isogeny.pyx'), +- 'mod_sym_num' : files('mod_sym_num.pyx'), +- 'period_lattice_region' : files('period_lattice_region.pyx'), ++ 'descent_two_isogeny': files('descent_two_isogeny.pyx'), ++ 'mod_sym_num': files('mod_sym_num.pyx'), ++ 'period_lattice_region': files('period_lattice_region.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/schemes/toric/meson.build b/src/sage/schemes/toric/meson.build +index b534a186130..4a78d14e568 100644 +--- a/src/sage/schemes/toric/meson.build ++++ b/src/sage/schemes/toric/meson.build +@@ -18,7 +18,7 @@ py.install_sources( + subdir: 'sage/schemes/toric', + ) + +-extension_data = {'divisor_class' : files('divisor_class.pyx')} ++extension_data = {'divisor_class': files('divisor_class.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/src/sage/sets/meson.build b/src/sage/sets/meson.build +index 1ab6ba327dd..4f1d4a6638d 100644 +--- a/src/sage/sets/meson.build ++++ b/src/sage/sets/meson.build +@@ -29,11 +29,11 @@ py.install_sources( + ) + + extension_data = { +- 'disjoint_set' : files('disjoint_set.pyx'), +- 'family' : files('family.pyx'), +- 'finite_set_map_cy' : files('finite_set_map_cy.pyx'), +- 'pythonclass' : files('pythonclass.pyx'), +- 'recursively_enumerated_set' : files('recursively_enumerated_set.pyx'), ++ 'disjoint_set': files('disjoint_set.pyx'), ++ 'family': files('family.pyx'), ++ 'finite_set_map_cy': files('finite_set_map_cy.pyx'), ++ 'pythonclass': files('pythonclass.pyx'), ++ 'recursively_enumerated_set': files('recursively_enumerated_set.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/stats/distributions/meson.build b/src/sage/stats/distributions/meson.build +index df2b2d246b9..cde85eacda9 100644 +--- a/src/sage/stats/distributions/meson.build ++++ b/src/sage/stats/distributions/meson.build +@@ -11,7 +11,7 @@ py.install_sources( + ) + + extension_data = { +- 'discrete_gaussian_integer' : files( ++ 'discrete_gaussian_integer': files( + 'dgs_bern.c', + 'dgs_gauss_dp.c', + 'dgs_gauss_mp.c', +diff --git a/src/sage/stats/hmm/meson.build b/src/sage/stats/hmm/meson.build +index d45861127e9..c1acc958caf 100644 +--- a/src/sage/stats/hmm/meson.build ++++ b/src/sage/stats/hmm/meson.build +@@ -12,10 +12,10 @@ py.install_sources( + ) + + extension_data = { +- 'chmm' : files('chmm.pyx'), +- 'distributions' : files('distributions.pyx'), +- 'hmm' : files('hmm.pyx'), +- 'util' : files('util.pyx'), ++ 'chmm': files('chmm.pyx'), ++ 'distributions': files('distributions.pyx'), ++ 'hmm': files('hmm.pyx'), ++ 'util': files('util.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/stats/meson.build b/src/sage/stats/meson.build +index 35e8edb05a8..6a75bccdee6 100644 +--- a/src/sage/stats/meson.build ++++ b/src/sage/stats/meson.build +@@ -11,8 +11,8 @@ py.install_sources( + ) + + extension_data = { +- 'intlist' : files('intlist.pyx'), +- 'time_series' : files('time_series.pyx'), ++ 'intlist': files('intlist.pyx'), ++ 'time_series': files('time_series.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/structure/meson.build b/src/sage/structure/meson.build +index 74de406646c..a3a6970d743 100644 +--- a/src/sage/structure/meson.build ++++ b/src/sage/structure/meson.build +@@ -57,25 +57,25 @@ py.install_sources( + ) + + extension_data = { +- 'category_object' : files('category_object.pyx'), +- 'coerce' : files('coerce.pyx'), +- 'coerce_actions' : files('coerce_actions.pyx'), +- 'coerce_dict' : files('coerce_dict.pyx'), +- 'coerce_maps' : files('coerce_maps.pyx'), +- 'debug_options' : files('debug_options.pyx'), +- 'element' : files('element.pyx'), +- 'element_wrapper' : files('element_wrapper.pyx'), +- 'factory' : files('factory.pyx'), +- 'list_clone' : files('list_clone.pyx'), +- 'list_clone_demo' : files('list_clone_demo.pyx'), +- 'list_clone_timings_cy' : files('list_clone_timings_cy.pyx'), +- 'mutability' : files('mutability.pyx'), +- 'parent' : files('parent.pyx'), +- 'parent_base' : files('parent_base.pyx'), +- 'parent_gens' : files('parent_gens.pyx'), +- 'parent_old' : files('parent_old.pyx'), +- 'richcmp' : files('richcmp.pyx'), +- 'sage_object' : files('sage_object.pyx'), ++ 'category_object': files('category_object.pyx'), ++ 'coerce': files('coerce.pyx'), ++ 'coerce_actions': files('coerce_actions.pyx'), ++ 'coerce_dict': files('coerce_dict.pyx'), ++ 'coerce_maps': files('coerce_maps.pyx'), ++ 'debug_options': files('debug_options.pyx'), ++ 'element': files('element.pyx'), ++ 'element_wrapper': files('element_wrapper.pyx'), ++ 'factory': files('factory.pyx'), ++ 'list_clone': files('list_clone.pyx'), ++ 'list_clone_demo': files('list_clone_demo.pyx'), ++ 'list_clone_timings_cy': files('list_clone_timings_cy.pyx'), ++ 'mutability': files('mutability.pyx'), ++ 'parent': files('parent.pyx'), ++ 'parent_base': files('parent_base.pyx'), ++ 'parent_gens': files('parent_gens.pyx'), ++ 'parent_old': files('parent_old.pyx'), ++ 'richcmp': files('richcmp.pyx'), ++ 'sage_object': files('sage_object.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/symbolic/meson.build b/src/sage/symbolic/meson.build +index bb8e3c1433e..44e605742b0 100644 +--- a/src/sage/symbolic/meson.build ++++ b/src/sage/symbolic/meson.build +@@ -33,8 +33,8 @@ py.install_sources( + ) + + extension_data = { +- 'function' : files('function.pyx'), +- 'ring' : files('ring.pyx'), ++ 'function': files('function.pyx'), ++ 'ring': files('ring.pyx'), + } + + foreach name, pyx : extension_data +diff --git a/src/sage/tests/meson.build b/src/sage/tests/meson.build +index a76a068cf60..e6d5293ae74 100644 +--- a/src/sage/tests/meson.build ++++ b/src/sage/tests/meson.build +@@ -24,7 +24,7 @@ py.install_sources( + subdir: 'sage/tests', + ) + +-extension_data = {'cython' : files('cython.pyx')} ++extension_data = {'cython': files('cython.pyx')} + + foreach name, pyx : extension_data + py.extension_module( +diff --git a/virtual-packages.yml b/virtual-packages.yml +new file mode 100644 +index 00000000000..30b838c0188 diff --git a/srcpkgs/sagemath/patches/40594-Fix_segfault_in_libgap.patch b/srcpkgs/sagemath/patches/40594-Fix_segfault_in_libgap.patch deleted file mode 100644 index b26ac2f691c429..00000000000000 --- a/srcpkgs/sagemath/patches/40594-Fix_segfault_in_libgap.patch +++ /dev/null @@ -1,51 +0,0 @@ -diff --git a/src/sage/libs/gap/element.pyx b/src/sage/libs/gap/element.pyx -index f52a73c2ded..2ef40fd0a69 100644 ---- a/src/sage/libs/gap/element.pyx -+++ b/src/sage/libs/gap/element.pyx -@@ -2498,11 +2498,17 @@ cdef class GapElement_Function(GapElement): - cdef Obj result = NULL - cdef Obj arg_list - cdef int n = len(args) -- cdef volatile Obj v2 -- -- if n > 0 and n <= 3: -- libgap = self.parent() -- a = [x if isinstance(x, GapElement) else libgap(x) for x in args] -+ cdef Obj a[3] -+ -+ if n <= 3: -+ if not all(isinstance(x, GapElement) for x in args): -+ libgap = self.parent() -+ args = tuple(x if isinstance(x, GapElement) else libgap(x) for x in args) -+ for i in range(n): -+ x = args[i] -+ a[i] = (x).value -+ else: -+ arg_list = make_gap_list(args) - - try: - sig_GAP_Enter() -@@ -2510,20 +2516,12 @@ cdef class GapElement_Function(GapElement): - if n == 0: - result = GAP_CallFunc0Args(self.value) - elif n == 1: -- result = GAP_CallFunc1Args(self.value, -- (a[0]).value) -+ result = GAP_CallFunc1Args(self.value, a[0]) - elif n == 2: -- result = GAP_CallFunc2Args(self.value, -- (a[0]).value, -- (a[1]).value) -+ result = GAP_CallFunc2Args(self.value, a[0], a[1]) - elif n == 3: -- v2 = (a[2]).value -- result = GAP_CallFunc3Args(self.value, -- (a[0]).value, -- (a[1]).value, -- v2) -+ result = GAP_CallFunc3Args(self.value, a[0], a[1], a[2]) - else: -- arg_list = make_gap_list(args) - result = GAP_CallFuncList(self.value, arg_list) - sig_off() - finally: diff --git a/srcpkgs/sagemath/patches/40816-Meson:_Build_docs_for_Maxima_as_well.patch b/srcpkgs/sagemath/patches/40816-Meson:_Build_docs_for_Maxima_as_well.patch new file mode 100644 index 00000000000000..8c3acbf3fee2da --- /dev/null +++ b/srcpkgs/sagemath/patches/40816-Meson:_Build_docs_for_Maxima_as_well.patch @@ -0,0 +1,113 @@ +diff --git a/src/sage/config.py.in b/src/sage/config.py.in +index de5ad8b2169..f75e951f3b8 100644 +--- a/src/sage/config.py.in ++++ b/src/sage/config.py.in +@@ -21,7 +21,7 @@ MAXIMA = "@SAGE_MAXIMA@".replace("${prefix}", SAGE_LOCAL) + # Set this to the empty string if your ECL can load maxima without + # further prodding. + MAXIMA_FAS = "@SAGE_MAXIMA_FAS@".replace("${prefix}", SAGE_LOCAL) +-MAXIMA_SHARE = "@SAGE_MAXIMA_SHARE@".replace("${prefix}", SAGE_LOCAL) ++MAXIMA_PREFIX = "@SAGE_MAXIMA_PREFIX@".replace("${prefix}", SAGE_LOCAL) + + # Delete this line if your ECL can load Kenzo without further prodding. + KENZO_FAS = "@SAGE_KENZO_FAS@".replace("${prefix}", SAGE_LOCAL) +diff --git a/src/sage/env.py b/src/sage/env.py +index c7c46bf4ec3..71e87c3f0f6 100644 +--- a/src/sage/env.py ++++ b/src/sage/env.py +@@ -204,7 +204,7 @@ def var(key: str, *fallbacks: Optional[str], force: bool = False) -> Optional[st + PPLPY_DOCS = var("PPLPY_DOCS", join(SAGE_SHARE, "doc", "pplpy")) + MAXIMA = var("MAXIMA", "maxima") + MAXIMA_FAS = var("MAXIMA_FAS") +-MAXIMA_SHARE = var("MAXIMA_SHARE") ++MAXIMA_PREFIX = var("MAXIMA_PREFIX") + KENZO_FAS = var("KENZO_FAS") + SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "") + SAGE_ECMBIN = var("SAGE_ECMBIN", "ecm") +diff --git a/src/sage/interfaces/maxima.py b/src/sage/interfaces/maxima.py +index 154a2cc34e0..9df024abf39 100644 +--- a/src/sage/interfaces/maxima.py ++++ b/src/sage/interfaces/maxima.py +@@ -515,7 +515,7 @@ + + import pexpect + +-from sage.env import MAXIMA ++from sage.env import MAXIMA, MAXIMA_PREFIX + from sage.interfaces.expect import Expect, ExpectElement, gc_disabled + from sage.interfaces.maxima_abstract import ( + MaximaAbstract, +@@ -587,11 +587,16 @@ def __init__(self, script_subdirectory=None, logfile=None, server=None, + # See trac # 6818. + init_code.append('nolabels : true') + ++ env = {} ++ if MAXIMA_PREFIX: ++ env['MAXIMA_PREFIX'] = MAXIMA_PREFIX ++ + MaximaAbstract.__init__(self, "maxima") + Expect.__init__(self, + name='maxima', + prompt=r'\(\%i[0-9]+\) ', + command='{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)), ++ env=env, + script_subdirectory=script_subdirectory, + restart_on_ctrlc=False, + verbose_start=False, +diff --git a/src/sage/interfaces/maxima_lib.py b/src/sage/interfaces/maxima_lib.py +index 637ef29a6f2..3d27bd834b5 100644 +--- a/src/sage/interfaces/maxima_lib.py ++++ b/src/sage/interfaces/maxima_lib.py +@@ -112,11 +112,12 @@ + # + # https://www.gnu.org/licenses/ + # **************************************************************************** ++import os + + import sage.rings.real_double + import sage.symbolic.expression + import sage.symbolic.integration.integral +-from sage.env import MAXIMA_FAS, MAXIMA_SHARE ++from sage.env import MAXIMA_FAS, MAXIMA_PREFIX + from sage.interfaces.maxima_abstract import ( + MaximaAbstract, + MaximaAbstractElement, +@@ -141,6 +142,9 @@ + ecl_eval("(in-package :maxima)") + ecl_eval("(set-locale-subdir)") + ++if MAXIMA_PREFIX: ++ os.environ["MAXIMA_PREFIX"] = MAXIMA_PREFIX ++ + # This workaround has to happen before any call to (set-pathnames). + # To be safe please do not call anything other than + # (set-locale-subdir) before this block. +@@ -207,10 +211,10 @@ + + # Add search paths + # Keep these in sync with the default Maxima search paths defined in subprojects/maxima-/src/share-subdirs_autogenerated.lisp +-if MAXIMA_SHARE: ++if MAXIMA_PREFIX: + import_packages = "{affine,algebra,algebra/charsets,algebra/solver,amatrix,bernstein,calculus,cobyla,cobyla/ex,cobyla/lisp,colnew,colnew/ex1,colnew/ex2,colnew/ex3,colnew/ex4,colnew/lisp,combinatorics,contrib,contrib/Eulix,contrib/Grobner,contrib/Zeilberger,contrib/alt-display,contrib/altsimp,contrib/binsplit,contrib/bitwise,contrib/boolsimp,contrib/coma,contrib/diffequations,contrib/diffequations/tests,contrib/elliptic_curves,contrib/elliptic_curves/figures,contrib/format,contrib/fresnel,contrib/gentran,contrib/gentran/man,contrib/gentran/test,contrib/gf,contrib/integration,contrib/levin,contrib/lurkmathml,contrib/maxima-odesolve,contrib/maximaMathML,contrib/mcclim,contrib/noninteractive,contrib/odes,contrib/operatingsystem,contrib/prim,contrib/rand,contrib/rkf45,contrib/sarag,contrib/smath,contrib/state,contrib/symplectic_ode,contrib/trigtools,contrib/unicodedata,contrib/unit,contrib/vector3d,descriptive,diff_form,diff_form/tests,diffequations,distrib,draw,dynamics,ezunits,fftpack5,fftpack5/lisp,finance,fourier_elim,fractals,graphs,hompack,hompack/lisp,hypergeometric,integequations,integer_sequence,integration,lapack,lapack/blas,lapack/lapack,lbfgs,linearalgebra,logic,lsquares,macro,matrix,minpack,minpack/lisp,misc,mnewton,multiadditive,nelder_mead,numeric,numericalio,odepack,odepack/src,orthopoly,pdiff,physics,pslq,pytranslate,quantum,simplex,simplex/Tests,simplification,solve_rat_ineq,solve_rec,sound,stats,stringproc,sym,tensor,tensor/tracefree-code,test_batch_encodings,to_poly_solve,translators,translators/m2mj,trigonometry,utils,vector,z_transform}" +- ecl_eval(f'#$file_search_maxima: append(file_search_maxima, ["{MAXIMA_SHARE}/###.{{mac,mc,wxm}}", "{MAXIMA_SHARE}/{import_packages}/###.{{mac,mc,wxm}}"])$') +- ecl_eval(f'#$file_search_lisp: append(file_search_lisp, ["{MAXIMA_SHARE}/###.{{fas,lisp,lsp}}", "{MAXIMA_SHARE}/{import_packages}/###.{{fas,lisp,lsp}}"])$') ++ ecl_eval(f'#$file_search_maxima: append(file_search_maxima, ["{MAXIMA_PREFIX}/###.{{mac,mc,wxm}}", "{MAXIMA_PREFIX}/{import_packages}/###.{{mac,mc,wxm}}"])$') ++ ecl_eval(f'#$file_search_lisp: append(file_search_lisp, ["{MAXIMA_PREFIX}/###.{{fas,lisp,lsp}}", "{MAXIMA_PREFIX}/../src/###.{{fas,lisp,lsp}}", "{MAXIMA_PREFIX}/{import_packages}/###.{{fas,lisp,lsp}}"])$') + + # Default options set in Maxima + # display2d -- no ascii art output +diff --git a/subprojects/packagefiles/maxima/build/doc/info/meson.build b/subprojects/packagefiles/maxima/build/doc/info/meson.build +new file mode 100644 +index 00000000000..e8c69f73526 +diff --git a/subprojects/packagefiles/maxima/build/doc/meson.build b/subprojects/packagefiles/maxima/build/doc/meson.build +new file mode 100644 +index 00000000000..eba36e4bdc3 +diff --git a/subprojects/packagefiles/maxima/build/meson.build b/subprojects/packagefiles/maxima/build/meson.build +new file mode 100644 +index 00000000000..4112780103d +diff --git a/subprojects/packagefiles/maxima/infodir.patch b/subprojects/packagefiles/maxima/infodir.patch +new file mode 100644 +index 00000000000..a4c037bb848 +diff --git a/subprojects/packagefiles/maxima/maxima_prefix_bin.patch b/subprojects/packagefiles/maxima/maxima_prefix_bin.patch +new file mode 100644 +index 00000000000..0fced388ea9 diff --git a/srcpkgs/sagemath/patches/40816-forgotten.patch b/srcpkgs/sagemath/patches/40816-forgotten.patch new file mode 100644 index 00000000000000..3409b9681679ce --- /dev/null +++ b/srcpkgs/sagemath/patches/40816-forgotten.patch @@ -0,0 +1,41 @@ +From 5de75421e8c61eb1e7f64cb0cd6075c8b74209d8 Mon Sep 17 00:00:00 2001 +From: Chenxin Zhong +Date: Sat, 13 Dec 2025 03:31:46 +0800 +Subject: [PATCH] Fix GCD assertion in MacLaneLimitValuation to handle mutable + cached limit valuations + +--- + src/sage/rings/valuation/limit_valuation.py | 20 +++++++++++++++++++- + 1 file changed, 19 insertions(+), 1 deletion(-) + +diff --git a/src/sage/rings/valuation/limit_valuation.py b/src/sage/rings/valuation/limit_valuation.py +index c2555a327b6..063411d8110 100644 +--- a/src/sage/rings/valuation/limit_valuation.py ++++ b/src/sage/rings/valuation/limit_valuation.py +@@ -698,7 +698,25 @@ def _ge_(self, other): + self._improve_approximation_for_call(other._G) + other._improve_approximation_for_call(self._G) + if self._G != other._G: +- assert self._G.gcd(other._G).is_one() ++ gcd = self._G.gcd(other._G) ++ if not gcd.is_one(): ++ # Cached limit valuations are mutable: earlier calls ++ # to ``_improve_approximation_for_call`` may already ++ # have replaced ``_G`` by the factor with infinite ++ # valuation. This can leave one instance with a proper ++ # factor of the other's ``_G``. ++ # ++ # In this situation, force both instances to reduce ++ # further by calling with the complementary factor. ++ # (Calling with the common factor itself may be an ++ # equivalence unit and thus not trigger any reduction.) ++ if gcd != self._G: ++ self._improve_approximation_for_call(self._G // gcd) ++ if gcd != other._G: ++ other._improve_approximation_for_call(other._G // gcd) ++ # Recompute after possible reductions. ++ gcd = self._G.gcd(other._G) ++ assert gcd.is_one() + return False + + # If the valuations are comparable, they must approximate the diff --git a/srcpkgs/sagemath/patches/41021-Refactor_atexit.pyx_for_python_3.14.patch b/srcpkgs/sagemath/patches/41021-Refactor_atexit.pyx_for_python_3.14.patch deleted file mode 100644 index 2adf116fcf59d6..00000000000000 --- a/srcpkgs/sagemath/patches/41021-Refactor_atexit.pyx_for_python_3.14.patch +++ /dev/null @@ -1,138 +0,0 @@ -diff --git a/src/sage/cpython/atexit.pyx b/src/sage/cpython/atexit.pyx -index c74c1d0308a..e6ecad9eadc 100644 ---- a/src/sage/cpython/atexit.pyx -+++ b/src/sage/cpython/atexit.pyx -@@ -144,51 +144,99 @@ cdef class restore_atexit: - _set_exithandlers(self._exithandlers) - - from cpython.ref cimport PyObject -+import sys - --# Implement "_atexit_callbacks()" for each supported python version -+# Implement a uniform interface for getting atexit callbacks - cdef extern from *: - """ -+ #ifndef Py_BUILD_CORE - #define Py_BUILD_CORE -+ #endif - #undef _PyGC_FINALIZED - #include "internal/pycore_interp.h" - #include "internal/pycore_pystate.h" -- #if PY_VERSION_HEX >= 0x030c0000 -- // struct atexit_callback was renamed in 3.12 to atexit_py_callback -- #define atexit_callback atexit_py_callback -- #endif -- static atexit_callback ** _atexit_callbacks(PyObject *self) { -+ -+ // Always define this struct for Cython's use -+ typedef struct { -+ PyObject *func; -+ PyObject *args; -+ PyObject *kwargs; -+ } atexit_callback_struct; -+ -+ #if PY_VERSION_HEX >= 0x030e0000 -+ // Python 3.14+: atexit uses a PyList -+ static PyObject* get_atexit_callbacks_list(PyObject *self) { - PyInterpreterState *interp = _PyInterpreterState_GET(); - struct atexit_state state = interp->atexit; - return state.callbacks; - } -+ -+ // Dummy function for Python 3.14+ (never called) -+ static atexit_callback_struct** get_atexit_callbacks_array(PyObject *self) { -+ PyErr_SetString(PyExc_RuntimeError, "Python >= 3.14 has no atexit array"); -+ return NULL; -+ } -+ #else -+ // Python < 3.14: atexit uses C array -+ static atexit_callback_struct** get_atexit_callbacks_array(PyObject *self) { -+ PyInterpreterState *interp = _PyInterpreterState_GET(); -+ struct atexit_state state = interp->atexit; -+ // Cast from atexit_callback** to our struct type -+ return (atexit_callback_struct**)state.callbacks; -+ } -+ -+ // Dummy function for Python < 3.14 (never called) -+ static PyObject* get_atexit_callbacks_list(PyObject *self) { -+ PyErr_SetString(PyExc_RuntimeError, "Python < 3.14 has no atexit list"); -+ return NULL; -+ } -+ #endif - """ -- ctypedef struct atexit_callback: -+ # Declare both functions - they exist in all Python versions (one is dummy) -+ object get_atexit_callbacks_list(object module) -+ -+ ctypedef struct atexit_callback_struct: - PyObject* func - PyObject* args - PyObject* kwargs -- atexit_callback** _atexit_callbacks(object module) -+ atexit_callback_struct** get_atexit_callbacks_array(object module) except NULL - - - def _get_exithandlers(): - """Return list of exit handlers registered with the atexit module.""" -- cdef atexit_callback ** callbacks -- cdef atexit_callback callback -- cdef list exithandlers -+ cdef list exithandlers = [] -+ cdef atexit_callback_struct ** callbacks -+ cdef atexit_callback_struct callback - cdef int idx - cdef object kwargs -- -- exithandlers = [] -- callbacks = _atexit_callbacks(atexit) -- -- for idx in range(atexit._ncallbacks()): -- callback = callbacks[idx][0] -- if callback.kwargs: -- kwargs = callback.kwargs -- else: -- kwargs = {} -- exithandlers.append((callback.func, -- callback.args, -- kwargs)) -+ -+ # Python 3.14+ uses a PyList directly -+ if sys.version_info >= (3, 14): -+ callbacks_list = get_atexit_callbacks_list(atexit) -+ if callbacks_list is None: -+ return exithandlers -+ # callbacks is a list of tuples: [(func, args, kwargs), ...] -+ # Normalize kwargs to ensure it's always a dict (not None) -+ # Note: In Python 3.14+, atexit stores callbacks in LIFO order -+ # (most recently registered first), but we return them in FIFO -+ # order (registration order) for consistency with earlier versions -+ for item in reversed(callbacks_list): -+ func, args, kwargs = item -+ if kwargs is None: -+ kwargs = {} -+ exithandlers.append((func, args, kwargs)) -+ else: -+ # Python < 3.14 uses C array -+ callbacks = get_atexit_callbacks_array(atexit) -+ for idx in range(atexit._ncallbacks()): -+ callback = callbacks[idx][0] -+ if callback.kwargs: -+ kwargs = callback.kwargs -+ else: -+ kwargs = {} -+ exithandlers.append((callback.func, -+ callback.args, -+ kwargs)) - return exithandlers - - -@@ -203,6 +251,9 @@ def _set_exithandlers(exithandlers): - - # We could do this more efficiently by directly rebuilding the array - # of atexit_callbacks, but this is much simpler -+ # Note: exithandlers is in registration order (FIFO). -+ # In Python 3.14+, atexit.register prepends to the list (LIFO), -+ # so registering in forward order gives us the correct execution order. - for callback in exithandlers: - atexit.register(callback[0], *callback[1], **callback[2]) - diff --git a/srcpkgs/sagemath/patches/41141-Fix_ipython_9.7.0.patch b/srcpkgs/sagemath/patches/41141-Fix_ipython_9.7.0.patch deleted file mode 100644 index 5f05574f06a237..00000000000000 --- a/srcpkgs/sagemath/patches/41141-Fix_ipython_9.7.0.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 18efb69e53590586b22dd0f63559845d4676feeb Mon Sep 17 00:00:00 2001 -From: Chenxin Zhong -Date: Thu, 6 Nov 2025 21:56:57 +0800 -Subject: [PATCH] Removed the unicode_to_str conversion from the - SagePrettyPrinter initialization. - -Removed the unicode_to_str conversion from the SagePrettyPrinter initialization. ---- - src/sage/repl/display/formatter.py | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/src/sage/repl/display/formatter.py b/src/sage/repl/display/formatter.py -index 3b73674dd48..ceea50f36eb 100644 ---- a/src/sage/repl/display/formatter.py -+++ b/src/sage/repl/display/formatter.py -@@ -62,7 +62,6 @@ - from io import StringIO - - from IPython.core.formatters import DisplayFormatter, PlainTextFormatter --from IPython.utils.py3compat import unicode_to_str - from IPython.core.display import DisplayObject - - from ipywidgets import Widget -@@ -311,7 +310,7 @@ def __call__(self, obj): - print('---- calling ipython formatter ----') - stream = StringIO() - printer = SagePrettyPrinter( -- stream, self.max_width, unicode_to_str(self.newline)) -+ stream, self.max_width, self.newline) - printer.pretty(obj) - printer.flush() - return stream.getvalue() diff --git a/srcpkgs/sagemath/patches/41342-Fix_a_test_failure_with_numpy_2.4.patch b/srcpkgs/sagemath/patches/41342-Fix_a_test_failure_with_numpy_2.4.patch new file mode 100644 index 00000000000000..7b8241e9ecc130 --- /dev/null +++ b/srcpkgs/sagemath/patches/41342-Fix_a_test_failure_with_numpy_2.4.patch @@ -0,0 +1,13 @@ +diff --git a/src/sage/calculus/desolvers.py b/src/sage/calculus/desolvers.py +index 7f6ba7967e1..89a56cb54e1 100644 +--- a/src/sage/calculus/desolvers.py ++++ b/src/sage/calculus/desolvers.py +@@ -1621,7 +1621,7 @@ def desolve_odeint_inner(ivar): + assert len(des) == 1 + dvar = dvars[0] + de = des[0] +- func = fast_float(de, dvar, ivar) ++ func = lambda y, t: fast_float(de, dvar, ivar)(y.item(), t) + if not compute_jac: + Dfun = None + else: diff --git a/srcpkgs/sagemath/patches/41395-Fix_test_failures_with_pyparsing_3.3.patch b/srcpkgs/sagemath/patches/41395-Fix_test_failures_with_pyparsing_3.3.patch new file mode 100644 index 00000000000000..6bd2ae34b5cba4 --- /dev/null +++ b/srcpkgs/sagemath/patches/41395-Fix_test_failures_with_pyparsing_3.3.patch @@ -0,0 +1,22 @@ +diff --git a/src/sage/topology/simplicial_set_examples.py b/src/sage/topology/simplicial_set_examples.py +index be7a4084be2..cd69adb9c5a 100644 +--- a/src/sage/topology/simplicial_set_examples.py ++++ b/src/sage/topology/simplicial_set_examples.py +@@ -655,7 +655,7 @@ def simplicial_data_from_kenzo_output(filename) -> dict: + sage: S4.homology(reduced=False) # needs pyparsing + {0: Z, 1: 0, 2: 0, 3: 0, 4: Z} + """ +- from pyparsing import OneOrMore, nestedExpr ++ from pyparsing import OneOrMore, nested_expr + + with open(filename) as f: + data = f.read() +@@ -675,7 +675,7 @@ def simplicial_data_from_kenzo_output(filename) -> dict: + end = new_dim_idx + if dim == 0: + simplex_string = data[data.find('Vertices :') + len('Vertices :'):end] +- vertices = OneOrMore(nestedExpr()).parseString(simplex_string).asList()[0] ++ vertices = OneOrMore(nested_expr()).parse_string(simplex_string).asList()[0] + for v in vertices: + vertex = AbstractSimplex(0, name=v) + simplex_data[vertex] = None diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 91a07391d35cd4..3f835395cfdd2f 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -1,6 +1,6 @@ #! /bin/sh -version=10.7 +version=10.8 URL_BASE_PR="https://github.com/sagemath/sage/pull/" URL_BASE_COMPARE="https://github.com/sagemath/sage/compare/${version}..." @@ -30,7 +30,9 @@ get_pr() { # run from patches dir cd $(dirname "$0") -# positive review -get_pr 40594 "Fix segfault in libgap" -get_pr 41021 "Refactor atexit.pyx for python 3.14" -get_pr 41141 "Fix compatibility issue for ipython 9.7.0" +# merged/positive review + +get_pr 40520 "Use accelerate for Conda on macos" +get_pr 41395 "Fix test failures with pyparsing 3.3" +get_pr 41342 "Fix a test failure with numpy 2.4" +get_pr 40816 "Meson: Build docs for Maxima as well" diff --git a/srcpkgs/sagemath/patches/sphinx.patch b/srcpkgs/sagemath/patches/sphinx.patch deleted file mode 100644 index be52a132cbcd16..00000000000000 --- a/srcpkgs/sagemath/patches/sphinx.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- a/sage/sagemath_standard.egg-info/PKG-INFO -+++ b/sage/sagemath_standard.egg-info/PKG-INFO -@@ -39,7 +39,7 @@ Requires-Dist: requests>=2.13.0 - Requires-Dist: typing_extensions>=4.4.0; python_version < "3.11" - Requires-Dist: ipython>=7.13.0 - Requires-Dist: pexpect>=4.8.0 --Requires-Dist: sphinx<9,>=5.2 -+Requires-Dist: sphinx<10,>=5.2 - Requires-Dist: networkx>=2.4 - Requires-Dist: scipy>=1.12 - Requires-Dist: sympy<2.0,>=1.6 ---- a/sage/sagemath_standard.egg-info/requires.txt -+++ b/sage/sagemath_standard.egg-info/requires.txt -@@ -12,7 +12,7 @@ primecountpy>=0.1.1 - requests>=2.13.0 - ipython>=7.13.0 - pexpect>=4.8.0 --sphinx<9,>=5.2 -+sphinx<10,>=5.2 - networkx>=2.4 - scipy>=1.12 - sympy<2.0,>=1.6 ---- a/sage/setup.cfg -+++ b/sage/setup.cfg -@@ -46,7 +46,7 @@ install_requires = - typing_extensions >= 4.4.0; python_version<'3.11' - ipython >=7.13.0 - pexpect >=4.8.0 -- sphinx >=5.2, <9 -+ sphinx >=5.2, <10 - networkx >=2.4 - scipy >=1.12 - sympy >=1.6, <2.0 diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template index 800fe7adf4448e..5231b46cb58eb5 100644 --- a/srcpkgs/sagemath/template +++ b/srcpkgs/sagemath/template @@ -1,14 +1,15 @@ # Template file for 'sagemath' pkgname=sagemath -version=10.7 -revision=4 +version=10.8 +revision=1 _pypi_version=${version/.beta/b} _pypi_version=${_pypi_version/.rc/rc} build_style=python3-pep517 +make_build_args="-C setup-args=-Dbuild-docs=false" hostmakedepends="pkg-config python3-Cython python3-Jinja2 python3-pkgconfig python3-setuptools python3-wheel python3-gmpy2 python3-memory_allocator python3-numpy ecl - python3-cypari2 python3-cysignals python3-devel" + python3-cypari2 python3-cysignals python3-devel python3-meson-python" makedepends="boost-headers brial-devel cliquer-devel ecl eclib-devel ecm-devel fflas-ffpack flintlib-devel gap-devel gd-devel glpk-devel gsl-devel iml-devel lcalc-devel libbraiding-devel libhomfly-devel libmpc-devel @@ -17,7 +18,7 @@ makedepends="boost-headers brial-devel cliquer-devel ecl eclib-devel python3-cysignals python3-devel python3-gmpy2 python3-memory_allocator python3-numpy rankwidth-devel singular symmetrica-devel" depends="eclib-devel fflas-ffpack flintlib-devel gcc-fortran meson gd-devel - gfan gsl-devel gzip libpng-devel linbox-devel m4ri-devel maxima-ecl + gfan gsl-devel gzip libpng-devel linbox-devel m4ri-devel maxima-ecl maxima-src mpfr-devel nauty ntl-devel palp pari-devel pari-elldata-small pari-galdata pari-galpol-small pari-seadata-small pkg-config python3-Cython python3-cypari2 python3-cysignals python3-devel python3-fpylll python3-ipython python3-lrcalc @@ -28,22 +29,20 @@ depends="eclib-devel fflas-ffpack flintlib-devel gcc-fortran meson gd-devel python3-conway-polynomials sage-data-elliptic_curves sage-data-graphs sage-data-polytopes_db sympow tachyon threejs-sage python3-six python3-gmpy2 python3-numpy python3-pexpect python3-Sphinx - python3-Pillow python3-mpmath python3-jupyter_client python3-ptyprocess" -checkdepends="$depends python3-pytest pythran python3-Sphinx gdb" + python3-Pillow python3-mpmath python3-jupyter_client python3-ptyprocess + python3-platformdirs" +checkdepends="${depends} python3-pytest pythran python3-Sphinx gdb" short_desc="Open source mathematics software" maintainer="Gonzalo TornarĂ­a " license="GPL-2.0-or-later" homepage="https://www.sagemath.org/" changelog="https://github.com/sagemath/sage/releases" -distfiles="${PYPI_SITE}/s/sagemath-standard/sagemath_standard-${_pypi_version}.tar.gz" -checksum=f6ec41913a745b94e20ceae69c2c54a7c8e549b3dc8b4a01dbd874c772924149 +distfiles="${PYPI_SITE}/s/sagemath/sagemath-${_pypi_version}.tar.gz" +checksum=864c21a84bfad05f586ccdc45bf685552cd87a236bf56bc30163de474569f82c nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima" -# main repo `.../src/sage/` is `.../sage/` here -patch_args=-Np2 - # parallel build -export SAGE_NUM_THREADS="$XBPS_MAKEJOBS" +export SAGE_NUM_THREADS="${XBPS_MAKEJOBS}" post_install() { # move scripts to /usr/libexec @@ -74,16 +73,16 @@ do_check() { fi cp ${FILESDIR}/timings2.json . _test_args="--stats_path=timings2.json" - if [ "$XBPS_CHECK_PKGS" = full ]; then + if [ "${XBPS_CHECK_PKGS}" = full ]; then _test_args+=" --long --warn-long 30.0" else _test_args+=" --warn-long 10.0" fi - if [ "$XBPS_BUILD_ENVIRONMENT" = "void-packages-ci" ]; then + if [ "${XBPS_BUILD_ENVIRONMENT}" = "void-packages-ci" ]; then # for CI use a predictable random seed _test_args+=" --random-seed=0" fi PATH="${testdir}/usr/bin:${PATH}" PYTHONPATH="${testdir}/${py3_sitelib}" \ - sage -tp ${XBPS_MAKEJOBS} ${_test_args} ${_test_files} + python3 -m sage.doctest -p ${XBPS_MAKEJOBS} ${_test_args} ${_test_files} }