-
Notifications
You must be signed in to change notification settings - Fork 180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QUERY: asv 0.6.2 handles uses lowest supported versions (build requirements in pyproject.toml
incorrectly)
#1388
Comments
This is not an ASV issue, if the project doesn't support |
pyproject.toml
incorrectlypyproject.toml
incorrectly)
|
One virtualenv is created for each matrix entry. Could you share the whole run?
The matrix is how you should provide additional packages to install.
If you have a hard dependency on something which needs setuptools higher than 30.3.0 then your code also only supports higher than 30.3.0. |
Setuptools is a build dependency for both packages, not a runtime dependency, so the version requirements are independent of each other. Normally, when pip install a package from source, it uses build isolation, creating a temporary venv for just that package into which the build dependencies are installed for use during the build, and then they're deleted once the build is done. asv, on the other hand, installs build dependencies into the same environment as it installs everything else (and, for some reason, when it sees a build requirement like I am now going to ask you point-blank: Why does asv not use build isolation when installing packages from source? That violates standard practice. |
Because we do not use The default project build is now A few versions ago the build process would also not use index or fetch from PyPI (using network isolating environment variables). I'm open to a PR with a better default, but honestly the simplest approach here is to set the project build command to whatever is necessary (it sounds like |
Also ASV has a different requirement, which is that you require different environments and the package is benchmarked accordingly. Letting Again, here one uses |
Thus if it is required to test across a set of versions, they go in the matrix, ASV then makes one virtualenv for each matrix combination, and then installs the project in each of those (preferably without updating components!). The build command is not meant to add / remove components which may be part of the benchmark matrix. |
Here are the logs from a run of
Both parts of that command should use build isolation by default. Is asv setting some environment variable to disable isolation? We have no desire to test across different sets of versions or using benchmarking-specific dependencies. I thus don't see how |
Quite the opposite, the earlier versions of ASV used to set no-build-isolation via the environment variable which was recently removed. ASV doesn't really make any distinctions between build time and / bench time dependencies. Each environment gets a list of things to be installed via the user defined, or default installation command. The only difference being build dependencies are not part of label. |
We are using asv to benchmark a project whose
build-system.requires
field inpyproject.toml
contains"setuptools >= 30.3.0"
. When asv 0.6.2 prepares a virtualenv for this project, it installs version 30.3.0 of setuptools (rather than the latest version) in the virtualenv (Why aren't you using build isolation?), which then causes a build failure for one of our dependencies (methodtools), which does not have apyproject.toml
but does require setuptools 39.2.0+. If we downgrade to asv 0.6.1 or remove the>= 30.3.0
from ourpyproject.toml
, everything is installed correctly.The text was updated successfully, but these errors were encountered: