From patchwork Sat Jun 5 15:43:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Julien Lepiller X-Patchwork-Id: 29943 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 7297C27BC81; Sat, 5 Jun 2021 16:44:10 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS, T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 7B0DE27BC78 for ; Sat, 5 Jun 2021 16:44:09 +0100 (BST) Received: from localhost ([::1]:53676 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lpYT2-0006gf-1E for patchwork@mira.cbaines.net; Sat, 05 Jun 2021 11:44:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41224) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lpYSw-0006gW-VX for guix-patches@gnu.org; Sat, 05 Jun 2021 11:44:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:38375) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lpYSw-0001cB-P0 for guix-patches@gnu.org; Sat, 05 Jun 2021 11:44:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lpYSw-0007T4-HF for guix-patches@gnu.org; Sat, 05 Jun 2021 11:44:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#47251] [core-updates] [patch] gnu: python: Enable optimizations. Resent-From: Julien Lepiller Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sat, 05 Jun 2021 15:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47251 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Ludovic =?utf-8?q?Court=C3=A8s?= Cc: 47251@debbugs.gnu.org Received: via spool by 47251-submit@debbugs.gnu.org id=B47251.162290781628664 (code B ref 47251); Sat, 05 Jun 2021 15:44:02 +0000 Received: (at 47251) by debbugs.gnu.org; 5 Jun 2021 15:43:36 +0000 Received: from localhost ([127.0.0.1]:49921 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lpYSM-0007S4-Ie for submit@debbugs.gnu.org; Sat, 05 Jun 2021 11:43:36 -0400 Received: from lepiller.eu ([89.234.186.109]:43714) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lpYSI-0007Rt-OT for 47251@debbugs.gnu.org; Sat, 05 Jun 2021 11:43:25 -0400 Received: from lepiller.eu (localhost [127.0.0.1]) by lepiller.eu (OpenSMTPD) with ESMTP id 100955a8; Sat, 5 Jun 2021 15:43:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=lepiller.eu; h=date:from :to:cc:subject:message-id:in-reply-to:references:mime-version :content-type; s=dkim; bh=6L8Ipg9t7Z0mIWWjTRGF9cXm5R3wOf/Ci5GiUT fDnKY=; b=gB1ch4tQfITa2yeR5zeIIArHTH/eWxoCXzPFSyTKauTf1nutkdYTrP AL6qnJLM05RJT71vmW7JYNErIkRBqhS35Wbk2XoF54DTu8O8YwYmtuoUFucwRAzr tUSENCZRnebmaG5NubW5zG43IHxnN8JEZKnlVsq+xGG0xA4gJTtzO2au48432Qla lsgreGcm7JzBZGDAQIMqJMdhnuPl3M6o34c4u5wj3tnOAqNnlWLaeiLK8YUIPzjb tmTUeT8prtotIG5+wM35plXbXm13eJCV0Y8eNOf2sL/92IgDbm7wae2E7J4HM7vR phfGewSwKoUdk3zUxjoHWKFg/E+PVDJg== Received: by lepiller.eu (OpenSMTPD) with ESMTPSA id 50600f67 (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256:NO); Sat, 5 Jun 2021 15:43:18 +0000 (UTC) Date: Sat, 5 Jun 2021 17:43:08 +0200 From: Julien Lepiller Message-ID: <20210605174308.57c4a324@tachikoma.lepiller.eu> In-Reply-To: <875yyvwa6f.fsf@gnu.org> References: <20210319001622.1c19ad41@tachikoma.lepiller.eu> <87r1jva3rj.fsf@gnu.org> <20210603040635.3b6c7d12@tachikoma.lepiller.eu> <875yyvwa6f.fsf@gnu.org> X-Mailer: Claws Mail 3.17.8 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches Le Thu, 03 Jun 2021 11:48:40 +0200, Ludovic Courtès a écrit : > Hi, > > Julien Lepiller skribis: > > > But I noticed another file gained a lot of weight: > > lib/python3.9/config-3.9-x86_64-linux-gnu/libpython3.9.a weighs > > 39MB, whereas on master (for 3.8.2) it weighs 6MB. Here is what > > size has to say: > > Yeah, the .o files in there likely contain serialized GIMPLE, as a > result of compiling with ‘-flto’. > > How about removing *.a altogether in a separate patch? Or moving it > to a “static” output? This would be consistent with what’s done in > other packages. > > Thanks, > Ludo’. Right, this is a good idea. I wrote the attached patches to: enable optimizations, prevent building and installing the static library and to install idle to a separate output, as it is not required in general. With the patch from https://issues.guix.gnu.org/47214, python 3.9 on coreupdates is ~1.7x faster than python 3.8 on master, and is ~25MB smaller than 3.8 on master (I haven't measured the speedup for python2, and it is ~10MB smaller with these changes than on master). 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