* [core-updates] issues with python's zip
@ 2023-04-14 22:47 Brian Cully via Development of GNU Guix and the GNU System distribution.
2023-04-15 1:21 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
2023-04-19 22:19 ` Andreas Enge
0 siblings, 2 replies; 4+ messages in thread
From: Brian Cully via Development of GNU Guix and the GNU System distribution. @ 2023-04-14 22:47 UTC (permalink / raw)
To: guix-devel
I've run into issues with two packages on core-updates that fail
to build because the zip library being used can't handle dates
before 1980. I assume there are more.
Do we have a way to handle this gracefully? In the mean time I've
patched both packages (‘sssd’ and ‘criu’) with a new build phase:
--8<---------------cut here---------------start------------->8---
(add-before 'install 'change-file-datetimes
(lambda _
(use-modules (ice-9 ftw))
(let ((dir ".")
(time 315532800)) ; 00:00:00 1-jan-1980 UTC
(let loop ((prefix "")
(node (file-system-tree (pk ".:"
dir))))
;; unqualified use of ‘match’ leads to a syntax
error when
;; using ‘...’, so specify the module
explicitly.
((@ (ice-9 match) match) node
((name stat) ; flat file
(when (not (eq? (stat:type stat) 'symlink))
(utime (string-append prefix name) time
time)))
((name stat children ...) ; directory
(utime (string-append prefix name) time time)
(for-each (lambda (child)
(loop (string-append prefix name
file-name-separator-string)
child))
children)))))))
--8<---------------cut here---------------end--------------->8---
With this, the only outstanding issue with core-updates is #62820,
which I'm baffled by. It appears to me as though the substitute is
issuing up a broken ‘rules’ file, but since this is used by the
keymap in ‘operating-system’, I would imagine a lot of people
would have hit this bug, so why seemingly just me?
-bjc
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [core-updates] issues with python's zip
2023-04-14 22:47 [core-updates] issues with python's zip Brian Cully via Development of GNU Guix and the GNU System distribution.
@ 2023-04-15 1:21 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
2023-04-19 22:19 ` Andreas Enge
1 sibling, 0 replies; 4+ messages in thread
From: Felix Lechner via Development of GNU Guix and the GNU System distribution. @ 2023-04-15 1:21 UTC (permalink / raw)
To: Brian Cully; +Cc: guix-devel
Hi Brian,
On Fri, Apr 14, 2023 at 3:57 PM Brian Cully wrote:
>
> With this, the only outstanding issue with core-updates is #62820
I believe that issue is potentially solved by my amendment to the
aforementioned bug. [1]
Thanks for your hard work on the core-updates branch.
Please have a good weekend!
Kind regards
Felix Lechner
[1] https://issues.guix.gnu.org/62820#1
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [core-updates] issues with python's zip
2023-04-14 22:47 [core-updates] issues with python's zip Brian Cully via Development of GNU Guix and the GNU System distribution.
2023-04-15 1:21 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
@ 2023-04-19 22:19 ` Andreas Enge
1 sibling, 0 replies; 4+ messages in thread
From: Andreas Enge @ 2023-04-19 22:19 UTC (permalink / raw)
To: Brian Cully; +Cc: guix-devel
Hello,
Am Fri, Apr 14, 2023 at 06:47:04PM -0400 schrieb Brian Cully via Development of GNU Guix and the GNU System distribution.:
> I've run into issues with two packages on core-updates that fail to build
> because the zip library being used can't handle dates before 1980. I assume
> there are more.
> Do we have a way to handle this gracefully? In the mean time I've patched
> both packages (‘sssd’ and ‘criu’) with a new build phase:
criu fails like this for me:
copying crit.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
pycriu.images.__pycache__.__init__.cpython-310: module references __file__
creating dist
creating 'dist/crit-3.17.1-py3.10.egg' and adding 'build/bdist.linux-x86_64/egg' to it
Traceback (most recent call last):
File "/tmp/guix-build-criu-3.17.1.drv-0/source/scripts/crit-setup.py", line 16, in <module>
setup(name="crit",
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 177, in setup
return run_commands(dist)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 193, in run_commands
dist.run_commands()
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 968, in run_commands
self.run_command(cmd)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/dist.py", line 1217, in run_command
super().run_command(command)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
cmd_obj.run()
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/command/install.py", line 74, in run
self.do_egg_install()
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/command/install.py", line 123, in do_egg_install
self.run_command('bdist_egg')
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/_distutils/cmd.py", line 317, in run_command
self.distribution.run_command(command)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/dist.py", line 1217, in run_command
super().run_command(command)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
cmd_obj.run()
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/command/bdist_egg.py", line 226, in run
make_zipfile(self.egg_output, archive_root, verbose=self.verbose,
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/command/bdist_egg.py", line 452, in make_zipfile
visit(z, dirname, files)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/command/bdist_egg.py", line 445, in visit
z.write(path, p)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/zipfile.py", line 1739, in write
zinfo = ZipInfo.from_file(filename, arcname,
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/zipfile.py", line 518, in from_file
zinfo = cls(arcname, date_time)
File "/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/zipfile.py", line 362, in __init__
raise ValueError('ZIP does not support timestamps before 1980')
ValueError: ZIP does not support timestamps before 1980
I came across this:
https://docs.python.org/3/library/zipfile.html#zipfile-objects
So apparently when creating a zipfile object (this is the constructor
we are looking at, right?), one can pass a parameter that tells it to
not bother about time stamps of old files.
Then it is a matter of finding out where it happens. I think it is
line 450 of (in my case)
/gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/command/bdist_egg.py
which reads
z = zipfile.ZipFile(zip_filename, mode, compression=compression)
Maybe we should patch our Python so that it becomes
z = zipfile.ZipFile(zip_filename, mode, compression=compression, strict_timestamps=False)
?
(not before the core-updates merge, however)
But is a bit surprising that it does not happen all the time;
or are only a few packages calling bdist_egg.py?
Andreas
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [core-updates] issues with python's zip
@ 2023-04-20 3:20 Brian Cully via Development of GNU Guix and the GNU System distribution.
0 siblings, 0 replies; 4+ messages in thread
From: Brian Cully via Development of GNU Guix and the GNU System distribution. @ 2023-04-20 3:20 UTC (permalink / raw)
To: Andreas Enge; +Cc: guix-devel
Andreas Enge <andreas@enge.fr> writes:
> I came across this:
> https://docs.python.org/3/library/zipfile.html#zipfile-objects
> So apparently when creating a zipfile object (this is the constructor
> we are looking at, right?), one can pass a parameter that tells it to
> not bother about time stamps of old files.
>
> Then it is a matter of finding out where it happens. I think it is
> line 450 of (in my case)
> /gnu/store/dy3xh053ahkhrp2jamggq8cpsyvp8mg0-python-3.10.7/lib/python3.10/site-packages/setuptools/command/bdist_egg.py
> which reads
> z = zipfile.ZipFile(zip_filename, mode, compression=compression)
> Maybe we should patch our Python so that it becomes
> z = zipfile.ZipFile(zip_filename, mode, compression=compression, strict_timestamps=False)
> ?
> (not before the core-updates merge, however)
Thanks for digging into this. Maybe it makes sense to patch bdist_egg.py in setuptools, then, rather than chase down every failed build?
> But is a bit surprising that it does not happen all the time;
> or are only a few packages calling bdist_egg.py?
I don't know. According to https://www.python101.pythonlibrary.org/chapter38_eggs.html it's an older format, which has been superseded by ‘wheel’. I know I see wheel a fair amount, but I'm not much of a Python hacker.
-bjc
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-04-20 3:20 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-14 22:47 [core-updates] issues with python's zip Brian Cully via Development of GNU Guix and the GNU System distribution.
2023-04-15 1:21 ` Felix Lechner via Development of GNU Guix and the GNU System distribution.
2023-04-19 22:19 ` Andreas Enge
-- strict thread matches above, loose matches on Subject: below --
2023-04-20 3:20 Brian Cully via Development of GNU Guix and the GNU System distribution.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).