From c650ac48be47b373c6c8c0b3495f30d9fe21e68b Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Thu, 3 Jun 2021 22:14:14 +0200 Subject: [PATCH 4/4] gnu: python: Move idle to a separate output. idle is a programming environment that is not useful for building packages, but it is still useful for end users. This saves 5MB in the default output. * gnu/packages/python.scm (python-2.7)[outputs]: Add `idle'. [arguments]: Move idle files in the new output. (wrap-python): Do not wrap idle since it is in a different output. --- gnu/packages/python.scm | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 4ac4b7c23c..72e05552d8 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -176,7 +176,8 @@ "Lib/test/test_subprocess.py")) #t)))) (outputs '("out" - "tk")) ;tkinter; adds 50 MiB to the closure + "tk" ;tkinter; adds 50 MiB to the closure + "idle")) ;programming environment; weighs 5MB (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -357,6 +358,27 @@ (install-file tkinter.so target) (delete-file tkinter.so))))) #t))) + (add-after 'install 'move-idle + (lambda* (#:key outputs #:allow-other-keys) + ;; when idle is built, move it to a separate output to save some + ;; space (5MB) + (let ((out (assoc-ref outputs "out")) + (idle (assoc-ref outputs "idle"))) + (when idle + (for-each + (lambda (file) + (let ((target (string-append idle "/bin/" (basename file)))) + (install-file file (dirname target)) + (delete-file file))) + (find-files (string-append out "/bin") "^idle")) + (match (find-files out "^idlelib$" #:directories? #t) + ((idlelib) + (let* ((len (string-length out)) + (target (string-append idle "/" + (string-drop idlelib len) + "/site-packages"))) + (mkdir-p (dirname target)) + (rename-file idlelib target)))))))) (add-after 'install 'install-sitecustomize.py ,(customize-site version))))) (inputs @@ -620,8 +642,8 @@ for more information."))) (lambda (old new) (symlink (string-append python old) (string-append bin "/" new))) - `("python3" ,"pydoc3" ,"idle3" ,"pip3") - `("python" ,"pydoc" ,"idle" ,"pip")) + `("python3" ,"pydoc3" ,"pip3") + `("python" ,"pydoc" ,"pip")) ;; python-config outputs search paths based upon its location, ;; use a bash wrapper to avoid changing its outputs. (let ((bash (string-append (assoc-ref %build-inputs "bash") -- 2.31.1