aboutsummaryrefslogtreecommitdiff
path: root/guix/build/python-build-system.scm
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2015-07-16 01:49:39 -0400
committerMark H Weaver <mhw@netris.org>2015-07-16 01:49:39 -0400
commit3bacb7a698435ab87eea24fe1d6d2384ef9b7ee9 (patch)
tree3e7a90277e65b8829e6b37a09bf52505564f6be2 /guix/build/python-build-system.scm
parent1084ec08c2fba55c436f9e2167c310ada0e3f632 (diff)
downloadgnu-guix-3bacb7a698435ab87eea24fe1d6d2384ef9b7ee9.tar
gnu-guix-3bacb7a698435ab87eea24fe1d6d2384ef9b7ee9.tar.gz
python-build-system: Add 'ensure-no-mtimes-pre-1980' phase.
* guix/build/python-build-system.scm (ensure-no-mtimes-pre-1980): New phase. (%standard-phases): Add it after 'unpack'.
Diffstat (limited to 'guix/build/python-build-system.scm')
-rw-r--r--guix/build/python-build-system.scm15
1 files changed, 15 insertions, 0 deletions
diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm
index 26a7254db9..d008ac2c69 100644
--- a/guix/build/python-build-system.scm
+++ b/guix/build/python-build-system.scm
@@ -2,6 +2,7 @@
;;; Copyright © 2013, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
+;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -119,10 +120,24 @@ installed with setuptools."
(rename-file easy-install-pth new-pth))
#t))
+(define* (ensure-no-mtimes-pre-1980 #:rest _)
+ "Ensure that there are no mtimes before 1980-01-02 in the source tree."
+ ;; Rationale: patch-and-repack creates tarballs with timestamps at the POSIX
+ ;; epoch, 1970-01-01 UTC. This causes problems with Python packages,
+ ;; because Python eggs are ZIP files, and the ZIP format does not support
+ ;; timestamps before 1980.
+ (let ((early-1980 315619200)) ; 1980-01-02 UTC
+ (ftw "." (lambda (file stat flag)
+ (unless (<= early-1980 (stat:mtime stat))
+ (utime file early-1980 early-1980))
+ #t))
+ #t))
+
(define %standard-phases
;; 'configure' and 'build' phases are not needed. Everything is done during
;; 'install'.
(modify-phases gnu:%standard-phases
+ (add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980)
(delete 'configure)
(replace 'install install)
(replace 'check check)