diff --git a/.github/workflows/ci-meson.yml b/.github/workflows/ci-meson.yml index 35e88d561ed..b2b78b64276 100644 --- a/.github/workflows/ci-meson.yml +++ b/.github/workflows/ci-meson.yml @@ -25,7 +25,7 @@ jobs: strategy: fail-fast: false matrix: - os: ['ubuntu', 'macos'] + os: ['ubuntu', 'macos', 'windows'] python: ['3.11', '3.12'] tests: ['all'] editable: @@ -39,6 +39,9 @@ jobs: python: 3.12 editable: true tests: 'all' + - os: windows + python: '3.13' + tests: 'all' steps: - uses: actions/checkout@v4 @@ -66,6 +69,17 @@ jobs: path: ~/conda_pkgs_dir key: ${{ runner.os }}-conda-${{ hashFiles('environment-3.11-linux.yml') }} + + - name: Setup MSVC environment + if: runner.os == 'windows' + uses: ilammy/msvc-dev-cmd@v1 + + - name: Remove Git link.exe + if: runner.os == 'windows' + # It conflicts with the vs linker + # So we delete it, following the advice on https://github.com/ilammy/msvc-dev-cmd?tab=readme-ov-file#name-conflicts-with-shell-bash + run: rm -f "C:/Program Files/Git/usr/bin/link.exe" + shell: bash - name: Compiler cache uses: hendrikmuhs/ccache-action@v1.2 @@ -76,12 +90,14 @@ jobs: uses: conda-incubator/setup-miniconda@v3 with: python-version: ${{ matrix.python }} - miniforge-version: latest + # Disabled for now due to + # https://github.com/conda-incubator/setup-miniconda/issues/379 + # miniforge-version: latest use-mamba: true channels: conda-forge channel-priority: true activate-environment: sage-dev - environment-file: environment-${{ matrix.python }}-${{ startsWith(matrix.os, 'macos') && (startsWith(runner.arch, 'ARM') && 'macos' || 'macos-x86_64') || 'linux' }}.yml + environment-file: environment-${{ matrix.python }}-${{ startsWith(matrix.os, 'macos') && (startsWith(runner.arch, 'ARM') && 'macos' || 'macos-x86_64') || startsWith(matrix.os, 'ubuntu') && 'linux' || 'win' }}.yml - name: Print Conda environment shell: bash -l {0} @@ -92,9 +108,15 @@ jobs: - name: Build shell: bash -l {0} run: | - export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" - export CC="ccache $CC" - export CXX="ccache $CXX" + if [[ "$RUNNER_OS" != "Windows" ]]; then + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" + export CC="ccache $CC" + export CXX="ccache $CXX" + else + export LIB="$LIB;$CONDA_PREFIX\\Library\\lib" + export INCLUDE="$INCLUDE;$CONDA_PREFIX\\Library\\include" + fi + # Use --no-deps and pip check below to verify that all necessary dependencies are installed via conda pip install --no-build-isolation --no-deps --config-settings=builddir=builddir ${{ matrix.editable && '--editable' || '' }} . -v @@ -104,7 +126,7 @@ jobs: shell: bash -l {0} if: matrix.tests == 'all' run: | - python3 tools/update-meson.py + python tools/update-meson.py if ! ./tools/test-git-no-uncommitted-changes; then git add --intent-to-add . # also show newly created files in git diff git status @@ -123,7 +145,12 @@ jobs: # If editable then deleting the directory will cause sage to detect rebuild, which will cause ninja to fail # so we don't delete the directory in this case ${{ matrix.editable && 'true' || 'rm -R ./src/sage_setup/' }} - ./sage -t ${{ matrix.tests == 'all' && '--all' || '--new --long' }} -p4 --format github + if [[ "$RUNNER_OS" == "Windows" ]]; then + # Ignore errors on Windows, for now + pytest --doctest-ignore-import-errors --doctest -rfEs -s src || true + else + ./sage -t ${{ matrix.tests == 'all' && '--all' || '--new --long' }} -p4 --format github + fi - name: Check that all modules can be imported shell: bash -l {0} diff --git a/.gitignore b/.gitignore index 0424cf2d961..9533c36b731 100644 --- a/.gitignore +++ b/.gitignore @@ -305,6 +305,11 @@ builddir-* build-install build/cp* +# Meson subprojects +/subprojects/* +!/subprojects/*.wrap +!/subprojects/packagefiles + # Meson temporary files subprojects/wrapdb.json src/sage/interfaces/__init__.py diff --git a/.vscode/settings.json b/.vscode/settings.json index 9ee82ba8ec1..996702fcf5a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,7 +2,6 @@ // This settings file is not ignored by git. "files.exclude": { "**/__pycache__": true, - "src/**/*.cpp": true, "src/**/*.so": true }, "search.exclude": { diff --git a/environment-3.10-win.yml b/environment-3.10-win.yml new file mode 100644 index 00000000000..8df7318623a --- /dev/null +++ b/environment-3.10-win.yml @@ -0,0 +1,283 @@ +name: sage-dev +# Generated by conda-lock. +# platform: win-64 +# input_hash: ce1d33261ea050a378b1ec514c2b4fd5b96fffc879766a3ae810cb6d2b9dc26e + +channels: + - conda-forge +dependencies: + - _openmp_mutex=4.5=2_gnu + - alabaster=1.0.0=pyhd8ed1ab_1 + - annotated-types=0.7.0=pyhd8ed1ab_1 + - appdirs=1.4.4=pyhd8ed1ab_1 + - asttokens=3.0.0=pyhd8ed1ab_1 + - babel=2.16.0=pyhd8ed1ab_1 + - backports=1.0=pyhd8ed1ab_5 + - backports.tarfile=1.2.0=pyhd8ed1ab_1 + - beautifulsoup4=4.12.3=pyha770c72_1 + - blas=2.126=openblas + - blas-devel=3.9.0=26_win64_openblas + - boost-cpp=1.85.0=ha5ead02_4 + - brotli=1.1.0=h2466b09_2 + - brotli-bin=1.1.0=h2466b09_2 + - brotli-python=1.1.0=py310h9e98ed7_2 + - bzip2=1.0.8=h2466b09_7 + - ca-certificates=2024.12.14=h56e8100_0 + - cachecontrol=0.14.2=pyha770c72_0 + - cachecontrol-with-filecache=0.14.2=pyhd8ed1ab_0 + - cachy=0.3.0=pyhd8ed1ab_2 + - cairo=1.18.2=h5782bbf_1 + - certifi=2024.12.14=pyhd8ed1ab_0 + - charset-normalizer=3.4.1=pyhd8ed1ab_0 + - clang=19.1.7=default_hec7ea82_1 + - clang-19=19.1.7=default_hec7ea82_1 + - click=8.1.8=pyh7428d3b_0 + - click-default-group=1.2.4=pyhd8ed1ab_1 + - clikit=0.6.2=pyhd8ed1ab_3 + - colorama=0.4.6=pyhd8ed1ab_1 + - comm=0.2.2=pyhd8ed1ab_1 + - compiler-rt=19.1.7=hc790b64_0 + - compiler-rt_win-64=19.1.7=hc790b64_0 + - conda-lock=2.5.7=pyhd8ed1ab_1 + - conda-souschef=2.2.3=pyhd8ed1ab_0 + - contourpy=1.3.1=py310hc19bc0b_0 + - conway-polynomials=0.10=pyhd8ed1ab_0 + - coverage=7.6.10=py310h38315fa_0 + - cpython=3.10.16=py310hd8ed1ab_1 + - crashtest=0.4.1=pyhd8ed1ab_1 + - cycler=0.12.1=pyhd8ed1ab_1 + - cysignals=1.12.3=py310h9e98ed7_0 + - cython=3.0.11=py310he320566_3 + - debugpy=1.8.12=py310h9e98ed7_0 + - decorator=5.1.1=pyhd8ed1ab_1 + - distlib=0.3.9=pyhd8ed1ab_1 + - docutils=0.21.2=pyhd8ed1ab_1 + - double-conversion=3.3.0=h63175ca_0 + - ensureconda=1.4.4=pyhd8ed1ab_1 + - exceptiongroup=1.2.2=pyhd8ed1ab_1 + - execnet=2.1.1=pyhd8ed1ab_1 + - executing=2.1.0=pyhd8ed1ab_1 + - expat=2.6.4=he0c23c2_0 + - filelock=3.17.0=pyhd8ed1ab_0 + - flang=19.1.7=hbeecb71_0 + - flang_impl_win-64=19.1.7=h719f0c7_0 + - flang_win-64=19.1.7=h719f0c7_0 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_3 + - fontconfig=2.15.0=h765892d_1 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.55.6=py310h38315fa_0 + - fortran-compiler=1.9.0=h95e3450_0 + - freetype=2.12.1=hdaf720e_2 + - furo=2024.8.6=pyhd8ed1ab_2 + - gitdb=4.0.12=pyhd8ed1ab_0 + - gitpython=3.1.44=pyhff2d567_0 + - glpk=5.0=h8ffe710_0 + - gmp=6.3.0=hfeafd45_2 + - gmpy2=2.1.5=py310hff35a3b_3 + - graphite2=1.3.13=h63175ca_1003 + - grayskull=2.7.6=pyhd8ed1ab_0 + - gsl=2.8=h5b8d9c4_1 + - harfbuzz=10.2.0=h885c0d4_0 + - html5lib=1.1=pyhd8ed1ab_2 + - icu=75.1=he0c23c2_0 + - idna=3.10=pyhd8ed1ab_1 + - imagesize=1.4.1=pyhd8ed1ab_0 + - importlib-metadata=8.6.1=pyha770c72_0 + - importlib_resources=6.5.2=pyhd8ed1ab_0 + - iniconfig=2.0.0=pyhd8ed1ab_1 + - ipykernel=6.29.5=pyh4bbf305_0 + - ipython=8.31.0=pyh7428d3b_0 + - ipywidgets=8.1.5=pyhd8ed1ab_1 + - jaraco.classes=3.4.0=pyhd8ed1ab_2 + - jaraco.context=6.0.1=pyhd8ed1ab_0 + - jaraco.functools=4.1.0=pyhd8ed1ab_0 + - jedi=0.19.2=pyhd8ed1ab_1 + - jinja2=3.1.5=pyhd8ed1ab_0 + - jupyter_client=8.6.3=pyhd8ed1ab_1 + - jupyter_core=5.7.2=pyh5737063_1 + - jupyterlab_widgets=3.0.13=pyhd8ed1ab_1 + - keyring=25.6.0=pyh7428d3b_0 + - kiwisolver=1.4.7=py310hc19bc0b_0 + - krb5=1.21.3=hdf4eb48_0 + - lcms2=2.16=h67d730c_0 + - lerc=4.0.0=h63175ca_0 + - libblas=3.9.0=26_win64_openblas + - libboost=1.85.0=h444863b_4 + - libboost-devel=1.85.0=h91493d7_4 + - libboost-headers=1.85.0=h57928b3_4 + - libbrotlicommon=1.1.0=h2466b09_2 + - libbrotlidec=1.1.0=h2466b09_2 + - libbrotlienc=1.1.0=h2466b09_2 + - libcblas=3.9.0=26_win64_openblas + - libclang13=19.1.7=default_ha5278ca_1 + - libdeflate=1.23=h9062f6e_0 + - libexpat=2.6.4=he0c23c2_0 + - libffi=3.4.2=h8ffe710_5 + - libflang=19.1.7=he0c23c2_0 + - libflint=3.1.3.1=h37a7fb1_101 + - libgcc=14.2.0=h1383e82_1 + - libgd=2.3.3=h7208af6_11 + - libglib=2.82.2=h7025463_1 + - libgomp=14.2.0=h1383e82_1 + - libiconv=1.17=hcfcfb64_2 + - libintl=0.22.5=h5728263_3 + - libjpeg-turbo=3.0.0=hcfcfb64_1 + - liblapack=3.9.0=26_win64_openblas + - liblapacke=3.9.0=26_win64_openblas + - libllvm19=19.1.7=h3089188_1 + - liblzma=5.6.3=h2466b09_1 + - liblzma-devel=5.6.3=h2466b09_1 + - libopenblas=0.3.28=pthreads_head3c61_1 + - libpng=1.6.46=had7236b_0 + - libsodium=1.0.20=hc70643c_0 + - libsqlite=3.48.0=h67fdade_1 + - libtiff=4.7.0=h797046b_3 + - libwebp-base=1.5.0=h3b0e114_0 + - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - libxcb=1.17.0=h0e4246c_0 + - libxml2=2.13.5=he286e8c_1 + - libxslt=1.1.39=h3df6e99_0 + - libzlib=1.3.1=h2466b09_2 + - lld=19.1.7=hd91d51b_0 + - llvm-tools=19.1.7=h2a44499_1 + - m4ri=20240729=h4afdad8_1 + - markupsafe=3.0.2=py310h38315fa_1 + - matplotlib=3.10.0=py310h5588dad_0 + - matplotlib-base=3.10.0=py310h37e0a56_0 + - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - memory-allocator=0.1.3=py310ha8f682b_1 + - meson=1.7.0=pyhd8ed1ab_0 + - meson-python=0.17.1=pyh70fd9c4_1 + - more-itertools=10.6.0=pyhd8ed1ab_0 + - mpc=1.3.1=h72bc38f_1 + - mpfr=4.2.1=hbc20e70_3 + - mpmath=1.3.0=pyhd8ed1ab_1 + - msgpack-python=1.1.0=py310hc19bc0b_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - nauty=2.6.11=h2fa13f4_1 + - nest-asyncio=1.6.0=pyhd8ed1ab_1 + - networkx=3.4.2=pyh267e887_2 + - ninja=1.12.1=hc790b64_0 + - numpy=2.2.2=py310h4987827_0 + - openblas=0.3.28=pthreads_h4a7f399_1 + - openjpeg=2.5.3=h4d64b90_0 + - openssl=3.4.0=ha4e3fda_1 + - packaging=24.2=pyhd8ed1ab_2 + - pari-elldata=0.0.20161017=0 + - pari-galdata=0.0.20180411=0 + - pari-seadata=0.0.20090618=0 + - pari-seadata-small=0.0.20090618=0 + - parso=0.8.4=pyhd8ed1ab_1 + - pastel=0.2.1=pyhd8ed1ab_0 + - pcre2=10.44=h3d7b363_2 + - pexpect=4.9.0=pyhd8ed1ab_1 + - pickleshare=0.7.5=pyhd8ed1ab_1004 + - pillow=11.1.0=py310h9595edc_0 + - pip=25.0=pyh8b19718_0 + - pixman=0.44.2=had0cd8c_0 + - pkg-config=0.29.2=h88c491f_1009 + - pkgconfig=1.5.5=pyhd8ed1ab_5 + - pkginfo=1.12.0=pyhd8ed1ab_1 + - planarity=3.0.2.0=hcfcfb64_0 + - platformdirs=4.3.6=pyhd8ed1ab_1 + - pluggy=1.5.0=pyhd8ed1ab_1 + - primesieve=12.6=he0c23c2_0 + - progressbar2=4.5.0=pyhd8ed1ab_1 + - prompt-toolkit=3.0.50=pyha770c72_0 + - psutil=6.1.1=py310ha8f682b_0 + - pthread-stubs=0.4=h0e40799_1002 + - ptyprocess=0.7.0=pyhd8ed1ab_1 + - pure_eval=0.2.3=pyhd8ed1ab_1 + - pydantic=2.10.6=pyh3cfb1c2_0 + - pydantic-core=2.27.2=py310hc226416_0 + - pygments=2.19.1=pyhd8ed1ab_0 + - pylev=1.4.0=pyhd8ed1ab_0 + - pyparsing=3.2.1=pyhd8ed1ab_0 + - pyproject-metadata=0.9.0=pyhd8ed1ab_1 + - pyside6=6.8.1=py310h60c6385_0 + - pysocks=1.7.1=pyh09c184e_7 + - pytest=8.3.4=pyhd8ed1ab_1 + - pytest-xdist=3.6.1=pyhd8ed1ab_1 + - python=3.10.16=h37870fc_1_cpython + - python-dateutil=2.9.0.post0=pyhff2d567_1 + - python-utils=3.9.1=pyhff2d567_1 + - python_abi=3.10=5_cp310 + - pytz=2024.2=pyhd8ed1ab_1 + - pywin32=307=py310h9e98ed7_3 + - pywin32-ctypes=0.2.3=py310h5588dad_1 + - pyyaml=6.0.2=py310h38315fa_2 + - pyzmq=26.2.0=py310h656833d_3 + - qhull=2020.2=hc790b64_5 + - qt6-main=6.8.1=h1259614_2 + - rapidfuzz=3.11.0=py310h9e98ed7_0 + - requests=2.32.3=pyhd8ed1ab_1 + - ruamel.yaml=0.18.10=py310ha8f682b_0 + - ruamel.yaml.clib=0.2.8=py310ha8f682b_1 + - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 + - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 + - sagemath-db-graphs=20210214=hd8ed1ab_0 + - sagemath-db-polytopes=20170220=1 + - scipy=1.15.1=py310h164493e_0 + - setuptools=75.8.0=pyhff2d567_0 + - six=1.17.0=pyhd8ed1ab_0 + - smmap=5.0.0=pyhd8ed1ab_0 + - snowballstemmer=2.2.0=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - sphinx=8.1.3=pyhd8ed1ab_1 + - sphinx-basic-ng=1.0.0b2=pyhd8ed1ab_3 + - sphinx-inline-tabs=2023.4.21=pyhd8ed1ab_1 + - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 + - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 + - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 + - sqlite=3.48.0=h2466b09_1 + - stack_data=0.6.3=pyhd8ed1ab_1 + - stdlib-list=0.11.0=pyhd8ed1ab_1 + - symmetrica=3.0.1=h1537add_0 + - sympy=1.13.3=pyh04b8f61_5 + - tk=8.6.13=h5226925_1 + - toml=0.10.2=pyhd8ed1ab_1 + - tomli=2.2.1=pyhd8ed1ab_1 + - tomli-w=1.2.0=pyhd8ed1ab_0 + - tomlkit=0.13.2=pyha770c72_1 + - toolz=0.12.1=pyhd8ed1ab_0 + - tornado=6.4.2=py310ha8f682b_0 + - traitlets=5.14.3=pyhd8ed1ab_1 + - typing-extensions=4.12.2=hd8ed1ab_1 + - typing_extensions=4.12.2=pyha770c72_1 + - tzdata=2025a=h78e105d_0 + - ucrt=10.0.22621.0=h57928b3_1 + - unicodedata2=16.0.0=py310ha8f682b_0 + - urllib3=1.26.19=pyhd8ed1ab_0 + - vc=14.3=h5fd82a7_24 + - vc14_runtime=14.42.34433=h6356254_24 + - virtualenv=20.29.1=pyhd8ed1ab_0 + - vs2015_runtime=14.42.34433=hfef2bbc_24 + - vs2022_win-64=19.42.34433=hd920555_24 + - vswhere=3.1.7=h57928b3_0 + - wcwidth=0.2.13=pyhd8ed1ab_1 + - webencodings=0.5.1=pyhd8ed1ab_3 + - wheel=0.45.1=pyhd8ed1ab_1 + - widgetsnbextension=4.0.13=pyhd8ed1ab_1 + - win_inet_pton=1.1.0=pyh7428d3b_8 + - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - xorg-libice=1.1.2=h0e40799_0 + - xorg-libsm=1.2.5=h0e40799_0 + - xorg-libx11=1.8.10=hf48077a_1 + - xorg-libxau=1.0.12=h0e40799_0 + - xorg-libxdmcp=1.1.5=h0e40799_0 + - xorg-libxext=1.3.6=h0e40799_0 + - xorg-libxpm=3.5.17=h0e40799_1 + - xorg-libxt=1.3.1=h0e40799_0 + - xz=5.6.3=h208afaa_1 + - xz-tools=5.6.3=h2466b09_1 + - yaml=0.2.5=h8ffe710_2 + - zeromq=4.3.5=ha9f60a1_7 + - zipp=3.21.0=pyhd8ed1ab_1 + - zstd=1.5.6=h0ea2cb4_0 diff --git a/environment-3.11-win.yml b/environment-3.11-win.yml new file mode 100644 index 00000000000..d65552a4775 --- /dev/null +++ b/environment-3.11-win.yml @@ -0,0 +1,288 @@ +name: sage-dev +# Generated by conda-lock. +# platform: win-64 +# input_hash: 218e9208ac840e4a20ba03a9a817b9ba271cb930712f5f486faba96f122d380a + +channels: + - conda-forge +dependencies: + - _openmp_mutex=4.5=2_gnu + - alabaster=1.0.0=pyhd8ed1ab_1 + - annotated-types=0.7.0=pyhd8ed1ab_1 + - appdirs=1.4.4=pyhd8ed1ab_1 + - asttokens=3.0.0=pyhd8ed1ab_1 + - babel=2.17.0=pyhd8ed1ab_0 + - backports=1.0=pyhd8ed1ab_5 + - backports.tarfile=1.2.0=pyhd8ed1ab_1 + - beautifulsoup4=4.13.3=pyha770c72_0 + - blas=2.131=openblas + - blas-devel=3.9.0=31_hc0f8095_openblas + - boost-cpp=1.85.0=ha5ead02_4 + - brotli=1.1.0=h2466b09_2 + - brotli-bin=1.1.0=h2466b09_2 + - brotli-python=1.1.0=py311hda3d55a_2 + - bzip2=1.0.8=h2466b09_7 + - ca-certificates=2025.1.31=h56e8100_0 + - cachecontrol=0.14.2=pyha770c72_0 + - cachecontrol-with-filecache=0.14.2=pyhd8ed1ab_0 + - cachy=0.3.0=pyhd8ed1ab_2 + - cairo=1.18.2=h5782bbf_1 + - certifi=2025.1.31=pyhd8ed1ab_0 + - charset-normalizer=3.4.1=pyhd8ed1ab_0 + - clang=19.1.7=default_hec7ea82_1 + - clang-19=19.1.7=default_hec7ea82_1 + - click=8.1.8=pyh7428d3b_0 + - click-default-group=1.2.4=pyhd8ed1ab_1 + - clikit=0.6.2=pyhd8ed1ab_3 + - colorama=0.4.6=pyhd8ed1ab_1 + - comm=0.2.2=pyhd8ed1ab_1 + - compiler-rt=19.1.7=hc790b64_0 + - compiler-rt_win-64=19.1.7=hc790b64_0 + - conda-lock=2.5.7=pyhd8ed1ab_1 + - conda-souschef=2.2.3=pyhd8ed1ab_0 + - contourpy=1.3.1=py311h3257749_0 + - conway-polynomials=0.10=pyhd8ed1ab_0 + - coverage=7.6.12=py311h5082efb_0 + - cpython=3.11.11=py311hd8ed1ab_2 + - crashtest=0.4.1=pyhd8ed1ab_1 + - cycler=0.12.1=pyhd8ed1ab_1 + - cysignals=1.12.3=py311hda3d55a_0 + - cython=3.0.12=py311h34f20a9_0 + - debugpy=1.8.13=py311hda3d55a_0 + - decorator=5.2.1=pyhd8ed1ab_0 + - distlib=0.3.9=pyhd8ed1ab_1 + - docutils=0.21.2=pyhd8ed1ab_1 + - double-conversion=3.3.1=he0c23c2_0 + - ensureconda=1.4.4=pyhd8ed1ab_1 + - exceptiongroup=1.2.2=pyhd8ed1ab_1 + - execnet=2.1.1=pyhd8ed1ab_1 + - executing=2.1.0=pyhd8ed1ab_1 + - expat=2.6.4=he0c23c2_0 + - filelock=3.17.0=pyhd8ed1ab_0 + - flang=19.1.7=hbeecb71_0 + - flang_impl_win-64=19.1.7=h719f0c7_0 + - flang_win-64=19.1.7=h719f0c7_0 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_3 + - fontconfig=2.15.0=h765892d_1 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.56.0=py311h5082efb_0 + - fortran-compiler=1.9.0=h95e3450_0 + - freetype=2.12.1=hdaf720e_2 + - furo=2024.8.6=pyhd8ed1ab_2 + - gitdb=4.0.12=pyhd8ed1ab_0 + - gitpython=3.1.44=pyhff2d567_0 + - glpk=5.0=h8ffe710_0 + - gmp=6.3.0=hfeafd45_2 + - gmpy2=2.1.5=py311hb8385e8_3 + - graphite2=1.3.13=h63175ca_1003 + - grayskull=2.7.6=pyhd8ed1ab_0 + - gsl=2.8=h5b8d9c4_1 + - harfbuzz=10.4.0=h9e37d49_0 + - html5lib=1.1=pyhd8ed1ab_2 + - icu=75.1=he0c23c2_0 + - idna=3.10=pyhd8ed1ab_1 + - imagesize=1.4.1=pyhd8ed1ab_0 + - importlib-metadata=8.6.1=pyha770c72_0 + - importlib_resources=6.5.2=pyhd8ed1ab_0 + - iniconfig=2.0.0=pyhd8ed1ab_1 + - ipykernel=6.29.5=pyh4bbf305_0 + - ipython=9.0.0=pyhca29cf9_1 + - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 + - ipywidgets=8.1.5=pyhd8ed1ab_1 + - jaraco.classes=3.4.0=pyhd8ed1ab_2 + - jaraco.context=6.0.1=pyhd8ed1ab_0 + - jaraco.functools=4.1.0=pyhd8ed1ab_0 + - jedi=0.19.2=pyhd8ed1ab_1 + - jinja2=3.1.6=pyhd8ed1ab_0 + - jupyter_client=8.6.3=pyhd8ed1ab_1 + - jupyter_core=5.7.2=pyh5737063_1 + - jupyterlab_widgets=3.0.13=pyhd8ed1ab_1 + - keyring=25.6.0=pyh7428d3b_0 + - kiwisolver=1.4.7=py311h3257749_0 + - krb5=1.21.3=hdf4eb48_0 + - lcms2=2.17=hbcf6048_0 + - lerc=4.0.0=h63175ca_0 + - libblas=3.9.0=31_h11dc60a_openblas + - libboost=1.85.0=h444863b_4 + - libboost-devel=1.85.0=h91493d7_4 + - libboost-headers=1.85.0=h57928b3_4 + - libbrotlicommon=1.1.0=h2466b09_2 + - libbrotlidec=1.1.0=h2466b09_2 + - libbrotlienc=1.1.0=h2466b09_2 + - libcblas=3.9.0=31_h9bd4c3b_openblas + - libclang13=19.1.7=default_ha5278ca_1 + - libdeflate=1.23=h9062f6e_0 + - libexpat=2.6.4=he0c23c2_0 + - libffi=3.4.6=h537db12_0 + - libflang=19.1.7=he0c23c2_0 + - libflint=3.1.3.1=h37a7fb1_101 + - libgcc=14.2.0=h1383e82_2 + - libgd=2.3.3=h7208af6_11 + - libglib=2.82.2=h7025463_1 + - libgomp=14.2.0=h1383e82_2 + - libiconv=1.18=h135ad9c_1 + - libintl=0.22.5=h5728263_3 + - libjpeg-turbo=3.0.0=hcfcfb64_1 + - liblapack=3.9.0=31_h2526c6b_openblas + - liblapacke=3.9.0=31_h1d0e49f_openblas + - libllvm19=19.1.7=h3089188_1 + - liblzma=5.6.4=h2466b09_0 + - liblzma-devel=5.6.4=h2466b09_0 + - libopenblas=0.3.29=pthreads_head3c61_0 + - libpng=1.6.47=had7236b_0 + - libsodium=1.0.20=hc70643c_0 + - libsqlite=3.49.1=h67fdade_1 + - libtiff=4.7.0=h797046b_3 + - libwebp-base=1.5.0=h3b0e114_0 + - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - libxcb=1.17.0=h0e4246c_0 + - libxml2=2.13.6=he286e8c_0 + - libxslt=1.1.39=h3df6e99_0 + - libzlib=1.3.1=h2466b09_2 + - lld=19.1.7=hd91d51b_0 + - llvm-tools=19.1.7=h2a44499_1 + - m4ri=20240729=h4afdad8_1 + - markupsafe=3.0.2=py311h5082efb_1 + - matplotlib=3.10.1=py311h1ea47a8_0 + - matplotlib-base=3.10.1=py311h8f1b1e4_0 + - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - memory-allocator=0.1.3=py311he736701_1 + - meson=1.7.0=pyhd8ed1ab_0 + - meson-python=0.17.1=pyh70fd9c4_1 + - more-itertools=10.6.0=pyhd8ed1ab_0 + - mpc=1.3.1=h72bc38f_1 + - mpfr=4.2.1=hbc20e70_3 + - mpmath=1.3.0=pyhd8ed1ab_1 + - msgpack-python=1.1.0=py311h3257749_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - nauty=2.6.11=h2fa13f4_1 + - nest-asyncio=1.6.0=pyhd8ed1ab_1 + - networkx=3.4.2=pyh267e887_2 + - ninja=1.12.1=hc790b64_0 + - numpy=2.2.3=py311h5e411d1_0 + - openblas=0.3.29=pthreads_h4a7f399_0 + - openjpeg=2.5.3=h4d64b90_0 + - openssl=3.4.1=ha4e3fda_0 + - packaging=24.2=pyhd8ed1ab_2 + - pari=2.17.1=h7f476ce_2_single + - pari-elldata=0.0.20161017=0 + - pari-galdata=0.0.20180411=0 + - pari-seadata=0.0.20090618=0 + - pari-seadata-small=0.0.20090618=0 + - parso=0.8.4=pyhd8ed1ab_1 + - pastel=0.2.1=pyhd8ed1ab_0 + - pcre2=10.44=h3d7b363_2 + - perl=5.32.1.1=7_h57928b3_strawberry + - pexpect=4.9.0=pyhd8ed1ab_1 + - pickleshare=0.7.5=pyhd8ed1ab_1004 + - pillow=11.1.0=py311h43e43bb_0 + - pip=25.0.1=pyh8b19718_0 + - pixman=0.44.2=had0cd8c_0 + - pkg-config=0.29.2=h88c491f_1009 + - pkgconfig=1.5.5=pyhd8ed1ab_5 + - pkginfo=1.12.1.2=pyhd8ed1ab_0 + - planarity=3.0.2.0=hcfcfb64_0 + - platformdirs=4.3.6=pyhd8ed1ab_1 + - pluggy=1.5.0=pyhd8ed1ab_1 + - primesieve=12.6=he0c23c2_0 + - progressbar2=4.5.0=pyhd8ed1ab_1 + - prompt-toolkit=3.0.50=pyha770c72_0 + - psutil=7.0.0=py311he736701_0 + - pthread-stubs=0.4=h0e40799_1002 + - ptyprocess=0.7.0=pyhd8ed1ab_1 + - pure_eval=0.2.3=pyhd8ed1ab_1 + - pydantic=2.10.6=pyh3cfb1c2_0 + - pydantic-core=2.27.2=py311h533ab2d_0 + - pygments=2.19.1=pyhd8ed1ab_0 + - pylev=1.4.0=pyhd8ed1ab_0 + - pyparsing=3.2.1=pyhd8ed1ab_0 + - pyproject-metadata=0.9.0=pyhd8ed1ab_1 + - pyside6=6.8.2=py311h4238720_1 + - pysocks=1.7.1=pyh09c184e_7 + - pytest=8.3.5=pyhd8ed1ab_0 + - pytest-xdist=3.6.1=pyhd8ed1ab_1 + - python=3.11.11=h3f84c4b_2_cpython + - python-dateutil=2.9.0.post0=pyhff2d567_1 + - python-utils=3.9.1=pyhff2d567_1 + - python_abi=3.11=5_cp311 + - pytz=2025.1=pyhd8ed1ab_0 + - pywin32=307=py311hda3d55a_3 + - pywin32-ctypes=0.2.3=py311h1ea47a8_1 + - pyyaml=6.0.2=py311h5082efb_2 + - pyzmq=26.2.1=py311h484c95c_0 + - qhull=2020.2=hc790b64_5 + - qt6-main=6.8.2=h1259614_0 + - rapidfuzz=3.12.2=py311hda3d55a_0 + - requests=2.32.3=pyhd8ed1ab_1 + - roman-numerals-py=3.1.0=pyhd8ed1ab_0 + - ruamel.yaml=0.18.10=py311he736701_0 + - ruamel.yaml.clib=0.2.8=py311he736701_1 + - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 + - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 + - sagemath-db-graphs=20210214=hd8ed1ab_0 + - sagemath-db-polytopes=20170220=1 + - scipy=1.15.2=py311h99d06ae_0 + - setuptools=75.8.2=pyhff2d567_0 + - six=1.17.0=pyhd8ed1ab_0 + - smmap=5.0.2=pyhd8ed1ab_0 + - snowballstemmer=2.2.0=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - sphinx=8.2.3=pyhd8ed1ab_0 + - sphinx-basic-ng=1.0.0b2=pyhd8ed1ab_3 + - sphinx-inline-tabs=2023.4.21=pyhd8ed1ab_1 + - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 + - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 + - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 + - sqlite=3.49.1=h2466b09_1 + - stack_data=0.6.3=pyhd8ed1ab_1 + - stdlib-list=0.11.1=pyhd8ed1ab_0 + - symmetrica=3.0.1=h1537add_0 + - sympy=1.13.3=pyh04b8f61_5 + - tk=8.6.13=h5226925_1 + - toml=0.10.2=pyhd8ed1ab_1 + - tomli=2.2.1=pyhd8ed1ab_1 + - tomli-w=1.2.0=pyhd8ed1ab_0 + - tomlkit=0.13.2=pyha770c72_1 + - toolz=0.12.1=pyhd8ed1ab_0 + - tornado=6.4.2=py311he736701_0 + - traitlets=5.14.3=pyhd8ed1ab_1 + - typing-extensions=4.12.2=hd8ed1ab_1 + - typing_extensions=4.12.2=pyha770c72_1 + - tzdata=2025a=h78e105d_0 + - ucrt=10.0.22621.0=h57928b3_1 + - unicodedata2=16.0.0=py311he736701_0 + - urllib3=1.26.19=pyhd8ed1ab_0 + - vc=14.3=hbf610ac_24 + - vc14_runtime=14.42.34438=hfd919c2_24 + - virtualenv=20.29.3=pyhd8ed1ab_0 + - vs2015_runtime=14.42.34438=h7142326_24 + - vs2022_win-64=19.43.34604=h070f0e0_24 + - vswhere=3.1.7=h57928b3_0 + - wcwidth=0.2.13=pyhd8ed1ab_1 + - webencodings=0.5.1=pyhd8ed1ab_3 + - wheel=0.45.1=pyhd8ed1ab_1 + - widgetsnbextension=4.0.13=pyhd8ed1ab_1 + - win_inet_pton=1.1.0=pyh7428d3b_8 + - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - xorg-libice=1.1.2=h0e40799_0 + - xorg-libsm=1.2.5=h0e40799_0 + - xorg-libx11=1.8.11=hf48077a_0 + - xorg-libxau=1.0.12=h0e40799_0 + - xorg-libxdmcp=1.1.5=h0e40799_0 + - xorg-libxext=1.3.6=h0e40799_0 + - xorg-libxpm=3.5.17=h0e40799_1 + - xorg-libxt=1.3.1=h0e40799_0 + - xz=5.6.4=h208afaa_0 + - xz-tools=5.6.4=h2466b09_0 + - yaml=0.2.5=h8ffe710_2 + - zeromq=4.3.5=ha9f60a1_7 + - zipp=3.21.0=pyhd8ed1ab_1 + - zlib=1.3.1=h2466b09_2 + - zstd=1.5.7=hbeecb71_1 diff --git a/environment-3.12-win.yml b/environment-3.12-win.yml new file mode 100644 index 00000000000..58586b10e72 --- /dev/null +++ b/environment-3.12-win.yml @@ -0,0 +1,288 @@ +name: sage-dev +# Generated by conda-lock. +# platform: win-64 +# input_hash: fd7eb2467443bdbfae1b8af8e8dba7149b118dab720ef5a01d9355796c51febe + +channels: + - conda-forge +dependencies: + - _openmp_mutex=4.5=2_gnu + - alabaster=1.0.0=pyhd8ed1ab_1 + - annotated-types=0.7.0=pyhd8ed1ab_1 + - appdirs=1.4.4=pyhd8ed1ab_1 + - asttokens=3.0.0=pyhd8ed1ab_1 + - babel=2.17.0=pyhd8ed1ab_0 + - backports=1.0=pyhd8ed1ab_5 + - backports.tarfile=1.2.0=pyhd8ed1ab_1 + - beautifulsoup4=4.13.3=pyha770c72_0 + - blas=2.131=openblas + - blas-devel=3.9.0=31_hc0f8095_openblas + - boost-cpp=1.85.0=ha5ead02_4 + - brotli=1.1.0=h2466b09_2 + - brotli-bin=1.1.0=h2466b09_2 + - brotli-python=1.1.0=py312h275cf98_2 + - bzip2=1.0.8=h2466b09_7 + - ca-certificates=2025.1.31=h56e8100_0 + - cachecontrol=0.14.2=pyha770c72_0 + - cachecontrol-with-filecache=0.14.2=pyhd8ed1ab_0 + - cachy=0.3.0=pyhd8ed1ab_2 + - cairo=1.18.2=h5782bbf_1 + - certifi=2025.1.31=pyhd8ed1ab_0 + - charset-normalizer=3.4.1=pyhd8ed1ab_0 + - clang=19.1.7=default_hec7ea82_1 + - clang-19=19.1.7=default_hec7ea82_1 + - click=8.1.8=pyh7428d3b_0 + - click-default-group=1.2.4=pyhd8ed1ab_1 + - clikit=0.6.2=pyhd8ed1ab_3 + - colorama=0.4.6=pyhd8ed1ab_1 + - comm=0.2.2=pyhd8ed1ab_1 + - compiler-rt=19.1.7=hc790b64_0 + - compiler-rt_win-64=19.1.7=hc790b64_0 + - conda-lock=2.5.7=pyhd8ed1ab_1 + - conda-souschef=2.2.3=pyhd8ed1ab_0 + - contourpy=1.3.1=py312hd5eb7cc_0 + - conway-polynomials=0.10=pyhd8ed1ab_0 + - coverage=7.6.12=py312h31fea79_0 + - cpython=3.12.9=py312hd8ed1ab_1 + - crashtest=0.4.1=pyhd8ed1ab_1 + - cycler=0.12.1=pyhd8ed1ab_1 + - cysignals=1.12.3=py312h275cf98_0 + - cython=3.0.12=py312h890cc4b_0 + - debugpy=1.8.13=py312h275cf98_0 + - decorator=5.2.1=pyhd8ed1ab_0 + - distlib=0.3.9=pyhd8ed1ab_1 + - docutils=0.21.2=pyhd8ed1ab_1 + - double-conversion=3.3.1=he0c23c2_0 + - ensureconda=1.4.4=pyhd8ed1ab_1 + - exceptiongroup=1.2.2=pyhd8ed1ab_1 + - execnet=2.1.1=pyhd8ed1ab_1 + - executing=2.1.0=pyhd8ed1ab_1 + - expat=2.6.4=he0c23c2_0 + - filelock=3.17.0=pyhd8ed1ab_0 + - flang=19.1.7=hbeecb71_0 + - flang_impl_win-64=19.1.7=h719f0c7_0 + - flang_win-64=19.1.7=h719f0c7_0 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_3 + - fontconfig=2.15.0=h765892d_1 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.56.0=py312h31fea79_0 + - fortran-compiler=1.9.0=h95e3450_0 + - freetype=2.12.1=hdaf720e_2 + - furo=2024.8.6=pyhd8ed1ab_2 + - gitdb=4.0.12=pyhd8ed1ab_0 + - gitpython=3.1.44=pyhff2d567_0 + - glpk=5.0=h8ffe710_0 + - gmp=6.3.0=hfeafd45_2 + - gmpy2=2.1.5=py312h64bf746_3 + - graphite2=1.3.13=h63175ca_1003 + - grayskull=2.7.6=pyhd8ed1ab_0 + - gsl=2.8=h5b8d9c4_1 + - harfbuzz=10.4.0=h9e37d49_0 + - html5lib=1.1=pyhd8ed1ab_2 + - icu=75.1=he0c23c2_0 + - idna=3.10=pyhd8ed1ab_1 + - imagesize=1.4.1=pyhd8ed1ab_0 + - importlib-metadata=8.6.1=pyha770c72_0 + - importlib_resources=6.5.2=pyhd8ed1ab_0 + - iniconfig=2.0.0=pyhd8ed1ab_1 + - ipykernel=6.29.5=pyh4bbf305_0 + - ipython=9.0.0=pyhca29cf9_1 + - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 + - ipywidgets=8.1.5=pyhd8ed1ab_1 + - jaraco.classes=3.4.0=pyhd8ed1ab_2 + - jaraco.context=6.0.1=pyhd8ed1ab_0 + - jaraco.functools=4.1.0=pyhd8ed1ab_0 + - jedi=0.19.2=pyhd8ed1ab_1 + - jinja2=3.1.6=pyhd8ed1ab_0 + - jupyter_client=8.6.3=pyhd8ed1ab_1 + - jupyter_core=5.7.2=pyh5737063_1 + - jupyterlab_widgets=3.0.13=pyhd8ed1ab_1 + - keyring=25.6.0=pyh7428d3b_0 + - kiwisolver=1.4.8=py312hc790b64_0 + - krb5=1.21.3=hdf4eb48_0 + - lcms2=2.17=hbcf6048_0 + - lerc=4.0.0=h63175ca_0 + - libblas=3.9.0=31_h11dc60a_openblas + - libboost=1.85.0=h444863b_4 + - libboost-devel=1.85.0=h91493d7_4 + - libboost-headers=1.85.0=h57928b3_4 + - libbrotlicommon=1.1.0=h2466b09_2 + - libbrotlidec=1.1.0=h2466b09_2 + - libbrotlienc=1.1.0=h2466b09_2 + - libcblas=3.9.0=31_h9bd4c3b_openblas + - libclang13=19.1.7=default_ha5278ca_1 + - libdeflate=1.23=h9062f6e_0 + - libexpat=2.6.4=he0c23c2_0 + - libffi=3.4.6=h537db12_0 + - libflang=19.1.7=he0c23c2_0 + - libflint=3.1.3.1=h37a7fb1_101 + - libgcc=14.2.0=h1383e82_2 + - libgd=2.3.3=h7208af6_11 + - libglib=2.82.2=h7025463_1 + - libgomp=14.2.0=h1383e82_2 + - libiconv=1.18=h135ad9c_1 + - libintl=0.22.5=h5728263_3 + - libjpeg-turbo=3.0.0=hcfcfb64_1 + - liblapack=3.9.0=31_h2526c6b_openblas + - liblapacke=3.9.0=31_h1d0e49f_openblas + - libllvm19=19.1.7=h3089188_1 + - liblzma=5.6.4=h2466b09_0 + - liblzma-devel=5.6.4=h2466b09_0 + - libopenblas=0.3.29=pthreads_head3c61_0 + - libpng=1.6.47=had7236b_0 + - libsodium=1.0.20=hc70643c_0 + - libsqlite=3.49.1=h67fdade_1 + - libtiff=4.7.0=h797046b_3 + - libwebp-base=1.5.0=h3b0e114_0 + - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - libxcb=1.17.0=h0e4246c_0 + - libxml2=2.13.6=he286e8c_0 + - libxslt=1.1.39=h3df6e99_0 + - libzlib=1.3.1=h2466b09_2 + - lld=19.1.7=hd91d51b_0 + - llvm-tools=19.1.7=h2a44499_1 + - m4ri=20240729=h4afdad8_1 + - markupsafe=3.0.2=py312h31fea79_1 + - matplotlib=3.10.1=py312h2e8e312_0 + - matplotlib-base=3.10.1=py312h90004f6_0 + - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - memory-allocator=0.1.3=py312h4389bb4_1 + - meson=1.7.0=pyhd8ed1ab_0 + - meson-python=0.17.1=pyh70fd9c4_1 + - more-itertools=10.6.0=pyhd8ed1ab_0 + - mpc=1.3.1=h72bc38f_1 + - mpfr=4.2.1=hbc20e70_3 + - mpmath=1.3.0=pyhd8ed1ab_1 + - msgpack-python=1.1.0=py312hd5eb7cc_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - nauty=2.6.11=h2fa13f4_1 + - nest-asyncio=1.6.0=pyhd8ed1ab_1 + - networkx=3.4.2=pyh267e887_2 + - ninja=1.12.1=hc790b64_0 + - numpy=2.2.3=py312h3150e54_0 + - openblas=0.3.29=pthreads_h4a7f399_0 + - openjpeg=2.5.3=h4d64b90_0 + - openssl=3.4.1=ha4e3fda_0 + - packaging=24.2=pyhd8ed1ab_2 + - pari=2.17.1=h7f476ce_2_single + - pari-elldata=0.0.20161017=0 + - pari-galdata=0.0.20180411=0 + - pari-seadata=0.0.20090618=0 + - pari-seadata-small=0.0.20090618=0 + - parso=0.8.4=pyhd8ed1ab_1 + - pastel=0.2.1=pyhd8ed1ab_0 + - pcre2=10.44=h3d7b363_2 + - perl=5.32.1.1=7_h57928b3_strawberry + - pexpect=4.9.0=pyhd8ed1ab_1 + - pickleshare=0.7.5=pyhd8ed1ab_1004 + - pillow=11.1.0=py312h078707f_0 + - pip=25.0.1=pyh8b19718_0 + - pixman=0.44.2=had0cd8c_0 + - pkg-config=0.29.2=h88c491f_1009 + - pkgconfig=1.5.5=pyhd8ed1ab_5 + - pkginfo=1.12.1.2=pyhd8ed1ab_0 + - planarity=3.0.2.0=hcfcfb64_0 + - platformdirs=4.3.6=pyhd8ed1ab_1 + - pluggy=1.5.0=pyhd8ed1ab_1 + - primesieve=12.6=he0c23c2_0 + - progressbar2=4.5.0=pyhd8ed1ab_1 + - prompt-toolkit=3.0.50=pyha770c72_0 + - psutil=7.0.0=py312h4389bb4_0 + - pthread-stubs=0.4=h0e40799_1002 + - ptyprocess=0.7.0=pyhd8ed1ab_1 + - pure_eval=0.2.3=pyhd8ed1ab_1 + - pydantic=2.10.6=pyh3cfb1c2_0 + - pydantic-core=2.27.2=py312h2615798_0 + - pygments=2.19.1=pyhd8ed1ab_0 + - pylev=1.4.0=pyhd8ed1ab_0 + - pyparsing=3.2.1=pyhd8ed1ab_0 + - pyproject-metadata=0.9.0=pyhd8ed1ab_1 + - pyside6=6.8.2=py312h2ee7485_1 + - pysocks=1.7.1=pyh09c184e_7 + - pytest=8.3.5=pyhd8ed1ab_0 + - pytest-xdist=3.6.1=pyhd8ed1ab_1 + - python=3.12.9=h3f84c4b_1_cpython + - python-dateutil=2.9.0.post0=pyhff2d567_1 + - python-utils=3.9.1=pyhff2d567_1 + - python_abi=3.12=5_cp312 + - pytz=2025.1=pyhd8ed1ab_0 + - pywin32=307=py312h275cf98_3 + - pywin32-ctypes=0.2.3=py312h2e8e312_1 + - pyyaml=6.0.2=py312h31fea79_2 + - pyzmq=26.2.1=py312hd7027bb_0 + - qhull=2020.2=hc790b64_5 + - qt6-main=6.8.2=h1259614_0 + - rapidfuzz=3.12.2=py312h275cf98_0 + - requests=2.32.3=pyhd8ed1ab_1 + - roman-numerals-py=3.1.0=pyhd8ed1ab_0 + - ruamel.yaml=0.18.10=py312h4389bb4_0 + - ruamel.yaml.clib=0.2.8=py312h4389bb4_1 + - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 + - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 + - sagemath-db-graphs=20210214=hd8ed1ab_0 + - sagemath-db-polytopes=20170220=1 + - scipy=1.15.2=py312h451d5c4_0 + - setuptools=75.8.2=pyhff2d567_0 + - six=1.17.0=pyhd8ed1ab_0 + - smmap=5.0.2=pyhd8ed1ab_0 + - snowballstemmer=2.2.0=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - sphinx=8.2.3=pyhd8ed1ab_0 + - sphinx-basic-ng=1.0.0b2=pyhd8ed1ab_3 + - sphinx-inline-tabs=2023.4.21=pyhd8ed1ab_1 + - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 + - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 + - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 + - sqlite=3.49.1=h2466b09_1 + - stack_data=0.6.3=pyhd8ed1ab_1 + - stdlib-list=0.11.1=pyhd8ed1ab_0 + - symmetrica=3.0.1=h1537add_0 + - sympy=1.13.3=pyh04b8f61_5 + - tk=8.6.13=h5226925_1 + - toml=0.10.2=pyhd8ed1ab_1 + - tomli=2.2.1=pyhd8ed1ab_1 + - tomli-w=1.2.0=pyhd8ed1ab_0 + - tomlkit=0.13.2=pyha770c72_1 + - toolz=0.12.1=pyhd8ed1ab_0 + - tornado=6.4.2=py312h4389bb4_0 + - traitlets=5.14.3=pyhd8ed1ab_1 + - typing-extensions=4.12.2=hd8ed1ab_1 + - typing_extensions=4.12.2=pyha770c72_1 + - tzdata=2025a=h78e105d_0 + - ucrt=10.0.22621.0=h57928b3_1 + - unicodedata2=16.0.0=py312h4389bb4_0 + - urllib3=1.26.19=pyhd8ed1ab_0 + - vc=14.3=hbf610ac_24 + - vc14_runtime=14.42.34438=hfd919c2_24 + - virtualenv=20.29.3=pyhd8ed1ab_0 + - vs2015_runtime=14.42.34438=h7142326_24 + - vs2022_win-64=19.43.34604=h070f0e0_24 + - vswhere=3.1.7=h57928b3_0 + - wcwidth=0.2.13=pyhd8ed1ab_1 + - webencodings=0.5.1=pyhd8ed1ab_3 + - wheel=0.45.1=pyhd8ed1ab_1 + - widgetsnbextension=4.0.13=pyhd8ed1ab_1 + - win_inet_pton=1.1.0=pyh7428d3b_8 + - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - xorg-libice=1.1.2=h0e40799_0 + - xorg-libsm=1.2.5=h0e40799_0 + - xorg-libx11=1.8.11=hf48077a_0 + - xorg-libxau=1.0.12=h0e40799_0 + - xorg-libxdmcp=1.1.5=h0e40799_0 + - xorg-libxext=1.3.6=h0e40799_0 + - xorg-libxpm=3.5.17=h0e40799_1 + - xorg-libxt=1.3.1=h0e40799_0 + - xz=5.6.4=h208afaa_0 + - xz-tools=5.6.4=h2466b09_0 + - yaml=0.2.5=h8ffe710_2 + - zeromq=4.3.5=ha9f60a1_7 + - zipp=3.21.0=pyhd8ed1ab_1 + - zlib=1.3.1=h2466b09_2 + - zstd=1.5.7=hbeecb71_1 diff --git a/environment-3.13-win.yml b/environment-3.13-win.yml new file mode 100644 index 00000000000..58fa0390c1d --- /dev/null +++ b/environment-3.13-win.yml @@ -0,0 +1,287 @@ +name: sage-dev +# Generated by conda-lock. +# platform: win-64 +# input_hash: db3b66835c623d4c761e0fe43dccb0210305615d0a00810177ae80fd55029094 + +channels: + - conda-forge +dependencies: + - _openmp_mutex=4.5=2_gnu + - alabaster=1.0.0=pyhd8ed1ab_1 + - annotated-types=0.7.0=pyhd8ed1ab_1 + - appdirs=1.4.4=pyhd8ed1ab_1 + - asttokens=3.0.0=pyhd8ed1ab_1 + - babel=2.17.0=pyhd8ed1ab_0 + - backports=1.0=pyhd8ed1ab_5 + - backports.tarfile=1.2.0=pyhd8ed1ab_1 + - beautifulsoup4=4.13.3=pyha770c72_0 + - blas=2.131=openblas + - blas-devel=3.9.0=31_hc0f8095_openblas + - boost-cpp=1.85.0=ha5ead02_4 + - brotli=1.1.0=h2466b09_2 + - brotli-bin=1.1.0=h2466b09_2 + - brotli-python=1.1.0=py313h5813708_2 + - bzip2=1.0.8=h2466b09_7 + - ca-certificates=2025.1.31=h56e8100_0 + - cachecontrol=0.14.2=pyha770c72_0 + - cachecontrol-with-filecache=0.14.2=pyhd8ed1ab_0 + - cachy=0.3.0=pyhd8ed1ab_2 + - cairo=1.18.2=h5782bbf_1 + - certifi=2025.1.31=pyhd8ed1ab_0 + - charset-normalizer=3.4.1=pyhd8ed1ab_0 + - clang=19.1.7=default_hec7ea82_1 + - clang-19=19.1.7=default_hec7ea82_1 + - click=8.1.8=pyh7428d3b_0 + - click-default-group=1.2.4=pyhd8ed1ab_1 + - clikit=0.6.2=pyhd8ed1ab_3 + - colorama=0.4.6=pyhd8ed1ab_1 + - comm=0.2.2=pyhd8ed1ab_1 + - compiler-rt=19.1.7=hc790b64_0 + - compiler-rt_win-64=19.1.7=hc790b64_0 + - conda-lock=2.5.7=pyhd8ed1ab_1 + - conda-souschef=2.2.3=pyhd8ed1ab_0 + - contourpy=1.3.1=py313h1ec8472_0 + - conway-polynomials=0.10=pyhd8ed1ab_0 + - coverage=7.6.12=py313hb4c8b1a_0 + - cpython=3.13.2=py313hd8ed1ab_101 + - crashtest=0.4.1=pyhd8ed1ab_1 + - cycler=0.12.1=pyhd8ed1ab_1 + - cysignals=1.12.3=py313h5813708_0 + - cython=3.0.12=py313h11c7957_0 + - debugpy=1.8.13=py313h5813708_0 + - decorator=5.2.1=pyhd8ed1ab_0 + - distlib=0.3.9=pyhd8ed1ab_1 + - docutils=0.21.2=pyhd8ed1ab_1 + - double-conversion=3.3.1=he0c23c2_0 + - ensureconda=1.4.4=pyhd8ed1ab_1 + - exceptiongroup=1.2.2=pyhd8ed1ab_1 + - execnet=2.1.1=pyhd8ed1ab_1 + - executing=2.1.0=pyhd8ed1ab_1 + - expat=2.6.4=he0c23c2_0 + - filelock=3.17.0=pyhd8ed1ab_0 + - flang=19.1.7=hbeecb71_0 + - flang_impl_win-64=19.1.7=h719f0c7_0 + - flang_win-64=19.1.7=h719f0c7_0 + - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 + - font-ttf-inconsolata=3.000=h77eed37_0 + - font-ttf-source-code-pro=2.038=h77eed37_0 + - font-ttf-ubuntu=0.83=h77eed37_3 + - fontconfig=2.15.0=h765892d_1 + - fonts-conda-ecosystem=1=0 + - fonts-conda-forge=1=0 + - fonttools=4.56.0=py313hb4c8b1a_0 + - fortran-compiler=1.9.0=h95e3450_0 + - freetype=2.12.1=hdaf720e_2 + - furo=2024.8.6=pyhd8ed1ab_2 + - gitdb=4.0.12=pyhd8ed1ab_0 + - gitpython=3.1.44=pyhff2d567_0 + - glpk=5.0=h8ffe710_0 + - gmp=6.3.0=hfeafd45_2 + - gmpy2=2.1.5=py313h0a46711_3 + - graphite2=1.3.13=h63175ca_1003 + - grayskull=2.7.6=pyhd8ed1ab_0 + - gsl=2.8=h5b8d9c4_1 + - harfbuzz=10.4.0=h9e37d49_0 + - html5lib=1.1=pyhd8ed1ab_2 + - icu=75.1=he0c23c2_0 + - idna=3.10=pyhd8ed1ab_1 + - imagesize=1.4.1=pyhd8ed1ab_0 + - importlib-metadata=8.6.1=pyha770c72_0 + - importlib_resources=6.5.2=pyhd8ed1ab_0 + - iniconfig=2.0.0=pyhd8ed1ab_1 + - ipykernel=6.29.5=pyh4bbf305_0 + - ipython=9.0.0=pyhca29cf9_1 + - ipython_pygments_lexers=1.1.1=pyhd8ed1ab_0 + - ipywidgets=8.1.5=pyhd8ed1ab_1 + - jaraco.classes=3.4.0=pyhd8ed1ab_2 + - jaraco.context=6.0.1=pyhd8ed1ab_0 + - jaraco.functools=4.1.0=pyhd8ed1ab_0 + - jedi=0.19.2=pyhd8ed1ab_1 + - jinja2=3.1.6=pyhd8ed1ab_0 + - jupyter_client=8.6.3=pyhd8ed1ab_1 + - jupyter_core=5.7.2=pyh5737063_1 + - jupyterlab_widgets=3.0.13=pyhd8ed1ab_1 + - keyring=25.6.0=pyh7428d3b_0 + - kiwisolver=1.4.7=py313h1ec8472_0 + - krb5=1.21.3=hdf4eb48_0 + - lcms2=2.17=hbcf6048_0 + - lerc=4.0.0=h63175ca_0 + - libblas=3.9.0=31_h11dc60a_openblas + - libboost=1.85.0=h444863b_4 + - libboost-devel=1.85.0=h91493d7_4 + - libboost-headers=1.85.0=h57928b3_4 + - libbrotlicommon=1.1.0=h2466b09_2 + - libbrotlidec=1.1.0=h2466b09_2 + - libbrotlienc=1.1.0=h2466b09_2 + - libcblas=3.9.0=31_h9bd4c3b_openblas + - libclang13=19.1.7=default_ha5278ca_1 + - libdeflate=1.23=h9062f6e_0 + - libexpat=2.6.4=he0c23c2_0 + - libffi=3.4.6=h537db12_0 + - libflang=19.1.7=he0c23c2_0 + - libflint=3.1.3.1=h37a7fb1_101 + - libgcc=14.2.0=h1383e82_2 + - libgd=2.3.3=h7208af6_11 + - libglib=2.82.2=h7025463_1 + - libgomp=14.2.0=h1383e82_2 + - libiconv=1.18=h135ad9c_1 + - libintl=0.22.5=h5728263_3 + - libjpeg-turbo=3.0.0=hcfcfb64_1 + - liblapack=3.9.0=31_h2526c6b_openblas + - liblapacke=3.9.0=31_h1d0e49f_openblas + - libllvm19=19.1.7=h3089188_1 + - liblzma=5.6.4=h2466b09_0 + - liblzma-devel=5.6.4=h2466b09_0 + - libmpdec=4.0.0=h2466b09_0 + - libopenblas=0.3.29=pthreads_head3c61_0 + - libpng=1.6.47=had7236b_0 + - libsodium=1.0.20=hc70643c_0 + - libsqlite=3.49.1=h67fdade_1 + - libtiff=4.7.0=h797046b_3 + - libwebp-base=1.5.0=h3b0e114_0 + - libwinpthread=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - libxcb=1.17.0=h0e4246c_0 + - libxml2=2.13.6=he286e8c_0 + - libxslt=1.1.39=h3df6e99_0 + - libzlib=1.3.1=h2466b09_2 + - lld=19.1.7=hd91d51b_0 + - llvm-tools=19.1.7=h2a44499_1 + - m4ri=20240729=h4afdad8_1 + - markupsafe=3.0.2=py313hb4c8b1a_1 + - matplotlib=3.10.1=py313hfa70ccb_0 + - matplotlib-base=3.10.1=py313h81b4f16_0 + - matplotlib-inline=0.1.7=pyhd8ed1ab_1 + - memory-allocator=0.1.3=py313ha7868ed_1 + - meson=1.7.0=pyhd8ed1ab_0 + - meson-python=0.17.1=pyh70fd9c4_1 + - more-itertools=10.6.0=pyhd8ed1ab_0 + - mpc=1.3.1=h72bc38f_1 + - mpfr=4.2.1=hbc20e70_3 + - mpmath=1.3.0=pyhd8ed1ab_1 + - msgpack-python=1.1.0=py313h1ec8472_0 + - munkres=1.1.4=pyh9f0ad1d_0 + - nauty=2.6.11=h2fa13f4_1 + - nest-asyncio=1.6.0=pyhd8ed1ab_1 + - networkx=3.4.2=pyh267e887_2 + - ninja=1.12.1=hc790b64_0 + - numpy=2.2.3=py313hefb8edb_0 + - openblas=0.3.29=pthreads_h4a7f399_0 + - openjpeg=2.5.3=h4d64b90_0 + - openssl=3.4.1=ha4e3fda_0 + - packaging=24.2=pyhd8ed1ab_2 + - pari=2.17.1=h7f476ce_2_single + - pari-elldata=0.0.20161017=0 + - pari-galdata=0.0.20180411=0 + - pari-seadata=0.0.20090618=0 + - pari-seadata-small=0.0.20090618=0 + - parso=0.8.4=pyhd8ed1ab_1 + - pastel=0.2.1=pyhd8ed1ab_0 + - pcre2=10.44=h3d7b363_2 + - perl=5.32.1.1=7_h57928b3_strawberry + - pexpect=4.9.0=pyhd8ed1ab_1 + - pickleshare=0.7.5=pyhd8ed1ab_1004 + - pillow=11.1.0=py313hda88b71_0 + - pip=25.0.1=pyh145f28c_0 + - pixman=0.44.2=had0cd8c_0 + - pkg-config=0.29.2=h88c491f_1009 + - pkgconfig=1.5.5=pyhd8ed1ab_5 + - pkginfo=1.12.1.2=pyhd8ed1ab_0 + - planarity=3.0.2.0=hcfcfb64_0 + - platformdirs=4.3.6=pyhd8ed1ab_1 + - pluggy=1.5.0=pyhd8ed1ab_1 + - primesieve=12.6=he0c23c2_0 + - progressbar2=4.5.0=pyhd8ed1ab_1 + - prompt-toolkit=3.0.50=pyha770c72_0 + - psutil=7.0.0=py313ha7868ed_0 + - pthread-stubs=0.4=h0e40799_1002 + - ptyprocess=0.7.0=pyhd8ed1ab_1 + - pure_eval=0.2.3=pyhd8ed1ab_1 + - pydantic=2.10.6=pyh3cfb1c2_0 + - pydantic-core=2.27.2=py313hf3b5b86_0 + - pygments=2.19.1=pyhd8ed1ab_0 + - pylev=1.4.0=pyhd8ed1ab_0 + - pyparsing=3.2.1=pyhd8ed1ab_0 + - pyproject-metadata=0.9.0=pyhd8ed1ab_1 + - pyside6=6.8.2=py313h3e3797f_1 + - pysocks=1.7.1=pyh09c184e_7 + - pytest=8.3.5=pyhd8ed1ab_0 + - pytest-xdist=3.6.1=pyhd8ed1ab_1 + - python=3.13.2=h261c0b1_101_cp313 + - python-dateutil=2.9.0.post0=pyhff2d567_1 + - python-utils=3.9.1=pyhff2d567_1 + - python_abi=3.13=5_cp313 + - pytz=2025.1=pyhd8ed1ab_0 + - pywin32=307=py313h5813708_3 + - pywin32-ctypes=0.2.3=py313hfa70ccb_1 + - pyyaml=6.0.2=py313hb4c8b1a_2 + - pyzmq=26.2.1=py313h2100fd5_0 + - qhull=2020.2=hc790b64_5 + - qt6-main=6.8.2=h1259614_0 + - rapidfuzz=3.12.2=py313h5813708_0 + - requests=2.32.3=pyhd8ed1ab_1 + - roman-numerals-py=3.1.0=pyhd8ed1ab_0 + - ruamel.yaml=0.18.10=py313ha7868ed_0 + - ruamel.yaml.clib=0.2.8=py313ha7868ed_1 + - ruamel.yaml.jinja2=0.2.7=pyhd8ed1ab_1 + - sagemath-db-elliptic-curves=0.8.1=hecc5488_0 + - sagemath-db-graphs=20210214=hd8ed1ab_0 + - sagemath-db-polytopes=20170220=1 + - scipy=1.15.2=py313h2eca4b9_0 + - setuptools=75.8.2=pyhff2d567_0 + - six=1.17.0=pyhd8ed1ab_0 + - smmap=5.0.2=pyhd8ed1ab_0 + - snowballstemmer=2.2.0=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - sphinx=8.2.3=pyhd8ed1ab_0 + - sphinx-basic-ng=1.0.0b2=pyhd8ed1ab_3 + - sphinx-inline-tabs=2023.4.21=pyhd8ed1ab_1 + - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_1 + - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_1 + - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_1 + - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_1 + - sqlite=3.49.1=h2466b09_1 + - stack_data=0.6.3=pyhd8ed1ab_1 + - stdlib-list=0.11.1=pyhd8ed1ab_0 + - symmetrica=3.0.1=h1537add_0 + - sympy=1.13.3=pyh04b8f61_5 + - tk=8.6.13=h5226925_1 + - toml=0.10.2=pyhd8ed1ab_1 + - tomli=2.2.1=pyhd8ed1ab_1 + - tomli-w=1.2.0=pyhd8ed1ab_0 + - tomlkit=0.13.2=pyha770c72_1 + - toolz=0.12.1=pyhd8ed1ab_0 + - tornado=6.4.2=py313ha7868ed_0 + - traitlets=5.14.3=pyhd8ed1ab_1 + - typing-extensions=4.12.2=hd8ed1ab_1 + - typing_extensions=4.12.2=pyha770c72_1 + - tzdata=2025a=h78e105d_0 + - ucrt=10.0.22621.0=h57928b3_1 + - urllib3=1.26.19=pyhd8ed1ab_0 + - vc=14.3=hbf610ac_24 + - vc14_runtime=14.42.34438=hfd919c2_24 + - virtualenv=20.29.3=pyhd8ed1ab_0 + - vs2015_runtime=14.42.34438=h7142326_24 + - vs2022_win-64=19.43.34604=h070f0e0_24 + - vswhere=3.1.7=h57928b3_0 + - wcwidth=0.2.13=pyhd8ed1ab_1 + - webencodings=0.5.1=pyhd8ed1ab_3 + - widgetsnbextension=4.0.13=pyhd8ed1ab_1 + - win_inet_pton=1.1.0=pyh7428d3b_8 + - winpthreads-devel=12.0.0.r4.gg4f2fc60ca=h57928b3_9 + - xorg-libice=1.1.2=h0e40799_0 + - xorg-libsm=1.2.5=h0e40799_0 + - xorg-libx11=1.8.11=hf48077a_0 + - xorg-libxau=1.0.12=h0e40799_0 + - xorg-libxdmcp=1.1.5=h0e40799_0 + - xorg-libxext=1.3.6=h0e40799_0 + - xorg-libxpm=3.5.17=h0e40799_1 + - xorg-libxt=1.3.1=h0e40799_0 + - xz=5.6.4=h208afaa_0 + - xz-tools=5.6.4=h2466b09_0 + - yaml=0.2.5=h8ffe710_2 + - zeromq=4.3.5=ha9f60a1_7 + - zipp=3.21.0=pyhd8ed1ab_1 + - zlib=1.3.1=h2466b09_2 + - zstd=1.5.7=hbeecb71_1 diff --git a/meson.build b/meson.build index b8a686dcb5a..b257ac0f944 100644 --- a/meson.build +++ b/meson.build @@ -12,6 +12,10 @@ py_module = import('python') py = py_module.find_installation(pure: false) py_dep = py.dependency() +fs = import('fs') + +is_windows = host_machine.system() == 'windows' + # Additional targets py_with_pytest = py_module.find_installation( required: false, @@ -38,7 +42,7 @@ create_files_command = [ py, '-c', ''' -import os +from pathlib import Path content = "# Here so that cython creates the correct module name" file_paths = [ 'src/sage/interfaces/__init__.py', @@ -204,10 +208,9 @@ file_paths = [ 'src/sage/calculus/__init__.py', ] for path in file_paths: - path = "''' + meson.current_source_dir() + '''/" + path - os.makedirs(os.path.dirname(path), exist_ok=True) - with open(path, 'w') as f: - f.write(content) + resolved_path = Path("''' + fs.as_posix(meson.current_source_dir()) + '''") / path + resolved_path.parent.mkdir(parents=True, exist_ok=True) + resolved_path.write_text(content) ''', ] run_command(create_files_command, check: true) diff --git a/meson.format b/meson.format index f56718e583f..9fdffd599d5 100644 --- a/meson.format +++ b/meson.format @@ -1 +1,2 @@ indent_by: ' ' +end_of_line = lf diff --git a/pyproject.toml b/pyproject.toml index 3b8a69f7e92..d76861fc7fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ build-backend = 'mesonpy' # Minimum requirements for the build system to execute. requires = [ 'meson-python', - 'cypari2 >=2.2.1', + 'cypari2 >=2.2.1; sys_platform != "win32"', # Exclude 1.12.0 because of https://github.com/sagemath/cysignals/issues/212 'cysignals >=1.11.2, != 1.12.0', # Exclude 3.0.3 because of https://github.com/cython/cython/issues/5748 @@ -18,7 +18,11 @@ requires = [ # otherwise we hit https://github.com/mesonbuild/meson-python/issues/598 # The subprojects have to set the rpath to the build directory, which should work as long as # we don't use build isolation. -install = ['--skip-subprojects', 'ecl'] +# Also don't install subprojects providing static libraries as per https://mesonbuild.com/meson-python/how-to-guides/shared-libraries.html#static-library-from-subproject +# This actually covers all current subprojects; so just don't install any of them. +install = ['--skip-subprojects'] +# Ensure that ``library`` targets are built as static, and nothing gets installed +setup = ['--default-library=static'] [project] name = "sagemath" @@ -26,17 +30,17 @@ description = "Sage: Open Source Mathematics Software: Standard Python Library" dependencies = [ 'six >=1.15.0', 'conway-polynomials >=0.8', - 'cypari2 >=2.2.1', + 'cypari2 >=2.2.1; sys_platform != "win32"', # Exclude 1.12.0 because of https://github.com/sagemath/cysignals/issues/212 'cysignals >=1.11.2, != 1.12.0', 'cython >=3.0, != 3.0.3', 'gmpy2 ~=2.1.b999', - 'lrcalc ~=2.1', + 'lrcalc ~=2.1; sys_platform != "win32"', 'memory_allocator', 'numpy >=1.25', # Issue #30922: pplpy 0.8.4 and earlier do not declare dependencies correctly - 'pplpy >=0.8.6', - 'primecountpy', + 'pplpy >=0.8.6; sys_platform != "win32"', + 'primecountpy; sys_platform != "win32"', 'requests >=2.13.0', # According to https://github.com/python/typing_extensions/blob/main/CHANGELOG.md, # version 4.4.0 adds another Python 3.11 typing backport @@ -53,7 +57,7 @@ dependencies = [ 'ipykernel >=5.2.1', 'jupyter-client', 'ipywidgets >=7.5.1', - 'fpylll >=0.5.9', + 'fpylll >=0.5.9; sys_platform != "win32"', 'ptyprocess > 0.5', # TODO: Remove this once the migration to meson is complete 'pkgconfig', diff --git a/src/doc/en/installation/meson.rst b/src/doc/en/installation/meson.rst index b6a8d926736..40b37851b4c 100644 --- a/src/doc/en/installation/meson.rst +++ b/src/doc/en/installation/meson.rst @@ -11,11 +11,68 @@ Walkthrough Assume we're starting from a clean repo and a fully set up conda environment (modify ``-linux`` according to your operating system): + +.. tab:: Linux -.. CODE-BLOCK:: shell-session + .. code-block:: shell + + $ mamba env create --file environment-3.11-linux.yml --name sage-dev + $ mamba activate sage-dev + +.. tab:: macOS + + .. code-block:: shell + + $ mamba env create --file environment-3.11-macos.yml --name sage-dev + $ mamba activate sage-dev + +.. tab:: Windows + + .. note:: + + Windows support is very experimental and many features are not working + yet. + + First you need to install the Microsoft Visual C++ compiler. + You can download the + `Visual Studio Build Tools `_. + Make sure to select "VC++ 2022 version xx.x build tools" and "Windows SDK". + If you prefer, you can also run the following command to install the necessary + components: + + .. code-block:: shell + + $ winget install Microsoft.VisualStudio.2022.BuildTools --force --override "--wait --passive --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows11SDK.22621" + + Alternatively, you can use the compiler that comes bundled with Visual Studio. + + If you haven't already, install the latest version of Conda from + `Miniforge `_. + It is strongly recommended to choose the option to add Conda to the `PATH` + during installation (because we will not use the Miniforge prompt). + + Open the "VS x64 Native Tools Command Prompt" (for 64bit) or + "Developer Command Prompt for VS2022 (or 2019)" (for 32bit). + + .. code-block:: shell + + $ mamba env create --file environment-3.11-win.yml --name sage-dev + $ conda activate sage-dev + $ set LIB=%CONDA_PREFIX%\Library\lib;%LIB% + $ set INCLUDE=%CONDA_PREFIX%\Library\include;%INCLUDE% + + Windows support is experimental and not fully working yet. + In fact, the Sage prompt is not working at all, but you can use the Python + prompt to run certain commands. For example, the following should work: + + .. code-block:: python + + >>> from sage.rings.integer import Integer + >>> Integer(5) + 5 + >>> Integer(5) + 2.0 + 7.0 - $ mamba env create --file environment-3.11-linux.yml --name sage-dev - $ mamba activate sage-dev Alternatively, install all build requirements as described in section :ref:`section-prereqs`. In the likely case that you have to install some diff --git a/src/meson.build b/src/meson.build index f292f56e258..fe627fc760f 100644 --- a/src/meson.build +++ b/src/meson.build @@ -59,11 +59,15 @@ except Exception: gmpy2 = declare_dependency(include_directories: inc_gmpy2) gmp = dependency('gmp') -inc_cypari2 = run_command( - py, - [ - '-c', - ''' +if is_windows + # Not yet available on Windows + cypari2 = disabler() +else + inc_cypari2 = run_command( + py, + [ + '-c', + ''' from os.path import relpath import cypari2 path = cypari2.__file__.replace('__init__.py', '') @@ -71,21 +75,36 @@ try: print(relpath(path)) except Exception: print(path) - '''.strip(), - ], - check: true, -).stdout().strip() -cypari2 = declare_dependency(include_directories: inc_cypari2) + '''.strip(), + ], + check: true, + ).stdout().strip() + cypari2 = declare_dependency(include_directories: inc_cypari2) +endif # Cannot be found via pkg-config -pari = cc.find_library('pari') +pari = cc.find_library('pari', required: not is_windows, disabler: true) mpfr = dependency('mpfr') -flint = dependency('flint', version: '>=3.0.0') -if flint.version().version_compare('<3.1') - # In older versions of flint, pkg-config file is broken, so we manually use find_library - # This has been fixed in flint v3.1: https://github.com/flintlib/flint/pull/1647 - flint = cc.find_library('flint') +if is_windows + # TODO: Reenable the following once conda's python is fixed + # https://github.com/conda-forge/python-feedstock/pull/770 + # # In its currently released version, flint is not working on Windows; thus always use subproject + # #flint = dependency('flint', version: '>=3.1.3') + # cmake = import('cmake') + # cmake_opts = cmake.subproject_options() + # cmake_opts.add_cmake_defines({'BUILD_SHARED_LIBS': 'OFF'}) + # flint_proj = cmake.subproject('flint', options: cmake_opts) + # flint = flint_proj.dependency('flint') + # meson.override_dependency('flint', flint) + flint = disabler() +else + flint = dependency('flint', version: '>=3.0.0') + if flint.version().version_compare('<3.1') + # In older versions of flint, pkg-config file is broken, so we manually use find_library + # This has been fixed in flint v3.1: https://github.com/flintlib/flint/pull/1647 + flint = cc.find_library('flint') + endif endif blas_order = [] @@ -99,10 +118,16 @@ endif # that too to make the fallback detection with CMake work blas_order += ['cblas', 'openblas', 'OpenBLAS', 'flexiblas', 'blis', 'blas'] blas = dependency(blas_order) -gsl = dependency('gsl', version: '>=2.5') +if is_windows + # pkg-config file is wrong on Windows (https://github.com/conda-forge/gsl-feedstock/issues/63) + gsl = cc.find_library('gsl', required: false, disabler: true) +else + gsl = dependency('gsl', version: '>=2.5') +endif gd = dependency('gdlib', required: false, version: '>=2.1') if not gd.found() - gd = cc.find_library('gd', required: true) + # Doesn't have a pkg-config file on some systems (https://github.com/conda-forge/libgd-feedstock/issues/55) + gd = cc.find_library('gd', required: not is_windows, disabler: true) endif # Only some platforms have a standalone math library (https://mesonbuild.com/howtox.html#add-math-library-lm-portably) m = cc.find_library('m', required: false) @@ -110,37 +135,69 @@ m4ri = dependency('m4ri', version: '>=20140914') m4rie = dependency('m4rie', required: false) if not m4rie.found() # For some reason, m4rie is not found via pkg-config on some systems (eg Conda) - m4rie = cc.find_library('m4rie') + m4rie = cc.find_library('m4rie', required: not is_windows, disabler: true) endif # Cannot be found via pkg-config -mtx = cc.find_library('mtx', required: false, disabler: true) +mtx = cc.find_library( + 'mtx', + required: false, + disabler: true, + has_headers: ['meataxe.h'], +) png = dependency(['libpng', 'png', 'png16'], version: '>=1.2') zlib = dependency('zlib', version: '>=1.2.11') # We actually want >= 20231212, but the version number is not updated in the pkgconfig # https://github.com/conda-forge/eclib-feedstock/issues/48 ec = dependency('eclib', version: '>=20231211', required: false, disabler: true) # Cannot be found via pkg-config -ecm = cc.find_library('ecm') -gmpxx = dependency('gmpxx') -fflas = dependency('fflas-ffpack', version: '>=2.5.0') -givaro = dependency('givaro', version: '>=4.2.0') +ec = cc.find_library('ec', required: not is_windows, disabler: true) +ecm = cc.find_library('ecm', required: not is_windows, disabler: true) +gmpxx = dependency('gmpxx', required: not is_windows, disabler: true) +fflas = dependency( + 'fflas-ffpack', + required: not is_windows, + disabler: true, + version: '>=2.5.0', +) +givaro = dependency( + 'givaro', + required: not is_windows, + disabler: true, + version: '>=4.2.0', +) linbox = dependency('linbox', required: false, version: '>=1.7.0') if not linbox.found() - linbox = cc.find_library('linbox') + linbox = cc.find_library('linbox', required: not is_windows, disabler: true) +endif +mpc = cc.find_library('mpc', required: not is_windows, disabler: true) +mpfi = cc.find_library('mpfi', required: false) +if not mpfi.found() + mpfi_proj = subproject('mpfi') + mpfi = mpfi_proj.get_variable('mpfi_dep') endif -mpc = cc.find_library('mpc') -mpfi = cc.find_library('mpfi') gap = dependency('libgap', version: '>=4.13.0', required: false) if not gap.found() # Fallback in case pkg-config info is not available # Test for common.h header that was added in 4.12 as a indirect version check - gap = cc.find_library('gap', has_headers: ['gap/common.h']) + gap = cc.find_library( + 'gap', + has_headers: ['gap/common.h'], + required: not is_windows, + disabler: true, + ) +endif +singular = dependency('Singular', required: not is_windows, disabler: true) +singular_factory = disabler() +if singular.found() + singular_factory = singular +else + singular_proj = subproject('singular') + singular_factory = singular_proj.get_variable('factory_dep') endif -singular = dependency('Singular') -maxima = find_program('maxima', required: true) +maxima = find_program('maxima', required: not is_windows, disabler: true) # Cannot be found via pkg-config -ntl = cc.find_library('ntl') +ntl = cc.find_library('ntl', required: not is_windows, disabler: true) # Meson currently ignores include_directories for Cython modules, so we # have to add them manually. diff --git a/src/sage/doctest/util.py b/src/sage/doctest/util.py index 825705f6962..cf0d0133d94 100644 --- a/src/sage/doctest/util.py +++ b/src/sage/doctest/util.py @@ -23,10 +23,9 @@ # https://www.gnu.org/licenses/ # **************************************************************************** +from os import times from time import time as walltime -from os import sysconf, times from contextlib import contextmanager -from cysignals.alarm import alarm, cancel_alarm, AlarmInterrupt def count_noun(number, noun, plural=None, pad_number=False, pad_noun=False): @@ -206,6 +205,8 @@ def _proc_stat_cpu_seconds(self, path): raise OSError(f"unable to parse {path}") from e try: + from os import sysconf + hertz = sysconf("SC_CLK_TCK") except (ValueError) as e: # ValueError: SC_CLK_TCK doesn't exist @@ -869,6 +870,8 @@ def ensure_interruptible_after(seconds: float, max_wait_after_interrupt: float = sage: data # abs tol 0.01 {'alarm_raised': False, 'elapsed': 0.0} """ + from cysignals.alarm import alarm, cancel_alarm, AlarmInterrupt + seconds = float(seconds) max_wait_after_interrupt = float(max_wait_after_interrupt) inaccuracy_tolerance = float(inaccuracy_tolerance) diff --git a/src/sage/env.py b/src/sage/env.py index 74f0c07e14d..c63801689b7 100644 --- a/src/sage/env.py +++ b/src/sage/env.py @@ -204,7 +204,11 @@ def var(key: str, *fallbacks: Optional[str], force: bool = False) -> Optional[st SAGE_DOC_LOCAL_PORT = var("SAGE_DOC_LOCAL_PORT", "0") # ~/.sage -DOT_SAGE = var("DOT_SAGE", join(os.environ.get("HOME"), ".sage")) +if sys.platform == 'win32': + home_dir = os.environ.get("USERPROFILE") +else: # Unix-like systems (Linux, macOS, etc.) + home_dir = os.environ.get("HOME") +DOT_SAGE = var("DOT_SAGE", join(home_dir, ".sage")) SAGE_STARTUP_FILE = var("SAGE_STARTUP_FILE", join(DOT_SAGE, "init.sage")) # for sage_setup.setenv diff --git a/src/sage/graphs/base/boost_interface.cpp b/src/sage/graphs/base/boost_interface.cpp index 94ce31ae85f..e8e46ac4f84 100644 --- a/src/sage/graphs/base/boost_interface.cpp +++ b/src/sage/graphs/base/boost_interface.cpp @@ -116,9 +116,10 @@ class BoostGraph std::vector>> to_return; typename boost::graph_traits::edge_iterator ei, ei_end; for (boost::tie(ei, ei_end) = boost::edges(graph); ei != ei_end; ++ei) { - to_return.push_back({index[boost::source(*ei, graph)], - {index[boost::target(*ei, graph)], - get(boost::edge_weight, graph, *ei)}}); + v_index source = index[boost::source(*ei, graph)]; + v_index target = index[boost::target(*ei, graph)]; + double weight = boost::get(boost::edge_weight, graph, *ei); + to_return.push_back({source, {target, weight}}); } return to_return; } diff --git a/src/sage/graphs/meson.build b/src/sage/graphs/meson.build index 842501734e5..891f6d8f8be 100644 --- a/src/sage/graphs/meson.build +++ b/src/sage/graphs/meson.build @@ -5,10 +5,14 @@ if cc.has_header('mcqd.h') else mcqd = disabler() endif -cliquer = cc.find_library('cliquer') +cliquer = cc.find_library('cliquer', required: not is_windows, disabler: true) # Cannot be found via pkg-config -planarity = cc.find_library('planarity') +planarity = cc.find_library( + 'planarity', + required: not is_windows, + disabler: true, +) py.install_sources( '__init__.py', diff --git a/src/sage/interfaces/expect.py b/src/sage/interfaces/expect.py index 80ef6e4078d..8c755776b9c 100644 --- a/src/sage/interfaces/expect.py +++ b/src/sage/interfaces/expect.py @@ -52,7 +52,6 @@ import pexpect from pexpect import ExceptionPexpect import sage.interfaces.abc -from sage.interfaces.sagespawn import SageSpawn from sage.interfaces.interface import (Interface, InterfaceElement, InterfaceFunction, InterfaceFunctionElement) @@ -509,6 +508,8 @@ def _start(self, alt_message=None, block_during_init=True): os.chdir(self.__path) try: try: + from sage.interfaces.sagespawn import SageSpawn + self._expect = SageSpawn(cmd, logfile=self.__logfile, timeout=None, # no timeout diff --git a/src/sage/interfaces/meson.build b/src/sage/interfaces/meson.build index aee6b8493d0..70ce7ce88c8 100644 --- a/src/sage/interfaces/meson.build +++ b/src/sage/interfaces/meson.build @@ -68,6 +68,11 @@ extension_data = { } foreach name, pyx : extension_data + if is_windows + # Uses posix API + continue + endif + py.extension_module( name, sources: pyx, diff --git a/src/sage/libs/lcalc/meson.build b/src/sage/libs/lcalc/meson.build index aa6d9296948..1cac09a9d74 100644 --- a/src/sage/libs/lcalc/meson.build +++ b/src/sage/libs/lcalc/meson.build @@ -1,4 +1,9 @@ -lcalc = dependency('lcalc', version: '>= 2.0.0') +lcalc = dependency( + 'lcalc', + version: '>= 2.0.0', + required: not is_windows, + disabler: true, +) py.install_sources( '__init__.py', diff --git a/src/sage/libs/meson.build b/src/sage/libs/meson.build index 49511f75a39..2e786592728 100644 --- a/src/sage/libs/meson.build +++ b/src/sage/libs/meson.build @@ -1,16 +1,25 @@ sirocco = cc.find_library('sirocco', required: false, disabler: true) # cannot be found via pkg-config ecl = cc.find_library('ecl', required: false, disabler: true) -if not ecl.found() +if not ecl.found() and not is_windows ecl_proj = subproject('ecl') ecl = ecl_proj.get_variable('ecl_dep') endif braiding = dependency('libbraiding', required: false) if not braiding.found() # Fallback since pkg-config support was only added in v1.3.1 - braiding = cc.find_library('braiding') + braiding = cc.find_library( + 'braiding', + required: not is_windows, + disabler: true, + ) endif -gc = dependency(['bdw-gc-threaded', 'bdw-gc'], version: '>=7.6.4') +gc = dependency( + ['bdw-gc-threaded', 'bdw-gc'], + version: '>=7.6.4', + required: not is_windows, + disabler: true, +) homfly = cc.find_library( 'homfly', has_headers: ['homfly.h'], diff --git a/src/sage/libs/symmetrica/meson.build b/src/sage/libs/symmetrica/meson.build index 9294ebe3b03..e6d178f064a 100644 --- a/src/sage/libs/symmetrica/meson.build +++ b/src/sage/libs/symmetrica/meson.build @@ -1,5 +1,9 @@ # Cannot be found by pkg-config -symmetrica = cc.find_library('symmetrica') +symmetrica = cc.find_library( + 'symmetrica', + required: not is_windows, + disabler: true, +) py.install_sources('__init__.py', 'all.py', subdir: 'sage/libs/symmetrica') diff --git a/src/sage/libs/symmetrica/symmetrica.pyx b/src/sage/libs/symmetrica/symmetrica.pyx index 7ca41fbc82b..8c791cdb4b0 100644 --- a/src/sage/libs/symmetrica/symmetrica.pyx +++ b/src/sage/libs/symmetrica/symmetrica.pyx @@ -3,6 +3,24 @@ Symmetrica library """ +# According to https://gitlab.com/sagemath/symmetrica/-/blob/master/README.md#resolving-minmax-name-conflicts, +# we need to make sure that min and max macros are not defined on Windows. +# Usually, this can be done by setting NOMINMAX before including any Windows headers; +# however, we actually don't include any Windows headers here, but still get the error (even with NOMINMAX passed to the compiler). +# So just undefine min and max here. +cdef extern from *: + """ + #if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS) + #if defined(min) + #undef min + #endif + #if defined(max) + #undef max + #endif + #endif + """ + pass + include "symmetrica.pxi" include "kostka.pxi" diff --git a/src/sage/matrix/meson.build b/src/sage/matrix/meson.build index b199be0458f..ead32fdfae9 100644 --- a/src/sage/matrix/meson.build +++ b/src/sage/matrix/meson.build @@ -1,4 +1,4 @@ -iml = cc.find_library('iml') +iml = cc.find_library('iml', required: not is_windows, disabler: true) py.install_sources( @@ -97,17 +97,17 @@ extension_data = { } foreach name, pyx : extension_data - dependencies = [py_dep, cysignals, gmp, numpy] + deps = [py_dep, cysignals, gmp, numpy] if name == 'matrix_gfpn_dense' - dependencies += [mtx] + deps += [mtx] elif name == 'matrix_gap' - dependencies += [gap] + deps += [gap] elif name == 'misc_mpfr' - dependencies += [mpfr] + deps += [mpfr] elif name == 'matrix_complex_ball_dense' - dependencies += [mpfi] - elif name == 'misc_flint' or name == 'matrix_rational_sparse' - dependencies += [flint] + deps += [flint, mpfi] + elif name == 'misc_flint' or name == 'matrix_rational_sparse' or name == 'change_ring' + deps += [flint] endif py.extension_module( @@ -123,7 +123,7 @@ foreach name, pyx : extension_data inc_rings, inc_rings_finite, ], - dependencies: dependencies, + dependencies: deps, ) endforeach diff --git a/src/sage/meson.build b/src/sage/meson.build index 9e1d5db9c88..0b7633e0b64 100644 --- a/src/sage/meson.build +++ b/src/sage/meson.build @@ -1,4 +1,3 @@ -fs = import('fs') sage_install_dir = py.get_install_dir() / 'sage' # Generate the configuration file @@ -37,7 +36,7 @@ if openmp.found() conf_data.set('OPENMP_CFLAGS', '-fopenmp') conf_data.set('OPENMP_CXXFLAGS', '-fopenmp') endif -gap_exe = find_program('gap') +gap_exe = find_program('gap', required: not is_windows, disabler: true) if gap_exe.found() gaprun = run_command( gap_exe, @@ -51,9 +50,13 @@ if gap_exe.found() ) gap_root_paths = gaprun.stdout().strip() gap_root_paths = '${prefix}/lib/gap;${prefix}/share/gap;' + gaprun.stdout().strip() + conf_data.set('GAP_ROOT_PATHS', gap_root_paths) endif -conf_data.set('GAP_ROOT_PATHS', gap_root_paths) -ecm_bin = find_program(['ecm', 'gmp-ecm'], required: true) +ecm_bin = find_program( + ['ecm', 'gmp-ecm'], + required: not is_windows, + disabler: true, +) conf_data.set('SAGE_ECMBIN', ecm_bin.full_path()) config_file = configure_file( diff --git a/src/sage/misc/meson.build b/src/sage/misc/meson.build index 3036a14a411..50e8000c46d 100644 --- a/src/sage/misc/meson.build +++ b/src/sage/misc/meson.build @@ -124,6 +124,10 @@ extension_data = { } foreach name, pyx : extension_data + if is_windows and (name == 'sage_ostools') + # Uses posix API + continue + endif deps = [py_dep, gmp] if name == 'binary_tree' deps += [cysignals] diff --git a/src/sage/misc/randstate.pyx b/src/sage/misc/randstate.pyx index db700897568..7225fd7f509 100644 --- a/src/sage/misc/randstate.pyx +++ b/src/sage/misc/randstate.pyx @@ -411,6 +411,21 @@ Classes and methods """ cdef extern from "stdlib.h": + # Provide equivalent functions for Windows. + """ + #ifdef _WIN32 + #include + static inline void srandom(unsigned int seed) + { + srand(seed); + } + + static inline long int random(void) + { + return rand(); + } + #endif + """ long c_libc_random "random"() void c_libc_srandom "srandom"(unsigned int seed) diff --git a/src/sage/modules/meson.build b/src/sage/modules/meson.build index e53e08e1f42..c9591ad82da 100644 --- a/src/sage/modules/meson.build +++ b/src/sage/modules/meson.build @@ -84,6 +84,11 @@ extension_data_cpp = { } foreach name, pyx : extension_data_cpp + if is_windows + # sage_modules_vector_mod2_dense.pyx.cpp.obj : error LNK2019: unresolved external symbol "struct mzd_t * __cdecl mzd_init(int,int)" + continue + endif + py.extension_module( name, sources: pyx, diff --git a/src/sage/modules/vector_mod2_dense.pyx b/src/sage/modules/vector_mod2_dense.pyx index 4e473ea6609..a64d8dd8c2e 100644 --- a/src/sage/modules/vector_mod2_dense.pyx +++ b/src/sage/modules/vector_mod2_dense.pyx @@ -48,7 +48,7 @@ from sage.structure.richcmp cimport rich_to_bool cimport sage.modules.free_module_element as free_module_element from libc.stdint cimport uintptr_t -from sage.libs.m4ri cimport * +from sage.libs.m4ri cimport mzd_add, mzd_copy, mzd_cmp, mzd_free, mzd_init, mzd_set_ui, mzd_read_bit, mzd_row, mzd_write_bit, m4ri_word cdef class Vector_mod2_dense(free_module_element.FreeModuleElement): cdef _new_c(self): diff --git a/src/sage/numerical/backends/meson.build b/src/sage/numerical/backends/meson.build index 57eeaeb10b0..41c64b1af20 100644 --- a/src/sage/numerical/backends/meson.build +++ b/src/sage/numerical/backends/meson.build @@ -1,5 +1,5 @@ # Cannot be found via pkg-config -glpk = cc.find_library('glpk') +glpk = cc.find_library('glpk', required: not is_windows, disabler: true) py.install_sources( '__init__.py', diff --git a/src/sage/parallel/decorate.py b/src/sage/parallel/decorate.py index a344ddcfa5a..7a217400dcb 100644 --- a/src/sage/parallel/decorate.py +++ b/src/sage/parallel/decorate.py @@ -7,7 +7,6 @@ from sage.rings.integer import Integer from .reference import parallel_iter as p_iter_reference -from .use_fork import p_iter_fork from . import multiprocessing_sage from sage.misc.instancedoc import instancedoc @@ -76,6 +75,7 @@ def __init__(self, p_iter='fork', ncpus=None, **kwds): ncpus = compute_ncpus() if p_iter == 'fork': + from .use_fork import p_iter_fork self.p_iter = p_iter_fork(ncpus, **kwds) elif p_iter == 'multiprocessing': self.p_iter = multiprocessing_sage.pyprocessing(ncpus) diff --git a/src/sage/plot/plot3d/meson.build b/src/sage/plot/plot3d/meson.build index 58960cbbdd6..e7433d8b69c 100644 --- a/src/sage/plot/plot3d/meson.build +++ b/src/sage/plot/plot3d/meson.build @@ -31,9 +31,9 @@ extension_data = { } foreach name, pyx : extension_data - dependencies = [py_dep, cysignals, gmp, numpy] + deps = [py_dep, cysignals, gmp, numpy] if name == 'parametric_surface' - dependencies += [interpreters_dep] + deps += [interpreters_dep] endif py.extension_module( name, @@ -41,6 +41,6 @@ foreach name, pyx : extension_data subdir: 'sage/plot/plot3d', install: true, include_directories: [inc_cpython, inc_ext], - dependencies: dependencies, + dependencies: deps, ) endforeach diff --git a/src/sage/rings/complex_double.pyx b/src/sage/rings/complex_double.pyx index 8c28a0728bf..0436b2c2553 100644 --- a/src/sage/rings/complex_double.pyx +++ b/src/sage/rings/complex_double.pyx @@ -1,5 +1,6 @@ # distutils: extra_compile_args = -D_XPG6 # distutils: libraries = m +# distutils: language = c++ r""" Double precision floating point complex numbers @@ -74,9 +75,9 @@ from sage.misc.randstate cimport randstate, current_randstate from sage.libs.gsl.complex cimport * -cdef extern from "": - double complex csqrt(double complex) - double cabs(double complex) +cdef extern from "" namespace "std" nogil: + double abs (double complex x) + double complex sqrt (double complex x) import sage.rings.abc cimport sage.rings.integer @@ -2287,10 +2288,10 @@ cdef class ComplexDoubleElement(FieldElement): sage: a = CDF(-0.95,-0.65) sage: b = CDF(0.683,0.747) - sage: a.agm(b, algorithm='optimal') - -0.3715916523517613 + 0.31989466020683*I + sage: a.agm(b, algorithm='optimal') # rel tol 1e-15 + -0.3715916523517613 + 0.31989466020683005*I sage: a.agm(b, algorithm='principal') # rel tol 1e-15 - 0.33817546298618006 - 0.013532696956540503*I + 0.33817546298618006 - 0.013532696956540483*I sage: a.agm(b, algorithm='pari') -0.37159165235176134 + 0.31989466020683005*I @@ -2324,10 +2325,10 @@ cdef class ComplexDoubleElement(FieldElement): if algorithm=="optimal": while True: a1 = (a+b)/2 - b1 = csqrt(a*b) + b1 = sqrt(a*b) r = b1/a1 - d = cabs(r-1) - e = cabs(r+1) + d = abs(r-1) + e = abs(r+1) if e < d: b1=-b1 d = e @@ -2337,8 +2338,8 @@ cdef class ComplexDoubleElement(FieldElement): elif algorithm=="principal": while True: a1 = (a+b)/2 - b1 = csqrt(a*b) - if cabs((b1/a1)-1) < eps: return ComplexDoubleElement_from_doubles(a1.real, a1.imag) + b1 = sqrt(a*b) + if abs((b1/a1)-1) < eps: return ComplexDoubleElement_from_doubles(a1.real, a1.imag) a, b = a1, b1 else: diff --git a/src/sage/rings/integer_fake.h b/src/sage/rings/integer_fake.h index 3a55504f40a..6692d77069c 100644 --- a/src/sage/rings/integer_fake.h +++ b/src/sage/rings/integer_fake.h @@ -7,7 +7,7 @@ static PyTypeObject* Integer = NULL; /* Replication of the internal structure of a Sage Integer */ struct Integer_Object { - PyObject_HEAD; + PyObject_HEAD void* __pyx_vtab; void* _parent; mpz_t value; diff --git a/src/sage/rings/meson.build b/src/sage/rings/meson.build index 5f4dafdf7c2..573342a9508 100644 --- a/src/sage/rings/meson.build +++ b/src/sage/rings/meson.build @@ -86,7 +86,6 @@ extension_data = { 'abc' : files('abc.pyx'), 'complex_arb' : files('complex_arb.pyx'), 'complex_conversion' : files('complex_conversion.pyx'), - 'complex_double' : files('complex_double.pyx'), 'complex_interval' : files('complex_interval.pyx'), 'complex_mpc' : files('complex_mpc.pyx'), 'complex_mpfr' : files('complex_mpfr.pyx'), @@ -132,8 +131,6 @@ foreach name, pyx : extension_data ] elif name == 'complex_conversion' deps += [gsl, mpfr] - elif name == 'complex_double' - deps += [gmpy2, gsl] elif name == 'complex_interval' deps += [ mpfi, @@ -159,6 +156,10 @@ foreach name, pyx : extension_data deps += [mpfi] elif name == 'real_mpfr' deps += [gmpy2, mpfr] + elif name == 'tate_algebra_element' + deps += [ + ntl, # Indirect dependency + ] endif py.extension_module( name, @@ -186,6 +187,8 @@ extension_data_cpp = { 'bernmm/bern_rat.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'), 'fraction_field_FpT': files('fraction_field_FpT.pyx'), 'rational': files('rational.pyx'), } @@ -196,6 +199,8 @@ foreach name, pyx : extension_data_cpp deps += [ntl] elif name == 'bernoulli_mod_p' deps += [ntl] + elif name == 'complex_double' + deps += [gmpy2, gsl] elif name == 'fraction_field_FpT' deps += [flint] elif name == 'rational' diff --git a/src/sage/rings/number_field/maps.py b/src/sage/rings/number_field/maps.py index 00422d022f3..111bee362a1 100644 --- a/src/sage/rings/number_field/maps.py +++ b/src/sage/rings/number_field/maps.py @@ -45,9 +45,6 @@ import sage.rings.rational_field as rational_field -from sage.libs.pari import pari - - QQ = rational_field.RationalField() IdentityMap = IdentityMorphism @@ -307,6 +304,8 @@ def _call_(self, v): sage: fr(to(a0 + 2*b0)), fr(V([0, 1])), fr(V([b0, 2*b0])) # indirect doctest (a + 2*b0, a, 2*b0*a + b0) """ + from sage.libs.pari import pari + K = self.codomain() B = K.base_field().absolute_field('a') # Convert v to a PARI polynomial in x with coefficients that diff --git a/src/sage/rings/number_field/number_field.py b/src/sage/rings/number_field/number_field.py index fd1233f5631..302995ba7a6 100644 --- a/src/sage/rings/number_field/number_field.py +++ b/src/sage/rings/number_field/number_field.py @@ -81,13 +81,10 @@ from sage.misc.cachefunc import cached_method from sage.misc.superseded import deprecation -import sage.libs.ntl.all as ntl import sage.rings.abc import sage.rings.complex_mpfr from sage.rings.polynomial.polynomial_element import Polynomial import sage.rings.real_mpfr -import sage.rings.real_mpfi -import sage.rings.complex_double import sage.rings.real_double import sage.rings.real_lazy @@ -103,10 +100,6 @@ from sage.misc.latex import latex_variable_name -from .unit_group import UnitGroup -from .class_group import ClassGroup -from .class_group import SClassGroup - from sage.structure.element import Element from sage.structure.parent import Parent from sage.structure.sequence import Sequence @@ -207,8 +200,6 @@ def proof_flag(t): from sage.rings.rational import Rational from sage.rings.integer import Integer import sage.rings.polynomial.polynomial_element as polynomial_element -import sage.groups.abelian_gps.abelian_group -import sage.rings.complex_interval_field from sage.structure.factory import UniqueFactory from . import number_field_element @@ -219,10 +210,8 @@ def proof_flag(t): from sage.rings.rational_field import QQ from sage.rings.integer_ring import ZZ -from sage.rings.real_mpfi import RIF from sage.rings.cif import CIF from sage.rings.real_double import RDF -from sage.rings.complex_double import CDF from sage.rings.real_lazy import RLF, CLF from sage.rings.finite_rings.integer_mod_ring import IntegerModRing @@ -2053,6 +2042,8 @@ def completion(self, p, prec, extras={}): if p == infinity.infinity: gen_image = self.gen_embedding() if gen_image is not None: + from sage.rings.complex_double import CDF + if gen_image in RDF: return QQ.completion(p, prec, extras) elif gen_image in CDF: @@ -4618,6 +4609,8 @@ def class_group(self, proof=None, names='c'): ``proof.number_field(False)``. It can easily take 1000s of times longer to do computations with ``proof=True`` (the default). """ + from .class_group import ClassGroup + proof = proof_flag(proof) try: return self.__class_group[proof, names] @@ -4705,6 +4698,8 @@ def S_class_group(self, S, proof=None, names='c'): Class group of order 4 with structure C4 of Number Field in a with defining polynomial x^2 + 14 with a = 3.741657386773942?*I """ + from .class_group import SClassGroup + proof = proof_flag(proof) if all(P.is_principal() for P in S): C = self.class_group(proof=proof) @@ -6709,10 +6704,12 @@ def narrow_class_group(self, proof=None): sage: QuadraticField(3, 'a').narrow_class_group() Multiplicative Abelian group isomorphic to C2 """ + from sage.groups.abelian_gps.abelian_group import AbelianGroup + proof = proof_flag(proof) k = self.pari_bnf(proof) s = k.bnfnarrow().sage() - return sage.groups.abelian_gps.abelian_group.AbelianGroup(s[1]) + return AbelianGroup(s[1]) def ngens(self): """ @@ -6777,6 +6774,8 @@ def polynomial_ntl(self): try: return (self.__polynomial_ntl, self.__denominator_ntl) except AttributeError: + import sage.libs.ntl.all as ntl + self.__denominator_ntl = ntl.ZZ() den = self.polynomial().denominator() self.__denominator_ntl.set_from_sage_int(ZZ(den)) @@ -7222,6 +7221,8 @@ def unit_group(self, proof=None): -a^15 - a^14 - 2*a^11 - a^10 + a^9 - a^8 - 2*a^7 + a^5 - 2*a^3 + a^2 + 3*a - 1, -3*a^16 - 3*a^15 - 3*a^14 - 3*a^13 - 3*a^12 - 2*a^11 - 2*a^10 - 2*a^9 - a^8 + a^7 + 2*a^6 + 3*a^5 + 3*a^4 + 4*a^3 + 6*a^2 + 8*a + 8] """ + from sage.rings.number_field.unit_group import UnitGroup + proof = proof_flag(proof) try: @@ -7338,6 +7339,8 @@ def S_unit_group(self, proof=None, S=None): sage: U.log(u) (1, 1, 4, 1, 5) """ + from sage.rings.number_field.unit_group import UnitGroup + proof = proof_flag(proof) # process the parameter S: @@ -9620,6 +9623,8 @@ def places(self, all_complex=False, prec=None): Defn: alpha |--> 0.96 + 1.7*I] """ if prec is None: + from sage.rings.real_mpfi import RIF + R = RIF C = CIF @@ -10833,6 +10838,8 @@ def __init__(self, n, names, embedding=None, assume_disc_small=False, maximize_a # As a consequence, a result of _an_element_() with the wrong class # is cached during the call to has_coerce_map_from. We reset the # cache afterwards. + from sage.rings.complex_double import CDF + self._standard_embedding = not CDF.has_coerce_map_from(self) or CDF(self.gen()).imag() > 0 self._cache_an_element = None @@ -11263,6 +11270,8 @@ def _log_gen(self, x): sage: K5._log_gen(zeta15**3) 4 """ + from sage.rings.complex_double import CDF + X = x.parent() gen = self.gen() @@ -12068,6 +12077,8 @@ def __init__(self, polynomial, name=None, latex_name=None, check=True, embedding self._NumberField_generic__gen = self._element_class(self, parts) + from sage.rings.complex_double import CDF + # we must set the flag _standard_embedding *before* any element creation # Note that in the following code, no element is built. if self.coerce_embedding() is not None and CDF.has_coerce_map_from(self): diff --git a/src/sage/rings/padics/meson.build b/src/sage/rings/padics/meson.build index b0681f03885..d99a0cda7f6 100644 --- a/src/sage/rings/padics/meson.build +++ b/src/sage/rings/padics/meson.build @@ -74,6 +74,26 @@ extension_data = { } foreach name, pyx : extension_data + deps = [py_dep, cysignals, gmp] + if name.startswith('qadic_flint') + deps += [cypari2, flint] + elif name == 'padic_capped_absolute_element' or name == 'padic_floating_point_element' or name == 'padic_fixed_mod_element' or name == 'common_conversion' or name.startswith( + 'relative_ramified', + ) or name == 'padic_template_element' or name == 'padic_capped_relative_element' + deps += [cypari2] + elif name == 'padic_ext_element' + deps += [ntl] + elif name == 'padic_generic_element' + deps += [ + ntl, # Indirect dependency + ] + elif name == 'padic_relaxed_element' + deps += [flint] + if is_windows + # error C2143: syntax error: missing ')' before '*' + continue + endif + endif py.extension_module( name, sources: pyx, @@ -88,8 +108,9 @@ foreach name, pyx : extension_data inc_rings_finite, inc_src, ], - dependencies: [py_dep, cypari2, cysignals, flint, gmp, m, ntl], + dependencies: deps, ) + endforeach extension_data_cpp = { @@ -106,6 +127,12 @@ extension_data_cpp = { } foreach name, pyx : extension_data_cpp + deps = [py_dep, cysignals, gmp, ntl] + if name == 'pow_computer_flint' + deps += [flint] + elif name == 'padic_ZZ_pX_CA_element' or name == 'padic_ZZ_pX_CR_element' or name == 'padic_ZZ_pX_FM_element' + deps += [cypari2] + endif py.extension_module( name, sources: pyx, @@ -120,7 +147,8 @@ foreach name, pyx : extension_data_cpp inc_rings, inc_rings_finite, ], - dependencies: [py_dep, cypari2, cysignals, flint, gmp, m, ntl], + dependencies: deps, ) + endforeach diff --git a/src/sage/rings/polynomial/meson.build b/src/sage/rings/polynomial/meson.build index c5d3cf4dd55..e7de57dc2fb 100644 --- a/src/sage/rings/polynomial/meson.build +++ b/src/sage/rings/polynomial/meson.build @@ -102,9 +102,9 @@ foreach name, pyx : extension_data elif name == 'polynomial_real_mpfr_dense' deps += [mpfr] elif name == 'real_roots' - deps += [mpfi] + deps += [flint, mpfi] elif name == 'hilbert' - deps += [mpfi] + deps += [flint, mpfi] endif py.extension_module( @@ -141,6 +141,21 @@ extension_data_cpp = { } foreach name, pyx : extension_data_cpp + deps = [py_dep, cysignals, gmp, numpy] + if name == 'polynomial_rational_flint' + deps += [ + cypari2, + flint, + mpfi, + ntl, # indirect dependency + ] + elif name == 'polynomial_zmod_flint' + deps += [cypari2, flint] + elif name == 'polynomial_integer_dense_flint' + deps += [cypari2, flint, ntl] + else + deps += [cypari2, givaro, mpfi, mpfr, ntl, pari, singular] + endif py.extension_module( name, sources: pyx, @@ -155,21 +170,9 @@ foreach name, pyx : extension_data_cpp inc_rings, inc_rings_finite, ], - dependencies: [ - py_dep, - cypari2, - cysignals, - flint, - givaro, - gmp, - mpfi, - mpfr, - ntl, - numpy, - pari, - singular, - ], + dependencies: deps, ) + endforeach install_subdir('padics', install_dir: sage_install_dir / 'rings/polynomial') diff --git a/src/sage/rings/quotient_ring_element.py b/src/sage/rings/quotient_ring_element.py index 9f05c54f21c..c01d96d9b80 100644 --- a/src/sage/rings/quotient_ring_element.py +++ b/src/sage/rings/quotient_ring_element.py @@ -18,11 +18,12 @@ from sage.structure.element import RingElement from sage.structure.richcmp import richcmp, rich_to_bool +from sage.features import FeatureNotPresentError try: from sage.interfaces.singular import singular as singular_default -except ImportError: +except (ImportError, FeatureNotPresentError): singular_default = None diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx index e228fa6e894..dc4e38f3c80 100644 --- a/src/sage/symbolic/expression.pyx +++ b/src/sage/symbolic/expression.pyx @@ -392,7 +392,6 @@ from sage.structure.element cimport Expression as Expression_abc from sage.symbolic.complexity_measures import string_length from sage.symbolic.function cimport SymbolicFunction from sage.rings.rational import Rational -from sage.rings.real_mpfr cimport RealNumber from sage.misc.derivative import multi_derivative from sage.misc.decorators import sage_wraps from sage.misc.latex import latex_variable_name @@ -13756,6 +13755,7 @@ cpdef new_Expression(parent, x): unsigned_infinity) from sage.structure.factorization import Factorization from sage.categories.sets_cat import Sets + from sage.rings.real_mpfr import RealNumber if isinstance(x, RealNumber): if x.is_NaN(): diff --git a/src/sage/symbolic/ginac/cmatcher.cpp b/src/sage/symbolic/ginac/cmatcher.cpp index 80e90f27998..b39bf0144fd 100644 --- a/src/sage/symbolic/ginac/cmatcher.cpp +++ b/src/sage/symbolic/ginac/cmatcher.cpp @@ -32,7 +32,12 @@ #include "operators.h" #include "utils.h" -#include +#ifdef _WIN32 + #define NOMINMAX + #include +#else + #include +#endif #include #include diff --git a/src/sage/symbolic/ginac/lst.h b/src/sage/symbolic/ginac/lst.h index 9a665938337..7d35f5a93c8 100644 --- a/src/sage/symbolic/ginac/lst.h +++ b/src/sage/symbolic/ginac/lst.h @@ -31,6 +31,9 @@ namespace GiNaC { typedef container lst; +/** Specialization of container::get_tinfo() for lst. */ +template<> tinfo_t lst::get_tinfo(); + /** Specialization of container::get_default_flags() for lst. */ template<> inline unsigned lst::get_default_flags() { return status_flags::not_shareable; } diff --git a/src/sage/symbolic/ginac/power.cpp b/src/sage/symbolic/ginac/power.cpp index e44e532b4a4..1065678a0b0 100644 --- a/src/sage/symbolic/ginac/power.cpp +++ b/src/sage/symbolic/ginac/power.cpp @@ -38,7 +38,12 @@ #include "cmatcher.h" #include "wildcard.h" -#include +#ifdef _WIN32 + #define NOMINMAX + #include +#else + #include +#endif #include #include #include diff --git a/src/sage/symbolic/meson.build b/src/sage/symbolic/meson.build index fc1f2a806e3..3d3bbc67afc 100644 --- a/src/sage/symbolic/meson.build +++ b/src/sage/symbolic/meson.build @@ -125,7 +125,7 @@ foreach name, pyx : extension_data_cpp inc_rings, include_directories('../libs/gmp'), ], - dependencies: [py_dep, cysignals, gmp, gsl, singular], + dependencies: [py_dep, cysignals, gmp, gsl, singular_factory], ) endforeach diff --git a/src/sage/symbolic/pynac_impl.pxi b/src/sage/symbolic/pynac_impl.pxi index 6b2d45499df..2af16ef1896 100644 --- a/src/sage/symbolic/pynac_impl.pxi +++ b/src/sage/symbolic/pynac_impl.pxi @@ -43,7 +43,6 @@ from sage.libs.gmp.all cimport * from sage.libs.gsl.complex cimport * from sage.libs.gsl.gamma cimport gsl_sf_lngamma_complex_e from sage.libs.mpmath import utils as mpmath_utils -from sage.libs.pari import pari from sage.misc.persist import loads, dumps from sage.rings.integer_ring import ZZ from sage.rings.integer cimport Integer, smallInteger @@ -1544,6 +1543,7 @@ def doublefactorial(n): cdef py_fibonacci(n): + from sage.libs.pari import pari return Integer(pari(n).fibonacci()) cdef py_step(n): diff --git a/subprojects/factory b/subprojects/factory deleted file mode 160000 index 769668a07b8..00000000000 --- a/subprojects/factory +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 769668a07b8110213dc5d8113ad24dd096439d4c diff --git a/subprojects/flint.wrap b/subprojects/flint.wrap new file mode 100644 index 00000000000..b2aa8b8aee6 --- /dev/null +++ b/subprojects/flint.wrap @@ -0,0 +1,8 @@ +[wrap-git] +url = https://github.com/flintlib/flint.git +revision = main +depth = 1 +patch_directory = flint + +[provide] +dependency_names = flint diff --git a/subprojects/mpfi.wrap b/subprojects/mpfi.wrap new file mode 100644 index 00000000000..979d4c7e018 --- /dev/null +++ b/subprojects/mpfi.wrap @@ -0,0 +1,5 @@ +[wrap-git] +url = https://gitlab.inria.fr/mpfi/mpfi.git +revision = head +depth = 1 +patch_directory = mpfi diff --git a/subprojects/packagefiles/flint/src/flint/NTL-interface.h b/subprojects/packagefiles/flint/src/flint/NTL-interface.h new file mode 100644 index 00000000000..d28da89e0e1 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/NTL-interface.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb.h b/subprojects/packagefiles/flint/src/flint/acb.h new file mode 100644 index 00000000000..7f3fd85abdc --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_calc.h b/subprojects/packagefiles/flint/src/flint/acb_calc.h new file mode 100644 index 00000000000..1c95ff03dd5 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_calc.h @@ -0,0 +1,5 @@ +// Workaround for https://github.com/mesonbuild/meson/issues/10298 +// to make sure that imports like "#include " work. + +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_dft.h b/subprojects/packagefiles/flint/src/flint/acb_dft.h new file mode 100644 index 00000000000..68829e5ba17 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_dft.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_dirichlet.h b/subprojects/packagefiles/flint/src/flint/acb_dirichlet.h new file mode 100644 index 00000000000..e3e8a72504a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_dirichlet.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_elliptic.h b/subprojects/packagefiles/flint/src/flint/acb_elliptic.h new file mode 100644 index 00000000000..ce6f9a0404a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_elliptic.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_hypgeom.h b/subprojects/packagefiles/flint/src/flint/acb_hypgeom.h new file mode 100644 index 00000000000..41f07009117 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_hypgeom.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_mat.h b/subprojects/packagefiles/flint/src/flint/acb_mat.h new file mode 100644 index 00000000000..305da38eb62 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_modular.h b/subprojects/packagefiles/flint/src/flint/acb_modular.h new file mode 100644 index 00000000000..40d4747ab5c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_modular.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_poly.h b/subprojects/packagefiles/flint/src/flint/acb_poly.h new file mode 100644 index 00000000000..299d1237aa1 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_theta.h b/subprojects/packagefiles/flint/src/flint/acb_theta.h new file mode 100644 index 00000000000..e638fe56f1e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_theta.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acb_types.h b/subprojects/packagefiles/flint/src/flint/acb_types.h new file mode 100644 index 00000000000..4bb192c57cd --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acb_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acf.h b/subprojects/packagefiles/flint/src/flint/acf.h new file mode 100644 index 00000000000..ea41d9b6a6a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acf.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/acf_types.h b/subprojects/packagefiles/flint/src/flint/acf_types.h new file mode 100644 index 00000000000..9b9ce3a8e0a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/acf_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/aprcl.h b/subprojects/packagefiles/flint/src/flint/aprcl.h new file mode 100644 index 00000000000..d5120206e28 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/aprcl.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb.h b/subprojects/packagefiles/flint/src/flint/arb.h new file mode 100644 index 00000000000..5dfc0ddf0b8 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb_calc.h b/subprojects/packagefiles/flint/src/flint/arb_calc.h new file mode 100644 index 00000000000..da926aacb0c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb_calc.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb_fmpz_poly.h b/subprojects/packagefiles/flint/src/flint/arb_fmpz_poly.h new file mode 100644 index 00000000000..5e85a76e5c9 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb_fmpz_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb_fpwrap.h b/subprojects/packagefiles/flint/src/flint/arb_fpwrap.h new file mode 100644 index 00000000000..732fbe0c617 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb_fpwrap.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb_hypgeom.h b/subprojects/packagefiles/flint/src/flint/arb_hypgeom.h new file mode 100644 index 00000000000..1710bbad3df --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb_hypgeom.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb_mat.h b/subprojects/packagefiles/flint/src/flint/arb_mat.h new file mode 100644 index 00000000000..fe48abb4042 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb_poly.h b/subprojects/packagefiles/flint/src/flint/arb_poly.h new file mode 100644 index 00000000000..2c4f73b89b6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arb_types.h b/subprojects/packagefiles/flint/src/flint/arb_types.h new file mode 100644 index 00000000000..e03cb7c55b2 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arb_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arf.h b/subprojects/packagefiles/flint/src/flint/arf.h new file mode 100644 index 00000000000..8287baa64a3 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arf.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arf_types.h b/subprojects/packagefiles/flint/src/flint/arf_types.h new file mode 100644 index 00000000000..55f90dcbd0a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arf_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/arith.h b/subprojects/packagefiles/flint/src/flint/arith.h new file mode 100644 index 00000000000..eb5810930cd --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/arith.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/bernoulli.h b/subprojects/packagefiles/flint/src/flint/bernoulli.h new file mode 100644 index 00000000000..834f312dbae --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/bernoulli.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/bool_mat.h b/subprojects/packagefiles/flint/src/flint/bool_mat.h new file mode 100644 index 00000000000..54989fc86f0 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/bool_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/ca.h b/subprojects/packagefiles/flint/src/flint/ca.h new file mode 100644 index 00000000000..07bfa249fe1 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/ca.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/ca_ext.h b/subprojects/packagefiles/flint/src/flint/ca_ext.h new file mode 100644 index 00000000000..a4f17d56198 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/ca_ext.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/ca_field.h b/subprojects/packagefiles/flint/src/flint/ca_field.h new file mode 100644 index 00000000000..01cef916bc5 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/ca_field.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/ca_mat.h b/subprojects/packagefiles/flint/src/flint/ca_mat.h new file mode 100644 index 00000000000..4d4a28c6d69 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/ca_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/ca_poly.h b/subprojects/packagefiles/flint/src/flint/ca_poly.h new file mode 100644 index 00000000000..7e9448ccd6e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/ca_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/ca_vec.h b/subprojects/packagefiles/flint/src/flint/ca_vec.h new file mode 100644 index 00000000000..44d342c538e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/ca_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/calcium.h b/subprojects/packagefiles/flint/src/flint/calcium.h new file mode 100644 index 00000000000..bd1a14eb47a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/calcium.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/crt_helpers.h b/subprojects/packagefiles/flint/src/flint/crt_helpers.h new file mode 100644 index 00000000000..689d6f03d89 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/crt_helpers.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/d_mat.h b/subprojects/packagefiles/flint/src/flint/d_mat.h new file mode 100644 index 00000000000..9993267301f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/d_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/d_vec.h b/subprojects/packagefiles/flint/src/flint/d_vec.h new file mode 100644 index 00000000000..fa6fd39221f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/d_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/dirichlet.h b/subprojects/packagefiles/flint/src/flint/dirichlet.h new file mode 100644 index 00000000000..a78168004f0 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/dirichlet.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/dlog.h b/subprojects/packagefiles/flint/src/flint/dlog.h new file mode 100644 index 00000000000..ea924a91f8a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/dlog.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/double_extras.h b/subprojects/packagefiles/flint/src/flint/double_extras.h new file mode 100644 index 00000000000..da929eca928 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/double_extras.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/double_interval.h b/subprojects/packagefiles/flint/src/flint/double_interval.h new file mode 100644 index 00000000000..c8878b1601f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/double_interval.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fexpr.h b/subprojects/packagefiles/flint/src/flint/fexpr.h new file mode 100644 index 00000000000..44b2f9a34f0 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fexpr.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fexpr_builtin.h b/subprojects/packagefiles/flint/src/flint/fexpr_builtin.h new file mode 100644 index 00000000000..64793baa2e9 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fexpr_builtin.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fft.h b/subprojects/packagefiles/flint/src/flint/fft.h new file mode 100644 index 00000000000..708e6392979 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fft.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fft_small.h b/subprojects/packagefiles/flint/src/flint/fft_small.h new file mode 100644 index 00000000000..bfe7f430b09 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fft_small.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fft_tuning.h b/subprojects/packagefiles/flint/src/flint/fft_tuning.h new file mode 100644 index 00000000000..20ad2e59978 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fft_tuning.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/flint-config.h b/subprojects/packagefiles/flint/src/flint/flint-config.h new file mode 100644 index 00000000000..e15e1ce4583 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/flint-config.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/flint.h b/subprojects/packagefiles/flint/src/flint/flint.h new file mode 100644 index 00000000000..f5771d70eaa --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/flint.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpq.h b/subprojects/packagefiles/flint/src/flint/fmpq.h new file mode 100644 index 00000000000..911a42f85b2 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpq.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpq_mat.h b/subprojects/packagefiles/flint/src/flint/fmpq_mat.h new file mode 100644 index 00000000000..b510251686e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpq_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpq_mpoly.h b/subprojects/packagefiles/flint/src/flint/fmpq_mpoly.h new file mode 100644 index 00000000000..ec550a9c7c6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpq_mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpq_mpoly_factor.h b/subprojects/packagefiles/flint/src/flint/fmpq_mpoly_factor.h new file mode 100644 index 00000000000..eafc852a75f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpq_mpoly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpq_poly.h b/subprojects/packagefiles/flint/src/flint/fmpq_poly.h new file mode 100644 index 00000000000..9c6948a1c46 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpq_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpq_types.h b/subprojects/packagefiles/flint/src/flint/fmpq_types.h new file mode 100644 index 00000000000..e647eb44636 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpq_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpq_vec.h b/subprojects/packagefiles/flint/src/flint/fmpq_vec.h new file mode 100644 index 00000000000..356a4ffafe6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpq_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz.h b/subprojects/packagefiles/flint/src/flint/fmpz.h new file mode 100644 index 00000000000..d7a61cee48c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_extras.h b/subprojects/packagefiles/flint/src/flint/fmpz_extras.h new file mode 100644 index 00000000000..36889826b75 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_extras.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_factor.h b/subprojects/packagefiles/flint/src/flint/fmpz_factor.h new file mode 100644 index 00000000000..c7fb6577c91 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_lll.h b/subprojects/packagefiles/flint/src/flint/fmpz_lll.h new file mode 100644 index 00000000000..a1ffd9b27b4 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_lll.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mat.h b/subprojects/packagefiles/flint/src/flint/fmpz_mat.h new file mode 100644 index 00000000000..ceb3a77bc8f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod.h new file mode 100644 index 00000000000..f1eaa851c26 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod_mat.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod_mat.h new file mode 100644 index 00000000000..a1ab0058fe8 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod_mpoly.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod_mpoly.h new file mode 100644 index 00000000000..8af7323d53e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod_mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod_mpoly_factor.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod_mpoly_factor.h new file mode 100644 index 00000000000..b9f4f9d701a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod_mpoly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod_poly.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod_poly.h new file mode 100644 index 00000000000..d6a96a586a8 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod_poly_factor.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod_poly_factor.h new file mode 100644 index 00000000000..9a12d75952f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod_poly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod_types.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod_types.h new file mode 100644 index 00000000000..b242fa0bf73 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mod_vec.h b/subprojects/packagefiles/flint/src/flint/fmpz_mod_vec.h new file mode 100644 index 00000000000..9f8f10c7d0a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mod_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mpoly.h b/subprojects/packagefiles/flint/src/flint/fmpz_mpoly.h new file mode 100644 index 00000000000..7f9482bbcce --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mpoly_factor.h b/subprojects/packagefiles/flint/src/flint/fmpz_mpoly_factor.h new file mode 100644 index 00000000000..84a8ca25170 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mpoly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_mpoly_q.h b/subprojects/packagefiles/flint/src/flint/fmpz_mpoly_q.h new file mode 100644 index 00000000000..f52681ace3b --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_mpoly_q.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_poly.h b/subprojects/packagefiles/flint/src/flint/fmpz_poly.h new file mode 100644 index 00000000000..d476a95fd3b --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_poly_factor.h b/subprojects/packagefiles/flint/src/flint/fmpz_poly_factor.h new file mode 100644 index 00000000000..9d79dd533aa --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_poly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_poly_mat.h b/subprojects/packagefiles/flint/src/flint/fmpz_poly_mat.h new file mode 100644 index 00000000000..939d44ef4b0 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_poly_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_poly_q.h b/subprojects/packagefiles/flint/src/flint/fmpz_poly_q.h new file mode 100644 index 00000000000..0731b857bc8 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_poly_q.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_types.h b/subprojects/packagefiles/flint/src/flint/fmpz_types.h new file mode 100644 index 00000000000..3b4e3484a03 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpz_vec.h b/subprojects/packagefiles/flint/src/flint/fmpz_vec.h new file mode 100644 index 00000000000..3e39051718b --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpz_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fmpzi.h b/subprojects/packagefiles/flint/src/flint/fmpzi.h new file mode 100644 index 00000000000..39c311331d0 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fmpzi.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq.h b/subprojects/packagefiles/flint/src/flint/fq.h new file mode 100644 index 00000000000..98c7e420b2f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_default.h b/subprojects/packagefiles/flint/src/flint/fq_default.h new file mode 100644 index 00000000000..769a693909c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_default.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_default_mat.h b/subprojects/packagefiles/flint/src/flint/fq_default_mat.h new file mode 100644 index 00000000000..18192771bdf --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_default_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_default_poly.h b/subprojects/packagefiles/flint/src/flint/fq_default_poly.h new file mode 100644 index 00000000000..fca19e85238 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_default_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_default_poly_factor.h b/subprojects/packagefiles/flint/src/flint/fq_default_poly_factor.h new file mode 100644 index 00000000000..0f31b8c516c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_default_poly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_embed.h b/subprojects/packagefiles/flint/src/flint/fq_embed.h new file mode 100644 index 00000000000..7340dc6b396 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_embed.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_embed_templates.h b/subprojects/packagefiles/flint/src/flint/fq_embed_templates.h new file mode 100644 index 00000000000..7c4bea84d74 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_embed_templates.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_mat.h b/subprojects/packagefiles/flint/src/flint/fq_mat.h new file mode 100644 index 00000000000..89d2c6670c1 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_mat_templates.h b/subprojects/packagefiles/flint/src/flint/fq_mat_templates.h new file mode 100644 index 00000000000..b34212cad01 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_mat_templates.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod.h b/subprojects/packagefiles/flint/src/flint/fq_nmod.h new file mode 100644 index 00000000000..8537fc3786a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_embed.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_embed.h new file mode 100644 index 00000000000..16dcccc97c8 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_embed.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_mat.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_mat.h new file mode 100644 index 00000000000..9c303e6791c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_mpoly.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_mpoly.h new file mode 100644 index 00000000000..7710947a964 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_mpoly_factor.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_mpoly_factor.h new file mode 100644 index 00000000000..30e03b000ea --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_mpoly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_poly.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_poly.h new file mode 100644 index 00000000000..c6a2f25a81c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_poly_factor.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_poly_factor.h new file mode 100644 index 00000000000..7918721929b --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_poly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_types.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_types.h new file mode 100644 index 00000000000..2c06aac32ca --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_nmod_vec.h b/subprojects/packagefiles/flint/src/flint/fq_nmod_vec.h new file mode 100644 index 00000000000..3b405872710 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_nmod_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_poly.h b/subprojects/packagefiles/flint/src/flint/fq_poly.h new file mode 100644 index 00000000000..7a03f343252 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_poly_factor.h b/subprojects/packagefiles/flint/src/flint/fq_poly_factor.h new file mode 100644 index 00000000000..5956b314652 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_poly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_poly_factor_templates.h b/subprojects/packagefiles/flint/src/flint/fq_poly_factor_templates.h new file mode 100644 index 00000000000..2646041c930 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_poly_factor_templates.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_poly_templates.h b/subprojects/packagefiles/flint/src/flint/fq_poly_templates.h new file mode 100644 index 00000000000..2cc2cc5544e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_poly_templates.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_templates.h b/subprojects/packagefiles/flint/src/flint/fq_templates.h new file mode 100644 index 00000000000..86e72780947 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_templates.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_types.h b/subprojects/packagefiles/flint/src/flint/fq_types.h new file mode 100644 index 00000000000..75d61564256 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_vec.h b/subprojects/packagefiles/flint/src/flint/fq_vec.h new file mode 100644 index 00000000000..d599e38dc9f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_vec_templates.h b/subprojects/packagefiles/flint/src/flint/fq_vec_templates.h new file mode 100644 index 00000000000..3b24a345c96 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_vec_templates.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech.h b/subprojects/packagefiles/flint/src/flint/fq_zech.h new file mode 100644 index 00000000000..75f8725a39b --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_embed.h b/subprojects/packagefiles/flint/src/flint/fq_zech_embed.h new file mode 100644 index 00000000000..cb5395d088c --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_embed.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_mat.h b/subprojects/packagefiles/flint/src/flint/fq_zech_mat.h new file mode 100644 index 00000000000..0c5a4e3d283 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_mpoly.h b/subprojects/packagefiles/flint/src/flint/fq_zech_mpoly.h new file mode 100644 index 00000000000..9c47809969a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_mpoly_factor.h b/subprojects/packagefiles/flint/src/flint/fq_zech_mpoly_factor.h new file mode 100644 index 00000000000..7d3ff5fad83 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_mpoly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_poly.h b/subprojects/packagefiles/flint/src/flint/fq_zech_poly.h new file mode 100644 index 00000000000..c4186b3f02e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_poly_factor.h b/subprojects/packagefiles/flint/src/flint/fq_zech_poly_factor.h new file mode 100644 index 00000000000..27d35098d7d --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_poly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_types.h b/subprojects/packagefiles/flint/src/flint/fq_zech_types.h new file mode 100644 index 00000000000..792855c4b27 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/fq_zech_vec.h b/subprojects/packagefiles/flint/src/flint/fq_zech_vec.h new file mode 100644 index 00000000000..28d065c28b3 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/fq_zech_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gettimeofday.h b/subprojects/packagefiles/flint/src/flint/gettimeofday.h new file mode 100644 index 00000000000..28f0b99fda2 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gettimeofday.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gmpcompat.h b/subprojects/packagefiles/flint/src/flint/gmpcompat.h new file mode 100644 index 00000000000..2811b0f81b4 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gmpcompat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gr.h b/subprojects/packagefiles/flint/src/flint/gr.h new file mode 100644 index 00000000000..3f291f7e37e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gr.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gr_generic.h b/subprojects/packagefiles/flint/src/flint/gr_generic.h new file mode 100644 index 00000000000..c6df25360a5 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gr_generic.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gr_mat.h b/subprojects/packagefiles/flint/src/flint/gr_mat.h new file mode 100644 index 00000000000..3d121707c12 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gr_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gr_mpoly.h b/subprojects/packagefiles/flint/src/flint/gr_mpoly.h new file mode 100644 index 00000000000..f083138ce43 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gr_mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gr_poly.h b/subprojects/packagefiles/flint/src/flint/gr_poly.h new file mode 100644 index 00000000000..2485e54e4cb --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gr_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gr_special.h b/subprojects/packagefiles/flint/src/flint/gr_special.h new file mode 100644 index 00000000000..a5ca6ed64f3 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gr_special.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/gr_vec.h b/subprojects/packagefiles/flint/src/flint/gr_vec.h new file mode 100644 index 00000000000..bbd630b19a8 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/gr_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/hypgeom.h b/subprojects/packagefiles/flint/src/flint/hypgeom.h new file mode 100644 index 00000000000..6244c194341 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/hypgeom.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/limb_types.h b/subprojects/packagefiles/flint/src/flint/limb_types.h new file mode 100644 index 00000000000..09c9e6985d5 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/limb_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/long_extras.h b/subprojects/packagefiles/flint/src/flint/long_extras.h new file mode 100644 index 00000000000..dcc18a1c684 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/long_extras.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/longlong.h b/subprojects/packagefiles/flint/src/flint/longlong.h new file mode 100644 index 00000000000..b061c93e775 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/longlong.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/longlong_asm_clang.h b/subprojects/packagefiles/flint/src/flint/longlong_asm_clang.h new file mode 100644 index 00000000000..41cc3d153c6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/longlong_asm_clang.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/longlong_asm_gcc.h b/subprojects/packagefiles/flint/src/flint/longlong_asm_gcc.h new file mode 100644 index 00000000000..d88298463ff --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/longlong_asm_gcc.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/longlong_div_gnu.h b/subprojects/packagefiles/flint/src/flint/longlong_div_gnu.h new file mode 100644 index 00000000000..bc661f558dd --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/longlong_div_gnu.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/longlong_msc_arm64.h b/subprojects/packagefiles/flint/src/flint/longlong_msc_arm64.h new file mode 100644 index 00000000000..56e93976dfd --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/longlong_msc_arm64.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/longlong_msc_x86.h b/subprojects/packagefiles/flint/src/flint/longlong_msc_x86.h new file mode 100644 index 00000000000..8f00961308a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/longlong_msc_x86.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/machine_vectors.h b/subprojects/packagefiles/flint/src/flint/machine_vectors.h new file mode 100644 index 00000000000..527189033a0 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/machine_vectors.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/mag.h b/subprojects/packagefiles/flint/src/flint/mag.h new file mode 100644 index 00000000000..67212d35932 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/mag.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/mpf-impl.h b/subprojects/packagefiles/flint/src/flint/mpf-impl.h new file mode 100644 index 00000000000..687e8918274 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/mpf-impl.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/mpfr_mat.h b/subprojects/packagefiles/flint/src/flint/mpfr_mat.h new file mode 100644 index 00000000000..f07e3d5ba51 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/mpfr_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/mpfr_vec.h b/subprojects/packagefiles/flint/src/flint/mpfr_vec.h new file mode 100644 index 00000000000..11eb3cb877d --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/mpfr_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/mpn_extras.h b/subprojects/packagefiles/flint/src/flint/mpn_extras.h new file mode 100644 index 00000000000..c2146675bb6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/mpn_extras.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/mpoly.h b/subprojects/packagefiles/flint/src/flint/mpoly.h new file mode 100644 index 00000000000..2561008e346 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/mpoly_types.h b/subprojects/packagefiles/flint/src/flint/mpoly_types.h new file mode 100644 index 00000000000..5678022a0cb --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/mpoly_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/n_poly.h b/subprojects/packagefiles/flint/src/flint/n_poly.h new file mode 100644 index 00000000000..43cb317e9ae --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/n_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/n_poly_types.h b/subprojects/packagefiles/flint/src/flint/n_poly_types.h new file mode 100644 index 00000000000..4d2cf5a5535 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/n_poly_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nf.h b/subprojects/packagefiles/flint/src/flint/nf.h new file mode 100644 index 00000000000..f5ee26d6cde --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nf.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nf_elem.h b/subprojects/packagefiles/flint/src/flint/nf_elem.h new file mode 100644 index 00000000000..d53b0a6769f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nf_elem.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod.h b/subprojects/packagefiles/flint/src/flint/nmod.h new file mode 100644 index 00000000000..c36638bfc77 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_mat.h b/subprojects/packagefiles/flint/src/flint/nmod_mat.h new file mode 100644 index 00000000000..35addb3a675 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_mpoly.h b/subprojects/packagefiles/flint/src/flint/nmod_mpoly.h new file mode 100644 index 00000000000..53b8e06f8f6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_mpoly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_mpoly_factor.h b/subprojects/packagefiles/flint/src/flint/nmod_mpoly_factor.h new file mode 100644 index 00000000000..76051377f57 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_mpoly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_poly.h b/subprojects/packagefiles/flint/src/flint/nmod_poly.h new file mode 100644 index 00000000000..bdfa1aba417 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_poly_factor.h b/subprojects/packagefiles/flint/src/flint/nmod_poly_factor.h new file mode 100644 index 00000000000..3e369cc204a --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_poly_factor.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_poly_mat.h b/subprojects/packagefiles/flint/src/flint/nmod_poly_mat.h new file mode 100644 index 00000000000..9760dc710d8 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_poly_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_types.h b/subprojects/packagefiles/flint/src/flint/nmod_types.h new file mode 100644 index 00000000000..c547e6593fd --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/nmod_vec.h b/subprojects/packagefiles/flint/src/flint/nmod_vec.h new file mode 100644 index 00000000000..21d6263b6b9 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/nmod_vec.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/padic.h b/subprojects/packagefiles/flint/src/flint/padic.h new file mode 100644 index 00000000000..34f3cefb8df --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/padic.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/padic_mat.h b/subprojects/packagefiles/flint/src/flint/padic_mat.h new file mode 100644 index 00000000000..b03170e9874 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/padic_mat.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/padic_poly.h b/subprojects/packagefiles/flint/src/flint/padic_poly.h new file mode 100644 index 00000000000..d52664d1ff6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/padic_poly.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/padic_types.h b/subprojects/packagefiles/flint/src/flint/padic_types.h new file mode 100644 index 00000000000..15374038981 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/padic_types.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/partitions.h b/subprojects/packagefiles/flint/src/flint/partitions.h new file mode 100644 index 00000000000..9f2b43ebc11 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/partitions.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/perm.h b/subprojects/packagefiles/flint/src/flint/perm.h new file mode 100644 index 00000000000..f33606d0762 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/perm.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/profiler.h b/subprojects/packagefiles/flint/src/flint/profiler.h new file mode 100644 index 00000000000..454e717c61f --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/profiler.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/qadic.h b/subprojects/packagefiles/flint/src/flint/qadic.h new file mode 100644 index 00000000000..219cfbd21c9 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/qadic.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/qfb.h b/subprojects/packagefiles/flint/src/flint/qfb.h new file mode 100644 index 00000000000..336d7e91039 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/qfb.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/qqbar.h b/subprojects/packagefiles/flint/src/flint/qqbar.h new file mode 100644 index 00000000000..f10e4c49be6 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/qqbar.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/qsieve.h b/subprojects/packagefiles/flint/src/flint/qsieve.h new file mode 100644 index 00000000000..48389b2d81e --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/qsieve.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/templates.h b/subprojects/packagefiles/flint/src/flint/templates.h new file mode 100644 index 00000000000..1ab56dc7417 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/templates.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/test_helpers.h b/subprojects/packagefiles/flint/src/flint/test_helpers.h new file mode 100644 index 00000000000..a1b97c0f717 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/test_helpers.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/thread_pool.h b/subprojects/packagefiles/flint/src/flint/thread_pool.h new file mode 100644 index 00000000000..c84a309c8aa --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/thread_pool.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/thread_support.h b/subprojects/packagefiles/flint/src/flint/thread_support.h new file mode 100644 index 00000000000..a4a42c0c2c9 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/thread_support.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/flint/src/flint/ulong_extras.h b/subprojects/packagefiles/flint/src/flint/ulong_extras.h new file mode 100644 index 00000000000..49e8649fed2 --- /dev/null +++ b/subprojects/packagefiles/flint/src/flint/ulong_extras.h @@ -0,0 +1,2 @@ +#pragma once +#include diff --git a/subprojects/packagefiles/mpfi/meson.build b/subprojects/packagefiles/mpfi/meson.build new file mode 100644 index 00000000000..82c93a70ac2 --- /dev/null +++ b/subprojects/packagefiles/mpfi/meson.build @@ -0,0 +1,115 @@ +project( + 'mpfi', + 'c', + version: '1.5.4' +) + +c = meson.get_compiler('c') + +# Dependencies +gmp = dependency('gmp', version: '>= 4.1.0') +mpfr = dependency('mpfr', version: '>= 4.0.1') + +# Configuration data +conf = configuration_data() +conf.set('PACKAGE_VERSION', '"' + meson.project_version() + '"') +# Check for functions +conf.set('HAVE_DUP2', c.has_function('dup2') ? 1 : 0) +conf.set('HAVE_GETTIMEOFDAY', c.has_function('gettimeofday') ? 1 : 0) +conf.set('HAVE_MPFR_Q_SUB', c.has_function('mpfr_q_sub') ? 1 : 0) +conf.set('HAVE_MPFR_Z_SUB', c.has_function('mpfr_z_sub') ? 1 : 0) +conf.set('HAVE_MPFR_Z_DIV', c.has_function('mpfr_z_div') ? 1 : 0) + +configure_file( + output: 'mpfi_config.h', + configuration: conf +) + +# Source files +src = files( + 'src/abs.c', 'src/acos.c', 'src/acosh.c', 'src/add.c', + 'src/add_d.c', 'src/add_fr.c', 'src/add_q.c', 'src/add_si.c', + 'src/add_ui.c', 'src/add_z.c', 'src/alea.c', 'src/asin.c', + 'src/asinh.c', 'src/atan2.c', 'src/atan.c', 'src/atanh.c', + 'src/bisect.c', 'src/blow.c', 'src/cbrt.c', 'src/clear.c', + 'src/clears.c', 'src/cmp.c', 'src/cmp_sym_pi.c', 'src/constants.c', + 'src/cos.c', 'src/cosh.c', 'src/csc.c', 'src/csch.c', + 'src/cot.c', 'src/coth.c', 'src/d_div.c', 'src/d_sub.c', + 'src/diam.c', 'src/div.c', 'src/div_2exp.c', 'src/div_2si.c', + 'src/div_2ui.c', 'src/div_d.c', 'src/div_ext.c', 'src/div_fr.c', + 'src/div_q.c', 'src/div_si.c', 'src/div_ui.c', 'src/div_z.c', + 'src/erandom.c', 'src/error.c', 'src/exp.c', 'src/exp2.c', + 'src/exp10.c', 'src/expm1.c', 'src/exp2m1.c', 'src/exp10m1.c', + 'src/fr_div.c', 'src/fr_sub.c', 'src/get_endpoints.c', 'src/get_fr.c', + 'src/get_d.c', 'src/get_prec.c', 'src/get_version.c', 'src/has_zero.c', + 'src/hypot.c', 'src/increase.c', 'src/init.c', 'src/init2.c', + 'src/inits.c', 'src/inits2.c', 'src/intersect.c', 'src/interv_d.c', + 'src/interv_fr.c', 'src/interv_q.c', 'src/interv_si.c', 'src/interv_ui.c', + 'src/interv_z.c', 'src/inp_str.c', 'src/inv.c', 'src/is_empty.c', + 'src/is_inside.c', 'src/log.c', 'src/log10.c', 'src/log1p.c', + 'src/log2.c', 'src/log2p1.c', 'src/log10p1.c', 'src/mag.c', + 'src/mid.c', 'src/mig.c', 'src/mul.c', 'src/mul_2exp.c', + 'src/mul_2si.c', 'src/mul_2ui.c', 'src/mul_d.c', 'src/mul_fr.c', + 'src/mul_q.c', 'src/mul_si.c', 'src/mul_ui.c', 'src/mul_z.c', + 'src/neg.c', 'src/nrandom.c', 'src/out_str.c', 'src/predicates.c', + 'src/print_binary.c', 'src/put.c', 'src/put_d.c', 'src/put_fr.c', + 'src/put_q.c', 'src/put_si.c', 'src/put_ui.c', 'src/put_z.c', + 'src/q_div.c', 'src/q_sub.c', 'src/quadrant.c', 'src/rec_sqrt.c', + 'src/revert_if_needed.c', 'src/round_prec.c', 'src/sec.c', 'src/sech.c', + 'src/set.c', 'src/set_d.c', 'src/set_flt.c', 'src/set_fr.c', + 'src/set_ld.c', 'src/set_prec.c', 'src/set_q.c', 'src/set_si.c', + 'src/set_str.c', 'src/set_ui.c', 'src/set_z.c', 'src/si_div.c', + 'src/si_sub.c', 'src/sign.c', 'src/sin.c', 'src/sinh.c', + 'src/sqr.c', 'src/sqrt.c', 'src/sub.c', 'src/sub_d.c', + 'src/sub_fr.c', 'src/sub_q.c', 'src/sub_si.c', 'src/sub_ui.c', + 'src/sub_z.c', 'src/swap.c', 'src/tan.c', 'src/tanh.c', + 'src/ui_div.c', 'src/ui_sub.c', 'src/union.c', 'src/urandom.c', + 'src/z_div.c', 'src/z_sub.c' +) + +# Library +libmpfi = static_library( + 'mpfi', + src, + include_directories: include_directories('.', 'src'), + dependencies: [gmp, mpfr], + install: true, +) + +# Install headers +install_headers('src/mpfi.h', 'src/mpfi_io.h', subdir: 'mpfi') + +# Pkg-config file +# pkgconfig = import('pkgconfig') +# pkgconfig.generate( +# name: 'mpfi', +# description: 'MPFI library', +# version: meson.project_version(), +# libraries: libmpfi, +# subdirs: 'mpfi', +# install_dir: join_paths(get_option('libdir'), 'pkgconfig'), +# ) + +mpfi_dep = declare_dependency( + include_directories: include_directories('src'), + link_with: libmpfi, + dependencies: [gmp, mpfr], +) + +# Extra distribution files +# dist_files = [ +# 'mpfi_config.h.in', +# 'AUTHORS', +# 'COPYING', +# 'COPYING.LESSER', +# 'NEWS', +# 'TODO', +# ] +# foreach file : dist_files +# meson.add_dist_script('cp', file, meson.current_build_dir()) +# endforeach + +# Subdirectories +#subdir('doc') +#subdir('src') +#subdir('tests') diff --git a/subprojects/packagefiles/singular/factory/internal/meson.build b/subprojects/packagefiles/singular/factory/internal/meson.build new file mode 100644 index 00000000000..79ce619d8f1 --- /dev/null +++ b/subprojects/packagefiles/singular/factory/internal/meson.build @@ -0,0 +1,4 @@ +config_h = configure_file( + output: 'config.h', + configuration: conf +) diff --git a/subprojects/packagefiles/singular/factory/meson.build b/subprojects/packagefiles/singular/factory/meson.build new file mode 100644 index 00000000000..a2b1961253e --- /dev/null +++ b/subprojects/packagefiles/singular/factory/meson.build @@ -0,0 +1,285 @@ +# Dependencies +gmp = dependency('gmp', required: true) +flint = dependency('flint', required: true) +ntl = dependency('ntl', required: false) + +# Configuration data +fs = import('fs') +gen_headers = [] +conf = configuration_data() +# Use no streamio (C++) +has_iostream_h = cpp.has_header('iostream.h') +conf.set('NOSTREAMIO', not has_iostream_h)#, 'strstream.h', 'fstream.h', 'iostream', 'string', 'fstream', 'ctype.h')) +conf.set('HAVE_IOSTREAM_H', has_iostream_h) +conf.set('FACTORYVERSION', meson.project_version()) +factory_configuration = '@0@ in @1@'.format(meson.project_version(), meson.project_source_root()) +conf.set_quoted('FACTORYCONFIGURATION', factory_configuration) + +gen_headers += fs.copyfile('factory.template', 'factory.h')#, install: true, install_dir: 'factory') +gen_headers += fs.copyfile('factoryconf.template', 'factoryconf.h')#, install: true, install_dir: 'factory') + +# https://mesonbuild.com/Wrap-best-practices-and-tips.html#do-not-put-configh-in-external-search-path +#subdir('internal') +gen_headers += configure_file( + output: 'config.h', + configuration: conf +) + +internal_inc = include_directories('internal') + +# Include directories +inc_dirs = [include_directories('include', 'include/factory', '.'), src, internal_inc] + +# Compiler flags +cpp_args = [ + '-DFACTORY_BUILDING_DLL', +] + +# Source files +sources = files( + 'canonicalform.cc', + 'cf_algorithm.cc', + 'cf_char.cc', + 'cfCharSets.cc', + 'cfCharSetsUtil.cc', + 'cf_chinese.cc', + 'cf_cyclo.cc', + 'cf_eval.cc', + 'cfEzgcd.cc', + 'cf_factor.cc', + 'cf_factory.cc', + 'cf_gcd.cc', + 'cfGcdAlgExt.cc', + 'cfGcdUtil.cc', + 'cf_generator.cc', + 'cf_globals.cc', + 'cf_hnf.cc', + 'cf_inline.cc', + 'cf_irred.cc', + 'cf_iter.cc', + 'cf_iter_inline.cc', + 'cf_linsys.cc', + 'cf_map.cc', + 'cf_map_ext.cc', + 'cfModGcd.cc', + 'cfNewtonPolygon.cc', + 'cfNTLzzpEXGCD.cc', + 'cfModResultant.cc', + 'cf_ops.cc', + 'cf_primes.cc', + 'cf_random.cc', + 'cf_resultant.cc', + 'cf_reval.cc', + 'cfSubResGcd.cc', + 'cf_switches.cc', + 'cf_util.cc', + 'cf_binom.cc', + 'cfUnivarGcd.cc', + 'cf_roots.cc', + 'debug.cc', + 'DegreePattern.cc', + 'ExtensionInfo.cc', + 'facAbsBiFact.cc', + 'facAbsFact.cc', + 'facAlgExt.cc', + 'facAlgFunc.cc', + 'facAlgFuncUtil.cc', + 'facBivar.cc', + 'facFactorize.cc', + 'fac_sqrfree.cc', + 'fac_util.cc', + 'fac_berlekamp.cc', + 'fac_cantzass.cc', + 'fac_univar.cc', + 'fac_multivar.cc', + 'fac_multihensel.cc', + 'fac_iterfor.cc', + 'fac_distrib.cc', + 'facFqBivar.cc', + 'facFqBivarUtil.cc', + 'facFqFactorize.cc', + 'facFqFactorizeUtil.cc', + 'facFqSquarefree.cc', + 'facHensel.cc', + 'facIrredTest.cc', + 'facMul.cc', + 'facSparseHensel.cc', + 'ffops.cc', + 'FLINTconvert.cc', + 'gf_tabutil.cc', + 'gfops.cc', + 'imm.cc', + 'int_cf.cc', + 'int_int.cc', + 'int_intdiv.cc', + 'int_poly.cc', + 'int_rat.cc', + 'int_pp.cc', + 'variable.cc', + 'NTLconvert.cc', + 'singext.cc', + 'parseutil.cc', + 'ftmpl_inst.cc', + 'threadsupport.cc', +) + +# Library +libfactory = static_library( + 'factory', + sources, gen_headers, + include_directories: inc_dirs, + dependencies: [gmp, flint, ntl], + cpp_args: cpp_args, + install: true, +) + +# Executable for generating GF(q)-tables +# gengftables = executable( +# 'gengftables', +# 'gengftables-conway.cc', +# include_directories: inc_dirs, +# dependencies: [gmp, flint, ntl], +# install: true, +# ) + +# # Test program +# test_prog = executable( +# 'test_prog', +# 'test.cc', +# include_directories: inc_dirs, +# dependencies: [gmp, flint, ntl], +# install: false, +# ) + +# test('factory test', test_prog) + +# Install headers +install_headers( + [ + 'cf_assert.h', + 'canonicalform.h', + 'cf_algorithm.h', + 'cfCharSets.h', + 'cfCharSetsUtil.h', + 'cf_cyclo.h', + 'cf_defs.h', + 'cf_eval.h', + 'cfEzgcd.h', + 'cf_factory.h', + 'cf_generator.h', + 'cf_globals.h', + 'cfGcdAlgExt.h', + 'cfGcdUtil.h', + 'cf_hnf.h', + 'cf_irred.h', + 'cf_iter.h', + 'cf_map.h', + 'cf_map_ext.h', + 'cfModGcd.h', + 'cfNewtonPolygon.h', + 'cfNTLzzpEXGCD.h', + 'cfModResultant.h', + 'cf_primes.h', + 'cf_primetab.h', + 'cf_random.h', + 'cf_reval.h', + 'cfSubResGcd.h', + 'cf_switches.h', + 'cf_util.h', + 'cf_binom.h', + 'cfUnivarGcd.h', + 'cf_roots.h', + 'debug.h', + 'DegreePattern.h', + 'ExtensionInfo.h', + 'facAbsBiFact.h', + 'facAbsFact.h', + 'facAlgExt.h', + 'facAlgFunc.h', + 'facAlgFuncUtil.h', + 'facBivar.h', + 'facFactorize.h', + 'fac_sqrfree.h', + 'fac_util.h', + 'fac_berlekamp.h', + 'fac_cantzass.h', + 'fac_univar.h', + 'fac_multivar.h', + 'fac_multihensel.h', + 'fac_iterfor.h', + 'fac_distrib.h', + 'facFqBivar.h', + 'facFqBivarUtil.h', + 'facFqFactorize.h', + 'facFqFactorizeUtil.h', + 'facFqSquarefree.h', + 'facHensel.h', + 'facIrredTest.h', + 'facMul.h', + 'facSparseHensel.h', + 'ffops.h', + 'FLINTconvert.h', + 'gf_tabutil.h', + 'gfops.h', + 'gmpext.h', + 'imm.h', + 'int_cf.h', + 'int_int.h', + 'int_poly.h', + 'int_rat.h', + 'int_pp.h', + 'timing.h', + 'variable.h', + 'NTLconvert.h', + 'singext.h', + 'parseutil.h', + ], + subdir: 'factory', +) + +# Install GF(q)-tables +gftables = [ + 'gftables/10201', 'gftables/1024', 'gftables/10609', 'gftables/11449', + 'gftables/11881', 'gftables/121', 'gftables/12167', 'gftables/125', + 'gftables/12769', 'gftables/128', 'gftables/1331', 'gftables/1369', + 'gftables/14641', 'gftables/15625', 'gftables/16', 'gftables/16129', + 'gftables/16384', 'gftables/16807', 'gftables/1681', 'gftables/169', + 'gftables/17161', 'gftables/1849', 'gftables/18769', 'gftables/19321', + 'gftables/19683', 'gftables/2048', 'gftables/2187', 'gftables/2197', + 'gftables/2209', 'gftables/22201', 'gftables/22801', 'gftables/2401', + 'gftables/243', 'gftables/24389', 'gftables/24649', 'gftables/25', + 'gftables/256', 'gftables/26569', 'gftables/27', 'gftables/27889', + 'gftables/2809', 'gftables/28561', 'gftables/289', 'gftables/29791', + 'gftables/29929', 'gftables/3125', 'gftables/32', 'gftables/32041', + 'gftables/32761', 'gftables/32768', 'gftables/343', 'gftables/3481', + 'gftables/361', 'gftables/36481', 'gftables/3721', 'gftables/37249', + 'gftables/38809', 'gftables/39601', 'gftables/4', 'gftables/4096', + 'gftables/44521', 'gftables/4489', 'gftables/49', 'gftables/4913', + 'gftables/49729', 'gftables/5041', 'gftables/50653', 'gftables/512', + 'gftables/51529', 'gftables/52441', 'gftables/529', 'gftables/5329', + 'gftables/54289', 'gftables/57121', 'gftables/58081', 'gftables/59049', + 'gftables/6241', 'gftables/625', 'gftables/63001', 'gftables/64', + 'gftables/6561', 'gftables/6859', 'gftables/6889', 'gftables/729', + 'gftables/7921', 'gftables/8', 'gftables/81', 'gftables/8192', + 'gftables/841', 'gftables/9', 'gftables/9409', 'gftables/961', +] + +install_data(gftables, install_dir: join_paths(get_option('datadir'), 'factory/gftables')) + +# Pkg-config file +# pkgconfig = import('pkgconfig') +# pkgconfig.generate( +# name: 'factory', +# description: 'Factory library', +# version: '0.1.0', +# libraries: libfactory, +# subdirs: 'factory', +# install_dir: join_paths(get_option('libdir'), 'pkgconfig'), +# ) + +factory_dep = declare_dependency( + include_directories: [include_directories('.', 'include'), src], + link_with: libfactory, + dependencies: [gmp, flint, ntl], + sources: gen_headers, +) diff --git a/subprojects/packagefiles/singular/include_config.patch b/subprojects/packagefiles/singular/include_config.patch new file mode 100644 index 00000000000..c4b86feb80f --- /dev/null +++ b/subprojects/packagefiles/singular/include_config.patch @@ -0,0 +1,13 @@ +diff --git a/factory/variable.h b/factory/variable.h +index 11739d4..bfbb168 100644 +--- a/factory/variable.h ++++ b/factory/variable.h +@@ -8,7 +8,7 @@ + #ifndef INCL_VARIABLE_H + #define INCL_VARIABLE_H + +-// #include "config.h" ++#include "config.h" + + #ifndef NOSTREAMIO + # ifdef HAVE_IOSTREAM diff --git a/subprojects/packagefiles/singular/meson.build b/subprojects/packagefiles/singular/meson.build new file mode 100644 index 00000000000..410d751c097 --- /dev/null +++ b/subprojects/packagefiles/singular/meson.build @@ -0,0 +1,10 @@ +project( + 'Singular', + 'cpp', + version: '4.4.0' +) + +cpp = meson.get_compiler('cpp') + +src = include_directories('.') +subdir('factory') diff --git a/subprojects/singular.wrap b/subprojects/singular.wrap new file mode 100644 index 00000000000..d10b23cbaab --- /dev/null +++ b/subprojects/singular.wrap @@ -0,0 +1,6 @@ +[wrap-git] +url = https://github.com/Singular/Singular.git +revision = head +depth = 1 +patch_directory = singular +diff_files = singular/include_config.patch diff --git a/tools/update-conda.py b/tools/update-conda.py index 90994f4e21a..95cad78b8f2 100755 --- a/tools/update-conda.py +++ b/tools/update-conda.py @@ -12,21 +12,29 @@ from grayskull.strategy.pypi import extract_requirements, normalize_requirements_list from packaging.requirements import Requirement -# Get source directory from command line arguments -parser = argparse.ArgumentParser() -parser.add_argument( - "sourcedir", help="Source directory", nargs="?", default=".", type=Path -) -options = parser.parse_args() - platforms = { "linux-64": "linux", "linux-aarch64": "linux-aarch64", "osx-64": "macos-x86_64", "osx-arm64": "macos", - # "win-64": "win", + "win-64": "win", } -pythons = ["3.11", "3.12"] + +# Get source directory from command line arguments +parser = argparse.ArgumentParser() +parser.add_argument( + "sourcedir", help="Source directory", nargs="?", default=".", type=Path +) +parser.add_argument( + "-s", + "--systems", + help="Operating systems to build for; default is all", + nargs="+", + type=str, + choices=platforms.keys(), +) +options = parser.parse_args() +pythons = ["3.11", "3.12", "3.13"] tags = [""] @@ -43,10 +51,18 @@ def write_env_file(env_file: Path, dependencies: list[str]) -> None: print(f"Conda environment file written to {env_file}") -def filter_requirements(dependencies: set[str], python: str) -> set[str]: +def filter_requirements(dependencies: set[str], python: str, platform: str) -> set[str]: + sys_platform = { + "linux-64": "linux", + "linux-aarch64": "linux", + "osx-64": "darwin", + "osx-arm64": "darwin", + "win-64": "win32", + }[platform] + def filter_dep(dep: str): req = Requirement(dep) - env = {"python_version": python} + env = {"python_version": python, "sys_platform": sys_platform} if not req.marker or req.marker.evaluate(env): # Serialize the requirement without the marker req.marker = None @@ -56,15 +72,18 @@ def filter_dep(dep: str): return set(filter(None, map(filter_dep, dependencies))) -def update_conda(source_dir: Path) -> None: +def update_conda(source_dir: Path, systems: list[str] | None) -> None: pyproject_toml = source_dir / "pyproject.toml" if not pyproject_toml.exists(): print(f"pyproject.toml not found in {pyproject_toml}") return for platform_key, platform_value in platforms.items(): + if systems and platform_key not in systems: + continue + for python in pythons: - dependencies = get_dependencies(pyproject_toml, python) + dependencies = get_dependencies(pyproject_toml, python, platform_key) for tag in tags: # Pin Python version pinned_dependencies = { @@ -114,33 +133,86 @@ def update_conda(source_dir: Path) -> None: f.write(f"name: sage{tag or '-dev'}\n{content}") -def get_dependencies(pyproject_toml: Path, python: str) -> list[str]: +def get_dependencies(pyproject_toml: Path, python: str, platform: str) -> set[str]: grayskull_config = Configuration("sagemath") pyproject_metadata = merge_setup_toml_metadata( {}, get_all_toml_info(pyproject_toml) ) requirements = extract_requirements(pyproject_metadata, grayskull_config, {}) - all_requirements = ( - requirements.get("build", []) - + requirements.get("host", []) - + requirements.get("run", []) + all_requirements: set[str] = ( + set(requirements.get("build", {})) + | set(requirements.get("host", {})) + | set(requirements.get("run", {})) ) # Specify concrete package for some virtual packages all_requirements.remove("{{ blas }}") - all_requirements.append("blas=2.*=openblas") + all_requirements.add("blas=2.*=openblas") all_requirements.remove("{{ compiler('c') }}") - all_requirements.append("c-compiler") all_requirements.remove("{{ compiler('cxx') }}") - all_requirements.append("cxx-compiler") all_requirements.remove("{{ compiler'fortran' }}") - all_requirements.append("fortran-compiler") + all_requirements.add("fortran-compiler") + if platform == "win-64": + all_requirements.add("vs2022_win-64") + # For mingw: + # all_requirements.add("gcc_win-64 >= 14.2.0") + # all_requirements.add("gxx_win-64") + else: + all_requirements.add("c-compiler") + all_requirements.add("cxx-compiler") + + # Filter out packages that are not available on Windows + if platform == "win-64": + # Remove packages that are not available on Windows + all_requirements.difference_update(( + "bc", + "brial", + "cddlib", + "cliquer", + "ecl", + "eclib", + "ecm", + "fflas-ffpack", + "fplll", + "gap-defaults", + "gengetopt", + "gfan", + "giac", + "givaro", + "gmp", + "gmpy2", + "iml", + "lcalc", + "libatomic_ops", + "libbraiding", + "libhomfly", + "linbox", + "lrcalc", + "m4", + "m4rie", + "maxima", + "mpfi", + "ncurses", + "ntl", + "palp", + "patch", + "ppl", + "primecount", + "readline", + "rw", + "singular", + "sympow", + "tachyon", + "tar", + "texinfo", + )) # Correct pypi name for some packages python_requirements = set(pyproject_metadata.get("install_requires", [])) # Specify concrete packages for some packages not yet in grayskull python_requirements.remove("pkg:generic/tachyon") - python_requirements.add("tachyon") + if platform != "win-64": + python_requirements.add("tachyon") python_requirements.remove("pkg:generic/sagemath-elliptic-curves") python_requirements.add("sagemath-db-elliptic-curves") python_requirements.remove("pkg:generic/sagemath-polytopes-db") @@ -153,18 +225,25 @@ def get_dependencies(pyproject_toml: Path, python: str) -> list[str]: python_requirements = { req.replace("lrcalc", "python-lrcalc") for req in python_requirements } - python_requirements = filter_requirements(python_requirements, python) - all_requirements += normalize_requirements_list( - python_requirements, grayskull_config + python_requirements = filter_requirements(python_requirements, python, platform) + all_requirements.update( + normalize_requirements_list(list(python_requirements), grayskull_config) ) all_requirements.remove("<{ pin_compatible('numpy') }}") all_requirements.remove("memory_allocator") - # Needed to run configure/bootstrap, can be deleted once we fully migrated to meson - all_requirements.append("autoconf") - all_requirements.append("automake") - all_requirements.append("m4") + if platform == "win-64": + # Flint needs pthread.h + all_requirements.add("winpthreads-devel") + # Workaround for https://github.com/conda-forge/libpng-feedstock/issues/47 + all_requirements.add("zlib") + + if platform != "win-64": + # Needed to run configure/bootstrap, can be deleted once we fully migrated to meson + all_requirements.add("autoconf") + all_requirements.add("automake") + all_requirements.add("m4") # Needed to fix a bug on Macos with broken pkg-config - all_requirements.append("expat") + all_requirements.add("expat") return all_requirements @@ -182,4 +261,4 @@ def get_dev_dependencies(pyproject_toml: Path) -> list[str]: return dev_dependencies -update_conda(options.sourcedir) +update_conda(options.sourcedir, options.systems)