unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: guix-devel <guix-devel@gnu.org>
Subject: For a slimmer GHC
Date: Thu, 29 Oct 2015 20:17:35 +0100	[thread overview]
Message-ID: <87io5pa3hs.fsf@gnu.org> (raw)

Hello!

GHC is insanely large, 1.2G for its closure, most of which is itself:

--8<---------------cut here---------------start------------->8---
store item                                                       total    self
/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2            1209.7   860.5  71.1%
/gnu/store/k6r37137lfpg3l3igi50c7lj2za7kqly-ld-wrapper-0           153.7     0.0   0.0%
/gnu/store/czs63sm4l0s4a56ab38dqvkx19yzylbq-perl-5.16.1            141.2    49.2   4.1%
/gnu/store/hddjjpkfvwaf1j1q3qwpvby0rid3k8by-gcc-4.9.3              138.1    77.3   6.4%
/gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc         120.2    42.6   3.5%
/gnu/store/fmxxkrpwajcnb9cyncgh4f4z6ybknl1g-guile-2.0.11           109.0    16.1   1.3%
/gnu/store/y5psndwpbbkjrf856x757psb708y62dn-binutils-2.25.1         82.5    44.6   3.7%
/gnu/store/mnwjrkbfzkb5ifhqf8hssf3cxfvg11l6-coreutils-8.24          77.8    13.8   1.1%
/gnu/store/fzp98iyq7a2i4d4siw0ab0y0wa95vv8k-readline-6.3            68.6     1.2   0.1%

[...]

$ du -ms /gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/
871	/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/
$ du -ms /gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/
871	/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/
--8<---------------cut here---------------end--------------->8---

The main problem is that, for each module, we have three variants:

--8<---------------cut here---------------start------------->8---
$ du -ms    /gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/trans_3eG64VdP2vzGjP6wJiCp5X/*
3	/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/trans_3eG64VdP2vzGjP6wJiCp5X/Control
1	/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/trans_3eG64VdP2vzGjP6wJiCp5X/Data
5	/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/trans_3eG64VdP2vzGjP6wJiCp5X/libHStransformers-0.4.2.0-3eG64VdP2vzGjP6wJiCp5X.a
2	/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/trans_3eG64VdP2vzGjP6wJiCp5X/libHStransformers-0.4.2.0-3eG64VdP2vzGjP6wJiCp5X-ghc7.10.2.so
7	/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/trans_3eG64VdP2vzGjP6wJiCp5X/libHStransformers-0.4.2.0-3eG64VdP2vzGjP6wJiCp5X_p.a
--8<---------------cut here---------------end--------------->8---

What about removing all the .a?  Would that be OK?

On that topic I found
<https://ghc.haskell.org/trac/ghc/wiki/DynamicByDefault> but it’s not
clear to me whether this is relevant here.  At worst we can add a phase
that removes these files.

A secondary issue is documentation: There’s a “doc” output, but
‘ghc:out’ depends on ‘ghc:doc’:

--8<---------------cut here---------------start------------->8---
$ guix gc --references /gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/ | grep doc
/gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc
$ du -ms /gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc
47	/gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc
$ grep -r r539jrq7jk9vkmm1255i5jqs7skn4fag    /gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2
/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/package.conf.d/process-1.2.3.0-f0287ac288afc0705be775d1adda59ee.conf:haddock-interfaces: /gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc/share/doc/ghc/html/libraries/process-1.2.3.0/process.haddock
/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/package.conf.d/process-1.2.3.0-f0287ac288afc0705be775d1adda59ee.conf:haddock-html: /gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc/share/doc/ghc/html/libraries/process-1.2.3.0
/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/package.conf.d/Cabal-1.22.4.0-43c3ae30d75ac742e521d26b63721876.conf:haddock-interfaces: /gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc/share/doc/ghc/html/libraries/Cabal-1.22.4.0/Cabal.haddock
/gnu/store/1iwl222h2qw80fyr578sdjdki0pbcjm0-ghc-7.10.2/lib/ghc-7.10.2/package.conf.d/Cabal-1.22.4.0-43c3ae30d75ac742e521d26b63721876.conf:haddock-html: /gnu/store/r539jrq7jk9vkmm1255i5jqs7skn4fag-ghc-7.10.2-doc/share/doc/ghc/html/libraries/Cabal-1.22.4.0
--8<---------------cut here---------------end--------------->8---

Any idea if we could avoid references to the “doc” output in these
*.conf files?  For instance, if there’s a variable like, say,
‘HADDOCK_PATH’, we can certainly remove the hardcoded references

Federico, Paul, Eric, … thoughts?  :-)

Thanks,
Ludo’.

             reply	other threads:[~2015-10-29 19:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-29 19:17 Ludovic Courtès [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-11-02 11:23 For a slimmer GHC Federico Beffa
2015-11-02 14:11 ` Ludovic Courtès
2015-11-02 16:01   ` Federico Beffa

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

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87io5pa3hs.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guix-devel@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 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).