* [bug#47214] [core-updates] gnu: python: Remove unnecessary files @ 2021-03-17 12:41 Julien Lepiller 2021-03-17 19:22 ` Efraim Flashner 2021-03-18 23:08 ` Julien Lepiller 0 siblings, 2 replies; 7+ messages in thread From: Julien Lepiller @ 2021-03-17 12:41 UTC (permalink / raw) To: 47214 [-- Attachment #1: Type: text/plain, Size: 884 bytes --] 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! [-- Attachment #2: 0001-gnu-python-Remove-unnecessary-files.patch --] [-- Type: text/x-patch, Size: 2238 bytes --] From 63ebe5c610ff8587a73641e4139dc14a4d3e379e Mon Sep 17 00:00:00 2001 From: Julien Lepiller <julien@lepiller.eu> 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 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#47214] [core-updates] gnu: python: Remove unnecessary files 2021-03-17 12:41 [bug#47214] [core-updates] gnu: python: Remove unnecessary files Julien Lepiller @ 2021-03-17 19:22 ` Efraim Flashner 2021-03-18 23:08 ` Julien Lepiller 1 sibling, 0 replies; 7+ messages in thread From: Efraim Flashner @ 2021-03-17 19:22 UTC (permalink / raw) To: Julien Lepiller; +Cc: 47214 [-- Attachment #1: Type: text/plain, Size: 1402 bytes --] On Wed, Mar 17, 2021 at 01:41:02PM +0100, Julien Lepiller wrote: > 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! I got stuck on python-minimal with test-asyncio but then it didn't hang the second time I ran the build. I don't have a good pure python package I can think of to test the change. -- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#47214] [core-updates] gnu: python: Remove unnecessary files 2021-03-17 12:41 [bug#47214] [core-updates] gnu: python: Remove unnecessary files Julien Lepiller 2021-03-17 19:22 ` Efraim Flashner @ 2021-03-18 23:08 ` Julien Lepiller 2021-03-19 12:27 ` Ludovic Courtès 1 sibling, 1 reply; 7+ messages in thread From: Julien Lepiller @ 2021-03-18 23:08 UTC (permalink / raw) To: 47214 [-- Attachment #1: Type: text/plain, Size: 1394 bytes --] Le Wed, 17 Mar 2021 13:41:02 +0100, Julien Lepiller <julien@lepiller.eu> a écrit : > 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! I discovered other .exe in python3, so this updated patch deletes them. Since I modify the python from commencement.scm by changing a phase in python-2.7, I decided to also change the definition there to remove the offending files. I managed to build up to python-3.9 without any issue, but haven't tested building more than a handful of python packages. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-gnu-python-Remove-unnecessary-files.patch --] [-- Type: text/x-patch, Size: 6312 bytes --] From 0d2d9a32cbbf24eadf74271b2fb1304b7a72d281 Mon Sep 17 00:00:00 2001 From: Julien Lepiller <julien@lepiller.eu> 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. --- gnu/packages/commencement.scm | 9 ++++++++- gnu/packages/python.scm | 35 +++++++++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index b2921a4a48..b2b9651444 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu> ;;; ;;; This file is part of GNU Guix. ;;; @@ -3098,7 +3099,12 @@ memoized as a function of '%current-system'." (delete-file-recursively "Modules/expat") (substitute* "Modules/Setup.dist" ;; Link Expat instead of embedding the bundled one. - (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n"))))))) + (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n")) + ;; Delete windows binaries + (for-each delete-file + (find-files "Lib/distutils/command" ".*.exe$")) + (for-each delete-file + (find-files "Lib/ensurepip" ".*.whl$"))))))) (inputs `(,@(%boot0-inputs) ("expat" ,expat-sans-tests))) ;remove OpenSSL, zlib, etc. @@ -3129,6 +3135,7 @@ memoized as a function of '%current-system'." ('add-after unpack apply-alignment-patch _)) `(modify-phases ,original-phases ,@changes)) (_ phases))) + (delete 'remove-windows-binaries) (add-before 'configure 'disable-modules (lambda _ (substitute* "setup.py" diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 49d43ab008..da9859b11a 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -31,7 +31,7 @@ ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net> -;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2016, 2017, 2018, 2021 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> @@ -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) @@ -469,6 +481,23 @@ data types.") ,@(if (hurd-system?) `((delete 'patch-regen-for-hurd)) ;regen was removed after 3.5.9 '()) + (add-after 'unpack 'remove-windows-binaries + (lambda _ + ;; Delete .exe from embedded .whl (zip) files + (for-each + (lambda (whl) + (let ((dir "whl-content")) + (mkdir-p dir) + (with-directory-excursion dir + (let ((whl (string-append "../" whl))) + (invoke "unzip" whl) + (for-each delete-file + (find-files "." ".*.exe$")) + (delete-file whl) + (apply invoke "zip" "-X" whl + (find-files "." ".*" #:directories? #t)))) + (delete-file-recursively dir))) + (find-files "Lib/ensurepip" ".*.whl$")))) (add-before 'check 'set-TZDIR (lambda* (#:key inputs native-inputs #:allow-other-keys) ;; test_email requires the Olson time zone database. @@ -503,6 +532,8 @@ data types.") ,(customize-site version)))))) (native-inputs `(("tzdata" ,tzdata-for-tests) + ("unzip" ,unzip) + ("zip" ,(@ (gnu packages compression) zip)) ,@(if (%current-target-system) `(("python3" ,this-package)) '()) -- 2.30.0 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [bug#47214] [core-updates] gnu: python: Remove unnecessary files 2021-03-18 23:08 ` Julien Lepiller @ 2021-03-19 12:27 ` Ludovic Courtès 2021-06-03 1:56 ` Julien Lepiller 0 siblings, 1 reply; 7+ messages in thread From: Ludovic Courtès @ 2021-03-19 12:27 UTC (permalink / raw) To: Julien Lepiller; +Cc: 47214 Hi Julien, Julien Lepiller <julien@lepiller.eu> skribis: > Le Wed, 17 Mar 2021 13:41:02 +0100, > Julien Lepiller <julien@lepiller.eu> a écrit : > >> 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! > > I discovered other .exe in python3, so this updated patch deletes them. > Since I modify the python from commencement.scm by changing a phase in > python-2.7, I decided to also change the definition there to remove the > offending files. Woow, good catch. > From 0d2d9a32cbbf24eadf74271b2fb1304b7a72d281 Mon Sep 17 00:00:00 2001 > From: Julien Lepiller <julien@lepiller.eu> > 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. WDYT? Thanks, Ludo’. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#47214] [core-updates] gnu: python: Remove unnecessary files 2021-03-19 12:27 ` Ludovic Courtès @ 2021-06-03 1:56 ` Julien Lepiller 2021-06-03 9:46 ` Ludovic Courtès 0 siblings, 1 reply; 7+ messages in thread From: Julien Lepiller @ 2021-06-03 1:56 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 47214 Le Fri, 19 Mar 2021 13:27:06 +0100, Ludovic Courtès <ludo@gnu.org> a écrit : > > From 0d2d9a32cbbf24eadf74271b2fb1304b7a72d281 Mon Sep 17 00:00:00 > > 2001 From: Julien Lepiller <julien@lepiller.eu> > > 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. > > WDYT? > > Thanks, > Ludo’. 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? ^ permalink raw reply [flat|nested] 7+ messages in thread
* [bug#47214] [core-updates] gnu: python: Remove unnecessary files 2021-06-03 1:56 ` Julien Lepiller @ 2021-06-03 9:46 ` Ludovic Courtès 2021-06-11 1:01 ` bug#47214: " Julien Lepiller 0 siblings, 1 reply; 7+ messages in thread From: Ludovic Courtès @ 2021-06-03 9:46 UTC (permalink / raw) To: Julien Lepiller; +Cc: 47214 Hi, Julien Lepiller <julien@lepiller.eu> skribis: > Le Fri, 19 Mar 2021 13:27:06 +0100, > Ludovic Courtès <ludo@gnu.org> a écrit : > >> > From 0d2d9a32cbbf24eadf74271b2fb1304b7a72d281 Mon Sep 17 00:00:00 >> > 2001 From: Julien Lepiller <julien@lepiller.eu> >> > 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’. ^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#47214: [core-updates] gnu: python: Remove unnecessary files 2021-06-03 9:46 ` Ludovic Courtès @ 2021-06-11 1:01 ` Julien Lepiller 0 siblings, 0 replies; 7+ messages in thread From: Julien Lepiller @ 2021-06-11 1:01 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 47214-done Le Thu, 03 Jun 2021 11:46:44 +0200, Ludovic Courtès <ludo@gnu.org> a écrit : > Hi, > > Julien Lepiller <julien@lepiller.eu> skribis: > > > Le Fri, 19 Mar 2021 13:27:06 +0100, > > Ludovic Courtès <ludo@gnu.org> a écrit : > > > >> > From 0d2d9a32cbbf24eadf74271b2fb1304b7a72d281 Mon Sep 17 00:00:00 > >> > 2001 From: Julien Lepiller <julien@lepiller.eu> > >> > 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. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-06-11 1:02 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-03-17 12:41 [bug#47214] [core-updates] gnu: python: Remove unnecessary files Julien Lepiller 2021-03-17 19:22 ` Efraim Flashner 2021-03-18 23:08 ` Julien Lepiller 2021-03-19 12:27 ` Ludovic Courtès 2021-06-03 1:56 ` Julien Lepiller 2021-06-03 9:46 ` Ludovic Courtès 2021-06-11 1:01 ` bug#47214: " Julien Lepiller
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).