Fix build for zodbtools/pygolang/nxdtest/... tests
Commit 7d1ea024 (version up: zc.buildout 2.7.1+slapos013) switched buildout to not use egg wheels, even for wheels that are source-only without any binaries. As the result some eggs stopped to install because they setup_require other eggs and neither buildout handles setup_requires automatically, nor there is explicit setup_require declaration in corresponding components. An example of such egg is python-dateutil: it setup_requires setuptools-scm, and without switching python-dateutil to zc.recipe.egg:custom with setup_requires the build fails. The way 7d1ea024 used to workaround this is to mark all such eggs with :whl suffix marking them that "it is ok to use wheel for this particular egg". The complete list of eggs for which such markings was done in 7d1ea024 is: ipykernel plantuml mock PasteScript backports.functools-lru-cache cliff stevedore CacheControl pytest-runner jsonschema lockfile python-dateutil However this list is not really complete because after 7d1ea024 the build started to fail for e.g. zodbtools test: Traceback (most recent call last): File "<string>", line 10, in <module> File "/srv/slapgrid/slappart16/srv/testnode/dfp/soft/c670f74c8de08964f63c4b9f7d48c3d1/eggs/setuptools-44.1.1-py2.7.egg/setuptools/command/easy_install.py", line 2321, in main ... File "/srv/slapgrid/slappart16/srv/testnode/dfp/soft/c670f74c8de08964f63c4b9f7d48c3d1/eggs/setuptools-44.1.1-py2.7.egg/pkg_resources/__init__.py", line 786, in resolve raise DistributionNotFound(req, requirers) pkg_resources.DistributionNotFound: The 'setuptools-scm' distribution was not found and is required by the application An error occurred when trying to install pytest 4.6.11. Look above this message for any errors that were output by easy_install. While: Installing zodbtools-python. Base installation request: 'zodbtools[test]' Requirement of zodbtools[test]: mock Requirement of zodbtools[test]: pytz Requirement of zodbtools[test]: freezegun Requirement of zodbtools[test]: pytest Requirement of zodbtools[test]: dateparser Requirement of zodbtools[test]: six Requirement of zodbtools[test]: pygolang>=0.0.0.dev6 Requirement of zodbtools[test]: zope.interface Requirement of zodbtools[test]: zodburi Requirement of zodbtools[test]: ZODB Requirement of mock: funcsigs>=1 Requirement of mock: six Requirement of freezegun: python-dateutil>=2.7 Getting distribution for 'pytest==4.6.11'. Error: Couldn't install: pytest 4.6.11 and similarly for pygolang and nxdtest tests. I would be more comfortable if the fix would be to teach buildout to either handle setup_requires automatically, or to automatically install wheels if the wheel is source-only. However, given the way - that 7d1ea024 started to use to handle such situations - let's fix this via explicitly marking pytest, and other related eggs that setup_require something and are source-only, as :whl. NOTE we did not notice the problem earlier because on testnodes, after the switch to new buildout, pytest egg was already installed and incremental rebuild did not need to reinstall pytest egg. So most of pygolang and zodbtools test results remained in "ok" state, and only zodbtools-kirr, that was recently reconfigured or changed testnode, indicated this issue. That's why the problem remained unnoticed for a long time. /reviewed-by @jerome /reviewed-on nexedi/slapos!1026
Showing
Please register or sign in to comment