Skip to content

Commit 61e1f4a

Browse files
author
Release Manager
committed
gh-36524: Compile everything with meson <!-- ^^^^^ Please provide a concise, informative and self-explanatory title. Don't put issue numbers in there, do this in the PR body below. For example, instead of "Fixes #1234" use "Introduce new method to calculate 1+1" --> <!-- Describe your changes here in detail --> <!-- Why is this change required? What problem does it solve? --> <!-- If this PR resolves an open issue, please link to it here. For example "Fixes #12345". --> <!-- If your change requires a documentation PR, please link it appropriately. --> Add meson configuration to compile sagelib with meson. Basic developer docs are added as well (meant as background info, not real installation instructions and thus under "developer"). ### 📝 Checklist <!-- Put an `x` in all the boxes that apply. --> <!-- If your change requires a documentation PR, please link it appropriately --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> <!-- Feel free to remove irrelevant items. --> - [x] The title is concise, informative, and self-explanatory. - [x] The description explains in detail what this PR is about. - [ ] I have linked a relevant issue or discussion. - [ ] I have created tests covering the changes. - [ ] I have updated the documentation accordingly. ### ⌛ Dependencies <!-- List all open PRs that this PR logically depends on - #12345: short description why this is a dependency - #34567: ... --> <!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! --> URL: #36524 Reported by: Tobias Diez Reviewer(s): Dima Pasechnik, Gonzalo Tornaría, Matthias Köppe, Michael Orlitzky, Tobias Diez
2 parents 7e4f7bd + 2bf9a09 commit 61e1f4a

File tree

167 files changed

+7288
-248
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

167 files changed

+7288
-248
lines changed

.github/workflows/ci-meson.yml

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: Build & Test using Meson
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- develop
8+
pull_request:
9+
workflow_dispatch:
10+
# Allow to run manually
11+
12+
concurrency:
13+
# Cancel previous runs of this workflow for the same branch
14+
group: ${{ github.workflow }}-${{ github.ref }}
15+
cancel-in-progress: true
16+
17+
jobs:
18+
test:
19+
name: Conda (${{ matrix.os }}, Python ${{ matrix.python }})
20+
runs-on: ${{ matrix.os }}-latest
21+
22+
strategy:
23+
fail-fast: false
24+
matrix:
25+
os: [ubuntu]
26+
python: ['3.9', '3.10', '3.11']
27+
28+
steps:
29+
- uses: actions/checkout@v4
30+
31+
- name: Merge CI fixes from sagemath/sage
32+
run: |
33+
.ci/merge-fixes.sh
34+
env:
35+
GH_TOKEN: ${{ github.token }}
36+
37+
- name: Cache conda packages
38+
uses: actions/cache@v4
39+
with:
40+
path: ~/conda_pkgs_dir
41+
key:
42+
${{ runner.os }}-conda-${{ hashFiles('src/environment-3.11-linux.yml') }}
43+
44+
- name: Compiler cache
45+
uses: hendrikmuhs/[email protected]
46+
with:
47+
key: ${{ runner.os }}-meson-${{ matrix.python }}
48+
49+
- name: Setup Conda environment
50+
uses: conda-incubator/setup-miniconda@v2
51+
with:
52+
python-version: ${{ matrix.python }}
53+
miniforge-version: latest
54+
use-mamba: true
55+
channels: conda-forge
56+
channel-priority: true
57+
activate-environment: sage
58+
environment-file: src/environment-${{ matrix.python }}-${{ startsWith(matrix.os, 'macos') && (startsWith(runner.arch, 'ARM') && 'macos' || 'macos-x86_64') || 'linux' }}.yml
59+
60+
- name: Print Conda environment
61+
shell: bash -l {0}
62+
run: |
63+
conda info
64+
conda list
65+
66+
- name: Build
67+
shell: bash -l {0}
68+
run: |
69+
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
70+
export CC="ccache $CC"
71+
export CXX="ccache $CXX"
72+
pip install --no-build-isolation --config-settings=builddir=builddir . -v
73+
74+
- name: Test
75+
shell: bash -l {0}
76+
run: |
77+
# We don't install sage_setup, so don't try to test it
78+
rm -R ./src/sage_setup/
79+
./sage -t --all -p4

