Skip to content

feat(sources): generate .git_archival.txt for setuptools-scm builds#962

Open
LalatenduMohanty wants to merge 1 commit intopython-wheel-build:mainfrom
LalatenduMohanty:961_git-archival-for-setuptools-scm
Open

feat(sources): generate .git_archival.txt for setuptools-scm builds#962
LalatenduMohanty wants to merge 1 commit intopython-wheel-build:mainfrom
LalatenduMohanty:961_git-archival-for-setuptools-scm

Conversation

@LalatenduMohanty
Copy link
Member

@LalatenduMohanty LalatenduMohanty commented Mar 13, 2026

Packages using setuptools-scm fail when built from source archives without .git metadata. Add ensure_git_archival() to synthesize a .git_archival.txt with the resolved version, which setuptools-scm reads before PKG-INFO in its fallback chain.

Closes: #961

@LalatenduMohanty LalatenduMohanty requested a review from a team as a code owner March 13, 2026 11:06
@mergify mergify bot added the ci label Mar 13, 2026
@LalatenduMohanty LalatenduMohanty force-pushed the 961_git-archival-for-setuptools-scm branch 2 times, most recently from 779259f to 87d777b Compare March 13, 2026 12:37
@LalatenduMohanty LalatenduMohanty force-pushed the 961_git-archival-for-setuptools-scm branch 3 times, most recently from 4efaad6 to 545b0a5 Compare March 18, 2026 13:51
Packages using setuptools-scm fail when built from source archives
without .git metadata. Add ensure_git_archival() to synthesize a
.git_archival.txt with the resolved version, which setuptools-scm
reads before PKG-INFO in its fallback chain.

The archival file is only written in default_build_sdist when no .git
directory is present, mirroring the guard used elsewhere.

Closes: python-wheel-build#961

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Lalatendu Mohanty <lmohanty@redhat.com>
@LalatenduMohanty LalatenduMohanty force-pushed the 961_git-archival-for-setuptools-scm branch from 545b0a5 to 8287e3c Compare March 19, 2026 12:11
Comment on lines +781 to +786
_GIT_ARCHIVAL_CONTENT = """\
node: {node}
node-date: 1970-01-01T00:00:00+00:00
describe-name: {version}-0-g{node}
"""

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For non-tags, the git log describe output uses the short commit hash:

$ git log --pretty='format:node: %H%nnode-date: %cI%ndescribe-name: %(describe:tags=true,match=*[0-9]*)%n' -1
node: 5d8d986d96be4575ae4b9fe9675f7eb3623057cb
node-date: 2026-03-19T06:57:11Z
describe-name: 0.77.0-13-g5d8d986

For release tags, the describe-name is just the tag name without commit counter and g{shorthash}

$ git checkout refs/tags/0.76.0
$ git log --pretty='format:node: %H%nnode-date: %cI%ndescribe-name: %(describe:tags=true,match=*[0-9]*)%n' -1
node: f4a13d04674c1f8fb3e7a7828c8c3dbd5c297ed9
node-date: 2026-02-25T14:00:08Z
describe-name: 0.76.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Generate .git_archival.txt for setuptools-scm packages built from source archives

3 participants