On master, ghc.aarch64-linux
, Hydra reports:
Output limit exceeded
and consequently we won't have any haskell packages for aarch64.
Yes, it's always been big and now we've apparently hit some limit, though I'm not even sure which part enforces it. I suppose we want to just increase it, though it might be possible to slim ghc a bit, too.
Recent successful build has output size 2040 MiB, so I guess 2 GiB is the limit, whereas x86_64-linux is still below 1.7 :woman_shrugging:
Column #1 is (size on aarch64 - size on x86) in bytes
808080 ./lib/ghc-8.6.5/array-0.5.3.0/HSarray-0.5.3.0.o
1273470 ./lib/ghc-8.6.5/array-0.5.3.0/libHSarray-0.5.3.0.a
262504 ./lib/ghc-8.6.5/array-0.5.3.0/libHSarray-0.5.3.0-ghc8.6.5.so
1131398 ./lib/ghc-8.6.5/array-0.5.3.0/libHSarray-0.5.3.0_p.a
11321848 ./lib/ghc-8.6.5/base-4.12.0.0/HSbase-4.12.0.0.o
15788724 ./lib/ghc-8.6.5/base-4.12.0.0/libHSbase-4.12.0.0.a
3826600 ./lib/ghc-8.6.5/base-4.12.0.0/libHSbase-4.12.0.0-ghc8.6.5.so
11769012 ./lib/ghc-8.6.5/base-4.12.0.0/libHSbase-4.12.0.0_p.a
784128 ./lib/ghc-8.6.5/binary-0.8.6.0/HSbinary-0.8.6.0.o
1086308 ./lib/ghc-8.6.5/binary-0.8.6.0/libHSbinary-0.8.6.0.a
238440 ./lib/ghc-8.6.5/binary-0.8.6.0/libHSbinary-0.8.6.0-ghc8.6.5.so
828596 ./lib/ghc-8.6.5/binary-0.8.6.0/libHSbinary-0.8.6.0_p.a
1030168 ./lib/ghc-8.6.5/bin/ghc
18132544 ./lib/ghc-8.6.5/bin/ghc-iserv
1640 ./lib/ghc-8.6.5/bin/ghc-iserv-dyn
16180144 ./lib/ghc-8.6.5/bin/ghc-iserv-prof
199864 ./lib/ghc-8.6.5/bin/ghc-pkg
3034800 ./lib/ghc-8.6.5/bin/haddock
330416 ./lib/ghc-8.6.5/bin/hpc
330392 ./lib/ghc-8.6.5/bin/hsc2hs
9296 ./lib/ghc-8.6.5/bin/runghc
1092536 ./lib/ghc-8.6.5/bytestring-0.10.8.2/HSbytestring-0.10.8.2.o
1620280 ./lib/ghc-8.6.5/bytestring-0.10.8.2/libHSbytestring-0.10.8.2.a
370384 ./lib/ghc-8.6.5/bytestring-0.10.8.2/libHSbytestring-0.10.8.2-ghc8.6.5.so
1293880 ./lib/ghc-8.6.5/bytestring-0.10.8.2/libHSbytestring-0.10.8.2_p.a
29456952 ./lib/ghc-8.6.5/Cabal-2.4.0.1/HSCabal-2.4.0.1.o
43209942 ./lib/ghc-8.6.5/Cabal-2.4.0.1/libHSCabal-2.4.0.1.a
7772504 ./lib/ghc-8.6.5/Cabal-2.4.0.1/libHSCabal-2.4.0.1-ghc8.6.5.so
31671894 ./lib/ghc-8.6.5/Cabal-2.4.0.1/libHSCabal-2.4.0.1_p.a
4128896 ./lib/ghc-8.6.5/containers-0.6.0.1/HScontainers-0.6.0.1.o
6536772 ./lib/ghc-8.6.5/containers-0.6.0.1/libHScontainers-0.6.0.1.a
1073024 ./lib/ghc-8.6.5/containers-0.6.0.1/libHScontainers-0.6.0.1-ghc8.6.5.so
5128692 ./lib/ghc-8.6.5/containers-0.6.0.1/libHScontainers-0.6.0.1_p.a
102240 ./lib/ghc-8.6.5/deepseq-1.4.4.0/HSdeepseq-1.4.4.0.o
144690 ./lib/ghc-8.6.5/deepseq-1.4.4.0/libHSdeepseq-1.4.4.0.a
49160 ./lib/ghc-8.6.5/deepseq-1.4.4.0/libHSdeepseq-1.4.4.0-ghc8.6.5.so
120714 ./lib/ghc-8.6.5/deepseq-1.4.4.0/libHSdeepseq-1.4.4.0_p.a
436736 ./lib/ghc-8.6.5/directory-1.3.3.0/HSdirectory-1.3.3.0.o
606946 ./lib/ghc-8.6.5/directory-1.3.3.0/libHSdirectory-1.3.3.0.a
156736 ./lib/ghc-8.6.5/directory-1.3.3.0/libHSdirectory-1.3.3.0-ghc8.6.5.so
449378 ./lib/ghc-8.6.5/directory-1.3.3.0/libHSdirectory-1.3.3.0_p.a
230632 ./lib/ghc-8.6.5/filepath-1.4.2.1/HSfilepath-1.4.2.1.o
342050 ./lib/ghc-8.6.5/filepath-1.4.2.1/libHSfilepath-1.4.2.1.a
73824 ./lib/ghc-8.6.5/filepath-1.4.2.1/libHSfilepath-1.4.2.1-ghc8.6.5.so
286650 ./lib/ghc-8.6.5/filepath-1.4.2.1/libHSfilepath-1.4.2.1_p.a
84961630 ./lib/ghc-8.6.5/ghc-8.6.5/libHSghc-8.6.5.a
19685920 ./lib/ghc-8.6.5/ghc-8.6.5/libHSghc-8.6.5-ghc8.6.5.so
49841666 ./lib/ghc-8.6.5/ghc-8.6.5/libHSghc-8.6.5_p.a
489504 ./lib/ghc-8.6.5/ghc-boot-8.6.5/HSghc-boot-8.6.5.o
692496 ./lib/ghc-8.6.5/ghc-boot-8.6.5/libHSghc-boot-8.6.5.a
143816 ./lib/ghc-8.6.5/ghc-boot-8.6.5/libHSghc-boot-8.6.5-ghc8.6.5.so
449376 ./lib/ghc-8.6.5/ghc-boot-8.6.5/libHSghc-boot-8.6.5_p.a
139864 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/HSghc-boot-th-8.6.5.o
202648 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/libHSghc-boot-th-8.6.5.a
39216 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/libHSghc-boot-th-8.6.5-ghc8.6.5.so
161512 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/libHSghc-boot-th-8.6.5_p.a
36240 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/HSghc-compact-0.1.0.0.o
62388 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/libHSghc-compact-0.1.0.0.a
4048 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/libHSghc-compact-0.1.0.0-ghc8.6.5.so
51332 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/libHSghc-compact-0.1.0.0_p.a
287688 ./lib/ghc-8.6.5/ghc-heap-8.6.5/HSghc-heap-8.6.5.o
388632 ./lib/ghc-8.6.5/ghc-heap-8.6.5/libHSghc-heap-8.6.5.a
90352 ./lib/ghc-8.6.5/ghc-heap-8.6.5/libHSghc-heap-8.6.5-ghc8.6.5.so
248256 ./lib/ghc-8.6.5/ghc-heap-8.6.5/libHSghc-heap-8.6.5_p.a
2768944 ./lib/ghc-8.6.5/ghci-8.6.5/HSghci-8.6.5.o
3884458 ./lib/ghc-8.6.5/ghci-8.6.5/libHSghci-8.6.5.a
864216 ./lib/ghc-8.6.5/ghci-8.6.5/libHSghci-8.6.5-ghc8.6.5.so
2815098 ./lib/ghc-8.6.5/ghci-8.6.5/libHSghci-8.6.5_p.a
2060696 ./lib/ghc-8.6.5/ghc-prim-0.5.3/HSghc-prim-0.5.3.o
3041242 ./lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3.a
831656 ./lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so
2719874 ./lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3_p.a
1972592 ./lib/ghc-8.6.5/haskeline-0.7.4.3/HShaskeline-0.7.4.3.o
2771732 ./lib/ghc-8.6.5/haskeline-0.7.4.3/libHShaskeline-0.7.4.3.a
572536 ./lib/ghc-8.6.5/haskeline-0.7.4.3/libHShaskeline-0.7.4.3-ghc8.6.5.so
1778020 ./lib/ghc-8.6.5/haskeline-0.7.4.3/libHShaskeline-0.7.4.3_p.a
241464 ./lib/ghc-8.6.5/hpc-0.6.0.3/HShpc-0.6.0.3.o
344410 ./lib/ghc-8.6.5/hpc-0.6.0.3/libHShpc-0.6.0.3.a
86464 ./lib/ghc-8.6.5/hpc-0.6.0.3/libHShpc-0.6.0.3-ghc8.6.5.so
266522 ./lib/ghc-8.6.5/hpc-0.6.0.3/libHShpc-0.6.0.3_p.a
316024 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o
511096 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/libHSinteger-gmp-1.0.2.0.a
110632 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/libHSinteger-gmp-1.0.2.0-ghc8.6.5.so
484296 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/libHSinteger-gmp-1.0.2.0_p.a
24192 ./lib/ghc-8.6.5/libiserv-8.6.3/HSlibiserv-8.6.3.o
38756 ./lib/ghc-8.6.5/libiserv-8.6.3/libHSlibiserv-8.6.3.a
34396 ./lib/ghc-8.6.5/libiserv-8.6.3/libHSlibiserv-8.6.3_p.a
247616 ./lib/ghc-8.6.5/mtl-2.2.2/HSmtl-2.2.2.o
304900 ./lib/ghc-8.6.5/mtl-2.2.2/libHSmtl-2.2.2.a
110696 ./lib/ghc-8.6.5/mtl-2.2.2/libHSmtl-2.2.2-ghc8.6.5.so
216148 ./lib/ghc-8.6.5/mtl-2.2.2/libHSmtl-2.2.2_p.a
912784 ./lib/ghc-8.6.5/parsec-3.1.13.0/HSparsec-3.1.13.0.o
1299202 ./lib/ghc-8.6.5/parsec-3.1.13.0/libHSparsec-3.1.13.0.a
295632 ./lib/ghc-8.6.5/parsec-3.1.13.0/libHSparsec-3.1.13.0-ghc8.6.5.so
882882 ./lib/ghc-8.6.5/parsec-3.1.13.0/libHSparsec-3.1.13.0_p.a
479640 ./lib/ghc-8.6.5/pretty-1.1.3.6/HSpretty-1.1.3.6.o
668336 ./lib/ghc-8.6.5/pretty-1.1.3.6/libHSpretty-1.1.3.6.a
173648 ./lib/ghc-8.6.5/pretty-1.1.3.6/libHSpretty-1.1.3.6-ghc8.6.5.so
513784 ./lib/ghc-8.6.5/pretty-1.1.3.6/libHSpretty-1.1.3.6_p.a
283216 ./lib/ghc-8.6.5/process-1.6.5.0/HSprocess-1.6.5.0.o
449196 ./lib/ghc-8.6.5/process-1.6.5.0/libHSprocess-1.6.5.0.a
65888 ./lib/ghc-8.6.5/process-1.6.5.0/libHSprocess-1.6.5.0-ghc8.6.5.so
371676 ./lib/ghc-8.6.5/process-1.6.5.0/libHSprocess-1.6.5.0_p.a
30172 ./lib/ghc-8.6.5/rts/libHSrts.a
120844 ./lib/ghc-8.6.5/rts/libHSrts_debug.a
77280 ./lib/ghc-8.6.5/rts/libHSrts_debug-ghc8.6.5.so
57488 ./lib/ghc-8.6.5/rts/libHSrts-ghc8.6.5.so
23932 ./lib/ghc-8.6.5/rts/libHSrts_l.a
42984 ./lib/ghc-8.6.5/rts/libHSrts_l-ghc8.6.5.so
30674 ./lib/ghc-8.6.5/rts/libHSrts_thr.a
139618 ./lib/ghc-8.6.5/rts/libHSrts_thr_debug.a
90400 ./lib/ghc-8.6.5/rts/libHSrts_thr_debug-ghc8.6.5.so
43232 ./lib/ghc-8.6.5/rts/libHSrts_thr-ghc8.6.5.so
25844 ./lib/ghc-8.6.5/rts/libHSrts_thr_l.a
45368 ./lib/ghc-8.6.5/rts/libHSrts_thr_l-ghc8.6.5.so
113048 ./lib/ghc-8.6.5/stm-2.5.0.0/HSstm-2.5.0.0.o
180264 ./lib/ghc-8.6.5/stm-2.5.0.0/libHSstm-2.5.0.0.a
36984 ./lib/ghc-8.6.5/stm-2.5.0.0/libHSstm-2.5.0.0-ghc8.6.5.so
161528 ./lib/ghc-8.6.5/stm-2.5.0.0/libHSstm-2.5.0.0_p.a
4177528 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/HStemplate-haskell-2.14.0.0.o
5914574 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/libHStemplate-haskell-2.14.0.0.a
1334408 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/libHStemplate-haskell-2.14.0.0-ghc8.6.5.so
4455486 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/libHStemplate-haskell-2.14.0.0_p.a
229912 ./lib/ghc-8.6.5/terminfo-0.4.1.2/HSterminfo-0.4.1.2.o
333404 ./lib/ghc-8.6.5/terminfo-0.4.1.2/libHSterminfo-0.4.1.2.a
86176 ./lib/ghc-8.6.5/terminfo-0.4.1.2/libHSterminfo-0.4.1.2-ghc8.6.5.so
264620 ./lib/ghc-8.6.5/terminfo-0.4.1.2/libHSterminfo-0.4.1.2_p.a
2705960 ./lib/ghc-8.6.5/text-1.2.3.1/HStext-1.2.3.1.o
4307484 ./lib/ghc-8.6.5/text-1.2.3.1/libHStext-1.2.3.1.a
625512 ./lib/ghc-8.6.5/text-1.2.3.1/libHStext-1.2.3.1-ghc8.6.5.so
3389124 ./lib/ghc-8.6.5/text-1.2.3.1/libHStext-1.2.3.1_p.a
1101176 ./lib/ghc-8.6.5/time-1.8.0.2/HStime-1.8.0.2.o
1598870 ./lib/ghc-8.6.5/time-1.8.0.2/libHStime-1.8.0.2.a
359504 ./lib/ghc-8.6.5/time-1.8.0.2/libHStime-1.8.0.2-ghc8.6.5.so
1224438 ./lib/ghc-8.6.5/time-1.8.0.2/libHStime-1.8.0.2_p.a
1655968 ./lib/ghc-8.6.5/transformers-0.5.6.2/HStransformers-0.5.6.2.o
2056668 ./lib/ghc-8.6.5/transformers-0.5.6.2/libHStransformers-0.5.6.2.a
615616 ./lib/ghc-8.6.5/transformers-0.5.6.2/libHStransformers-0.5.6.2-ghc8.6.5.so
1364948 ./lib/ghc-8.6.5/transformers-0.5.6.2/libHStransformers-0.5.6.2_p.a
804816 ./lib/ghc-8.6.5/unix-2.7.2.2/HSunix-2.7.2.2.o
1166896 ./lib/ghc-8.6.5/unix-2.7.2.2/libHSunix-2.7.2.2.a
337008 ./lib/ghc-8.6.5/unix-2.7.2.2/libHSunix-2.7.2.2-ghc8.6.5.so
944232 ./lib/ghc-8.6.5/unix-2.7.2.2/libHSunix-2.7.2.2_p.a
355520 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/HSxhtml-3000.2.2.1.o
470372 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/libHSxhtml-3000.2.2.1.a
160304 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/libHSxhtml-3000.2.2.1-ghc8.6.5.so
356892 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/libHSxhtml-3000.2.2.1_p.a
same list, sorted by diff:
````
84961630 ./lib/ghc-8.6.5/ghc-8.6.5/libHSghc-8.6.5.a
49841666 ./lib/ghc-8.6.5/ghc-8.6.5/libHSghc-8.6.5_p.a
43209942 ./lib/ghc-8.6.5/Cabal-2.4.0.1/libHSCabal-2.4.0.1.a
31671894 ./lib/ghc-8.6.5/Cabal-2.4.0.1/libHSCabal-2.4.0.1_p.a
29456952 ./lib/ghc-8.6.5/Cabal-2.4.0.1/HSCabal-2.4.0.1.o
19685920 ./lib/ghc-8.6.5/ghc-8.6.5/libHSghc-8.6.5-ghc8.6.5.so
18132544 ./lib/ghc-8.6.5/bin/ghc-iserv
16180144 ./lib/ghc-8.6.5/bin/ghc-iserv-prof
15788724 ./lib/ghc-8.6.5/base-4.12.0.0/libHSbase-4.12.0.0.a
11769012 ./lib/ghc-8.6.5/base-4.12.0.0/libHSbase-4.12.0.0_p.a
11321848 ./lib/ghc-8.6.5/base-4.12.0.0/HSbase-4.12.0.0.o
7772504 ./lib/ghc-8.6.5/Cabal-2.4.0.1/libHSCabal-2.4.0.1-ghc8.6.5.so
6536772 ./lib/ghc-8.6.5/containers-0.6.0.1/libHScontainers-0.6.0.1.a
5914574 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/libHStemplate-haskell-2.14.0.0.a
5128692 ./lib/ghc-8.6.5/containers-0.6.0.1/libHScontainers-0.6.0.1_p.a
4455486 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/libHStemplate-haskell-2.14.0.0_p.a
4307484 ./lib/ghc-8.6.5/text-1.2.3.1/libHStext-1.2.3.1.a
4177528 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/HStemplate-haskell-2.14.0.0.o
4128896 ./lib/ghc-8.6.5/containers-0.6.0.1/HScontainers-0.6.0.1.o
3884458 ./lib/ghc-8.6.5/ghci-8.6.5/libHSghci-8.6.5.a
3826600 ./lib/ghc-8.6.5/base-4.12.0.0/libHSbase-4.12.0.0-ghc8.6.5.so
3389124 ./lib/ghc-8.6.5/text-1.2.3.1/libHStext-1.2.3.1_p.a
3041242 ./lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3.a
3034800 ./lib/ghc-8.6.5/bin/haddock
2815098 ./lib/ghc-8.6.5/ghci-8.6.5/libHSghci-8.6.5_p.a
2771732 ./lib/ghc-8.6.5/haskeline-0.7.4.3/libHShaskeline-0.7.4.3.a
2768944 ./lib/ghc-8.6.5/ghci-8.6.5/HSghci-8.6.5.o
2719874 ./lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3_p.a
2705960 ./lib/ghc-8.6.5/text-1.2.3.1/HStext-1.2.3.1.o
2060696 ./lib/ghc-8.6.5/ghc-prim-0.5.3/HSghc-prim-0.5.3.o
2056668 ./lib/ghc-8.6.5/transformers-0.5.6.2/libHStransformers-0.5.6.2.a
1972592 ./lib/ghc-8.6.5/haskeline-0.7.4.3/HShaskeline-0.7.4.3.o
1778020 ./lib/ghc-8.6.5/haskeline-0.7.4.3/libHShaskeline-0.7.4.3_p.a
1655968 ./lib/ghc-8.6.5/transformers-0.5.6.2/HStransformers-0.5.6.2.o
1620280 ./lib/ghc-8.6.5/bytestring-0.10.8.2/libHSbytestring-0.10.8.2.a
1598870 ./lib/ghc-8.6.5/time-1.8.0.2/libHStime-1.8.0.2.a
1364948 ./lib/ghc-8.6.5/transformers-0.5.6.2/libHStransformers-0.5.6.2_p.a
1334408 ./lib/ghc-8.6.5/template-haskell-2.14.0.0/libHStemplate-haskell-2.14.0.0-ghc8.6.5.so
1299202 ./lib/ghc-8.6.5/parsec-3.1.13.0/libHSparsec-3.1.13.0.a
1293880 ./lib/ghc-8.6.5/bytestring-0.10.8.2/libHSbytestring-0.10.8.2_p.a
1273470 ./lib/ghc-8.6.5/array-0.5.3.0/libHSarray-0.5.3.0.a
1224438 ./lib/ghc-8.6.5/time-1.8.0.2/libHStime-1.8.0.2_p.a
1166896 ./lib/ghc-8.6.5/unix-2.7.2.2/libHSunix-2.7.2.2.a
1131398 ./lib/ghc-8.6.5/array-0.5.3.0/libHSarray-0.5.3.0_p.a
1101176 ./lib/ghc-8.6.5/time-1.8.0.2/HStime-1.8.0.2.o
1092536 ./lib/ghc-8.6.5/bytestring-0.10.8.2/HSbytestring-0.10.8.2.o
1086308 ./lib/ghc-8.6.5/binary-0.8.6.0/libHSbinary-0.8.6.0.a
1073024 ./lib/ghc-8.6.5/containers-0.6.0.1/libHScontainers-0.6.0.1-ghc8.6.5.so
1030168 ./lib/ghc-8.6.5/bin/ghc
944232 ./lib/ghc-8.6.5/unix-2.7.2.2/libHSunix-2.7.2.2_p.a
912784 ./lib/ghc-8.6.5/parsec-3.1.13.0/HSparsec-3.1.13.0.o
882882 ./lib/ghc-8.6.5/parsec-3.1.13.0/libHSparsec-3.1.13.0_p.a
864216 ./lib/ghc-8.6.5/ghci-8.6.5/libHSghci-8.6.5-ghc8.6.5.so
831656 ./lib/ghc-8.6.5/ghc-prim-0.5.3/libHSghc-prim-0.5.3-ghc8.6.5.so
828596 ./lib/ghc-8.6.5/binary-0.8.6.0/libHSbinary-0.8.6.0_p.a
808080 ./lib/ghc-8.6.5/array-0.5.3.0/HSarray-0.5.3.0.o
804816 ./lib/ghc-8.6.5/unix-2.7.2.2/HSunix-2.7.2.2.o
784128 ./lib/ghc-8.6.5/binary-0.8.6.0/HSbinary-0.8.6.0.o
692496 ./lib/ghc-8.6.5/ghc-boot-8.6.5/libHSghc-boot-8.6.5.a
668336 ./lib/ghc-8.6.5/pretty-1.1.3.6/libHSpretty-1.1.3.6.a
625512 ./lib/ghc-8.6.5/text-1.2.3.1/libHStext-1.2.3.1-ghc8.6.5.so
615616 ./lib/ghc-8.6.5/transformers-0.5.6.2/libHStransformers-0.5.6.2-ghc8.6.5.so
606946 ./lib/ghc-8.6.5/directory-1.3.3.0/libHSdirectory-1.3.3.0.a
572536 ./lib/ghc-8.6.5/haskeline-0.7.4.3/libHShaskeline-0.7.4.3-ghc8.6.5.so
513784 ./lib/ghc-8.6.5/pretty-1.1.3.6/libHSpretty-1.1.3.6_p.a
511096 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/libHSinteger-gmp-1.0.2.0.a
489504 ./lib/ghc-8.6.5/ghc-boot-8.6.5/HSghc-boot-8.6.5.o
484296 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/libHSinteger-gmp-1.0.2.0_p.a
479640 ./lib/ghc-8.6.5/pretty-1.1.3.6/HSpretty-1.1.3.6.o
470372 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/libHSxhtml-3000.2.2.1.a
449378 ./lib/ghc-8.6.5/directory-1.3.3.0/libHSdirectory-1.3.3.0_p.a
449376 ./lib/ghc-8.6.5/ghc-boot-8.6.5/libHSghc-boot-8.6.5_p.a
449196 ./lib/ghc-8.6.5/process-1.6.5.0/libHSprocess-1.6.5.0.a
436736 ./lib/ghc-8.6.5/directory-1.3.3.0/HSdirectory-1.3.3.0.o
388632 ./lib/ghc-8.6.5/ghc-heap-8.6.5/libHSghc-heap-8.6.5.a
371676 ./lib/ghc-8.6.5/process-1.6.5.0/libHSprocess-1.6.5.0_p.a
370384 ./lib/ghc-8.6.5/bytestring-0.10.8.2/libHSbytestring-0.10.8.2-ghc8.6.5.so
359504 ./lib/ghc-8.6.5/time-1.8.0.2/libHStime-1.8.0.2-ghc8.6.5.so
356892 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/libHSxhtml-3000.2.2.1_p.a
355520 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/HSxhtml-3000.2.2.1.o
344410 ./lib/ghc-8.6.5/hpc-0.6.0.3/libHShpc-0.6.0.3.a
342050 ./lib/ghc-8.6.5/filepath-1.4.2.1/libHSfilepath-1.4.2.1.a
337008 ./lib/ghc-8.6.5/unix-2.7.2.2/libHSunix-2.7.2.2-ghc8.6.5.so
333404 ./lib/ghc-8.6.5/terminfo-0.4.1.2/libHSterminfo-0.4.1.2.a
330416 ./lib/ghc-8.6.5/bin/hpc
330392 ./lib/ghc-8.6.5/bin/hsc2hs
316024 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/HSinteger-gmp-1.0.2.0.o
304900 ./lib/ghc-8.6.5/mtl-2.2.2/libHSmtl-2.2.2.a
295632 ./lib/ghc-8.6.5/parsec-3.1.13.0/libHSparsec-3.1.13.0-ghc8.6.5.so
287688 ./lib/ghc-8.6.5/ghc-heap-8.6.5/HSghc-heap-8.6.5.o
286650 ./lib/ghc-8.6.5/filepath-1.4.2.1/libHSfilepath-1.4.2.1_p.a
283216 ./lib/ghc-8.6.5/process-1.6.5.0/HSprocess-1.6.5.0.o
266522 ./lib/ghc-8.6.5/hpc-0.6.0.3/libHShpc-0.6.0.3_p.a
264620 ./lib/ghc-8.6.5/terminfo-0.4.1.2/libHSterminfo-0.4.1.2_p.a
262504 ./lib/ghc-8.6.5/array-0.5.3.0/libHSarray-0.5.3.0-ghc8.6.5.so
248256 ./lib/ghc-8.6.5/ghc-heap-8.6.5/libHSghc-heap-8.6.5_p.a
247616 ./lib/ghc-8.6.5/mtl-2.2.2/HSmtl-2.2.2.o
241464 ./lib/ghc-8.6.5/hpc-0.6.0.3/HShpc-0.6.0.3.o
238440 ./lib/ghc-8.6.5/binary-0.8.6.0/libHSbinary-0.8.6.0-ghc8.6.5.so
230632 ./lib/ghc-8.6.5/filepath-1.4.2.1/HSfilepath-1.4.2.1.o
229912 ./lib/ghc-8.6.5/terminfo-0.4.1.2/HSterminfo-0.4.1.2.o
216148 ./lib/ghc-8.6.5/mtl-2.2.2/libHSmtl-2.2.2_p.a
202648 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/libHSghc-boot-th-8.6.5.a
199864 ./lib/ghc-8.6.5/bin/ghc-pkg
180264 ./lib/ghc-8.6.5/stm-2.5.0.0/libHSstm-2.5.0.0.a
173648 ./lib/ghc-8.6.5/pretty-1.1.3.6/libHSpretty-1.1.3.6-ghc8.6.5.so
161528 ./lib/ghc-8.6.5/stm-2.5.0.0/libHSstm-2.5.0.0_p.a
161512 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/libHSghc-boot-th-8.6.5_p.a
160304 ./lib/ghc-8.6.5/xhtml-3000.2.2.1/libHSxhtml-3000.2.2.1-ghc8.6.5.so
156736 ./lib/ghc-8.6.5/directory-1.3.3.0/libHSdirectory-1.3.3.0-ghc8.6.5.so
144690 ./lib/ghc-8.6.5/deepseq-1.4.4.0/libHSdeepseq-1.4.4.0.a
143816 ./lib/ghc-8.6.5/ghc-boot-8.6.5/libHSghc-boot-8.6.5-ghc8.6.5.so
139864 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/HSghc-boot-th-8.6.5.o
139618 ./lib/ghc-8.6.5/rts/libHSrts_thr_debug.a
120844 ./lib/ghc-8.6.5/rts/libHSrts_debug.a
120714 ./lib/ghc-8.6.5/deepseq-1.4.4.0/libHSdeepseq-1.4.4.0_p.a
113048 ./lib/ghc-8.6.5/stm-2.5.0.0/HSstm-2.5.0.0.o
110696 ./lib/ghc-8.6.5/mtl-2.2.2/libHSmtl-2.2.2-ghc8.6.5.so
110632 ./lib/ghc-8.6.5/integer-gmp-1.0.2.0/libHSinteger-gmp-1.0.2.0-ghc8.6.5.so
102240 ./lib/ghc-8.6.5/deepseq-1.4.4.0/HSdeepseq-1.4.4.0.o
90400 ./lib/ghc-8.6.5/rts/libHSrts_thr_debug-ghc8.6.5.so
90352 ./lib/ghc-8.6.5/ghc-heap-8.6.5/libHSghc-heap-8.6.5-ghc8.6.5.so
86464 ./lib/ghc-8.6.5/hpc-0.6.0.3/libHShpc-0.6.0.3-ghc8.6.5.so
86176 ./lib/ghc-8.6.5/terminfo-0.4.1.2/libHSterminfo-0.4.1.2-ghc8.6.5.so
77280 ./lib/ghc-8.6.5/rts/libHSrts_debug-ghc8.6.5.so
73824 ./lib/ghc-8.6.5/filepath-1.4.2.1/libHSfilepath-1.4.2.1-ghc8.6.5.so
65888 ./lib/ghc-8.6.5/process-1.6.5.0/libHSprocess-1.6.5.0-ghc8.6.5.so
62388 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/libHSghc-compact-0.1.0.0.a
57488 ./lib/ghc-8.6.5/rts/libHSrts-ghc8.6.5.so
51332 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/libHSghc-compact-0.1.0.0_p.a
49160 ./lib/ghc-8.6.5/deepseq-1.4.4.0/libHSdeepseq-1.4.4.0-ghc8.6.5.so
45368 ./lib/ghc-8.6.5/rts/libHSrts_thr_l-ghc8.6.5.so
43232 ./lib/ghc-8.6.5/rts/libHSrts_thr-ghc8.6.5.so
42984 ./lib/ghc-8.6.5/rts/libHSrts_l-ghc8.6.5.so
39216 ./lib/ghc-8.6.5/ghc-boot-th-8.6.5/libHSghc-boot-th-8.6.5-ghc8.6.5.so
38756 ./lib/ghc-8.6.5/libiserv-8.6.3/libHSlibiserv-8.6.3.a
36984 ./lib/ghc-8.6.5/stm-2.5.0.0/libHSstm-2.5.0.0-ghc8.6.5.so
36240 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/HSghc-compact-0.1.0.0.o
34396 ./lib/ghc-8.6.5/libiserv-8.6.3/libHSlibiserv-8.6.3_p.a
30674 ./lib/ghc-8.6.5/rts/libHSrts_thr.a
30172 ./lib/ghc-8.6.5/rts/libHSrts.a
25844 ./lib/ghc-8.6.5/rts/libHSrts_thr_l.a
24192 ./lib/ghc-8.6.5/libiserv-8.6.3/HSlibiserv-8.6.3.o
23932 ./lib/ghc-8.6.5/rts/libHSrts_l.a
9296 ./lib/ghc-8.6.5/bin/runghc
4048 ./lib/ghc-8.6.5/ghc-compact-0.1.0.0/libHSghc-compact-0.1.0.0-ghc8.6.5.so
1640 ./lib/ghc-8.6.5/bin/ghc-iserv-dyn
```
I suspect this might become a notable issue for 19.09. /cc release managers @disassembler, @lheckemann.
While it's sad, I'm not sure I can do much about it, lacking ghc knowledge. Maybe Someoneâ„¢ can do more, but there hasn't been much response to @grahamc's ghc issue yet (and I think that would be the best place, unless we opt to increase the maximum?).
I mainly meant it like... you should know about it. AFAIK one way also might be to default to some older GHC version for aarch64, for now.
8.4.4 has been succeeding (except for occasional time-outs)... so any arguments against defaulting aarch64 to that version? For now at least, but I can't see this moving forward so it might well remain that way for 19.09.
I should've pinged ghc maintainers: @MarcWeber, @kosmikus, and @peti (who still seems active around here).
The only issue with that is it kind of breaks expectations to have a different default depending on the platform. Were I to decide, I would pin the same version by default on all platforms. Though, I do not know what issues this could bring.
I believe it's possible to disable the build of ghc's documentation for aarch64. Maybe that would help?
In that case, would it be better to get the docs in a separate output? (Or is the maximum size all outputs combined?)
It is a separate output now, I believe. (It has "doc" output, at least.)
I'm sure y'all know this, but: pulling the docs out doesn't solve the problem that individual .a
files are coming out 84 megabytes larger.
Last successful 8.6.5 had docs with NarSize 252 MiB, so that wouldn't be enough, according to Graham:
On Aarch64, when it passes, the output is 400-500MiB larger at 2040 MiB.
I expect the real issue isn't nix-specific and belongs better upstream, but in the meantime I'd expect we provide at least _some_ binaries. Besides the older ghc version, bypassing the limit might be a nice way (perhaps temporarily and specifically for this case), but I have no idea how to do that.
My understanding is that llvm version might make a significant difference, assuming multiple versions even work.
Experiment 1: default ghc with llvm 7
1.9G /nix/store/9rrxz1gvrw8sjmgl519rrxz4lrq8i8gv-ghc-8.6.5
It complains, but it succeeds and the resulting ghci starts for me.
You are using an unsupported version of LLVM!
Currently only 6.0 is supported.
We will try though...
That seems usable. Any thoughts?
Experiment 2: with llvm 5, basically the same
1.9G /nix/store/jq67mbcsdward30ajgfjwbyv1bj6gsbv-ghc-8.6.5
Oh, wait... it's the same size with the default (llvm 6)
1.9G /nix/store/gm7wwy86cgrlvrgn7q1178b7nhnl8giy-ghc-8.6.5
... then I don't understand Graham's comment about the size being about half a GB larger :woman_shrugging:
Removing most docs in 4179ba0 lead to success.
Any comments? For example, is it easy to avoid building docs instead? I plan to apply this work-around on other affected versions as well (as I hate these wasted expensive builds), though perhaps not by copy&paste but something like if aarch64 then mapAttrs ... .overrideAttrs
Is it easy to avoid building docs instead?
Could not be easier. :-) This line is your friend:
If that conditional is true
then both the Haddock documentation and the user manual builds are disabled. Ought to save some compilation time, too.
It might be worthwhile passing sphinx = null
an aarch64, too, so that the build doesn't depend on the entire documentation generation system (that we don't want to use anyway).
EDIT: Um, it's probably obvious in any case, but just to be sure ... the conditional for cross-compilation does more than just disable the documentation, of course. The part of that snippet that's relevant for our purposes is this one:
We're getting worse: binary 8.6.5 is >2G even without docs, so we can't bootstrap the newly-default 8.8.3.
[vcunat@aarch64:~]$ du -hs /nix/store/lk2562jayhrz47j8xg4sviigq2dc6mpw-ghc-8.6.5-binary/* --apparent-size
4.5K /nix/store/lk2562jayhrz47j8xg4sviigq2dc6mpw-ghc-8.6.5-binary/bin
2.1G /nix/store/lk2562jayhrz47j8xg4sviigq2dc6mpw-ghc-8.6.5-binary/lib
58 /nix/store/lk2562jayhrz47j8xg4sviigq2dc6mpw-ghc-8.6.5-binary/nix-support
137M /nix/store/lk2562jayhrz47j8xg4sviigq2dc6mpw-ghc-8.6.5-binary/share
Our compiled ghc865 builds fine, still with the hack that deletes docs to fit under 2G.
EDIT: the compiled 8.8.3 is even bigger:
$ du -hs /nix/store/iswjmi7lpi4kmz365idlp6w20qba70rh-ghc-8.8.3/lib --apparent-size
2.3G /nix/store/iswjmi7lpi4kmz365idlp6w20qba70rh-ghc-8.8.3/lib
@bgamari I'm looking at the official 8.10 ARM bindist https://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-aarch64-deb9-linux.tar.xz (hopefully that is representative for what nix builds here) and wonder:
Each libraries/
package contains .o
files in addition to .a
files. Are the .o
s actually needed, or do the .a
s include the .o
s? Example for text
:
13.1 MiB [##########] libHStext-1.2.3.2_p.a
9.8 MiB [####### ] libHStext-1.2.3.2.a
8.1 MiB [###### ] HStext-1.2.3.2.p_o
6.3 MiB [#### ] HStext-1.2.3.2.o
4.5 MiB [### ] libHStext-1.2.3.2-ghc8.10.1.so
Also,
229.1 MiB [####### ] libHSghc-8.10.1.a
what can possibly be in that thing that it's 230 MB in size?
I suspect much of this discussion is better suited for upstream, e.g. the ticket linked above: https://gitlab.haskell.org/ghc/ghc/issues/17051 (though I see basically no activity in there)
We could get rid of profiled builds for static compilation, that seems better than having no builds at all.
What about removing the .o
and strip
ing all the artifacts?
On the https://downloads.haskell.org/~ghc/8.10.1/ghc-8.10.1-aarch64-deb9-linux.tar.xz proposed by @nh2, I have:
.o
: 2.8 GBfor i in $(find); do aarch64-unknown-linux-gnu-strip $i; done;
: 1.4 GB..p_o
: 1.3 GB.If stripping
is an option, it is more effective than removing any other file.
I'd imagine debug symbols are going to be useful for stack traces and segfaults. So I'd prefer to strip out profiling builds, although that may also be handy :man_shrugging:
@domenkozar and what about separateDebugInfo = true;
. I don't know how it works, but if it split the derivation in two, one without the debug symbols, and one with the debug symbols, it may solves the max limit issue without any drawback.
Oh that's a good point. @edolstra does the output size limit apply to sum of outputs given a derivation or just per one?
Separating it might be a good idea in any case, if it's so big. EDIT: though I don't have any idea how difficult it's to use the separated info with ghc.
As somebody who doesn't know Hydra very well: What is the _reason_ for this output limit? Can it be changed?
Split-outputs, separate debug info and so on may all be very good ideas from the perspective that it'd allow people to depend on less if they need less, but it seems clear that both profiling and debug info are very useful (and necessary for some workflows), so there probably isn't some magic solution.
I'm fairly sure it's technically possible. The reason (or part of it) is probably that _someone_ is paying for the S3 storage, etc. Fortunately, this case compresses quite well IIRC.
I'm fairly sure it's technically possible. The reason (or part of it) is probably that _someone_ is paying for the S3 storage, etc. Fortunately, this case compresses quite well IIRC.
Right. If it compresses well, we should make use of that in my opinion -- often the cost of engineering time spent at dealing with more sophisticated solutions easily outweighs the saving gained by coming up with them.
It takes 2 real gb of space on users' disks.
or 4, or 6, or 8, or more, since people who have ghc at all are likely to have multiple ghcs in their nix store :)
An example recurring issue is pandoc
, even as a build-time dependency to build docs. It has 2-3 GB closure size right now (on x86_64-linux as well, it's mainly ghc). That's not very resource-friendly, and most users of such tools don't need profiling or debugging symbols. I do understand that human time to do this better is valuable as well...
separateDebugInfo = true;
do not give interesting results.
λ paddle nixpkgs → λ git haskell-updates* → git diff
diff --git a/pkgs/development/compilers/ghc/8.8.3.nix b/pkgs/development/compilers/ghc/8.8.3.nix
index 30cbb87cce2..04617cdc632 100644
--- a/pkgs/development/compilers/ghc/8.8.3.nix
+++ b/pkgs/development/compilers/ghc/8.8.3.nix
@@ -37,7 +37,9 @@
, # Whether to disable the large address space allocator
# necessary fix for iOS: https://www.reddit.com/r/haskell/comments/4ttdz1/building_an_osxi386_to_iosarm64_cross_compiler/d5qvd67/
- disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64
+ disableLargeAddressSpace ? stdenv.targetPlatform.isDarwin && stdenv.targetPlatform.isAarch64,
+
+ separateDebugInfo ? false
}:
assert !enableIntegerSimple -> gmp != null;
@@ -99,6 +101,7 @@ stdenv.mkDerivation (rec {
};
enableParallelBuilding = true;
+ inherit separateDebugInfo;
outputs = [ "out" "doc" ];
diff --git a/pkgs/top-level/haskell-packages.nix b/pkgs/top-level/haskell-packages.nix
index ae985f8b75d..eba3e334a38 100644
--- a/pkgs/top-level/haskell-packages.nix
+++ b/pkgs/top-level/haskell-packages.nix
@@ -67,6 +67,7 @@ in {
inherit (buildPackages.python3Packages) sphinx;
buildLlvmPackages = buildPackages.llvmPackages_7;
llvmPackages = pkgs.llvmPackages_7;
+ separateDebugInfo = true;
};
ghc8101 = callPackage ../development/compilers/ghc/8.10.1.nix {
bootPkgs = packages.ghc865Binary;
λ paddle nixpkgs → λ git haskell-updates* → nix repl
Welcome to Nix version 2.3.4. Type :? for help.
nix-repl> :l ./
Added 11813 variables.
nix-repl> :b ghc
this derivation produced the following outputs:
debug -> /nix/store/wjcmbii4zzzvp8mand2znghzbnnq3zg1-ghc-8.8.3-debug
doc -> /nix/store/qclzhk2ya1vih68kl5g2drypa63ypyx3-ghc-8.8.3-doc
out -> /nix/store/ij5h6x92098jcq3wlxidsnrr543rfwj1-ghc-8.8.3
nix-repl>
λ paddle nixpkgs → λ git haskell-updates* → du -sh /nix/store/wjcmbii4zzzvp8mand2znghzbnnq3zg1-ghc-8.8.3-debug
59M /nix/store/wjcmbii4zzzvp8mand2znghzbnnq3zg1-ghc-8.8.3-debug
λ paddle nixpkgs → λ git haskell-updates* → du -sh /nix/store/qclzhk2ya1vih68kl5g2drypa63ypyx3-ghc-8.8.3-doc
274M /nix/store/qclzhk2ya1vih68kl5g2drypa63ypyx3-ghc-8.8.3-doc
λ paddle nixpkgs → λ git haskell-updates* → du -sh /nix/store/ij5h6x92098jcq3wlxidsnrr543rfwj1-ghc-8.8.3
1.9G /nix/store/ij5h6x92098jcq3wlxidsnrr543rfwj1-ghc-8.8.3
We can't patchelf+strip due to patchelf 0.9 bug, but https://github.com/NixOS/patchelf/issues/170 prevents us from upgrading to 0.10. I'd recommend just removing files from the aarch64 binary.
As for splitting outputs, If I'm reading source correctly Hydra counts all outputs against the limit, which also makes quite sense. So we're back to deleting profiled builds.
Looking at the options we can only pick between:
As an user I'd rather have debug symbols, so if there's a segfault I have something useful.
If I want to profile my builds, then I'll have to do some extra work.
I've pushed b930b2df8aa208e90e999751a4a2cc2980925e5f that brings this a bit closer.
Any objections disabling profiled builds on aarch64?
Ah, that also brings down size of final ghc, so hopefully this should be fixed once haskell-updates
branch is merged to master.
Apparently not enough, but we got further than before.
That's weird:
$ du -sh $(nix-build -A ghc.all)
772M /nix/store/3gjadbpgnvfm7bri919zxvhrsrqar729-ghc-8.8.3
69M /nix/store/n7gxgd8fisrvkivlpmg7sxlaaq82vv2x-ghc-8.8.3-doc
You need to add --apparent-size
, which on the community machine gives
2.3G /nix/store/3gjadbpgnvfm7bri919zxvhrsrqar729-ghc-8.8.3
271M /nix/store/n7gxgd8fisrvkivlpmg7sxlaaq82vv2x-ghc-8.8.3-doc
Of course, sum of file sizes is just an approximation for real NAR size (which is what's measured here IIRC):
$ nix dump-path /nix/store/3gjadbpgnvfm7bri919zxvhrsrqar729-ghc-8.8.3 | wc -c
2455870208
# The community machine forces me to use a more elaborate command:
# nix --experimental-features nix-command dump-path /nix/store/3gjadbpgnvfm7bri919zxvhrsrqar729-ghc-8.8.3 | wc -c
This should be now fixed on master.
@vcunat for store paths, you can also use nix path-info -s
to get the nar size from the database :)
Most helpful comment
An example recurring issue is
pandoc
, even as a build-time dependency to build docs. It has 2-3 GB closure size right now (on x86_64-linux as well, it's mainly ghc). That's not very resource-friendly, and most users of such tools don't need profiling or debugging symbols. I do understand that human time to do this better is valuable as well...