Subject: bug#47214: closed (Re: bug#47214: [core-updates] gnu: python: Remove unnecessary files)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 11 Jun 2021 01:02:03 +0000

Your bug report

#47214: [core-updates] gnu: python: Remove unnecessary files

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
47214: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=47214
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#47214: [core-updates] gnu: python: Remove unnecessary files
From: Julien Lepiller <[email-masked]>
To: Ludovic Courtès <[email-masked]>
Cc: [email-masked]
Date: Fri, 11 Jun 2021 03:01:26 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Le Thu, 03 Jun 2021 11:46:44 +0200,
Ludovic Courtès <[email-masked]> a écrit :

> Hi,
> 
> Julien Lepiller <[email-masked]> skribis:
> 
> > Le Fri, 19 Mar 2021 13:27:06 +0100,
> > Ludovic Courtès <[email-masked]> a écrit :
> >  
> >> > From 0d2d9a32cbbf24eadf74271b2fb1304b7a72d281 Mon Sep 17 00:00:00
> >> > 2001 From: Julien Lepiller <[email-masked]>
> >> > Date: Wed, 17 Mar 2021 13:33:22 +0100
> >> > Subject: [PATCH 1/2] gnu: python: Remove unnecessary files.
> >> >
> >> > * gnu/packages/python.scm (python2)[arguments]: Remove files
> >> > built during the test phase.
> >> > (python3)[arguments]: Also remove windows binaries shipped with
> >> > the sources.    
> >> 
> >> Unless it causes bootstrapping issues, I recommend removing those
> >> files from a snippet so that ‘guix build -S python’ returns the
> >> cleaned-up source.  
> 
> [...]
> 
> > Hi, sorry for the late reply. I need to use unzip on these files to
> > remove some of their content, and rezip them later. How can I do
> > that from a snippet?  
> 
> Oh right, the bit that unzips/rezips .whl files cannot easily be done
> from a snippet, so better keep it as a phase.
> 
> Deleting *.exe can be done from a snippet though.
> 
> BTW, the patch reads:
> 
>    (find-files "Lib/distutils/command" ".*.exe$")
> 
> but the regexp should be:
> 
>   "\\.exe$"
> 
> (“.*” is unnecessary, but the dot before “exe” must be protected.)
> 
> Likewise for:
> 
>   (find-files "Lib/ensurepip" ".*.whl$")
> 
> Thanks,
> Ludo’.

Fixed, and pushed as 20d52562e5c943b30e48e310b58b94054c3a54e5 to
core-updates.

Subject: [core-updates] gnu: python: Remove unnecessary files
From: Julien Lepiller <[email-masked]>
To: [email-masked]
Date: Wed, 17 Mar 2021 13:41:02 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Guix!

this patch (going to core-updates) removes files from the output of
python2 and python3, in an attempt to save some space. First, I noticed
that python3 shipped windows binaries in its source distribution and
installs them to the output, in lib/python3.8/distutils/command/*.exe,
lib/python3.8/site-packages/*.exe and
lib/python3.8/site-packages/pip/_vendor/distlib/*.exe. I remove them
from the snippet, so they should not be installed anymore.

I also noticed that python installs files that were built during the
test phase, so I remove them, but we need to check they are not
actually needed. Other distros ship them in a separate package, so
maybe we could have a separate test output if this is causing issues?

I haven't yet tested the patch, because it needs to rebuild part of the
bootstrap chain. I'll report progress and update my patch depending
on the results!
>From 63ebe5c610ff8587a73641e4139dc14a4d3e379e Mon Sep 17 00:00:00 2001
From: Julien Lepiller <[email-masked]>
Date: Wed, 17 Mar 2021 13:33:22 +0100
Subject: [PATCH] gnu: python: Remove unnecessary files.

* gnu/packages/python.scm (python2)[arguments]: Remove files built
during the test phase.
(python3)[arguments]: Also remove windows binaries shipped with the
sources.
---
 gnu/packages/python.scm | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 49d43ab008..3bb30ca011 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -294,7 +294,16 @@
                                             (not
                                              (string-prefix? "test_support."
                                                              file))))))
-                      (call-with-output-file "__init__.py" (const #t)))))))))
+                      (call-with-output-file "__init__.py" (const #t))))
+                  (let ((libdir (string-append out "/lib/" pythonX.Y)))
+                    (for-each
+                     (lambda (directory)
+                       (let ((dir (string-append libdir "/" directory)))
+                         (when (file-exists? dir)
+                           (delete-file-recursively dir))))
+                     '("email/test" "ctypes/test" "unittest/test" "tkinter/test"
+                       "sqlite3/test" "bsddb/test" "lib-tk/test" "lib2to3/tests"
+                       "json/tests" "distutils/tests"))))))))
          (add-after 'remove-tests 'rebuild-bytecode
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
@@ -424,6 +433,9 @@ data types.")
                   (substitute* "Modules/Setup"
                     ;; Link Expat instead of embedding the bundled one.
                     (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n"))
+                  ;; Delete windows binaries
+                  (for-each delete-file
+                            (find-files "Lib/distutils/command" ".*.exe$"))
                   #t))))
     (arguments
      (substitute-keyword-arguments (package-arguments python-2)
-- 
2.30.0