Comments (7)
Does this happen with both devpi-client 6.x and 7.x?
With the current version, could you try isolated=not self.args.no_isolation
. That seems to be the most sensible fix.
As an optimization, we could look into getting the metadata from previously built artifacts like wheels and pass that on to the documentation building step.
from devpi.
Does this happen with both devpi-client 6.x and 7.x?
No, it started happening only with 7.0.0 due to the switch from pep517
to build
. As I will show below, the switch changed important functionality aspects.
As can be seen, the relevant commit included in 7.0.0:
8bd048d#diff-654fa2126392edd2daaa3b4f621ad8805e93d9ab5096727fd704dcbd222ce54fL394
The "old" code was:
def setup_name_and_version(self):
result = pep517.meta.load(self.rootpath.strpath)
And if we track down pep517.meta.load()
we can see the it winds up to:
https://github.com/pypa/pyproject-hooks/blob/v0.13.0/pep517/meta.py#L53
# eachimei: `pep517.meta.load` runs this:
def build(source_dir='.', dest=None, system=None):
system = system or load_system(source_dir)
dest = os.path.join(source_dir, dest or 'dist')
os.makedirs(dest, exist_ok=True)
validate_system(system)
hooks = Pep517HookCaller(
source_dir, system['build-backend'], system.get('backend-path')
)
with hooks.subprocess_runner(quiet_subprocess_runner):
with BuildEnvironment() as env: # <--- eachimei: isolated environment
env.pip_install(system['requires']) # <--- eachimei: install the build system requirements
Therefore, it seems that for "apples to apples" switch from pep517
to build
, we should run with isolated=True
(as described in this issue body):
def setup_name_and_version(self):
try:
metadata = build.util.project_wheel_metadata(
str(self.rootpath), isolated=False) # <--- change to isolated=True, at least as a default
from devpi.
Thanks for the detailed explanation. I think isolated=not self.args.no_isolation
is the correct fix then, as it would do isolated builds by default, but with the --no-isolation
option it would build both the releases and the docs with no isolation, so no surprises for either case.
from devpi.
Thanks! I haven't got to give it a try yet, but it makes sense and sounds good!
from devpi.
Tested isolated=not self.args.no_isolation
and it looks good, works as expected.
from devpi.
PR with the fix: #1009
from devpi.
Thanks @fschulze ! 😃
from devpi.
Related Issues (20)
- [discussion] Asyncio speedups HOT 7
- docs zip contains unwanted package source files HOT 3
- [client] upload `OSError: [Errno 18] Invalid cross-device link '/tmp/devpi-…/dist/….whl' -> 'dist/….whl'` HOT 2
- Cannot load packages when use base auth in gitlab registry mirror HOT 4
- Need help upgrading from 4.4.0 to current HOT 3
- All >400 HTTP responses from login provoke a SystemExit, not using fatal, and are not always fatal errors for login HOT 1
- Errors when sharing package files HOT 8
- Option to have the latest available documentation displayed, when a package has no docs HOT 2
- Support PEP 658 / PEP 714 HOT 8
- HTTP error 502 while retrieving a wheel file HOT 6
- Return HTTP 406 instead of HTTP 404 when `Accept` cannot be fulfilled HOT 4
- Support range requests when downloading files HOT 3
- Connection failures when downloading wheels HOT 6
- pytest-flake8 is abandoned
- Support for newer packaging HOT 2
- AttributeError: type object 'PersistentCurrent' has no attribute 'auth' HOT 3
- Mirroring fails for packages with hashes other than sha256 HOT 7
- Failed to upload tensorflow wheel with 400 error HOT 7
- Provide an aiohttp-less version for server HOT 15
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from devpi.