GNU bug report logs -
#34223
Fixing timestamps in archives.
Previous Next
Full log
Message #14 received at 34223 <at> debbugs.gnu.org (full text, mbox):
Hi Ludo,
> Sorry for the delay!
No problem! I have very little time anyway.
> Nice work! It’s great that libarchive doesn’t need to actually extract
> the zip file to operate on it.
>
> Overall I think the approach of factorizing archive-timestamp-resetting
> in one place and using it everywhere (‘ant-build-system’ and all) is the
> right thing to do.
>
> However, I’m not sure whether we should introduce a new program for this
> purpose. I believe ‘strip-nondeterminism’¹ (in Perl) by fellow
> Reproducible Builds hackers also addresses this problem, so it may be
> wiser to use it.
I also think so. If there is already another program that does the job
we should probably use it.
> But really, since (guix build utils) already implements a significant
> subset of ‘strip-nondeterminism’, it would be even better if could avoid
> to shell out to a C or Perl program.
>
> I played a bit with this idea and, as an example, the attached file
> allows you to traverse the list of entries in a zip file (it uses
> ‘guile-bytestructures’). Specifically, you can get the list of file
> names in a zip file by running:
>
> (call-with-input-file "something.zip"
> (lambda (port)
> (fold-entries cons '() port)))
>
> Resetting timestamps should be just as simple.
>
> How about taking this route?
I also thought about taking this route.
There are some problems with it though:
- As Julien pointed out, the archive contents need to be uncompressed.
This makes the problem much more complex and keeps us from writing
a partial ZIP parser that replaces the timestamps in place.
- While it would be quite elegant to just implement the parser in
Scheme it would be redundant. After all we are developing a package
manager so we should use it.
This approach would be more attractive if there would be a Guile
library for this.
The best solution would be creating a proper library for handling
archives when going with Scheme.
- Maintaining a ZIP parser in Guix is a burden we should not take.
- We need to care about a lot of details (ZIP64, probably more exotic
extensions).
I would be fine with writing an own parser in Scheme but I would like to
point out that in every other place in Guix we are using external tools
for handling archives (AFAIK).
I am not quite sure which version would be the best, so I am open for
other opinions on this.
Maybe you could rephrase your position taking the compression problem
into consideration.
Tim.
This bug report was last modified 6 years and 105 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.