Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
slapos slapos
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Labels
    • Labels
  • Merge requests 122
    • Merge requests 122
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Jobs
  • Commits
Collapse sidebar
  • nexedi
  • slaposslapos
  • Merge requests
  • !1026

Merged
Created Jul 28, 2021 by Kirill Smelkov@kirrOwner

Fix build for zodbtools/pygolang/nxdtest/... tests

  • Overview 21
  • Commits 1
  • Changes 2

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.

/cc @jerome

Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: y/pytest-fix
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7