• Kiss György's avatar
    setup.py: Fix gbp problem when installed with pip · 7bba6575
    Kiss György authored
    when installed with "pip install gbp" it will be installed as version "0.0"
    because the released version doesn't have a debian/changelog file, so it will
    be installed with a warning:
    balabit-bbos-tools 1.0.0 has requirement gbp==0.9.8, but you'll have gbp 0.0 which is incompatible.
    and will cause an Exception when using gbp from a setuptools entrypoint script:
      File "/home/walkman/stew/projects/platform/source/balabit-os-tools/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 574, in _build_master
      File "/home/walkman/stew/projects/platform/source/balabit-os-tools/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 892, in require
        needed = self.resolve(parse_requirements(requirements))
      File "/home/walkman/stew/projects/platform/source/balabit-os-tools/.venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 783, in resolve
        raise VersionConflict(dist, req).with_context(dependent_req)
    pkg_resources.ContextualVersionConflict: (gbp 0.0 (/home/walkman/stew/projects/platform/source/balabit-os-tools/.venv/lib/python3.6/site-packages), Requirement.parse('gbp==0.9.8'), {'requiresgbp'})
    This is because pkg_resources checks every dependency version and if it doesn't
    match with the egg-info, it raises this Exception.
    Instead, we try to parse the debian/changelog first, then load the version, or
    if the debian/changelog file doesn't exists (this is the case at pip install)
    we read the gbp/version.py and parse the version from it.
    There is a "round trip check", which means the parsed version is written, then
    it will be read back immediately to see if there is any problem.
version_parser.py 1.21 KB