- 17 May, 2024 11 commits
-
-
Xavier Thompson authored
Fixup "[fix] Fix working set sorting". Some zc.recipe.egg tests were never adapted accordingly.
-
Xavier Thompson authored
Fixup [feat] zc.recipe.egg: Improve on the fly patches. Some zc.recipe.egg tests were never adapted to zc.buildout 3.0.1 now using pip and wheel in addition to setuptools.
-
Xavier Thompson authored
Fixup [feat] Add dependencies in __buildout_signature__ Some zc.recipe.egg tests were never adapted to zc.buildout 3.0.1 now using pip and wheel in addition to setuptools.
-
Xavier Thompson authored
Fixup "[test] Add tests for build dependencies". That commit introduced new eggs in test package index and should have modified the zc.recipe.egg tests accordingly also.
-
Xavier Thompson authored
Fixup "[feat] zc.recipe.egg: Improve on the fly patches." `zc.buildout.testing.easy_install_deprecated` should have been `zc.buildout.testing.easyinstall_deprecated`.
-
Xavier Thompson authored
-
Xavier Thompson authored
-
Xavier Thompson authored
-
Xavier Thompson authored
With recent setuptools, calling `python setup.py sdist` to create an archive for zc.recipe.egg creates a zc_recipe_egg-xyz.zip instead of a zc.recipe.egg-xyz.zip. This is called during test setup to prepare a local package index, as the tests prevent access to PyPI. The name change leads the index to find an entry for zc-recipe-egg instead of zc.recipe.egg (as normalization replaces _ with -), which causes the tests to fail to find a distribution for zc.recipe.egg.
-
Xavier Thompson authored
-
Xavier Thompson authored
INFO logs from setuptools which were previously not emitted because setuptool's ad-hoc legacy logger defaulted to WARNING and above may now be emitted because setuptools now logs to the root logger, thus the global root logger's level configuration applied. This caused undesired 'root: <some setuptools info>' messages to be emitted and caused many tests to fail due to unexpected outputs.
-
- 07 May, 2024 1 commit
-
-
Xavier Thompson authored
See merge request nexedi/slapos.buildout!30
-
- 03 May, 2024 28 commits
-
-
Julien Muchembled authored
-
Julien Muchembled authored
When specifying an alternate URL as fallback, the main URL is always used for both downloading & uploading from/to networkcache.
-
Xavier Thompson authored
If slapos.libnetworkcache is importable, install it in bootstrap and in buildout upgrade - the places where bin/buildout is (re)generated - as though it were a dependency of zc.buildout. This is a hack to propagate libnetworkcache as a soft dependency.
-
Julien Muchembled authored
Like for URL that contain credentials, we still skip auth challenge because it's faster and: - we only support one auth scheme (basic) - netrc provides no way to specify realms, which seem anyway to be less and less used (https://stackoverflow.com/q/69303610 reports that recent browsers don't display them anymore) See merge request nexedi/slapos.buildout!25
-
Julien Muchembled authored
This retries with the alternate URL in case of HTTPError with the main one. Used by slapos.recipe.build:download* and slapos.recipe.cmmi recipes.
-
Julien Muchembled authored
- Py3: stop using legacy API of urllib.request and fix download of http(s) URLs containing user:passwd@ - Py2: avoid OOM when downloading huge files This is implemented as a method in case we want to make it configurable via [buildout].
-
Julien Muchembled authored
An optimization is to avoid temporary file when possible: a rename (or hard link) is not always possible (different mount points). Another one is to not check md5sum twice when using cache file. Fall-back mode is ignored if an MD5 checksum is given. In case of checksum mismatch for a cached path, remove it and download again, mainly to cover the following cases: - the url content changes and the user updates the checksum - buildout killed while downloading directly to cache (see above optimization) - shutil.copyfile is interrupted
-
Jérome Perrin authored
We want two identical sections at different URL to be able to produce same signature. This feature is useful for slapos.recipe.cmmi's shared parts. This commit may fixup "Support ${:_profile_base_location_}." but is purposefuly kept separate because it concerns parts signatures which are an orthogonal feature.
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
-
Xavier Thompson authored
-
Xavier Thompson authored
-
Xavier Thompson authored
When there is no pinned version for zc.buildout itself, buildout adds a ">=<current-version>" requirement to prevent accidental downgrading. If the current version has a local version label, this produced an invalid version specifier. To fix this, only the public part of the current version is used.
-
Xavier Thompson authored
-
Xavier Thompson authored
-
Xavier Thompson authored
-
Xavier Thompson authored
Use a special .pydistutils.cfg in a temporary HOME directory for the duration of the pip wheel run to prevent build dependencies specified in a setup_requires from being installed on the fly without respecting pinned versions.
-
Xavier Thompson authored
By default pip installs build dependencies (e.g. setuptools, poetry) in a temporary folder and temporarily adds it to sys.path in order to proceed to build the distribution. But we want all distributions to be installed with buildout and respect pinned versions, so we aim to prevent pip from installing build dependencies. Instead, we will install the build dependencies first and pass them explicitly to zc.recipe.egg via the setup-eggs option. This commit prevents pip from installing the build dependencies listed by the `build-system.requires` key in the pyproject.toml file. It may prevent pip from installing PEP 517 dynamic build dependencies or setuptools' setup_requires dependencies. See https://peps.python.org/pep-0517/#get-requires-for-build-wheel
-
Rafael Monnerat authored
While invoke setup.py certain eggs (like scikit-learn) launch cetain custom builds (for cython) using subprocess and sys.executable. This commit aims to preserve the sys.path over the runs, even if an egg is using subprocess with the same python to build a component of the egg.
-
Kazuhiko Shiozaki authored
-
Kazuhiko Shiozaki authored
Now specified patches are automatically applied on required eggs as well.
-
Kazuhiko Shiozaki authored
- Support on the fly patches in zc.recipe.egg by ``EGGNAME-patches``, ``EGGNAME-patch-options``, ``EGGNAME-patch-binary`` (or ``patch-binary``) and ``EGGNAME-patch-revision`` options. - Support on the fly patches in zc.recipe.egg:custom by ``patches``, ``patch-options``, ``patch-binary`` and ``patch-revision`` options. (options ``EGGNAME-*`` are also supported as well).
-
Kirill Smelkov authored
Currently only zc.recipe.egg:custom supports setting environment variables, and zc.recipe.egg:develop does not. My motivation for allowing setting environment in :develop is wendelin.core https://lab.nexedi.cn/nexedi/slapos/blob/b5faab3b/component/wendelin.core/buildout.cfg There we have [wendelin.core] part which installs released egg from pypi, and [wendelin.core-dev] part which installs wendelin.core from its latest git version via zc.recipe.egg:develop . The problem is, wendelin.core for setup.py to work, needs git available, and with slapos we usually don't have git available on base system, so we build it by our own and do something like [wendelin.core-dev] recipe = zc.recipe.egg:develop environment = wendelin.core-dev-env [wendelin.core-dev-env] # wendelin.core-dev needs git to build PATH = ${git:location}/bin:%(PATH)s and the problem is environment does not currently work for zc.recipe.egg:develop, and thus git is not found -> build fails. ~~~~ In order to support environment in :develop, we just move environment setting/restoring bits from Custom to Base, and provide Base.install() which uses this bits. Custom & Develop .install() becomes ._install() which gets hooked into Base.install() . I've tested the patch only manually, because currently automated tests are broken in a lot of places for slapos.buildout and zc.recipe.egg . /cc @kazuhiko, @Tyagov
-
Kazuhiko Shiozaki authored
-
Xavier Thompson authored
Before this, sys.exit(1) was called to terminate the program directly.
-
Xavier Thompson authored
Now that we use `pip wheel` + `Wheel.install_as_egg` to produce genuine eggs, we don't need to workaround the fact that we have not-actually-egg `.egg` bundles anymore. If we still do need to allow for non-eggs being installed in `~/.eggs`, via extensions or others, we should revert this. See https://github.com/buildout/buildout/pull/352
-
Xavier Thompson authored
Needed for pip wheel + setuptools.wheel.Wheel.install_as_egg.
-
Xavier Thompson authored
`pip install <package>` produces a `<package-name>` package folder and a `<package-name>.dist-info` metadata folder, which is another format than eggs. Then buildout bundles both folders into a parent folder `<package.egg>` and tries to act as though it were an egg. Instead, use `pip wheel` to produce a wheel - which `pip install` does internally anyway - and `setuptools.Wheel.install_as_egg` to produce a genuine egg. This is much cleaner: it consistently produces genuine eggs instead of sometimes true eggs, sometimes `.dist-info` bundles depending on whether `pip install` is called or the package was installed from a `.whl` or `.egg` archive directly. The only downside it this requires setuptools >= 38.2.3.
-