summaryrefslogtreecommitdiff
path: root/guix/build/python-build-system.scm
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2018-03-07 10:53:11 +0100
committerRicardo Wurmus <rekado@elephly.net>2018-03-15 09:26:30 +0100
commitd57888a819dae65ef923cb5c92eb15375a2f3f9f (patch)
tree155c6e1b7b05979e8f1dbbb936cc9753159a0f3c /guix/build/python-build-system.scm
parent9b7e389d41b217a12283f5b0a83e8122b088c67a (diff)
downloadgnu-guix-d57888a819dae65ef923cb5c92eb15375a2f3f9f.tar
gnu-guix-d57888a819dae65ef923cb5c92eb15375a2f3f9f.tar.gz
guix: python-build-system: Make bytecode compilation deterministic.
* guix/build/python-build-system.scm (enable-bytecode-determinism): New procedure. (%standard-phases): Add "enable-bytecode-determinism" phase.
Diffstat (limited to 'guix/build/python-build-system.scm')
-rw-r--r--guix/build/python-build-system.scm11
1 files changed, 11 insertions, 0 deletions
diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm
index 0366571c2f..507cc27e23 100644
--- a/guix/build/python-build-system.scm
+++ b/guix/build/python-build-system.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -243,10 +244,20 @@ installed with setuptools."
#t))
#t))
+(define* (enable-bytecode-determinism #:rest _)
+ "Improve determinism of pyc files."
+ ;; Set DETERMINISTIC_BUILD to override the embedded mtime in pyc files.
+ (setenv "DETERMINISTIC_BUILD" "1")
+ ;; Use deterministic hashes for strings, bytes, and datetime objects.
+ (setenv "PYTHONHASHSEED" "0")
+ #t)
+
(define %standard-phases
;; 'configure' phase is not needed.
(modify-phases gnu:%standard-phases
(add-after 'unpack 'ensure-no-mtimes-pre-1980 ensure-no-mtimes-pre-1980)
+ (add-after 'ensure-no-mtimes-pre-1980 'enable-bytecode-determinism
+ enable-bytecode-determinism)
(delete 'bootstrap)
(delete 'configure)
(replace 'install install)