Opened 2 years ago

Closed 19 months ago

#30913 closed enhancement (fixed)

sagelib: Generate pyproject.toml and setup.cfg [install_requires], requirements.txt, Pipfile, and src/Pipfile

Reported by: Matthias Köppe Owned by:
Priority: critical Milestone: sage-9.4
Component: build Keywords: sd111
Cc: Dima Pasechnik, Tobias Diez, John Palmieri, Vincent Delecroix, François Bissey, Martin Albrecht Merged in:
Authors: Matthias Koeppe Reviewers: Dima Pasechnik
Report Upstream: N/A Work issues:
Branch: 04da2c6 (Commits, GitHub, GitLab) Commit: 04da2c6eb85566de6d49bf19803a061f4843c662
Dependencies: Stopgaps:

Status badges

Description (last modified by Matthias Köppe)

After #29500, it is possible to install Python packages built by the Sage distribution into user-defined venvs.

As of Sage 9.3.beta8, sagelib is published as a source distribution on PyPI (https://pypi.org/project/sagemath-standard), but the package does not have proper dependency information yet.

As part of bootstrap, we now generate (1) the pyproject.toml (PEP 517 metadata) and install_requires information, (2) requirements.txt and (3) Pipfile using m4 from the information added in #30719. These files provide 3 distinct ways of setting up a user-defined venv.

(Adding pyproject.toml does not change how the Sage distribution installs sagelib because build/pkgs/sagelib/spkg-install uses setup.py install directly.)

To test - use ./bootstrap and then configure and build the Sage distribution. Then follow the instructions in build/pkgs/sagelib/src/tox.ini:

    #
    # SUPPORTED ENVIRONMENTS:
    #
    # Build dependencies according to requirements.txt (all versions fixed).
    # Use ONLY the wheels built and stored by the Sage distribution (no PyPI):
    #
    #   ./sage -sh -c '(cd build/pkgs/sagelib/src && tox -v -v -v -e python-sagewheels-nopypi)'
    #
    python-sagewheels-nopypi,
    #
    # Build and test without using the concrete dependencies specified by requirements.txt,
    # using the dependencies declared in pyproject.toml and setup.cfg (install-requires) only:
    # Still use ONLY the wheels built and stored by the Sage distribution (no PyPI).
    #
    #   ./sage -sh -c '(cd build/pkgs/sagelib/src && tox -v -v -v -e python-sagewheels-nopypi-norequirements)'
    #
    python-sagewheels-nopypi-norequirements,
    #

Related or follow-up tickets:

  • #31377 ./configure --enable-editable
  • #28746 Developer's Guide: Add instructions for sagelib development in a conda environment
  • #28752 Make sagelib pip-installable in a conda environment
  • #30371 In-place (editable) installs of sagelib in a venv
  • #29041 sage_bootstrap: Add command "sage -package list --output={install-requires,requirements,pipfile,debian,....}"
  • add documentation on how to set up the virtual environment, using either plain python -m venv, virtualenv (20.x), or pipenv.

References:

Change History (157)

comment:1 Changed 2 years ago by Matthias Köppe

Dependencies: #30578, #30912#30578, #30912, #30719

comment:2 Changed 2 years ago by Matthias Köppe

Branch: u/mkoeppe/sagelib__add_setup_cfg__install_requires_

comment:3 Changed 2 years ago by Matthias Köppe

Authors: Matthias Koeppe
Cc: John Palmieri added
Commit: b0f5cd25911c289093a8060c998b0ef574d5289d
Description: modified (diff)
Status: newneeds_review

Last 10 new commits:

e61929dbuild/pkgs/sphinx/install-requires.txt: Update from gentoo
8fe0e35build/pkgs/python_openid: Unused, remove
ba1d913build/pkgs/itsdangerous: Unused, remove
bb6c4aebuild/pkgs/tox/install-requires.txt: New
d507501build/pkgs/networkx/install-requires.txt: Update from gentoo
c3a9352build/pkgs/pathpy/install-requires.txt: Package removed in #30611, remove
ebd4610build/pkgs/pynac/install-requires.txt: New
6ec00ddbuild/pkgs/{numpy,pillow}/install-requires.txt: New
6bff345Merge branch 't/30719/add_build_pkgs_spkg_install_requires_txt_for_all_python_packages' into t/30913/sagelib__add_setup_cfg__install_requires_
b0f5cd2bootstrap: Generate build/pkgs/sagelib/src/setup.cfg with m4

comment:4 Changed 2 years ago by git

Commit: b0f5cd25911c289093a8060c998b0ef574d5289d6094c68b2aebfaf87358be89dfbc273ac1f22002

Branch pushed to git repo; I updated commit sha1. New commits:

6094c68build/pkgs/cypari/install-requires.txt: cypari2, not cypari

comment:5 Changed 2 years ago by Matthias Köppe

Cc: Vincent Delecroix added

comment:6 Changed 2 years ago by Matthias Köppe

Cc: François Bissey added

comment:7 Changed 2 years ago by git

Commit: 6094c68b2aebfaf87358be89dfbc273ac1f22002411cbfb61f6bdaadf09e9c092818dafbe10036d5

Branch pushed to git repo; I updated commit sha1. New commits:

411cbfbbuild/bin/sage-get-system-packages: Add comment

comment:8 Changed 2 years ago by git

Commit: 411cbfb61f6bdaadf09e9c092818dafbe10036d53b02c3d6bdafa6872231d4d1039629f9fa140d05

Branch pushed to git repo; I updated commit sha1. New commits:

3b02c3dbootstrap: Run bootstrap scripts in build/pkgs/*/, create build/pkgs/sagelib/bootstrap

comment:9 Changed 2 years ago by Matthias Köppe

Cc: Martin Albrecht added

comment:10 Changed 2 years ago by François Bissey

Will this be able to deal with optional package declarations (in time)?

comment:11 Changed 2 years ago by Matthias Köppe

The plan for optional packages is that users would install a package such as sagemath-meataxe or sagemath-tdlib in addition to sagemath-standard.

comment:12 Changed 2 years ago by git

Commit: 3b02c3d6bdafa6872231d4d1039629f9fa140d0595b74e8087ab5b250f7312298ca2615232633c4e

Branch pushed to git repo; I updated commit sha1. New commits:

95b74e8Merge tag '9.3.beta2' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:13 Changed 2 years ago by Matthias Köppe

Keywords: sd111 added

comment:14 Changed 2 years ago by Matthias Köppe

Dependencies: #30578, #30912, #30719#30578, #30912

comment:15 Changed 2 years ago by git

Commit: 95b74e8087ab5b250f7312298ca2615232633c4e8b8b9f9f8042217fc56b91d12d20f7c1dab7faf4

Branch pushed to git repo; I updated commit sha1. New commits:

99b56f5build/pkgs/sagelib/src/tox.ini: Add environment python-norequirements
8b8b9f9Merge tag '9.3.beta3' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:16 Changed 2 years ago by Matthias Köppe

Description: modified (diff)

Added instructions for testing to the ticket description. In particular, this reveals the missing dependencies of upstream Python packages tracked in #30922.

comment:17 Changed 2 years ago by git

Commit: 8b8b9f9f8042217fc56b91d12d20f7c1dab7faf43382a47982e5be9cd312728600357526e5902227

Branch pushed to git repo; I updated commit sha1. New commits:

3382a47build/pkgs/pplpy/install-requires.txt: Switch to git+https link

comment:18 Changed 2 years ago by git

Commit: 3382a47982e5be9cd312728600357526e5902227bf61db4ee0b042865fa61e7b14ad55a13c839c0a

Branch pushed to git repo; I updated commit sha1. New commits:

6432727Merge tag '9.3.beta2' into t/30912/sagelib__update_metadata_for_pypi_deployment
4a693f2Move build/pkgs/sagelib/src/setup.cfg to SAGE_ROOT/src, replace by symlink
ea182d7Copy changes from build/pkgs/sagelib/src to src
a1a10b9src/VERSION.txt: New
5697335src/setup.cfg: Add license_file=LICENSE.txt
deb9eb3Merge tag '9.3.beta3' into t/30912/sagelib__update_metadata_for_pypi_deployment
bf61db4Merge branch 't/30912/sagelib__update_metadata_for_pypi_deployment' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:19 Changed 2 years ago by git

Commit: bf61db4ee0b042865fa61e7b14ad55a13c839c0abde563c18a8625a69d2313e68f3981e1618d813a

Branch pushed to git repo; I updated commit sha1. New commits:

ee3c014src/setup.cfg: Remove file generated by bootstrap
bde563cbuild/pkgs/pplpy/install-requires.txt: Fix up URL

comment:20 Changed 2 years ago by git

Commit: bde563c18a8625a69d2313e68f3981e1618d813a2f88522ec07dbdc3aa5f26d913ce31b7f3216f4d

Branch pushed to git repo; I updated commit sha1. New commits:

42f90c9src/requirements.txt: Add to documentation
80026f1bootstrap, build/pkgs/sagelib/bootstrap: Do not ignore errors
598675cbuild/pkgs/sage_conf/package-version.txt: New
59d6b17build/pkgs/sagelib/src/tox.ini: Add environments
2f88522src/requirements.txt: Generate from ....m4

comment:21 Changed 2 years ago by git

Commit: 2f88522ec07dbdc3aa5f26d913ce31b7f3216f4d9ca41ea164450110e221c7adebb8b69a2f93bb35

Branch pushed to git repo; I updated commit sha1. New commits:

9ca41eaAdd some notes

comment:22 Changed 2 years ago by Matthias Köppe

Status: needs_reviewneeds_work

To generate the requirements.txt file as well, need #29041

comment:23 Changed 2 years ago by git

Commit: 9ca41ea164450110e221c7adebb8b69a2f93bb35f727cfe4a2792d70fb0177c448a42d1e6f8b6b3d

Branch pushed to git repo; I updated commit sha1. New commits:

f727cfesrc/requirements.txt.m4: Remove patchlevels from versions

comment:24 Changed 2 years ago by Matthias Köppe

Status: needs_workneeds_review
Summary: sagelib: Add setup.cfg [install_requires]sagelib: Generate setup.cfg [install_requires], generate requirements.txt

comment:25 Changed 2 years ago by Matthias Köppe

Description: modified (diff)

comment:26 Changed 2 years ago by Tobias Diez

Since the setup.cfg and requirments.txt file are static (do not depend on the developers/users system), I would check them in as normal files instead of auto-generating them as part of the bootstrap. Then one would only need to update them as part of a package update (having a (doc)test to verify that the content of these files is always up-to-date).

A few more observations while scrolling through the code:

  • I think the Licence file should be in the root, so that other tools (e.g. github) automatically pick them up.
  • Are the symlinks really necessary? I would prefer if instead the path of the original is passed to e.g. setuptools.
  • Concerning sagewheels: --index-url=file://{env:SAGE_SPKG_WHEELS:{env:SAGE_LOCAL:{toxinidir}/../../../../local}/var/lib/sage/wheels/simple}, wouldn't it be easier to let SAGE_SPKG_WHEELS point to the full location of the wheels (e.g. local/var/lib/sage/wheels/simple)?

comment:27 in reply to:  26 Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

Since the setup.cfg and requirments.txt file are static (do not depend on the developers/users system), I would check them in as normal files instead of auto-generating them as part of the bootstrap.

No, this is preparation for modularization, in which we will have dozens of packages. Auto-generation is key for maintainability.

comment:28 in reply to:  26 Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

  • I think the Licence file should be in the root, so that other tools (e.g. github) automatically pick them up.

The new file is the license for sagelib. Different from the one in top-level, which is about the Sage distribution.

comment:29 Changed 2 years ago by Tobias Diez

You can still auto-generate these files! My suggestion was to only to it when updating a package and not on bootstrap.

comment:30 in reply to:  26 ; Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

  • Concerning sagewheels: --index-url=file://{env:SAGE_SPKG_WHEELS:{env:SAGE_LOCAL:{toxinidir}/../../../../local}/var/lib/sage/wheels/simple}, wouldn't it be easier to let SAGE_SPKG_WHEELS point to the full location of the wheels (e.g. local/var/lib/sage/wheels/simple)?

It needs to be configurable. For example local can be replaced by the user using ./configure --prefix

comment:31 in reply to:  30 ; Changed 2 years ago by Tobias Diez

Replying to mkoeppe:

Replying to gh-tobiasdiez:

  • Concerning sagewheels: --index-url=file://{env:SAGE_SPKG_WHEELS:{env:SAGE_LOCAL:{toxinidir}/../../../../local}/var/lib/sage/wheels/simple}, wouldn't it be easier to let SAGE_SPKG_WHEELS point to the full location of the wheels (e.g. local/var/lib/sage/wheels/simple)?

It needs to be configurable. For example local can be replaced by the user using ./configure --prefix

What If I want to have the wheels outside of the current local folder?

comment:32 in reply to:  29 Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

You can still auto-generate these files! My suggestion was to only to it when updating a package and not on bootstrap.

I don't like to have generated files in the git repository. The only files for which we do that (the release manager does, actually) is to update Sage's own version files, and in the long term I would actually change that.

comment:33 in reply to:  31 Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

What If I want to have the wheels outside of the current local folder?

You pass the environment variable to tox

comment:34 Changed 2 years ago by Matthias Köppe

By the way, we could also generate Pipfile here on this ticket ...

comment:35 in reply to:  26 ; Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

  • Concerning sagewheels: --index-url=file://{env:SAGE_SPKG_WHEELS:{env:SAGE_LOCAL:{toxinidir}/../../../../local}/var/lib/sage/wheels/simple}, wouldn't it be easier to let SAGE_SPKG_WHEELS point to the full location of the wheels (e.g. local/var/lib/sage/wheels/simple)?

I think I misunderstood your question. Yes, the variable SAGE_SPKG_WHEELS is expected to point to the full location of the wheels when set.

But I made a mistake - the simple is not expected to be part of SAGE_SPKG_WHEELS

comment:36 Changed 2 years ago by git

Commit: f727cfe4a2792d70fb0177c448a42d1e6f8b6b3d4658e31e3fc1d98dd3e92ae3b24c00d25426f0fe

Branch pushed to git repo; I updated commit sha1. New commits:

4658e31build/pkgs/sagelib/src/tox.ini: SAGE_SPKG_WHEELS is not expected to point to the 'simple' subdirectory

comment:37 in reply to:  35 Changed 2 years ago by Tobias Diez

Replying to mkoeppe:

Replying to gh-tobiasdiez:

  • Concerning sagewheels: --index-url=file://{env:SAGE_SPKG_WHEELS:{env:SAGE_LOCAL:{toxinidir}/../../../../local}/var/lib/sage/wheels/simple}, wouldn't it be easier to let SAGE_SPKG_WHEELS point to the full location of the wheels (e.g. local/var/lib/sage/wheels/simple)?

I think I misunderstood your question. Yes, the variable SAGE_SPKG_WHEELS is expected to point to the full location of the wheels when set.

But I made a mistake - the simple is not expected to be part of SAGE_SPKG_WHEELS

And I missed that the SAGE_LOCAL part is only the fallback in case SAGE_SPKG_WHEELS doesn't exist.

comment:38 Changed 2 years ago by git

Commit: 4658e31e3fc1d98dd3e92ae3b24c00d25426f0fefa4ee53c5cb87ade62b31383c7df6db1dba173d5

Branch pushed to git repo; I updated commit sha1. New commits:

b07d0f6src/Pipfile: New
fa4ee53build/pkgs/sagelib/bootstrap: Generate Pipfile

comment:39 Changed 2 years ago by Matthias Köppe

Summary: sagelib: Generate setup.cfg [install_requires], generate requirements.txtsagelib: Generate setup.cfg [install_requires], requirements.txt, and Pipfile

comment:40 Changed 2 years ago by Tobias Diez

Status: needs_reviewneeds_work

Thanks for also generating the pipfile. However, you are currently locking the version of most packages. The idea, however, is that the pipfile is quite liberal, and only specifies the minimal version requirements (e.g. if an older version of a package is known not to work for some reason). The specific package versions are in the pipfile.lock file, which can be automatically generated by pipenv (which also contains versions for the whole dependency tree).

comment:41 Changed 2 years ago by Matthias Köppe

Hm... If that is so, then we should generate this information from the version constraints that are in the files install-requires.txt.

But what if the user wants to lock the same versions that are defined in the Sage distribution?

And also my guess is that Pipfile should then also contain lists of packages that are not actual dependencies of sagelib but are present in the Sage distribution. Otherwise, Pipfile would just encode the same package and version requirements that are already known by setup.cfg install-requires -- that can't be the whole purpose of Pipfile.

comment:42 Changed 2 years ago by Tobias Diez

I think we should really separate between sage-the-distribution and sage-the-library.

For a library, you specify the abstract dependencies via install-requires. It's important to do that without version information because otherwise that might lead to ugly dependency issues for users of that library (e.g. if another library requires incompatible dependency versions). The pipfile is not really necessary in this case, except that it defines a test/development environment. Here, the pipfile declares the abstract requirements, and the pipfile.lock is saying "these versions are known to work". So for sage, one might consider to sync the pipfile.lock with the version information in build/pkgs but that's really hard to do because pipenv also calculates hashes etc (I guess).

For applications, you declare all dependencies in the pipfile, and use pipenv to create the whole concrete dependency tree meeting all restricts for all dependencies and their subdependencies. Adopting pipenv for this purpose in sage, you could remove all pip-packages from build/pkgs and let pipenv manage all Python dependencies. Then the pipfile indeed would need to declare all packages that are currently present in the sage distribution (so it would more or less correspond to the list of folders in build/pkgs) and the pipfile.lock contains the exact version information, including where to get it and the files hashes (so basically the content of the folders in build/pkgs).

See https://pipenv.pypa.io/en/latest/advanced/#pipfile-vs-setup-py for more details.

My proposal would be to use pipenv at the moment only for providing a test environment. In this case, one strategy would be to only put the pipfile (with it's abstract dependencies) under version control, and generate the pipenv.lock as a build artifact (so that if the test fail, one could regenerate the exact same environment locally). Moreover, there could be a second pipfile (and pipfile.lock) in the build folder, specifying the same versions as in the build/pkgs folder (to make it simpler to create a test environment that equals the distributed environment).

comment:43 in reply to:  42 ; Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

I think we should really separate between sage-the-distribution and sage-the-library.

For a library, you specify the abstract dependencies via install-requires. It's important to do that without version information because otherwise that might lead to ugly dependency issues for users of that library (e.g. if another library requires incompatible dependency versions).

"Without version information" -- surely you mean "without fixing specific versions"

comment:44 in reply to:  42 Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

I think we should really separate between sage-the-distribution and sage-the-library.

For a library, [...]

Right, I would consider sagelib a library...

For applications,

... which the sage distribution should probably considered to be ...

you declare all dependencies in the pipfile, and use pipenv to create the whole concrete dependency tree meeting all restricts for all dependencies and their subdependencies. Adopting pipenv for this purpose in sage, you could remove all pip-packages from build/pkgs and let pipenv manage all Python dependencies.

Well, we won't remove the Python packages from build/pkgs. But I want to enable the users to use pipenv for exactly this at their option. In particular in combination with #30896 (./configure --without-sage-venv) this would be an interesting way to build Sage.

Then the pipfile indeed would need to declare all packages that are currently present in the sage distribution (so it would more or less correspond to the list of folders in build/pkgs) and the pipfile.lock contains the exact version information, including where to get it and the files hashes (so basically the content of the folders in build/pkgs).

Let's investigate if the pipfile.lock file really needs to include hashes or we can get away with automatically generating a weaker version

comment:45 Changed 2 years ago by git

Commit: fa4ee53c5cb87ade62b31383c7df6db1dba173d5406968b98473b4db63157acf88b1aa836399558a

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

ad24294tox.ini: Simplify, use sage-get-system-packages, sage-package list
1a77a6bbuild/bin/write-dockerfile.sh: Remove special casing of build/pkgs/$SYSTEM.txt
35241e7src/doc/en/developer/portability_testing.rst: Update paths in documentation
68baff1Makefile (configure): Update dependency on moved files build/pkgs/*.txt
fae4bd0bootstrap: Remove --enable-_recommended etc.
a9bd145m4/sage_spkg_collect.m4: Remove _recommended etc. from the configure package summary
571cc49Merge branch 't/30947/src_doc_bootstrap__simplify_by_using_new_options_of__sage__package_list_' into t/29124/script-packages-prereq-toolchain-bootstrap
c529729Merge commit '3bb309944b7e8542b2ac88ed3c9d9a60e68644d7' of git://trac.sagemath.org/sage into t/29124/script-packages-prereq-toolchain-bootstrap
b73d6f0Merge tag '9.3.beta4' into t/29124/script-packages-prereq-toolchain-bootstrap
406968bMerge branch 't/29124/script-packages-prereq-toolchain-bootstrap' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:46 Changed 2 years ago by Matthias Köppe

Dependencies: #30578, #30912#30578, #30912, #29124

Last 10 new commits:

ad24294tox.ini: Simplify, use sage-get-system-packages, sage-package list
1a77a6bbuild/bin/write-dockerfile.sh: Remove special casing of build/pkgs/$SYSTEM.txt
35241e7src/doc/en/developer/portability_testing.rst: Update paths in documentation
68baff1Makefile (configure): Update dependency on moved files build/pkgs/*.txt
fae4bd0bootstrap: Remove --enable-_recommended etc.
a9bd145m4/sage_spkg_collect.m4: Remove _recommended etc. from the configure package summary
571cc49Merge branch 't/30947/src_doc_bootstrap__simplify_by_using_new_options_of__sage__package_list_' into t/29124/script-packages-prereq-toolchain-bootstrap
c529729Merge commit '3bb309944b7e8542b2ac88ed3c9d9a60e68644d7' of git://trac.sagemath.org/sage into t/29124/script-packages-prereq-toolchain-bootstrap
b73d6f0Merge tag '9.3.beta4' into t/29124/script-packages-prereq-toolchain-bootstrap
406968bMerge branch 't/29124/script-packages-prereq-toolchain-bootstrap' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:47 in reply to:  43 ; Changed 2 years ago by Tobias Diez

Replying to mkoeppe:

"Without version information" -- surely you mean "without fixing specific versions"

Well, only specifying known upper and lower bounds for the versions. Maybe it would make sense to add min/max version information in build/pkgs?

Let's investigate if the pipfile.lock file really needs to include hashes or we can get away with automatically generating a weaker version.

The hashes and the complete dependency tree is what makes pipenv special over requirements.txt. For applications (i.e. sage distribution), it should be fine to pin the versions in the pipfile (in the build folder). Normally you don't want to do this because it makes upgrades harder (if the versions are free, you can simply run pipenv update for this). But since upgrades are done differently in sage anyway, it should be fine.

So what you think about the following:

  • One pipfile in build (pipfile.lock in gitignore) with all packages in the distribution and version information locked (for users to use pipenv to install pip packages)
  • One pipfile in src (pipfile.lock in gitignore) with all dependencies of sagelib and version information as free as possible (for developers to generate a dev environment, and for CI as test environment)

comment:48 in reply to:  47 ; Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

Maybe it would make sense to add min/max version information in build/pkgs?

This information was recently added in the files install-requires.txt and this is what we are generating setup.cfg [install_requires] from.

comment:49 in reply to:  47 Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

So what you think about the following:

  • One pipfile in build (pipfile.lock in gitignore) with all packages in the distribution and version information locked (for users to use pipenv to install pip packages)

Yes, we can do this; except I would put in SAGE_ROOT, not SAGE_ROOT/build. (We create environment files for conda there already. And build is the location of the setup.py of sage_bootstrap - so that would be confusing.)

  • One pipfile in src (pipfile.lock in gitignore) with all dependencies of sagelib and version information as free as possible (for developers to generate a dev environment, and for CI as test environment)

OK.

comment:50 Changed 2 years ago by git

Commit: 406968b98473b4db63157acf88b1aa836399558aea1d1537ef7b49cd7e48f9172d449d9ba3459269

Branch pushed to git repo; I updated commit sha1. New commits:

0c5f967build/pkgs/sagelib/bootstrap: Also generate SAGE_ROOT/Pipfile
ea1d153Pipfile, src/Pipfile: Add comments

comment:51 Changed 2 years ago by git

Commit: ea1d1537ef7b49cd7e48f9172d449d9ba34592693cccd32d641d7710249fab92093f3d96b2cc58e6

Branch pushed to git repo; I updated commit sha1. New commits:

3cccd32src/Pipfile.m4: Get version info from install-requires.txt, not package-version.txt

comment:52 Changed 2 years ago by git

Commit: 3cccd32d641d7710249fab92093f3d96b2cc58e6c8aeed7454c5828dd94e92818228068e5637c7cf

Branch pushed to git repo; I updated commit sha1. New commits:

c8aeed7Pipfile.m4, src/Pipfile.m4: Not editable

comment:53 Changed 2 years ago by Matthias Köppe

OK, here is a version as a starting point.

comment:54 Changed 2 years ago by Matthias Köppe

Help with getting the pipfiles in shape would be very welcome

comment:55 in reply to:  48 Changed 2 years ago by Tobias Diez

Replying to mkoeppe:

This information was recently added in the files install-requires.txt and this is what we are generating setup.cfg [install_requires] from.

Ok, good to know!

comment:56 in reply to:  54 ; Changed 2 years ago by Tobias Diez

Replying to mkoeppe:

Help with getting the pipfiles in shape would be very welcome

You took the initial pipfile from my ticket, right? They actually look good to me. I'm not sure which packages are missing (as the sagedocs seem to mostly pass with the current ones). Note that pipenv is able to resolve sub-dependencies automatically, so they don't need to be specified in the pipfile (but are in build/pkgs of course).

comment:57 Changed 2 years ago by Tobias Diez

For the files in build/pkgs/sagelib, are they meant for distribution? In this case, it's probably enough to add only the pipfile in the root there (since src/pipfile is for developers only).

Since the pipfile in the root seems to be only for distribution, why not put it directly in build/pgks/sagelib?

comment:58 in reply to:  56 ; Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

Replying to mkoeppe:

Help with getting the pipfiles in shape would be very welcome

You took the initial pipfile from my ticket, right?

Yes

They actually look good to me. I'm not sure which packages are missing (as the sagedocs seem to mostly pass with the current ones). Note that pipenv is able to resolve sub-dependencies automatically, so they don't need to be specified in the pipfile (but are in build/pkgs of course).

The version of the pipfile that pins the versions to the sage distribution's versions will need the pinnings of these dependencies.

comment:59 in reply to:  58 ; Changed 2 years ago by Tobias Diez

Replying to mkoeppe:

They actually look good to me. I'm not sure which packages are missing (as the sagedocs seem to mostly pass with the current ones). Note that pipenv is able to resolve sub-dependencies automatically, so they don't need to be specified in the pipfile (but are in build/pkgs of course).

The version of the pipfile that pins the versions to the sage distribution's versions will need the pinnings of these dependencies.

Pipenv will use the prebuilt wheels anyway, so there is no point in installing build dependencies for these packages, right?

comment:60 in reply to:  59 Changed 2 years ago by Matthias Köppe

Replying to gh-tobiasdiez:

The version of the pipfile that pins the versions to the sage distribution's versions will need the pinnings of these dependencies.

Pipenv will use the prebuilt wheels anyway, so there is no point in installing build dependencies for these packages, right?

Most dependencies are actually not just build dependencies but runtime dependencies. For example - matplotlib depends on dateutil

comment:61 Changed 23 months ago by Matthias Köppe

Dependencies: #30578, #30912, #29124#30912, #29124
Description: modified (diff)

comment:62 Changed 23 months ago by Matthias Köppe

Dependencies: #30912, #29124#30527, #30912, #29124

comment:63 Changed 23 months ago by Matthias Köppe

Dependencies: #30527, #30912, #29124#30527, #30912, #29124, #31261

comment:64 Changed 23 months ago by git

Commit: c8aeed7454c5828dd94e92818228068e5637c7cfbdc991292e0c912e05cef54a2a8ce0d288c1ce22

Branch pushed to git repo; I updated commit sha1. New commits:

5f1e3bbbuild/pkgs/pplpy: Update to 0.8.6
02c6cd9build/pkgs/pplpy/install-requires.txt: Update, add comment
bdc9912Merge branch 't/31261/update_pplpy_to_0_8_6' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:65 Changed 23 months ago by git

Commit: bdc991292e0c912e05cef54a2a8ce0d288c1ce22338211cef2a6141b2650119fd6031456e67d742c

Branch pushed to git repo; I updated commit sha1. New commits:

acfc409src/setup.cfg.m4: Add fpylll dependency
338211csrc/requirements.txt.m4: Update pplpy, add fpylll

comment:66 Changed 23 months ago by Matthias Köppe

Description: modified (diff)
Summary: sagelib: Generate setup.cfg [install_requires], requirements.txt, and Pipfilesagelib: Generate setup.cfg [install_requires], requirements.txt, Pipfile, and src/Pipfile

comment:67 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:68 Changed 23 months ago by Matthias Köppe

When trying to use the "install-requires" method, I am running into the problem that Cython does not seem to find the .pxd files of build requirements that are provided in pip's build isolation, such as cysignals.

comment:69 Changed 23 months ago by git

Commit: 338211cef2a6141b2650119fd6031456e67d742cb84d4783b65efcee6581110f0f756da329331f32

Branch pushed to git repo; I updated commit sha1. New commits:

2c1e648src/sage_setup/command/sage_build_cython.py: Remove top-level imports from sage.env, Cython
88c4e8csrc/setup.py: Make 'setup.py sdist' work without Cython
a05a537src/pyproject.toml: New
15a6c2bMerge branch 't/30580/sage_setup__remove_import_time_dependency___setup_requires___on__pkgconfig____numpy_' into t/30581/pyproject_toml
310ebd1Merge tag '9.3.beta1' into t/30581/pyproject_toml
bbfc19ebuild/pkgs/sagelib/src: Apply PEP 517 changes
563d908Merge branch 't/30913/sagelib__add_setup_cfg__install_requires_' into t/30581/pyproject_toml
55a61d3WIP
fac10c1Merge branch 't/30581/pyproject_toml' into t/30913/sagelib__add_setup_cfg__install_requires_
b84d478src/pyproject.toml: Generate with m4, add more to [build-system] requires

comment:70 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:71 Changed 23 months ago by git

Commit: b84d4783b65efcee6581110f0f756da329331f3299490769da4064a7e5ee9d4dc046ce581d36146a

Branch pushed to git repo; I updated commit sha1. New commits:

580b36abuild/pkgs/sagelib/src/tox.ini: Clean up
b426012src/pyproject.toml.m4: Add sage-conf as a build-system requires=
9949076build/pkgs/sagelib/src/tox.ini: Use environment variables instead of options for pip, use find-links instead of index-url

comment:72 Changed 23 months ago by Matthias Köppe

./bootstrap && ./sage -sh -c '(cd build/pkgs/sagelib/src && tox -r -v -v -v -e python-sagewheels-norequirements)' now gets all the way to here:

/pkgs/sagelib/src/.tox/python-sagewheels-norequirements/bin/sage -c 'import sys; print("sys.path =", sys.path); import sage.all; print(sage.all.__file__)'
Traceback (most recent call last):
  File "/Users/mkoeppe/s/sage/sage-rebasing/worktree-algebraic-2018-spring/build/pkgs/sagelib/src/.tox/python-sagewheels-norequirements/bin/sage-location", line 11, in <module>
    SAGE_ROOT     = os.path.realpath(os.environ['SAGE_ROOT'])
  File "/usr/local/Cellar/python@3.9/3.9.1_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'SAGE_ROOT'

So let's finally get rid of this sage-location business in #21783.

Last edited 23 months ago by Matthias Köppe (previous) (diff)

comment:73 Changed 23 months ago by Matthias Köppe

Dependencies: #30527, #30912, #29124, #31261#30527, #30912, #29124, #31261, #21783, #31270

comment:74 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:75 Changed 23 months ago by Matthias Köppe

Summary: sagelib: Generate setup.cfg [install_requires], requirements.txt, Pipfile, and src/Pipfilesagelib: Generate pyproject.toml and setup.cfg [install_requires], requirements.txt, Pipfile, and src/Pipfile

comment:76 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:77 Changed 23 months ago by git

Commit: 99490769da4064a7e5ee9d4dc046ce581d36146a26da7cedebc2b5dd09f1035efc6f052ee757a391

Branch pushed to git repo; I updated commit sha1. New commits:

3e40ee8build/pkgs/qepcad/spkg-install.in: Generate default.qepcadrc instead of doing this in src/bin/sage-location
3e37c3fbuild/bin/sage-spkg, src/bin/sage, src/bin/sage-location: Remove sage-force-relocate mechanism
287dc70src/doc/it/faq/faq-usage.rst: rimuovi gli antichi consigli relativi alla posizione della salvia
1dfc920src/bin/sage-location: Do not fail if SAGE_ROOT is not set
b0e4816src/bin/sage-location: Do not output 2 lines announcing a no-op
5a2d9fdMerge branch 't/31270/remove-sage-location' into t/30913/sagelib__add_setup_cfg__install_requires_
26da7cebuild/pkgs/sagelib/src/tox.ini: Add tox environments 'pipenv-...'

comment:78 Changed 23 months ago by git

Commit: 26da7cedebc2b5dd09f1035efc6f052ee757a391fabc9ce08f2c5b0c1f3aee35bf2c81dd7120293b

Branch pushed to git repo; I updated commit sha1. New commits:

fabc9cesrc/setup.cfg.m4: Do not use 'file: VERSION.txt', which pipenv does not like

comment:79 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:80 Changed 23 months ago by Matthias Köppe

./sage -sh -c '(cd build/pkgs/sagelib/src && tox -v -v -v -e python-pipenv-sagewheels)' now leads to ...

pipenv.exceptions.ResolutionFailure: ERROR: Could not find a version that matches gmpy2>=2.1.0b5 (from -r /var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pipenvt6rhur8arequirements/pipenv-53ckyr68-constraints.txt (line 2))
Tried: 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5, 2.0.6, 2.0.7, 2.0.8
Skipped pre-versions: 2.1.0a1, 2.1.0a2, 2.1.0a3, 2.1.0a4, 2.1.0b1, 2.1.0b3, 2.1.0b4, 2.1.0b5, 2.1.0b5

comment:81 Changed 23 months ago by git

Commit: fabc9ce08f2c5b0c1f3aee35bf2c81dd7120293bd7580259c240deb25675cbfcd80c75edee72fd0a

Branch pushed to git repo; I updated commit sha1. New commits:

d758025build/pkgs/gmpy2/install-requires.txt: Use == for the benefit of pipenv

comment:82 Changed 23 months ago by git

Commit: d7580259c240deb25675cbfcd80c75edee72fd0a9c2c3e1beff798917445a08c71fe33907bda8e6d

Branch pushed to git repo; I updated commit sha1. New commits:

9c2c3e1build/pkgs/sagelib/src/tox.ini: Use PIPENV_SKIP_LOCK=true

comment:83 Changed 23 months ago by Matthias Köppe

As is to be expected, if the correct version of a package is not already built in local/var/lib/sage/wheels and pipenv tries to build the wheel, this can fail

  Building wheels for collected packages: pplpy
    Created temporary directory: /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-wheel-jcmfqod5
    Destination directory: /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-wheel-jcmfqod5
    Building wheel for pplpy (PEP 517): started
...
    ld: library not found for -lpari
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    error: command '/usr/bin/clang++' failed with exit code 1
    Building wheel for pplpy (PEP 517): finished with status 'error'
    ERROR: Failed building wheel for pplpy
  Failed to build pplpy

comment:84 Changed 23 months ago by Matthias Köppe

Using version 0.8.7 (newest of versions: 0.8.6, 0.8.7)
Collecting pplpy>=0.8.6

comment:85 Changed 23 months ago by Vincent Delecroix

I released pplpy 0.8.7 to fix a weird issue with clang-11.0.0 on FreeBSD, see https://gitlab.com/videlec/pplpy/-/issues/21. As far as SageMath is concerned, there should be no difference.

comment:86 Changed 23 months ago by Matthias Köppe

Thanks for the update, Vincent. There is no problem.

comment:87 Changed 23 months ago by Matthias Köppe

Description: modified (diff)

comment:88 Changed 23 months ago by Matthias Köppe

Dependencies: #30527, #30912, #29124, #31261, #21783, #31270#30527, #30912, #29124, #31261, #21783, #31270, #31279

comment:89 Changed 23 months ago by git

Commit: 9c2c3e1beff798917445a08c71fe33907bda8e6dde05284de0bd4ab88afbbe945c1d483ae7360324

Branch pushed to git repo; I updated commit sha1. New commits:

f4273b7build/pkgs/argon2_cffi: New
3cec11bbuild/pkgs/notebook/dependencies: Add argon2_cffi
de05284Merge branch 't/31279/add_package_argon2_cffi' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:90 Changed 23 months ago by git

Commit: de05284de0bd4ab88afbbe945c1d483ae7360324f5f9ac63c5b49a6fd25e56a50503fa471e765ec7

Branch pushed to git repo; I updated commit sha1. New commits:

1d19802Build and store wheels for setuptools, pip, wheel
f5f9ac6Merge branch 't/31045/pip__wheel__setuptools__make_wheels_or_source_archives_available_in_sage_spkg_wheels' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:91 Changed 23 months ago by git

Commit: f5f9ac63c5b49a6fd25e56a50503fa471e765ec7664d5535562c2e1f2ea64b157c2157e5f6ab4a6d

Branch pushed to git repo; I updated commit sha1. New commits:

9400490Pipfile.m4: Add sagemath-standard (sagelib)
664d553build/pkgs/sagelib/src/tox.ini: Add pipenv-dist

comment:92 Changed 23 months ago by git

Commit: 664d5535562c2e1f2ea64b157c2157e5f6ab4a6d7acfb5847c60024e81360acf3d7e229a06a79f7a

Branch pushed to git repo; I updated commit sha1. New commits:

7acfb58build/pkgs/sympy/install-requires.txt: Allow 1.7.x versions

comment:93 Changed 23 months ago by Matthias Köppe

Dependencies: #30527, #30912, #29124, #31261, #21783, #31270, #31279#30527, #30912, #29124, #31261, #21783, #31270, #31279, #31045
Description: modified (diff)
Status: needs_workneeds_review

comment:94 Changed 23 months ago by Matthias Köppe

This seems to work well now - but the variants using pipenv fail in mysterious ways. I have marked these variants as "experimental" in the comments in build/pkgs/sagelib/src/tox.ini.

Ready for review.

comment:95 Changed 23 months ago by Tobias Diez

What errors / problems do you have with pipenv?

comment:96 in reply to:  95 Changed 23 months ago by Matthias Köppe

Replying to gh-tobiasdiez:

What errors / problems do you have with pipenv?

Most recently - it did not accept the existing wheel of the latest version and is deciding to build another wheel of the same version:

Local files found: /Users/mkoeppe/s/sage/sage-rebasing/worktree-algebraic-2018-spring/local/var/lib/sage/wheels/fpylll-0.5.4-cp39-cp39-macosx_10_15_x86_64.whl
Checked 2 links for project 'fpylll' against 2 hashes (1 matches, 1 no digest): discarding no candidates
Using version 0.5.4 (newest of versions: 0.5.4)
Collecting fpylll==0.5.4
  Created temporary directory: /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-unpack-hnc4lgb4
  Looking up "https://files.pythonhosted.org/packages/ad/c5/f30f354dcce03b928702414fdbdd916d60915c6b144360c88707784385bb/fpylll-0.5.4.tar.gz" in the cache
  Current age based on date: 1384
  Ignoring unknown cache-control directive: immutable
  Freshness lifetime from max-age: 365000000
  The response is "fresh", returning cached response
  365000000 > 1384
  Using cached fpylll-0.5.4.tar.gz (115 kB)
  Added fpylll==0.5.4 from https://files.pythonhosted.org/packages/ad/c5/f30f354dcce03b928702414fdbdd916d60915c6b144360c88707784385bb/fpylll-0.5.4.tar.gz#sha256=0f8433b682bf030d9285eaf460cefdffccc4d04d60da46828ee523bc61d553f5 (from -r /var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pipenv-d79lavpe-requirements/pipenv-p7sezg0u-requirement.txt (line 1)) to build tracker '/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-req-tracker-6cth3jj8'
    Running setup.py (path:/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-install-lhezbhsm/fpylll/setup.py) egg_info for package fpylll
    Created temporary directory: /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i
    Running command python setup.py egg_info
    running egg_info
    creating /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i/fpylll.egg-info
    writing /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i/fpylll.egg-info/PKG-INFO
    writing dependency_links to /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i/fpylll.egg-info/dependency_links.txt
    writing top-level names to /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i/fpylll.egg-info/top_level.txt
    writing manifest file '/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i/fpylll.egg-info/SOURCES.txt'
    Package fplll was not found in the pkg-config search path.
    Perhaps you should add the directory containing `fplll.pc'
    to the PKG_CONFIG_PATH environment variable
    No package 'fplll' found
    reading manifest file '/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i/fpylll.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    no previously-included directories found matching 'build'
    no previously-included directories found matching 'dist'
    writing manifest file '/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-pip-egg-info-nldn300i/fpylll.egg-info/SOURCES.txt'
  Source in /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-install-lhezbhsm/fpylll has version 0.5.4, which satisfies requirement fpylll==0.5.4 from https://files.pythonhosted.org/packages/ad/c5/f30f354dcce03b928702414fdbdd916d60915c6b144360c88707784385bb/fpylll-0.5.4.tar.gz#sha256=0f8433b682bf030d9285eaf460cefdffccc4d04d60da46828ee523bc61d553f5 (from -r /var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pipenv-d79lavpe-requirements/pipenv-p7sezg0u-requirement.txt (line 1))
  Removed fpylll==0.5.4 from https://files.pythonhosted.org/packages/ad/c5/f30f354dcce03b928702414fdbdd916d60915c6b144360c88707784385bb/fpylll-0.5.4.tar.gz#sha256=0f8433b682bf030d9285eaf460cefdffccc4d04d60da46828ee523bc61d553f5 (from -r /var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pipenv-d79lavpe-requirements/pipenv-p7sezg0u-requirement.txt (line 1)) from build tracker '/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-req-tracker-6cth3jj8'
Building wheels for collected packages: fpylll
  Created temporary directory: /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-wheel-eygv6kab
  Building wheel for fpylll (setup.py): started
  Destination directory: /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-wheel-eygv6kab
  Running command /Users/mkoeppe/s/sage/sage-rebasing/worktree-algebraic-2018-spring/build/pkgs/sagelib/src/.tox/python-sagewheels-pipenv-dist/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-install-lhezbhsm/fpylll/setup.py'"'"'; __file__='"'"'/private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-install-lhezbhsm/fpylll/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/38/wnh4gf1552g_crsjnv2vmmww0000gp/T/pip-wheel-eygv6kab
  running bdist_wheel

Overall, despite cranking up verbosity, it's quite opaque

comment:97 Changed 23 months ago by Tobias Diez

Mhh, with this I have no experience, as I've always took the wheel from pypi or had the build dependencies installed.

Maybe it works if you set prefer_binary = true. In general, the selection seems to follow the following criteria: https://github.com/pypa/pipenv/blob/cda15b3b30e04e038ee286bced6c47a311f1e0ec/pipenv/patched/notpip/_internal/index/package_finder.py#L503-L517

comment:98 Changed 23 months ago by Matthias Köppe

Thanks, that's something to explore in a follow up.

For this ticket I think I don't want to spend more time on pipenv. The other, more elementary, ways of installing things are working fine.

comment:99 Changed 22 months ago by Matthias Köppe

Work issues: perhaps merge #31321

comment:100 Changed 22 months ago by Tobias Diez

One more point for discussion is if the pipfile should list the dependencies or if it is enough to only put them in the install_requires. Normally, the advice seems to be to put them only in install_requires, but that's mainly to capture missing dependencies and not bother to keep the files in sync. But since they are now automatically generated, I'm not sure how to precede.

Some discussions on this point: https://github.com/psf/requests/blob/967a05bfffcb68f97296eda197b062221c2ebc0d/Pipfile#L25 and "Problem: Hiding broken setup.py defined dependencies" in https://github.com/pypa/pipenv/issues/1911. See also discussion in https://github.com/pypa/pipenv/issues/1263 and https://pipenv-fork.readthedocs.io/en/latest/advanced.html#pipfile-vs-setup-py

comment:101 Changed 22 months ago by Matthias Köppe

Which of the two Pipfiles are you talking about?

comment:102 Changed 22 months ago by Tobias Diez

Mostly the one in the src folder, but I guess the question actually applies to both.

comment:103 Changed 22 months ago by Matthias Köppe

As per previous discussion, SAGE_ROOT/Pipfile.m4 (= Pipfile-dist.m4) locks all package versions to the one in the Sage distribution (see comment at top -- many packages are still missing in this file, this needs work). As setup.cfg [install_requires] only has version ranges, we cannot reduce this Pipfile.

I agree with your comment regarding src/Pipfile.m4. Indeed the packages that are already specified in setup.cfg [install_requires] should not appear here - mainly for clarity (as you point out, by design we do not have the synchronization issues mentioned in the discussions). I will make this change.

Actually for several packages, whether they should appear in setup.cfg [install_requires] or not is a bit of a question. Later refinements can happen later, and will certainly as modularization comes along.

comment:104 Changed 22 months ago by Matthias Köppe

Dependencies: #30527, #30912, #29124, #31261, #21783, #31270, #31279, #31045#30527, #30912, #29124, #31261, #21783, #31270, #31279, #31045, #31321
Work issues: perhaps merge #31321

comment:105 Changed 22 months ago by Tobias Diez

Sounds good to me!

comment:106 Changed 22 months ago by git

Commit: 7acfb5847c60024e81360acf3d7e229a06a79f7ae90a327f7977e0e9c979e14cfdaf5422255dd45a

Branch pushed to git repo; I updated commit sha1. New commits:

18466f0build/pkgs/wheel/install-requires.txt: New
8ec310esrc/doc/en/developer/packaging.rst: Explain install-requires.txt (from https://wiki.sagemath.org/ReleaseTours/sage-9.3)
5a92c51build/pkgs/texttable/install-requires.txt: New
52add22build/pkgs/wheel/install-requires.txt: No space after >=
ce2118cMerge branch 't/31321/build_pkgs__add_some_missing_metadata' into t/30913/sagelib__add_setup_cfg__install_requires_
e90a327src/Pipfile.m4: Do not list packages that are already declared as install_requires

comment:107 Changed 22 months ago by Matthias Köppe

Not much is left in src/Pipfile.m4 now...

Any thoughts on python_version?

comment:108 Changed 22 months ago by git

Commit: e90a327f7977e0e9c979e14cfdaf5422255dd45a62004b6de841b7b0d5d122292041d5ac71236379

Branch pushed to git repo; I updated commit sha1. New commits:

62004b6src/setup.cfg.m4: Add python_requires

comment:109 Changed 22 months ago by Matthias Köppe

Dependencies: #30527, #30912, #29124, #31261, #21783, #31270, #31279, #31045, #31321#30527, #30912, #29124, #31261, #21783, #31270, #31279, #31045, #31321, #30589

comment:110 Changed 22 months ago by git

Commit: 62004b6de841b7b0d5d122292041d5ac71236379c58389ff91f3133c39841a292bbb05b96519e81d

Branch pushed to git repo; I updated commit sha1. New commits:

29aee87build/pkgs/python3: Update to 3.9.0rc2
e61d464build/pkgs/python3: Update to 3.9.0
f8bb56dbuild/pkgs/python3: Update to 3.9.1
0e3513fbuild/pkgs/pip: Update to 20.3.3
41d7e7aMerge branch 'u/jhpalmieri/new_wheel' of git://trac.sagemath.org/sage into t/30589/upgrade-python-3.9
c58389fMerge branch 't/30589/upgrade-python-3.9' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:111 Changed 22 months ago by git

Commit: c58389ff91f3133c39841a292bbb05b96519e81d3f8de0329ac35ac4ed42c86a985168d412513f60

Branch pushed to git repo; I updated commit sha1. New commits:

3f8de03Pipfile.m4: require python_version = 3.9

comment:112 Changed 22 months ago by git

Commit: 3f8de0329ac35ac4ed42c86a985168d412513f60c7150c62ec0f0e3a13c72a7a1cb085084f639a3d

Branch pushed to git repo; I updated commit sha1. New commits:

c7150c6src/Pipfile.m4: Remove [requires] python_version; rely on range provided by setup.cfg [python_requires]

comment:113 in reply to:  107 Changed 22 months ago by Matthias Köppe

Replying to mkoeppe:

Any thoughts on python_version?

For now I have fixed it in SAGE_ROOT/Pipfile, added the supported range to src/setup.cfg and removed the setting from src/Pipfile

comment:114 Changed 22 months ago by Tobias Diez

I agree, this seems to be the way to go.

comment:115 Changed 22 months ago by git

Commit: c7150c62ec0f0e3a13c72a7a1cb085084f639a3df581fce5dec2815f0440f4f97b7d5e0118632fa2

Branch pushed to git repo; I updated commit sha1. New commits:

f829357Merge tag '9.3.beta7' into t/31321/build_pkgs__add_some_missing_metadata
f581fceMerge branch 't/31321/build_pkgs__add_some_missing_metadata' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:116 Changed 22 months ago by Matthias Köppe

Dependencies: #30527, #30912, #29124, #31261, #21783, #31270, #31279, #31045, #31321, #30589#30527, #30912, #31279, #31045, #31321

comment:117 Changed 22 months ago by Matthias Köppe

Description: modified (diff)

comment:118 Changed 22 months ago by Matthias Köppe

Description: modified (diff)

comment:119 Changed 22 months ago by git

Commit: f581fce5dec2815f0440f4f97b7d5e0118632fa21e529d7f89688c00b0745a339d9ea962af0d16db

Branch pushed to git repo; I updated commit sha1. New commits:

1e529d7build/pkgs/sagelib/src/tox.ini: Pass environment variables set by .homebrew-build-env

comment:120 Changed 22 months ago by Matthias Köppe

Dependencies: #30527, #30912, #31279, #31045, #31321#30527, #30912, #31279, #31045, #31321, #31357

comment:121 Changed 22 months ago by git

Commit: 1e529d7f89688c00b0745a339d9ea962af0d16dbaa2f1f8931be35c2654ca5c693b79291ec16c866

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

7ad4c0eMerge tag '9.3.beta4' into t/30912/sagelib__update_metadata_for_pypi_deployment
8d2e597Merge #30912
45e5cd2build/pkgs/argon2_cffi/spkg-install.in: Handle SAGE_FAT_BINARY
d5feab6Merge #31279
5603f69Merge #31045
cbd4c11Merge #31321
d1a0a20bootstrap: Generate pyproject.toml and setup.cfg [install_requires], requirements.txt, Pipfile, and src/Pipfile
ffa0535build/pkgs/gmpy2/install-requires.txt: Use == for the benefit of pipenv
9d03b83build/pkgs/sympy/install-requires.txt: Allow 1.7.x versions
aa2f1f8build/pkgs/cypari/install-requires.txt: cypari2, not cypari

comment:122 Changed 22 months ago by git

Commit: aa2f1f8931be35c2654ca5c693b79291ec16c8667e842cef734b16eb7a9be99841a2a94f962be695

Branch pushed to git repo; I updated commit sha1. New commits:

bdb2237Merge branch 't/30912/sagelib__update_metadata_for_pypi_deployment' into t/31357/fixup_src_version_txt_added_in__30912
c16651csrc/VERSION.txt: Use same format as build/pkgs/sagelib/src/VERSION.txt
043d3abFixup version files/symlinks
7e842ceMerge #31357

comment:123 Changed 22 months ago by Matthias Köppe

Dependencies: #30527, #30912, #31279, #31045, #31321, #31357#30912, #31279, #31045, #31321, #31357

Rebased/squashed on top of current beta + dependencies (removing dependency on #30527), and avoiding changes to src/ that conflicted with #31377.

comment:124 Changed 22 months ago by git

Commit: 7e842cef734b16eb7a9be99841a2a94f962be6959c04e7feefa588aa90c6a9fec7797eb4e2e09600

Branch pushed to git repo; I updated commit sha1. New commits:

9c04e7fbuild/pkgs/sagelib/src/tox.ini: Pass through SAGE_NUM_THREADS

comment:125 Changed 21 months ago by Matthias Köppe

Dependencies: #30912, #31279, #31045, #31321, #31357#31321
Priority: majorcritical

Now that most dependencies are merged, this ticket should be easier to review...

comment:126 Changed 21 months ago by Matthias Köppe

Description: modified (diff)

comment:127 Changed 21 months ago by git

Commit: 9c04e7feefa588aa90c6a9fec7797eb4e2e09600f691585107543592cb5faaf94993ba536390aebc

Branch pushed to git repo; I updated commit sha1. New commits:

f691585Merge tag '9.3.beta9' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:128 Changed 21 months ago by Matthias Köppe

Dependencies: #31321

comment:129 Changed 21 months ago by git

Commit: f691585107543592cb5faaf94993ba536390aebc66c29875f2f18553c9e8f1e46a8a010dff007262

Branch pushed to git repo; I updated commit sha1. New commits:

66c2987build/pkgs/{sage_sws2rst,sage_docbuild}/install-requires.txt: New

comment:130 Changed 21 months ago by git

Commit: 66c29875f2f18553c9e8f1e46a8a010dff0072627f8ec6c3356e4a15da913f08be8e3d4d8cbf3a28

Branch pushed to git repo; I updated commit sha1. New commits:

7f8ec6cbuild/pkgs/sagelib/src/tox.ini: Add factor sitepackages

comment:131 Changed 21 months ago by git

Commit: 7f8ec6c3356e4a15da913f08be8e3d4d8cbf3a28f7207221ddc3da17663be31d51530b774a164373

Branch pushed to git repo; I updated commit sha1. New commits:

0283da5build/make/Makefile.in: Add wheel, setuptools_wheel to PYTHON_TOOLCHAIN to make sure that PEP 517 packages have a complete build system
f720722build/pkgs/sagelib/src/tox.ini: Add factor nobuildisolation

comment:132 Changed 21 months ago by git

Commit: f7207221ddc3da17663be31d51530b774a164373c451b310026a0b6c973dd0b22efa2cbe784e6c98

Branch pushed to git repo; I updated commit sha1. New commits:

c451b31src/setup.cfg.m4 (install_requires): Add sage_conf

comment:133 Changed 21 months ago by git

Commit: c451b310026a0b6c973dd0b22efa2cbe784e6c9867002239dc377d82717c09a7c5c048a7161b51be

Branch pushed to git repo; I updated commit sha1. New commits:

6700223Merge tag '9.3.rc0' into t/30913/sagelib__add_setup_cfg__install_requires_

comment:134 Changed 21 months ago by Dima Pasechnik

on a clean repo I ran ./bootstrap and then

./sage -sh -c '(cd build/pkgs/sagelib/src && tox -v -v -v -e python-sagewheels-nopypi)
...
adding 'sagemath-standard-9.3rc0/sagemath_standard.egg-info/SOURCES.txt'
adding 'sagemath-standard-9.3rc0/sagemath_standard.egg-info/top_level.txt'
removing 'sagemath-standard-9.3rc0' (and everything under it)

GLOB finish: packaging after 3.96 seconds
copying new sdistfile to '/users/dimpase/.tox/distshare/sagemath-standard-9.3rc0.zip'
package .tmp/package/1/sagemath-standard-9.3rc0.zip links to dist/sagemath-standard-9.3rc0.zip (/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox)
python-sagewheels-nopypi start: getenv /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi
python-sagewheels-nopypi cannot reuse: no previous config /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/.tox-config1
python-sagewheels-nopypi create: /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi
  removing /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi
setting PATH=/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/bin:/home/scratch2/dimpase/sage/sage/build/bin:/home/scratch2/dimpase/sage/sage/src/bin:/home/scratch2/dimpase/sage/sage/local/bin:/home/scratch2/dimpase/sage/sage/local/bin:/users/dimpase/perl5/bin:/users/dimpase/bin:/usr/libexec/python3-sphinx:/usr/lib64/qt-3.3/bin:/usr/share/Modules/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/users/dimpase/.cabal/bin:/auto/users/dimpase/bin
  /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox$ /usr/bin/python3 -m virtualenv --python /usr/bin/python3 python-sagewheels-nopypi >/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/log/python-sagewheels-nopypi-0.log
python-sagewheels-nopypi installdeps: -rrequirements.txt
setting PATH=/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/bin:/home/scratch2/dimpase/sage/sage/build/bin:/home/scratch2/dimpase/sage/sage/src/bin:/home/scratch2/dimpase/sage/sage/local/bin:/home/scratch2/dimpase/sage/sage/local/bin:/users/dimpase/perl5/bin:/users/dimpase/bin:/usr/libexec/python3-sphinx:/usr/lib64/qt-3.3/bin:/usr/share/Modules/bin:/usr/lib64/ccache:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/users/dimpase/.cabal/bin:/auto/users/dimpase/bin
  /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src$ /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/bin/python -m pip install -rrequirements.txt 
Ignoring pycygwin: markers 'sys_platform == "cygwin"' don't match your environment
Looking in links: file:///home/scratch2/dimpase/sage/sage/local/var/lib/sage/wheels
Collecting sage-conf==9.3.rc0 (from -r requirements.txt (line 12))
  Url 'file:///home/scratch2/dimpase/sage/sage/local/var/lib/sage/wheels' is ignored: it is neither a file nor a directory.
  Could not find a version that satisfies the requirement sage-conf==9.3.rc0 (from -r requirements.txt (line 12)) (from versions: )
No matching distribution found for sage-conf==9.3.rc0 (from -r requirements.txt (line 12))
ERROR: could not install deps [-rrequirements.txt]; v = InvocationError("'/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/bin/python -m pip install -rrequirements.txt'", 1)
python-sagewheels-nopypi finish: getenv after 2.13 seconds
_________________________________________________________________________________________________________ summary __________________________________________________________________________________________________________
ERROR:   python-sagewheels-nopypi: could not install deps [-rrequirements.txt]; v = InvocationError("'/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/bin/python -m pip install -rrequirements.txt'", 1)
cleanup /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/.tmp/package/1/sagemath-standard-9.3rc0.zip

comment:135 Changed 21 months ago by Dima Pasechnik

maybe I missed some prelim stages, I have no idea.

comment:136 Changed 21 months ago by Matthias Köppe

Description: modified (diff)

I have extended the instructions in the ticket description: You need to configure and build the Sage distribution before running the tox commands shown.

comment:137 Changed 21 months ago by Dima Pasechnik

another issue is logging. I have no idea where logs of this all go, in particular I noticed an error due to no space left on device, even though it should all be fine (unless there is an excessive use of ~/.sage, or /tmp)

but worst of all I can't find a log with this info, it was printed in terminal...

comment:138 Changed 21 months ago by Matthias Köppe

(wrong ticket)

Last edited 21 months ago by Matthias Köppe (previous) (diff)

comment:139 Changed 21 months ago by Matthias Köppe

You will find the logs in build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi

comment:140 Changed 21 months ago by Dima Pasechnik

Processing /home/scratch2/dimpase/sage/sage/local/var/lib/sage/wheels/nbformat-5.0.7-py3-none-any.whl
Processing /home/scratch2/dimpase/sage/sage/local/var/lib/sage/wheels/widgetsnbextension-3.5.1-py2.py3-none-any.whl
INFO: pip is looking at multiple versions of ipython to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of ipykernel to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of gmpy2 to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of fpylll to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of <Python from Requires-Python> to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of cython to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of cysignals to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of cypari2 to determine which version is compatible with other requirements. This could take a while.
INFO: pip is looking at multiple versions of cvxopt to determine which version is compatible with other requirements. This could take a while.
ERROR: Could not find a version that satisfies the requirement jupyterlab-widgets>=1.0.0; python_version >= "3.6" (from ipywidgets)
ERROR: No matching distribution found for jupyterlab-widgets>=1.0.0; python_version >= "3.6"
ERROR: invocation failed (exit code 1)
ERROR: could not install deps [-rrequirements.txt]; v = InvocationError('/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/bin/python -m pip install -rrequirements.txt', 1)
python-sagewheels-nopypi finish: getenv /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi after 1.87 seconds
______________________________________________________________ summary ______________________________________________________________
ERROR:   python-sagewheels-nopypi: could not install deps [-rrequirements.txt]; v = InvocationError('/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/bin/python -m pip install -rrequirements.txt', 1)
cleanup /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/.tmp/package/1/sagemath-standard-9.3rc0.zip

no idea about that jupyterlab-widgets, we don't even seem to have such a package in Sage.

PS. ./sage --pip install jupyterlab-widgets didn't fix it.

Last edited 21 months ago by Dima Pasechnik (previous) (diff)

comment:141 Changed 21 months ago by Matthias Köppe

We do have the SPKGjupyterlab_widgets. Running make jupyterlab_widgets will fix the problem.

comment:142 Changed 21 months ago by git

Commit: 67002239dc377d82717c09a7c5c048a7161b51be04da2c6eb85566de6d49bf19803a061f4843c662

Branch pushed to git repo; I updated commit sha1. New commits:

04da2c6build/pkgs/ipywidgets: Patch out declaring install-requires of nbformat and jupyterlab-widgets

comment:143 Changed 21 months ago by Matthias Köppe

Or try with this fix (which makes no change to how we install things in the Sage distribution, but removes excessive dependencies from the wheels)

comment:144 Changed 21 months ago by Matthias Köppe

(Newer versions of jupyterlab-widgets have more disciplined dependencies via use of jupyter_packaging; after an upgrade in the Sage 9.4 series we will be able to make jupyterlab-widgets a standard package and drop the patch to ipywidgets again.)

comment:145 Changed 21 months ago by Dima Pasechnik

ohh, nodejs getting installed as a sage package?!

comment:146 in reply to:  141 Changed 21 months ago by Dima Pasechnik

Replying to mkoeppe:

We do have the SPKGjupyterlab_widgets. Running make jupyterlab_widgets will fix the problem.

it did not. trying the latest commit now

comment:147 Changed 21 months ago by Dima Pasechnik

the patch let it go further, but now this puzzling "no space left on device"

  copying sage/sets/finite_enumerated_set.py -> build/lib.linux-x86_64-3.7/sage/sets
  copying sage/sets/set.py -> build/lib.linux-x86_64-3.7/sage/sets
  error: could not write to 'build/lib.linux-x86_64-3.7/sage/sets/set.py': No space left on device
  Building wheel for sagemath-standard (PEP 517) ... error
  ERROR: Failed building wheel for sagemath-standard
Failed to build sagemath-standard
ERROR: Could not build wheels for sagemath-standard which use PEP 517 and cannot be installed directly
Exception information:
Traceback (most recent call last):
  File "/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", line 189, in _main
    status = self.run(options, args)
  File "/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", line 178, in wrapper
    return func(self, options, args)
  File "/home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/python-sagewheels-nopypi/lib/python3.7/site-packages/pip/_internal/commands/install.py", line 361, in run
    ", ".join(pep517_build_failure_names)
pip._internal.exceptions.InstallationError: Could not build wheels for sagemath-standard which use PEP 517 and cannot be installed directly
Removed build tracker: '/tmp/pip-req-tracker-rj13d2c8'
ERROR: invocation failed (exit code 1)
python-sagewheels-nopypi finish: installpkg /home/scratch2/dimpase/sage/sage/build/pkgs/sagelib/src/.tox/.tmp/package/1/sagemath-standard-9.3rc0.zip after 308.24 seconds

I really don't get is, there is almost 300Gb left on /home/scratch2/ Maybe it tries to copy stuff via some silly place like /tmp or /var or ~/.sage/, and the error comes from this? No idea.


New commits:

04da2c6build/pkgs/ipywidgets: Patch out declaring install-requires of nbformat and jupyterlab-widgets

comment:148 Changed 21 months ago by Matthias Köppe

pip likes to use temporary directories, probably in /tmp or /var/tmp

comment:149 Changed 21 months ago by Matthias Köppe

Try setting TMPDIR to something elese

comment:150 Changed 21 months ago by Dima Pasechnik

is TMPDIR an env.var. I can export before running this job? Or is it something pythonic?

comment:151 Changed 21 months ago by Matthias Köppe

Just the standard environment variable

comment:152 Changed 21 months ago by Dima Pasechnik

Reviewers: Dima Pasechnik

OK, this run finishes, with some doctest errors, mainly in sphinx/docs related:

$ ./sage -sh -c '(cd build/pkgs/sagelib/src && tox -v -v -v -e python-sagewheels-nopypi)'
...
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage/all.py  # 1 doctest failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage/misc/package.py  # 1 doctest failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage/misc/sagedoc.py  # 4 doctests failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage/docs/conf.py  # 1 doctest failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage/interfaces/gap.py  # 1 doctest failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage_setup/find.py  # 1 doctest failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage_docbuild/__init__.py  # 35 doctests failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage_docbuild/sphinxbuild.py  # 13 doctests failed
sage -t --random-seed=0 /home/scratch2/dimpase/sage/sage/src/sage_docbuild/utils.py  # 5 doctests failed

if this is expected, feel free to make it positive review.

comment:153 Changed 21 months ago by Matthias Köppe

Status: needs_reviewpositive_review

Thanks for testing! Yes, this looks as expected. The documentation is not built by this invocation. We should disable the corresponding doctests, for example using #30778 - but that's something for the 9.4 series.

comment:154 Changed 21 months ago by Matthias Köppe

Priority: criticalblocker

Setting priority to blocker to bring this ticket to the attention of the release bot.

comment:155 Changed 20 months ago by Matthias Köppe

Priority: blockercritical

comment:156 Changed 20 months ago by Matthias Köppe

Milestone: sage-9.3sage-9.4

comment:157 Changed 19 months ago by Volker Braun

Branch: u/mkoeppe/sagelib__add_setup_cfg__install_requires_04da2c6eb85566de6d49bf19803a061f4843c662
Resolution: fixed
Status: positive_reviewclosed
Note: See TracTickets for help on using tickets.