Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GHC too big for Hydra (aarch64 ATM) #66277

Closed
vcunat opened this issue Aug 7, 2019 · 55 comments
Closed

GHC too big for Hydra (aarch64 ATM) #66277

vcunat opened this issue Aug 7, 2019 · 55 comments
Labels
0.kind: bug 0.kind: regression Something that worked before working no longer 6.topic: haskell

Comments

@vcunat
Copy link
Member

vcunat commented Aug 7, 2019

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.

@vcunat vcunat added 0.kind: bug 6.topic: haskell 0.kind: regression Something that worked before working no longer labels Aug 7, 2019
@vcunat
Copy link
Member Author

vcunat commented Aug 7, 2019

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 🤷‍♀️

worldofpeace added a commit to worldofpeace/nixpkgs that referenced this issue Aug 7, 2019
@grahamc
Copy link
Member

grahamc commented Aug 10, 2019

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
```

</details>

@grahamc
Copy link
Member

grahamc commented Aug 10, 2019

@vcunat
Copy link
Member Author

vcunat commented Aug 25, 2019

I suspect this might become a notable issue for 19.09. /cc release managers @disassembler, @lheckemann.

@lheckemann
Copy link
Member

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?).

@vcunat
Copy link
Member Author

vcunat commented Aug 26, 2019

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.

@vcunat
Copy link
Member Author

vcunat commented Sep 2, 2019

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.

@vcunat
Copy link
Member Author

vcunat commented Sep 2, 2019

I should've pinged ghc maintainers: @MarcWeber, @kosmikus, and @peti (who still seems active around here).

@samueldr
Copy link
Member

samueldr commented Sep 2, 2019

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.

@peti
Copy link
Member

peti commented Sep 2, 2019

I believe it's possible to disable the build of ghc's documentation for aarch64. Maybe that would help?

@samueldr
Copy link
Member

samueldr commented Sep 2, 2019

In that case, would it be better to get the docs in a separate output? (Or is the maximum size all outputs combined?)

@vcunat
Copy link
Member Author

vcunat commented Sep 2, 2019

It is a separate output now, I believe. (It has "doc" output, at least.)

@grahamc
Copy link
Member

grahamc commented Sep 2, 2019

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.

@vcunat
Copy link
Member Author

vcunat commented Sep 3, 2019

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.

@vcunat
Copy link
Member Author

vcunat commented Sep 3, 2019

My understanding is that llvm version might make a significant difference, assuming multiple versions even work.

@vcunat
Copy link
Member Author

vcunat commented Sep 6, 2019

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?

@vcunat
Copy link
Member Author

vcunat commented Sep 6, 2019

Experiment 2: with llvm 5, basically the same

1.9G    /nix/store/jq67mbcsdward30ajgfjwbyv1bj6gsbv-ghc-8.6.5

@vcunat
Copy link
Member Author

vcunat commented Sep 6, 2019

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 🤷‍♀️

@vcunat
Copy link
Member Author

vcunat commented Sep 8, 2019

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

@peti
Copy link
Member

peti commented Sep 8, 2019

Is it easy to avoid building docs instead?

Could not be easier. :-) This line is your friend:

'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''

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:

HADDOCK_DOCS = NO
BUILD_SPHINX_HTML = NO
BUILD_SPHINX_PDF = NO

@vcunat
Copy link
Member Author

vcunat commented Mar 28, 2020

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

@nh2
Copy link
Contributor

nh2 commented Apr 13, 2020

@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 .os actually needed, or do the .as include the .os? 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?

@nh2
Copy link
Contributor

nh2 commented Apr 20, 2020

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.

@grahamc
Copy link
Member

grahamc commented Apr 21, 2020

It takes 2 real gb of space on users' disks.

@lheckemann
Copy link
Member

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 :)

@vcunat
Copy link
Member Author

vcunat commented Apr 21, 2020

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...

@guibou
Copy link
Contributor

guibou commented Apr 27, 2020

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

@domenkozar
Copy link
Member

domenkozar commented Jun 2, 2020

We can't patchelf+strip due to patchelf 0.9 bug, but NixOS/patchelf#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.

@domenkozar
Copy link
Member

domenkozar commented Jun 2, 2020

Looking at the options we can only pick between:

  • raising the limit on hydra (we've already discussed this, it's hard to justify packages being 3GB)
  • deleting all profiled builds
  • stripping debug symbols

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.

@domenkozar
Copy link
Member

I've pushed b930b2d that brings this a bit closer.

Any objections disabling profiled builds on aarch64?

@domenkozar
Copy link
Member

Ah, that also brings down size of final ghc, so hopefully this should be fixed once haskell-updates branch is merged to master.

@vcunat
Copy link
Member Author

vcunat commented Jul 1, 2020

Apparently not enough, but we got further than before.

@domenkozar
Copy link
Member

domenkozar commented Jul 20, 2020

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

https://hydra.nixos.org/build/123859214

@vcunat
Copy link
Member Author

vcunat commented Jul 20, 2020

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

@vcunat
Copy link
Member Author

vcunat commented Jul 20, 2020

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

domenkozar added a commit that referenced this issue Jul 21, 2020
This makes ghc output be lower than 2GB limit.

Also enable aarch64 build parallelism now that it's fixed in GHC 8.6
@domenkozar
Copy link
Member

This should be now fixed on master.

@lheckemann
Copy link
Member

@vcunat for store paths, you can also use nix path-info -s to get the nar size from the database :)

@pwm
Copy link

pwm commented Jun 21, 2023

According to https://gitlab.haskell.org/ghc/ghc/-/issues/17051 no one has investigated this issue upstream in the past 3 years... thus I'd like to gently advocate for just raising the 2GB limit if at all possible? I understand the general need of an upper limit but why a seemingly overly conservative/restrictive 2GB in 2023? Is there any reason behind 2GB or is it just an arbitrary number that was chosen once? Since this issue was opened Apple made aarch64 much more prominent and not being able to profile haskell programs on it is pretty bad. Is cost the primary reason of not wanting to raise the limit? If yes is it possible to do some simple impact analysis on the cost increase of eg. doubling it?

@vcunat
Copy link
Member Author

vcunat commented Jun 21, 2023

The limit is 3 GiB for some time now.

@pwm
Copy link

pwm commented Jun 21, 2023

Ah, thanks @vcunat good to know! I guess the same question applies re how is this limit being decided on? My guess is some cost analysis but I have no idea.

@vcunat
Copy link
Member Author

vcunat commented Jun 21, 2023

No. Very ad-hoc right now. We'd better limit the compressed size by some lower value instead of this, too.

@vcunat
Copy link
Member Author

vcunat commented Jun 21, 2023

As for costs, these discussions are very related:
https://discourse.nixos.org/t/the-nixos-foundations-call-to-action-s3-costs-require-community-support/28672

@flokli
Copy link
Contributor

flokli commented Jun 22, 2023

I triggered a build yesterday, and the GHC derivation came back with du only reporting 1.4G of size. Might be the strip phase now works better on aarch64, and we're even below the 2G limit that used to be there (now 3G)?

In any case, what about filing a PR dropping that aarch64 conditional in

, enableLibraryProfiling ? !(ghc.isGhcjs or stdenv.targetPlatform.isAarch64 or false)
and see how it goes?

@bgamari
Copy link
Contributor

bgamari commented Jun 22, 2023

For what it's worth, as of 9.6.2 I see no appreciable difference in binary distribution sizes on x86-64 and AArch64:

$ ls -lh 
total 396M
-rw-r--r-- 1 ben users 198M May 22 22:31 ghc-9.6.2-aarch64-deb10-linux.tar.xz
-rw-r--r-- 1 ben users 199M May 22 22:42 ghc-9.6.2-x86_64-deb10-linux.tar.xz
$ tar -xf ghc-9.6.2-aarch64-deb10-linux.tar.xz
$ tar -xf ghc-9.6.2-x86_64-deb10-linux.tar.xz
$ du -shc ghc-9.6.2-aarch64-unknown-linux/ ghc-9.6.2-x86_64-unknown-linux/
2.5G    ghc-9.6.2-aarch64-unknown-linux/
2.6G    ghc-9.6.2-x86_64-unknown-linux/
5.0G    total

@sternenseemann
Copy link
Member

#239548

@rrbutani rrbutani added 6.topic: llvm/clang Issues related to llvmPackages, clangStdenv and related and removed 6.topic: llvm/clang Issues related to llvmPackages, clangStdenv and related labels May 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.kind: bug 0.kind: regression Something that worked before working no longer 6.topic: haskell
Projects
None yet
Development

No branches or pull requests