Skip to content

Instantly share code, notes, and snippets.

@asivitz
Last active March 6, 2018 06:22
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asivitz/f4b983b2374a6155ac4faaf9b61aca59 to your computer and use it in GitHub Desktop.
Save asivitz/f4b983b2374a6155ac4faaf9b61aca59 to your computer and use it in GitHub Desktop.
A bash script to generate giant stack project with many sub-packages to reproduce the "load commands size" panic on High Sierra
#!/bin/bash
# Reproduce "load command size" panic on MacOS High Sierra
# $ sh genpanic.sh
# $ cd panic
# $ stack build panic
mkdir panic
cd panic
cat > package.yaml <<- EOM
name: panic
dependencies:
- base
- template-haskell
library:
source-dirs: src/
dependencies:
EOM
cat > stack.yaml <<- EOM
resolver: lts-10.7
packages:
- .
EOM
mkdir src
cat > src/Lib.hs <<- EOM
{-# LANGUAGE TemplateHaskell #-}
module Lib where
import Th
foo :: IO ()
foo = pure \$(bar)
EOM
cat > src/Th.hs <<- EOM
{-# LANGUAGE TemplateHaskell #-}
module Th where
import Language.Haskell.TH
bar :: ExpQ
bar = [| () |]
EOM
for i in `seq 1 150`; do
NAME="module0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000$i"
mkdir $NAME
mkdir $NAME/src
cat > $NAME/package.yaml <<- EOM
name: $NAME
dependencies:
- base
library:
source-dirs: src/
EOM
cat > $NAME/src/Lib$i.hs <<- EOM
module Lib$i (foo) where
foo :: ()
foo = ()
EOM
echo " - $NAME" >> package.yaml
echo "- $NAME" >> stack.yaml
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment