[bug#35117] build-system/python: Move the check phase after the install phase.

Message ID 87v9zv7m3l.fsf@gmail.com
State Accepted
Headers show
Series [bug#35117] build-system/python: Move the check phase after the install phase. | expand

Checks

Context Check Description
cbaines/applying patch fail Apply failed

Commit Message

Maxim Cournoyer April 3, 2019, 4:23 a.m. UTC
Hello!

This fixes a (rare?) Python reproducibility problem that was discovered
when packaging PyGithub (see patch submission at
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=35116).

You can try running a --check --no-grafts -K on the python-pygithub
package, before and after the fix to see the result.

Thanks,

Maxim

Comments

Maxim Cournoyer April 19, 2019, 1:47 p.m. UTC | #1
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

> Hello!
>
> This fixes a (rare?) Python reproducibility problem that was discovered
> when packaging PyGithub (see patch submission at
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=35116).
>
> You can try running a --check --no-grafts -K on the python-pygithub
> package, before and after the fix to see the result.
>
> Thanks,
>
> Maxim

I went ahead and pushed this to core-updates with commit 6bbb37a545.

Closing.

Maxim

Patch

From 6fdd6b942b1cddc25bab89b9e256a5dc83d89d35 Mon Sep 17 00:00:00 2001
From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Date: Wed, 3 Apr 2019 00:09:20 -0400
Subject: [PATCH] build-system/python: Move the check phase after the install
 phase.

A reproducibility problem was discovered while packaging python-pygithub where
the bytecode produced by running the tests would interfere with the result of
the install phase byte compilation.  Moving the check phase after the install
phase solves the problem.

* guix/build/python-build-system.scm (%standard-phases): Add comment, move
the check phase after the install phase.
---
 guix/build/python-build-system.scm | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/guix/build/python-build-system.scm b/guix/build/python-build-system.scm
index 5bb0ba49d5..9a1a95111a 100644
--- a/guix/build/python-build-system.scm
+++ b/guix/build/python-build-system.scm
@@ -251,16 +251,21 @@  installed with setuptools."
   #t)
 
 (define %standard-phases
-  ;; 'configure' phase is not needed.
+  ;; The build phase only builds C extensions and copies the Python sources,
+  ;; while the install phase byte-compiles and copies them to the prefix
+  ;; directory.  The tests are run after the install phase because otherwise
+  ;; the cached .pyc generated during the tests execution seem to interfere
+  ;; with the byte compilation of the install phase.
   (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)
-    (replace 'check check)
+    (delete 'configure)                 ;not needed
     (replace 'build build)
+    (delete 'check)                     ;moved after the install phase
+    (replace 'install install)
+    (add-after 'install 'check check)
     (add-after 'install 'wrap wrap)
     (add-before 'strip 'rename-pth-file rename-pth-file)))
 
-- 
2.20.1