跳过主内容

setuptools的扩展,支持可重现的分发

项目描述

setuptools-reproducible

这是一个PEP 517构建后端,它通过可重现构建setuptools

Setuptools可以在构建时通过设置SOURCE_DATE_EPOCH来创建可重现的wheel存档(.whl),但对于创建可重现的sdists(.tar.gz)而言,仅设置环境变量是不够的。

setuptools-reproducible通过一些修改封装了build_sdistbuild_wheel钩子,以使可重现构建成为默认选项

  • 在构建环境中,如果未进行配置,将使用SOURCE_DATE_EPOCH=0
  • 将tarfile模式设置为0o644用于常规文件,0o755用于目录。
  • 将存档成员的uid/gid设置为0,并将用户名/组名设置为空字符串。
  • 将gzip头值设置为源日期纪元。

通过这些修改,在相同的构建环境中创建的内容相同的源树应产生具有相同校验和的构建包。

注意:由于Windows/Unix行结束和Python标准库更改的差异,校验和可能不会在平台和Python版本之间保持不变。

使用方法

后端功能与上游setuptools相同。用户需要更改的是在pyproject.toml中指定构建系统。

[build-system]
requires = ["setuptools-reproducible"]
build-backend = "setuptools_reproducible"

设置SOURCE_DATE_EPOCH是不必要的,除非您想覆盖默认值0,即1970-01-01 00:00:00 UTC

致谢

本实现受到来自Lisandro Dalcinsetuptools问题#2133中的有用评论的启发,并借鉴了项目repro-tarfile的一些想法。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

setuptools_reproducible-0.1.tar.gz (4.2 kB 查看哈希值)

上传时间

构建分布

setuptools_reproducible-0.1-py3-none-any.whl (4.0 kB 查看哈希值)

上传时间 Python 3

由以下组织支持