[Reproducible-builds] Reproducible patches for libisoburn and libisofs

Chris Lamb lamby at debian.org
Thu Aug 4 21:51:00 UTC 2016


Hi Thomas,

Thanks again for the view and battling the list moderation! :)

>      --set_all_file_dates "$timestring"
>   which sets atime, mtime, and ctime of all files, covers your patches
>      0001-source_date_epoch.patch
>      0002-set-default-timestamp.patch

Assuming it also sets iso_write_opts_set_always_gmt, yes. (I think,
anyway..).

I'm not 100% convinced though. I'm a little loathed to drop the
SOURCE_DATE_EPOCH handling in general - zooming out a bit from these
suggested new switches, it does make it somewhat difficult for the
fly-by developer to build a reproducible ISO - they will need to hunt
down and learn the ramifications (and minutiæ of the ISO format) for
all the various command-line arguments that will make the output
reproducible. This seems a little regrettable and perhaps even
slightly antisocial.

In contrast, if we had a single "please make this ISO build
reproducible with this timestamp" toggle, then that would be extremely
straightforward and extensible to all possible future variations where
needed.

(Whether this is a command-line switch or based on the S-D-E environment
variable I'm not particularly fussed, although I would have a preference
for the latter as it's becoming increasing common as more tools adopt it.)


> - Do you agree that i omit
>      0003-set-scdbackup_tag_time-from-source_date_epoch.patch
>   and rather expect that option  --scdbackup_tag  is not to be used when
>   reproducibly building an ISO ?

As I understand the code in Xorriso_make_iso_write_opts, isoburn_igopt_set_scdbackup_tag appears to be called unconditionally - ie. it will always have time(NULL).

>   (Reason is the meaning of the tag in the context of my backup tool
>    scdbackup. A fake timestamp would be flatly wrong.)

Sure, but you would you really be backing up with SOURCE_DATE_EPOCH defined?

>      http://libburnia-project.org/changeset/5733
>   which i derived from your 0004-normalize-wday-yday.patch

Neat!

> > > Is it really desirable/correct to override the timestamps of files when
> > > they get put into the ISO image ?
[..]
> A convenience option for -as mkisofs emulation could do the trick (and
> make the libisoburn patches obsolete).
[..] 
>   xorriso -as mkisofs mkisofs.options... --set_all_file_dates "$timestring" ...

Looks fine, modulo my general comments about SOURCE_DATE_EPOCH at the top
of this email.

> Probably there will be no new function  iso_current_time()  either.
> But if it emerges, then it cannot call exit()

Apologies, I was using "exit()" as a sloppy shorthand for "not silently
returning on error" rather than the literal method to call. Of course,
if there is a message queue or a context-dependent failure mode, we should
use that.

> Considering the birthday paradox, this should be  good enough for about
> 4000 ISOs per day.

Can't /quite/ tell if you're joking! I mean, is anyone building this many
ISOs? Would it matter if their MBR ID clashed? ;-)

> Now i ponder whether it is worth to make it user-adjustable or whether
> i shall derive a reproducible value from the override value of
> --modification-date=.

Mmm, well this is kinda what I was meaning about having a single switch.

> Have a nice day :)

Oh, you too.. and thank you so much for your attention and patience with
my patches.


Regards,

-- 
      ,''`.
     : :'  :     Chris Lamb
     `. `'`      lamby at debian.org / chris-lamb.co.uk
       `-



More information about the Reproducible-builds mailing list