.gitignore

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,10 +146,12 @@ __pycache__/
146146

147147
# Generated by sage_setup.autogen
148148
/src/sage/ext/interpreters
149+
!/src/sage/ext/interpreters/meson.build
149150

150151
# Generated Cython files
151152
*.so
152153
**/*.so
154+
**/*.so.old
153155
/src/cython_debug
154156
# Most C and C++ files are generated by Cython and should not
155157
# be included in the sdist.
@@ -299,3 +301,171 @@ src/.coverage/
299301
# git worktree
300302
worktree*
301303
**/worktree*
304+
305+
# Meson build directory
306+
builddir
307+
builddir-*
308+
build-install
309+
build/cp*
310+
311+
# Meson temporary files
312+
src/sage/interfaces/__init__.py
313+
src/sage/crypto/block_cipher/__init__.py
314+
src/sage/crypto/public_key/__init__.py
315+
src/sage/logic/__init__.py
316+
src/sage/parallel/__init__.py
317+
src/sage/dynamics/cellular_automata/__init__.py
318+
src/sage/dynamics/arithmetic_dynamics/__init__.py
319+
src/sage/dynamics/__init__.py
320+
src/sage/dynamics/complex_dynamics/__init__.py
321+
src/sage/knots/__init__.py
322+
src/sage/topology/__init__.py
323+
src/sage/functions/__init__.py
324+
src/sage/manifolds/subsets/__init__.py
325+
src/sage/manifolds/__init__.py
326+
src/sage/manifolds/differentiable/examples/__init__.py
327+
src/sage/manifolds/differentiable/__init__.py
328+
src/sage/coding/source_coding/__init__.py
329+
src/sage/coding/guruswami_sudan/__init__.py
330+
src/sage/coding/__init__.py
331+
src/sage/coding/codecan/__init__.py
332+
src/sage/games/__init__.py
333+
src/sage/quivers/__init__.py
334+
src/sage/schemes/cyclic_covers/__init__.py
335+
src/sage/schemes/plane_conics/__init__.py
336+
src/sage/schemes/curves/__init__.py
337+
src/sage/schemes/plane_quartics/__init__.py
338+
src/sage/schemes/jacobians/__init__.py
339+
src/sage/schemes/toric/sheaf/__init__.py
340+
src/sage/schemes/toric/__init__.py
341+
src/sage/schemes/product_projective/__init__.py
342+
src/sage/schemes/elliptic_curves/__init__.py
343+
src/sage/schemes/riemann_surfaces/__init__.py
344+
src/sage/schemes/hyperelliptic_curves/__init__.py
345+
src/sage/schemes/berkovich/__init__.py
346+
src/sage/schemes/generic/__init__.py
347+
src/sage/schemes/projective/__init__.py
348+
src/sage/schemes/__init__.py
349+
src/sage/schemes/affine/__init__.py
350+
src/sage/modular/hecke/__init__.py
351+
src/sage/modular/pollack_stevens/__init__.py
352+
src/sage/modular/overconvergent/__init__.py
353+
src/sage/modular/modform/__init__.py
354+
src/sage/modular/quasimodform/__init__.py
355+
src/sage/modular/modsym/__init__.py
356+
src/sage/modular/local_comp/__init__.py
357+
src/sage/modular/quatalg/__init__.py
358+
src/sage/modular/ssmod/__init__.py
359+
src/sage/modular/abvar/__init__.py
360+
src/sage/modular/__init__.py
361+
src/sage/modular/btquotients/__init__.py
362+
src/sage/modular/arithgroup/__init__.py
363+
src/sage/modular/modform_hecketriangle/__init__.py
364+
src/sage/combinat/cluster_algebra_quiver/__init__.py
365+
src/sage/combinat/root_system/__init__.py
366+
src/sage/combinat/species/__init__.py
367+
src/sage/combinat/designs/__init__.py
368+
src/sage/combinat/posets/__init__.py
369+
src/sage/combinat/matrices/__init__.py
370+
src/sage/combinat/rigged_configurations/__init__.py
371+
src/sage/combinat/ncsf_qsym/__init__.py
372+
src/sage/combinat/path_tableaux/__init__.py
373+
src/sage/combinat/sf/__init__.py
374+
src/sage/combinat/__init__.py
375+
src/sage/combinat/chas/__init__.py
376+
src/sage/combinat/ncsym/__init__.py
377+
src/sage/combinat/words/__init__.py
378+
src/sage/combinat/crystals/__init__.py
379+
src/sage/tensor/modules/__init__.py
380+
src/sage/tensor/__init__.py
381+
src/sage/groups/matrix_gps/__init__.py
382+
src/sage/groups/semimonomial_transformations/__init__.py
383+
src/sage/groups/perm_gps/partn_ref2/__init__.py
384+
src/sage/groups/perm_gps/partn_ref/__init__.py
385+
src/sage/groups/perm_gps/__init__.py
386+
src/sage/groups/__init__.py
387+
src/sage/groups/affine_gps/__init__.py
388+
src/sage/groups/abelian_gps/__init__.py
389+
src/sage/groups/additive_abelian/__init__.py
390+
src/sage/groups/lie_gps/__init__.py
391+
src/sage/groups/misc_gps/__init__.py
392+
src/sage/symbolic/__init__.py
393+
src/sage/symbolic/integration/__init__.py
394+
src/sage/lfunctions/__init__.py
395+
src/sage/arith/__init__.py
396+
src/sage/ext/__init__.py
397+
src/sage/categories/examples/__init__.py
398+
src/sage/categories/__init__.py
399+
src/sage/modules/fg_pid/__init__.py
400+
src/sage/modules/__init__.py
401+
src/sage/modules/with_basis/__init__.py
402+
src/sage/modules/fp_graded/steenrod/__init__.py
403+
src/sage/modules/fp_graded/__init__.py
404+
src/sage/misc/__init__.py
405+
src/sage/rings/convert/__init__.py
406+
src/sage/rings/invariants/__init__.py
407+
src/sage/rings/finite_rings/__init__.py
408+
src/sage/rings/function_field/__init__.py
409+
src/sage/rings/function_field/drinfeld_modules/__init__.py
410+
src/sage/rings/semirings/__init__.py
411+
src/sage/rings/number_field/__init__.py
412+
src/sage/rings/__init__.py
413+
src/sage/rings/padics/__init__.py
414+
src/sage/rings/valuation/__init__.py
415+
src/sage/rings/asymptotic/__init__.py
416+
src/sage/rings/polynomial/weil/__init__.py
417+
src/sage/rings/polynomial/__init__.py
418+
src/sage/rings/polynomial/padics/__init__.py
419+
src/sage/monoids/__init__.py
420+
src/sage/matrix/__init__.py
421+
src/sage/matroids/__init__.py
422+
src/sage/interacts/__init__.py
423+
src/sage/__init__.py
424+
src/sage/plot/__init__.py
425+
src/sage/plot/plot3d/__init__.py
426+
src/sage/typeset/__init__.py
427+
src/sage/algebras/lie_conformal_algebras/__init__.py
428+
src/sage/algebras/fusion_rings/__init__.py
429+
src/sage/algebras/letterplace/__init__.py
430+
src/sage/algebras/quatalg/__init__.py
431+
src/sage/algebras/steenrod/__init__.py
432+
src/sage/algebras/finite_dimensional_algebras/__init__.py
433+
src/sage/algebras/__init__.py
434+
src/sage/algebras/hecke_algebras/__init__.py
435+
src/sage/algebras/lie_algebras/__init__.py
436+
src/sage/algebras/quantum_groups/__init__.py
437+
src/sage/quadratic_forms/genera/__init__.py
438+
src/sage/quadratic_forms/__init__.py
439+
src/sage/game_theory/__init__.py
440+
src/sage/sandpiles/__init__.py
441+
src/sage/sat/__init__.py
442+
src/sage/homology/__init__.py
443+
src/sage/geometry/riemannian_manifolds/__init__.py
444+
src/sage/geometry/hyperplane_arrangement/__init__.py
445+
src/sage/geometry/triangulation/__init__.py
446+
src/sage/geometry/polyhedron/modules/__init__.py
447+
src/sage/geometry/polyhedron/__init__.py
448+
src/sage/geometry/polyhedron/combinatorial_polyhedron/__init__.py
449+
src/sage/geometry/__init__.py
450+
src/sage/geometry/hyperbolic_space/__init__.py
451+
src/sage/sets/__init__.py
452+
src/sage/probability/__init__.py
453+
src/sage/numerical/backends/__init__.py
454+
src/sage/numerical/__init__.py
455+
src/sage/data_structures/__init__.py
456+
src/sage/graphs/graph_decompositions/__init__.py
457+
src/sage/graphs/generators/__init__.py
458+
src/sage/graphs/__init__.py
459+
src/sage/graphs/base/__init__.py
460+
src/sage/databases/__init__.py
461+
src/sage/stats/hmm/__init__.py
462+
src/sage/stats/__init__.py
463+
src/sage/stats/distributions/__init__.py
464+
src/sage/libs/gap/__init__.py
465+
src/sage/libs/mpfi/__init__.py
466+
src/sage/libs/__init__.py
467+
src/sage/libs/polybori/__init__.py
468+
src/sage/libs/mpfr/__init__.py
469+
src/sage/libs/mpc/__init__.py
470+
src/sage/calculus/transforms/__init__.py
471+
src/sage/calculus/__init__.py

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
"pkgs/sage-conf_pypi/sage_root": true,
1616
"pkgs/sage-docbuild/sage_docbuild": true,
1717
"pkgs/sage-setup/sage_setup": true,
18-
"pkgs/sagemath-*/sage": true
18+
"pkgs/sagemath-*/sage": true,
19+
"pkgs/sagemath-*/sage_setup": true
1920
},
2021
"python.testing.pytestEnabled": true,
2122
"python.testing.pytestArgs": [

bootstrap-conda

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,9 @@ echo >&2 $0:$LINENO: generate conda environment files
9999
) > environment-template.yml
100100
(
101101
sed 's/name: sage-build/name: sage/' environment-template.yml
102+
echo " - meson"
103+
echo " - meson-python"
104+
echo " - pytest"
102105
echo " # Additional packages providing all dependencies for the Sage library"
103106
for pkg in $SAGELIB_SYSTEM_PACKAGES; do
104107
echo " - $pkg"

build/pkgs/sage_setup/dependencies

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cython pkgconfig jinja2 $(SAGE_ROOT)/pkgs/sage-setup/sage_setup/*.py $(SAGE_ROOT)/pkgs/sage-setup/sage_setup/autogen/interpreters/specs/*.py $(SAGE_ROOT)/pkgs/sage-setup/sage_setup/command/*.py | $(PYTHON_TOOLCHAIN) $(PYTHON)
1+
cython pkgconfig jinja2 $(SAGE_ROOT)/pkgs/sage-setup/sage_setup/*.py $(SAGE_ROOT)/pkgs/sage-setup/sage_setup/autogen/interpreters/internal/specs/*.py $(SAGE_ROOT)/pkgs/sage-setup/sage_setup/command/*.py | $(PYTHON_TOOLCHAIN) $(PYTHON)
22

33
----------
44
All lines of this file are ignored except the first.

0 commit comments

Comments
 (0)