开源改变世界

可重现的构建 – Debian 包应该覆盖 __DATE__ 和 __TIME__ #1333

推推 grbl 3年前 (2023-01-30) 137次浏览
关闭
smoe 打开了这个问题 2021 年 10 月 25 日 · 4条评论
关闭

可重现的构建 – Debian 包应该覆盖 __DATE__ 和 __TIME__#1333

smoe 打开了这个问题 2021 年 10 月 25 日 · 4条评论

注释

可重现的构建 - Debian 包应该覆盖 __DATE__ 和 __TIME__ #1333
贡献者

这是对自己的提醒。如果一致认为这对 LinuxCNC 有用,那么我可以提出相应的补丁。

可复制构建背后的想法是一个很好的想法。如果给定的源代码树在相同的环境中生成完全相同的二进制文件,那么您可以确信二进制文件没有被篡改,而无需在远程位置从头开始重新编译所有内容。

此处源树添加当前日期。每次编译都会有所不同。对于 Debian,有一个习惯将其设置为更改日志中指定的日期+时间。

hal/user_comps/xhc-whb04b-6/main.cc:54:68: warning: macro "__DATE__" might prevent reproducible builds [-Wdate-time]
   54 |     *os << programName << " version " << PACKAGE_VERSION << " " << __DATE__ << " " << __TIME__ << endl
      |                                                                    ^~~~~~~~
hal/user_comps/xhc-whb04b-6/main.cc:54:87: warning: macro "__TIME__" might prevent reproducible builds [-Wdate-time]
   54 |     *os << programName << " version " << PACKAGE_VERSION << " " << __DATE__ << " " << __TIME__ << endl
      |                                                                                       ^~~~~~~~
可重现的构建 - Debian 包应该覆盖 __DATE__ 和 __TIME__ #1333

我赞成可复制的构建,但目前(对我而言)它的优先级较低。
在上述情况下,我认为最好从版本信息中删除误导性的__DATE__和。__TIME__

可重现的构建 - Debian 包应该覆盖 __DATE__ 和 __TIME__ #1333
贡献者作者

我必须承认我喜欢包含日期和时间的想法,只是不需要精确到秒:) 使用为 d/changelog 条目指定的日期和时间就可以了。这对于我们第一次上传到 Debian 并不重要。

可重现的构建 - Debian 包应该覆盖 __DATE__ 和 __TIME__ #1333

日期和时间作为用户面前软件版本的一种指示。从这个意义上说,它就像PACKAGE_VERSION包含在字符串中的那个:LinuxCNC 的版本,它与d/changelog.

可重现的构建 - Debian 包应该覆盖 __DATE__ 和 __TIME__ #1333
贡献者作者

#1327

export SOURCE_DATE_EPOCH ?= $(shell dpkg-parsechangelog -STimestamp)

被引入 debian/rules(.in),它相应地影响 gcc,使DATE重新定义变得多余(?)。此外,这会产生烦人的编译器警告+错误。对于文档,还找到了另一种解决方案,所以我的这个建议是失败的。对不起。