Skip to content

Cyclic dependency with vcs-versioning made clean distribution bootstrap impossible #1302

@mgorny

Description

@mgorny

Since setuptools-scm now requires vcs-versioning to build, vcs-versioning requires hatchling and hatching has an indirect dependency on setuptools-scm, it is no longer possible to bootstrap this cycle on distributions:

(dev-python/vcs-versioning-1.0.1:0/0::gentoo, ebuild scheduled for merge) depends on
 (dev-python/hatchling-1.29.0:0/0::gentoo, ebuild scheduled for merge) (buildtime)
  (dev-python/pluggy-1.6.0:0/0::gentoo, ebuild scheduled for merge) (buildtime)
   (dev-python/setuptools-scm-10.0.1:0/0::gentoo, ebuild scheduled for merge) (buildtime)
    (dev-python/vcs-versioning-1.0.1:0/0::gentoo, ebuild scheduled for merge) (buildtime)

Technically, setuptools-scm has a build-system.backend-path that could permit it using vendored vcs-versioning for bootstrap. However, it also has an unconditional build-system.requires on vcs-versioning, and said backend-path refers outside the source distribution (where vcs-versioning is not included).

I suppose the problem could be resolved by either including vcs-versioning inside setuptools-scm for bootstrap purposes, with correct backend-path, or using a build system like flit-core that has no dependencies.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions