From d57888a819dae65ef923cb5c92eb15375a2f3f9f Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Wed, 7 Mar 2018 10:53:11 +0100 Subject: 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. --- guix/build/python-build-system.scm | 11 +++++++++++ 1 file changed, 11 insertions(+) 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 ;;; Copyright © 2015 Mark H Weaver ;;; Copyright © 2016 Hartmut Goebel +;;; Copyright © 2018 Ricardo Wurmus ;;; ;;; This file is part of GNU Guix. ;;; @@ -243,10 +244,20 @@ (define* (ensure-no-mtimes-pre-1980 #:rest _) #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) -- cgit v1.2.3