gnu: criu: Reset timestamps in .egg file.

Ensure all files being built are dated no earlier than 1980 by copying in a
modified (@@ (guix build python-build-system) ensure-no-mtimes-pre-1980) which
is symlink-aware. This copy should be removed when the original procedure is
modified to avoid calling UTIME on symlinks.

* gnu/packages/virtualization.scm (criu)[arguments]: Add
'ensure-no-mtimes-pre-1980' phase.
[inputs]: Remove python.
[native-inputs]: Add python-toolchain.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Brian Cully 2023-05-12 18:36:29 -04:00 committed by Ludovic Courtès
parent 7ff9ca2201
commit c9e1fff793
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -1697,6 +1697,8 @@ (define-public criu
(string-append "XMLTO="
(search-input-file %build-inputs
"/bin/xmlto")))
#:modules ((ice-9 ftw)
,@%gnu-build-system-modules)
#:phases
(modify-phases %standard-phases
(delete 'configure) ; no configure script
@ -1719,6 +1721,17 @@ (define-public criu
(substitute* "criu/include/plugin.h"
(("/var") (string-append (assoc-ref outputs "out"))))
))
;; TODO: use
;; (@@ (guix build python-build-system) ensure-no-mtimes-pre-1980)
;; when it no longer throws due to trying to call UTIME on symlinks.
(add-after 'unpack 'ensure-no-mtimes-pre-1980
(lambda _
(let ((early-1980 315619200)) ; 1980-01-02 UTC
(ftw "." (lambda (file stat flag)
(unless (or (<= early-1980 (stat:mtime stat))
(eq? (stat:type stat) 'symlink))
(utime file early-1980 early-1980))
#t)))))
(add-before 'build 'fix-symlink
(lambda* (#:key inputs #:allow-other-keys)
;; The file 'images/google/protobuf/descriptor.proto' points to
@ -1748,7 +1761,6 @@ (define-public criu
(for-each delete-file (find-files out "\\.a$"))))))))
(inputs
`(("protobuf" ,protobuf)
("python" ,python)
("python-protobuf" ,python-protobuf)
("iproute" ,iproute)
("libaio" ,libaio)
@ -1763,7 +1775,8 @@ (define-public criu
asciidoc
xmlto
docbook-xml
docbook-xsl))
docbook-xsl
python-toolchain))
(propagated-inputs
;; included by 'rpc.pb-c.h'
(list protobuf-c))