• Tristan Van Berkom's avatar
    Use versioneer instead of setuptools_scm · 4be462d3
    Tristan Van Berkom authored
    Using setuptools_scm had a couple of bad problems:
      o Unexpected versioning semantics, setuptools_scm would
        increment the micro version by itself in the case that
        we derive a version number from something that is not a tag,
        making the assumption that we are "leading up to" the next
        micro version.
        People mostly dont expect this.
      o When installing in developer mode, i.e. with `pip3 install --user -e .`,
        then we were always picking the generated version at install time
        and never again dynamically resolving it.
        Many of our users install this way and update through git, so it's
        important that we report more precise versions all the time.
    This commit needs to make a series of changes at the same time:
      o Adds versioneer.py to the toplevel, this is used by setup.py
        for various activities.
        This is modified only to inform the linter to skip
      o Adds buildstream/_version.py, which is generated by versioneer
        and gives us the machinery to automatically derive the correct version
        This is modified only to inform the linter to skip
      o Adds a .gitattributes file which informs git to substitute
        the buildstream/_version.py file, this is just to ensure that
        the versioning output would work if ever we used `git archive`
        to release a tarball.
      o Modifies setup.py and setup.cfg for versioneer
      o Modifies utils.py and _frontend/cli.py such as to avoid importing
        the derived version when running bash completion mode, we dont
        derive the version at completion time because this can result
        in running a subprocess (when running in developer install mode)
        and is an undesirable overhead.
      o Updates tests/frontend/version.py to expect changed version output
setup.cfg 637 Bytes