1. 02 Nov, 2018 1 commit
    • 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
          ws.require(__requires__)
        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.
      7bba6575