• Kirill Smelkov's avatar
    Fix build for zodbtools/pygolang/nxdtest/... tests · 3d6db516
    Kirill Smelkov authored
    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
    3d6db516
slapos.cfg 14.2 KB