git.iko.soy/heroku-buildpack-stack
on master help sign in
3 files changed+18−8
since splitsnapshots
unifiedsplit
Procfile.example+1 README.md+8 bin/compile+9−8
Procfile.examplenew file+1
@@ -0,0 +1 @@
1+web: YOURAPPNAME-exe # $ cat *.cabal | grep executable
README.md+8
@@ -12,6 +12,14 @@ Set this buildpack on an existing app:
1212
1313 $ heroku buildpacks:set https://github.com/mfine/heroku-buildpack-stack
1414
15+Binary executables are placed in `/app/.local/bin/` after compilation, a directory which Heroku includes in your `$PATH`, so assuming that your application is [binding to `$PORT`](https://devcenter.heroku.com/articles/dynos#web-dynos), you can serve your app by [creating a `Procfile`](https://devcenter.heroku.com/articles/procfile) at your project root that defines a `web` process type for the `executable` defined in your `.cabal` file:
16+
17+ $ cat *.cabal | grep executable
18+ executable YOURAPPNAME-exe
19+
20+ $ echo "web: YOURAPPNAME-exe" >> Procfile
21+
22+
1523### Templating stack.yaml
1624
1725To avoid committing secrets into `stack.yaml` for access to private
bin/compile+9−8
@@ -45,7 +45,7 @@ function set-default-env (){
4545}
4646
4747export LANG=en_US.UTF-8
48−export LIBRARY_PATH=$WORK_DIR/vendor/ghc-libs:/usr/lib:$LIBRARY_PATH
48+export LIBRARY_PATH=$WORK_DIR/vendor/ghc-libs:$WORK_DIR/vendor/lib:/usr/lib:$LIBRARY_PATH
4949export LD_LIBRARY_PATH=$LIBRARY_PATH
5050export PATH=$WORK_DIR/.local/bin:$WORK_DIR/vendor/bin:$PATH
5151export STACK_ROOT=$CACHE_DIR/.stack
@@ -63,7 +63,7 @@ speak "Restoring $LIBGMP_VER files from cache"
6363cp -Rp "$LIBGMP_DIR/ghc-libs/." "$WORK_DIR/vendor/ghc-libs"
6464
6565########## stack exe ###############################################
66−STACK_VER=${STACK_VER:-1.4.0}
66+STACK_VER=${STACK_VER:-2.1.3}
6767STACK_URL=${STACK_URL:-https://github.com/commercialhaskell/stack/releases/download/v"$STACK_VER"/stack-"$STACK_VER"-linux-x86_64.tar.gz}
6868STACK_DIR="$CACHE_DIR/stack-$STACK_VER"
6969STACK_EXE="$STACK_DIR/stack"
@@ -96,17 +96,18 @@ cd "$WORK_DIR"
9696# Makefile support (if you need other build tools than Stack that you need to use in conjunction)
9797if [ -f "$BUILD_DIR/Makefile" ]; then
9898 speak "Makefile detected"
99− make -C "$BUILD_DIR"
100− make -C "$BUILD_DIR" install
99+ make
100+ make install
101101else
102102 stack setup
103− stack build --fast --copy-bins
103+ stack clean
104+ stack build --ghc-options='-O2' --copy-bins
104105fi
105106
106107# Set context environment variables.
107−set-env PATH "$WORK_DIR/.local/bin:$PATH"
108−set-default-env LIBRARY_PATH "$WORK_DIR/vendor/ghc-libs:/usr/lib"
109−set-default-env LD_LIBRARY_PATH "$WORK_DIR/vendor/ghc-libs:/usr/lib"
108+set-env PATH "$WORK_DIR/.local/bin:$WORK_DIR/vendor/bin:\$PATH"
109+set-default-env LIBRARY_PATH "$WORK_DIR/vendor/ghc-libs:$WORK_DIR/vendor/lib:/usr/lib"
110+set-default-env LD_LIBRARY_PATH "$WORK_DIR/vendor/ghc-libs:$WORK_DIR/vendor/lib:/usr/lib"
110111
111112speak "Making stack binaries available"
112113mkdir -p "$BUILD_DIR/vendor"