From: Efraim Flashner <efraim@flashner.co.il>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: guix-devel@gnu.org
Subject: Re: Packages grow, no longer fit on a 💾
Date: Tue, 17 Jan 2023 10:06:50 +0200 [thread overview]
Message-ID: <Y8ZXGpPkLTC9CKL8@3900XT> (raw)
In-Reply-To: <87tu0s7otg.fsf@inria.fr>
[-- Attachment #1: Type: text/plain, Size: 6536 bytes --]
On Sat, Jan 14, 2023 at 11:07:23PM +0100, Ludovic Courtès wrote:
> Hello!
>
> Over the course of a few years, the size of our packages has apparently
> kept growing. Example:
>
> --8<---------------cut here---------------start------------->8---
> $ guix time-machine --commit=v1.2.0 -- size emacs
> store item total self
> /gnu/store/118xpdazyylxa1rlc68h9lmh38vhxrb4-llvm-10.0.0 210.8 139.3 16.2%
> /gnu/store/1qmd9achfkm1njzxf8hi86q53pmy9sxk-mesa-20.0.7 369.2 131.3 15.3%
> /gnu/store/d83hc7cqgnhl1vlz1rv4ibkvaqaq2g35-emacs-27.1 859.7 106.2 12.4%
> /gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2 132.8 53.2 6.2%
> /gnu/store/9lckq1194qcy4a7kv8bihagd58shj7yr-gtk+-3.24.20 723.7 49.0 5.7%
> /gnu/store/qizplwwgqwyq6qmz1i6jlaib5kgzrgwq-icu4c-66.1 110.2 38.1 4.4%
> /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31 38.4 36.7 4.3%
> […]
> total: 859.7 MiB
> $ guix time-machine --commit=v1.3.0 -- size emacs
> store item total self
> /gnu/store/g3idjpqsp2p2d163qfzskxj4k58nrx7f-llvm-11.0.0 220.0 148.6 16.9%
> /gnu/store/jf269s6clr6r57p8v5c3c1qkyra6apq2-mesa-20.2.4 389.1 141.6 16.1%
> /gnu/store/7nlq2v4000pw8vgj3m4vrwz072ib58xh-emacs-27.2 880.5 106.4 12.1%
> /gnu/store/18hp7flyb3yid3yp49i6qcdq0sbi5l1n-guile-3.0.2 132.8 53.2 6.0%
> /gnu/store/czf23hay13pp25yzrb4yq3n4gcri5r70-gtk+-3.24.24 744.3 49.1 5.6%
> /gnu/store/2wqjj3mkqdvsvksndr2hpjpi7qqwi7kr-icu4c-66.1 110.2 38.1 4.3%
> /gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31 38.4 36.7 4.2%
> […]
> total: 880.5 MiB
> $ guix time-machine --commit=v1.4.0 -- size emacs
> store item total self
> /gnu/store/i11jmrc90drpx9mc6cyb6s4pjny91qx6-emacs-28.2 1592.7 250.6 15.7%
> /gnu/store/sdzfljm6san79pqiy42yp0nzmkr2bafc-mesa-21.3.8 411.6 169.6 10.6%
> /gnu/store/6pdzpmxg5afzss6dlivq8z84sfa31x22-llvm-11.0.0 221.5 149.5 9.4%
> /gnu/store/lphzb1z0r4kbb453rsvnw7msrxxzp5r7-libgccjit-10.3.0 244.8 128.5 8.1%
> /gnu/store/pfas3c4lhr1jwkj2gl0yx8dg4xjjlp4r-mozjs-91.13.0 261.2 65.4 4.1%
> /gnu/store/hy6abswwv4d89zp464fw52z65fkzr7h5-perl-5.34.0 147.7 58.6 3.7%
> /gnu/store/zyqimpkmpffc24nwwqp46cicj8ss85y5-binutils-2.37 126.0 54.4 3.4%
> /gnu/store/cnfsv9ywaacyafkqdqsv2ry8f01yr7a9-guile-3.0.7 129.1 52.0 3.3%
> /gnu/store/4aq7hw017s9ihpm1rxpwfz28c80569z9-gtk+-3.24.30 1002.2 48.6 3.1%
> /gnu/store/vaxkf8cbc7slgc3ikm5qr3815wih93w8-ghostscript-with-cups-9.54.0 219.1 39.1 2.5%
> /gnu/store/bjycxjjkp1da53ijsa4hfdrz9mcgg55h-icu4c-69.1 110.7 38.0 2.4%
> /gnu/store/ayc9r7162rphy4zjw8ch01pmyh214h82-glibc-2.33 76.6 36.6 2.3%
> […]
> total: 1592.7 MiB
> --8<---------------cut here---------------end--------------->8---
>
> I think something went wrong here. :-)
>
> In particular with Emacs itself (due to JIT + dependency on libgccjit,
> Binutils, etc.?) and with GTK+ (due to mozjs in polkit?).
>
> And then MESA and LLVM have always been problematically big.
>
> We should do better. I mean, it’s just a text editor, isn’t it?
I've made some progress on LLVM and I think I have a working LLVM that
can be used as an input for mesa.
(ins)efraim@3900XT ~$ du -sch /gnu/store/36kmnxmb1h8pxw0x71wril67fdvjx7ny-llvm-11.0.0/*
3.9M /gnu/store/36kmnxmb1h8pxw0x71wril67fdvjx7ny-llvm-11.0.0/bin
8.0K /gnu/store/36kmnxmb1h8pxw0x71wril67fdvjx7ny-llvm-11.0.0/etc
21M /gnu/store/36kmnxmb1h8pxw0x71wril67fdvjx7ny-llvm-11.0.0/include
67M /gnu/store/36kmnxmb1h8pxw0x71wril67fdvjx7ny-llvm-11.0.0/lib
16K /gnu/store/36kmnxmb1h8pxw0x71wril67fdvjx7ny-llvm-11.0.0/share
92M total
(define llvm-for-mesa
(package/inherit llvm-11
;; If we can separate out the include directory we'd save another 21MB.
(outputs (list "out"))
(arguments
(substitute-keyword-arguments (package-arguments llvm-11)
((#:configure-flags cf ''())
;; AMDGPU is needed by the vulkan drivers.
`(list ,(string-append "-DLLVM_TARGETS_TO_BUILD="
(system->llvm-target) ";AMDGPU")
"-DLLVM_BUILD_TOOLS=NO"
"-DLLVM_BUILD_LLVM_DYLIB=YES"
"-DLLVM_LINK_LLVM_DYLIB=YES"))
((#:phases phases)
`(modify-phases ,phases
(add-after 'install 'delete-static-libraries
(lambda* (#:key outputs #:allow-other-keys)
(for-each delete-file
(find-files (string-append
(assoc-ref outputs "out") "/lib")
"\\.a$"))))
(replace 'install-opt-viewer
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(delete-file-recursively
(string-append out "/share/opt-viewer")))))
(add-after 'install 'build-and-install-llvm-config
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute*
"tools/llvm-config/CMakeFiles/llvm-config.dir/link.txt"
(("/tmp/guix-build-llvm-11.0.0.drv-0/build/lib")
(string-append out "/lib")))
(invoke "make" "llvm-config")
(install-file "bin/llvm-config"
(string-append out "/bin")))))))))))
In addition to what I have below I found that nix has a patch to make
llvm-11 (and the others) use the GNUInstallDirs, so we'd be able to move
the include directory to another output, saving another 21MB, bringing
llvm-for-mesa down to 71MB. Another possibility would be to have
llvm-for-mesa use llvm as an input, and then to use some configure-flags
to tell llvm-for-mesa to use the includes from llvm (the input).
--
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 --]
next prev parent reply other threads:[~2023-01-17 8:07 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-14 22:07 Packages grow, no longer fit on a 💾 Ludovic Courtès
2023-01-15 5:51 ` kiasoc5
2023-01-15 8:07 ` Liliana Marie Prikler
2023-01-16 2:09 ` Maxim Cournoyer
2023-01-16 5:17 ` Liliana Marie Prikler
2023-01-16 13:27 ` Maxim Cournoyer
2023-01-17 16:15 ` Ludovic Courtès
2023-01-15 12:56 ` Akib Azmain Turja
2023-01-15 17:00 ` pelzflorian (Florian Pelz)
2023-01-17 16:25 ` Ludovic Courtès
2023-01-17 23:05 ` zimoun
2023-01-17 23:49 ` zimoun
2023-01-18 21:04 ` Grandfathering store paths considered harmful (was: Packages grow, no longer fit on a 💾) Liliana Marie Prikler
2023-01-19 14:28 ` Grandfathering store paths considered harmful Ludovic Courtès
2023-01-19 18:10 ` Liliana Marie Prikler
2023-01-19 14:14 ` Packages grow, no longer fit on a 💾 Ludovic Courtès
2023-01-20 10:51 ` Simon Tournier
2023-01-20 14:54 ` Maxim Cournoyer
2023-01-18 2:41 ` kiasoc5
2023-01-18 8:43 ` indieterminacy
2023-01-19 14:32 ` Ludovic Courtès
2023-01-20 11:06 ` Simon Tournier
2023-01-17 8:06 ` Efraim Flashner [this message]
2023-01-17 16:18 ` Ludovic Courtès
2023-01-17 21:54 ` John Kehayias
2023-01-19 15:30 ` Katherine Cox-Buday
2023-01-17 15:06 ` Simon Tournier
2023-01-19 14:34 ` Ludovic Courtès
2023-01-18 20:44 ` Paul Jewell via Development of GNU Guix and the GNU System distribution.
2023-01-19 13:04 ` Joshua Branson
2023-01-19 14:37 ` Ludovic Courtès
2023-01-19 16:12 ` Katherine Cox-Buday
2023-01-19 18:07 ` Akib Azmain Turja
2023-01-20 15:30 ` Csepp
2023-01-20 17:34 ` Akib Azmain Turja
2023-01-21 12:29 ` bokr
2023-01-21 15:55 ` Akib Azmain Turja
2023-01-20 12:11 ` Simon Tournier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y8ZXGpPkLTC9CKL8@3900XT \
--to=efraim@flashner.co.il \
--cc=guix-devel@gnu.org \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.