Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

interesting. is haskell that big? don't they have a docker image you can pull in?

i know python and node and other languages have small images you can get for the CI situation you describe.



GHC is notoriously large. The compiler itself is around 1.5GB (this includes documentation, static and dynamic libraries).

To get an idea of the size of the bare-minimum system that's required to develop in language x, you can look at the cumulative sizes of the Nix package closures. This is what I get for ghc, nodejs and python3:

    λ nix path-info -rS nixpkgs.ghc | awk '{s+=$2}END{print s/1073741824 " GB"}'
    3.35463 GB

    λ nix path-info -rS nixpkgs.nodejs | awk '{s+=$2}END{print s/1073741824 " GB"}'
    1.05813 GB

    λ nix path-info -rS nixpkgs.python3 | awk '{s+=$2}END{print s/1073741824 " GB"}'
    0.485017 GB


I started installing haskell a lil while ago with macports but I got as far as

bash$ port rdeps ghc

The following ports are dependencies of ghc @8.8.3_0:

gnupg2 pkgconfig libiconv gperf gettext ncurses zlib xz bzip2 libassuan libgpg-error pth libksba libgcrypt readline gnutls autoconf automake libtool xattr unzip gtk-doc glib2 libxml2 icu libffi pcre libedit libxslt perl5.28 db48 gdbm docbook-xml xmlcatmgr docbook-xml-4.1.2 docbook-xml-4.2 docbook-xml-4.3 docbook-xml-4.4 docbook-xml-4.5 docbook-xml-5.0 docbook-xsl-nons itstool gawk py27-libxml2 python27 expat openssl sqlite3 python_select python2_select python38 python3_select py38-anytree py38-setuptools py38-six py38-pytest py38-setuptools_scm py38-py py38-packaging py38-attrs py38-hypothesis py38-sortedcontainers py38-zopeinterface py38-parsing py38-more-itertools py38-pluggy py38-wcwidth pytest_select py38-nose nosetests_select py38-lxml py38-pygments pygments_select py38-mock clang-9.0 cmake libcxx curl libidn2 libunistring perl5 texinfo help2man p5.28-locale-gettext libpsl curl-ca-bundle libarchive lzo2 lz4 zstd libuv libomp llvm-9.0 xar llvm_select clang_select ld64 ld64-latest libmacho-headers libtapi gmp libtasn1 p11-kit nettle libusb-compat libusb npth pinentry-mac openldap tcp_wrappers cyrus-sasl2 kerberos5 libcomerr coreutils alex stack happy HsColour python37 py37-sphinx py37-docutils py37-roman py37-setuptools py37-alabaster py37-babel py37-tz py37-pytest py37-setuptools_scm py37-py py37-packaging py37-attrs py37-hypothesis py37-sortedcontainers py37-six py37-zopeinterface py37-parsing py37-more-itertools py37-pluggy py37-importlib-metadata py37-zipp py37-toml py37-wcwidth py37-freezegun py37-dateutil py37-pytest-cov py37-coverage py37-mock py37-imagesize py37-jinja2 py37-markupsafe py37-pygments py37-requests py37-chardet py37-idna py37-urllib3 py37-certifi py37-snowballstemmer sphinx_select py37-sphinxcontrib-applehelp py37-sphinxcontrib-devhelp py37-sphinxcontrib-htmlhelp py37-sphinxcontrib-jsmath py37-sphinxcontrib-serializinghtml py37-sphinxcontrib-qthelp texlive texlive-basic texlive-common texlive-bin fontconfig freetype libpng ossp-uuid libzzip cairo libpixman xrender xorg-libX11 xorg-xtrans xorg-xorgproto xorg-util-macros xorg-libXdmcp xorg-libXau xorg-libxcb xorg-xcb-proto xorg-libpthread-stubs xorg-libXext xorg-xcb-util graphite2 fonttools py37-unicodedata2 py37-brotli harfbuzz harfbuzz-icu libpaper mpfr potrace xorg-libXp xpm xorg-libXt xorg-libsm xorg-libice xorg-libXaw groff ghostscript jbig2dec jpeg libidn tiff lcms2 psutils netpbm jasper jbigkit libnetpbm xorg-libXmu xorg-libXi xorg-libXfixes texlive-bin-extra latexmk texlive-latex detex latexdiff p5.28-algorithm-diff pdfjam texlive-latex-recommended pgf dvipng gd2 webp giflib t1lib dvisvgm asciidoc fop brotli woff2 texlive-context texlive-metapost texlive-xetex texlive-plain-generic texlive-fonts-recommended texlive-math-science texlive-fontutils lcdf-typetools ps2eps t1utils texlive-lang-czechslovak texlive-lang-english texlive-lang-european texlive-lang-french texlive-lang-german texlive-lang-italian texlive-lang-polish texlive-lang-portuguese texlive-lang-spanish texlive-luatex texlive-fonts-extra texlive-latex-extra texlive-pictures

And decided to give it a miss.


That seems to be a packaging issue with MacPorts. It looks like it's including build dependencies, too. It's pulling TeX Live and the Sphinx Python bindings for formatting documentation. I'm not sure what Perl is for, or why it needs 3 different versions of Python.

The Debian package doesn't require any of those. The Homebrew package has no dependencies at all (and only "python" and "sphinx-doc" as build dependencies).


On Arch Pandoc “only” requires a few dozen or so Haskell packages. Installing it does kind of mess up pacman’s output when updating etc, but that’s a very minor annoyance for a pretty useful tool to me.





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: