From 3bacb7a698435ab87eea24fe1d6d2384ef9b7ee9 Mon Sep 17 00:00:00 2001 From: Mark H Weaver Date: Thu, 16 Jul 2015 01:49:39 -0400 Subject: 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'. --- guix/build/python-build-system.scm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'guix/build/python-build-system.scm') 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 ;;; Copyright © 2013 Andreas Enge ;;; Copyright © 2013 Nikita Karetnikov +;;; Copyright © 2015 Mark H Weaver ;;; ;;; 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) -- cgit v1.2.3