Page MenuHomeFreeBSD

Activate reproducible builds
Needs RevisionPublic

Authored by bapt on Apr 27 2020, 7:57 AM.

Details

Reviewers
antoine
Group Reviewers
portmgr

Diff Detail

Repository
rP FreeBSD ports repository
Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 30751
Build 28477: arc lint + arc unit

Event Timeline

bapt requested review of this revision.Apr 27 2020, 7:57 AM

Pass SOURCE_DATE_EPOCH in build environnement if the timestamp is
defined in the distinfo

Define at the right moment

Remove spaces from SOURCE_DATA_EPOCH env var

I remember a review by @emaste (I think) about this, he had a default value for the TIMESTAMP.

In D24586#541575, @mat wrote:

I remember a review by @emaste (I think) about this, he had a default value for the TIMESTAMP.

Yes the initial patch was: https://people.freebsd.org/~bapt/reproduciblebuild.diff

I decided in the version to drop the default TIMESTAMP as it can generate failures on packages, and prefer to only have reproducibility on packages having a timestamp (most of them should have now)

I was wondering about ports without a distinfo file (like, say, ports-mgmt/portlint) but they could gain a distinfo file with only a TIMESTAMP in it.

Mk/bsd.port.mk
2048

Maybe this should be in a .else for the next .if.

2050

Can you cache this using the usual mechanism so that we do not run awk in each submake?

Seems reasonable as a first step. Do we address the python issue with this change?

Mk/bsd.port.mk
2048

I think it's because we want it to be 0 also if DISTINFO_FILE exists but does not have a TIMESTAMP line

Mark python < 3.7 as not reproducible with the new NOT_REPRODUCIBLE knob
Cache the timestamp

antoine requested changes to this revision.Jun 2 2020, 9:13 AM
antoine added a subscriber: antoine.

This is not enough, the lang/python{27,35,36} ports need to set NOT_REPRODUCIBLE too

This revision now requires changes to proceed.Jun 2 2020, 9:13 AM