Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-10-01 Thread Florian Festi
Merged #536 into master.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#event-1876519089___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-09-09 Thread ニール・ゴンパ
Conan-Kudo approved this pull request.





-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#pullrequestreview-153583569___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-09-01 Thread Jeff Johnson
@bmwiedemann: you recently made neon "reproducible" and asked about upstream 
neon to send a patch.

This link likely has all the essential pointers:

https://github.com/aw/neon-unofficial-mirror

Neon is an ice library even if "old" and DAVFS peculiar (but with a large 
following on M$ Windoze)

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#issuecomment-417888190___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-09-01 Thread Jeff Johnson


> On Sep 1, 2018, at 2:04 AM, Bernhard M. Wiedemann  
> wrote:
> 
> I'm already producing bit-identical RPMs using the 4 macros documented in
> https://en.opensuse.org/openSUSE:Reproducible_Builds
> So no changes on digests or signatures are needed atm.
> 
> Inaccuracy of $SOURCE_DATE_EPOCH does not matter, as long as it is in the 
> past. Some people always set it to 1 (aka 1970-01-01 00:00:01) and are happy.
> 

If $SOURCE_DATE_EPOCH "does not matter", then any value will do, including a 
high precision  BUILDTIME tag from the *.src.rpm clamped on all files in 
packaging.

Distinct advantages to using a high precision build time everywhere include:
* many package rebuilds could be checked for reproducibility without using 
diffoscope
* clamped file mtimes become more compressible! including in metadata with 
zchunk.
* the file mtime tag becomes largely vestigial.
* the BUILDTIME becomes useful as a package identifier everywhere, including 
rebuilds.

While some of these issues are out of scope for your definition of 
reproducibility, all of the advantages above are closely related to some 
definition of reproducibility.

The changelog time parsing is/was deliberately sloppy, where 12 noon stood the 
greatest chance of not causing a date change if/when the timezone was set 
incorrectly.

Many build systems, and most end-user rebuilds, start from a src.rpm, not from 
a spec file because the SRPM contains all (at last by design if not in fact) 
necessary elements for a reproducible build.

POSIX routines to parse date/time are now widely deployed: not true last 
century.

There comes a time for improving rpm code rather than zombie marching ancient 
features into the future forevermore: legacy compatibility can be handled with 
an opt in or out logic to permit distributions the necessary decades to discuss 
and change as they wish.

> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub, or mute the thread.


-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#issuecomment-417882743___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-09-01 Thread Bernhard M. Wiedemann
I'm already producing bit-identical RPMs using the 4 macros documented in
https://en.opensuse.org/openSUSE:Reproducible_Builds
So no changes on digests or signatures are needed atm.

Inaccuracy of $SOURCE_DATE_EPOCH does not matter, as long as it is in the past. 
Some people always set it to 1 (aka 1970-01-01 00:00:01) and are happy.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#issuecomment-417835992___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-08-31 Thread Jeff Johnson
See also the thread on RPMTAG_IDENTITY here on rpm-maint@, which is another 
attempt at "reproducibility" (in the sense of reproducible "packaging") that is 
perhaps more soundly based because the BUILDTIME and file times are 
deliberately excluded rather than being reset to some known time.

But all defends on how "reproducibility" is defined: if the definition of 
"reproducibility" includes file mtimes, well, one MUST change the file mtimes 
everywhere in packaging to achieve "reproducibility".

It would be nice if the so far independent efforts to set time stamps from 
recipes and have digest plaintext exclude per-build specific information 
somehow started to unify to a single useful approach.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#issuecomment-417822837___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-08-31 Thread Jeff Johnson
See issue #197 for how to represent time stamps with nano/micro second 
precision in header tags with the least amount of legacy incompatibility.

There is an ISO standard for parsing high precision dates/times that rpm has 
never adopted, nor is the %changelog time stamp particularly accurate since it 
depends on conversions with time zone.

Try changing the day-of-week in the spec file %changelog to something 
incorrect, then display the changelog time stamp in the produced packages. 
Merges through git are also not handled sufficiently well: earlier time stamps 
can merge before later (which used to cause rpmbuild to fail, dunno current 
behavior).

The entire idea of "reproducibility" as a means to set an arbitrary time 
everywhere is somewhat suspect. The BUILDTIME has been used as a tie breaker 
with identical NEVRA in order to prefer one of several packages, based on the 
same heuristic that depsolvers use, that the "newer" NEVRA (or BUILDTIME) is 
preferred.

Reproducibility with buildids (I.e. digests) is a better overall approach.

JMHO, YMMV, everyone's does.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#issuecomment-417821833___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


Re: [Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-08-31 Thread Jeff Johnson
The real problem with setting a reproducible build time from a %changelog 
entriy is lack of precision in the syntax of the permitted time. Other flaws 
will eventually be discovered imho.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536#issuecomment-417819587___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint


[Rpm-maint] [rpm-software-management/rpm] build: Make sure SOURCE_DATE_EPOCH is in the past (#536)

2018-08-31 Thread Bernhard M. Wiedemann
Make sure SOURCE_DATE_EPOCH is in the past,
otherwise, builds before noon will not have normalized mtimes
from %clamp_mtime_to_source_date_epoch

This also helps other programs like tar --clamp-mtime

Tested successfully on openSUSE.
To reproduce, create a changelog entry with only a date
```
* Fri Aug 31 2018 user@host
- dummy
```
and build it before 12:00 UTC
using macros
```
%source_date_epoch_from_changelog Y
%clamp_mtime_to_source_date_epoch Y
%use_source_date_epoch_as_buildtime Y
%_buildhost reproducible
```

`rpm -qpvl` showed file mtime values to not be normalized
and therefore build results were not bit-identical.
You can view, comment on, or merge this pull request online at:

  https://github.com/rpm-software-management/rpm/pull/536

-- Commit Summary --

  * build: Make sure SOURCE_DATE_EPOCH is in the past

-- File Changes --

M build/build.c (7)

-- Patch Links --

https://github.com/rpm-software-management/rpm/pull/536.patch
https://github.com/rpm-software-management/rpm/pull/536.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/536
___
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint