git.iko.soy/heroku-buildpack-stack
on master help sign in
Merge pull request #14 from mfine/mfine-preserve-stack-work

.stack-work preserving and caching

commite119ed22ae8eda701ca755695bee25feb7aebddc authorMark Fine <mark.fine@gmail.com> dateTue 30 Aug 2016, 01:43 (10 years ago) parent468f2591819e0c
1 file changed+18−6
bin/compile+18−6
bin/compile+18−6
@@ -26,7 +26,7 @@ if [ -d "$ENV_DIR" ]; then
2626fi
2727
2828WORK_DIR=/app
29−mkdir -p "$WORK_DIR/vendor"
29+cp -R "$BUILD_DIR/." "$WORK_DIR"
3030mkdir -p "$WORK_DIR/vendor/bin"
3131mkdir -p "$WORK_DIR/vendor/ghc-libs"
3232
@@ -60,7 +60,7 @@ if [ ! -e "$LIBGMP_DIR" ]; then
6060 curl -# -L "$LIBGMP_URL" | tar xz -C "$LIBGMP_DIR"
6161fi
6262speak "Restoring $LIBGMP_VER files from cache"
63−rsync -avq "$LIBGMP_DIR/ghc-libs/" "$WORK_DIR/vendor/ghc-libs"
63+cp -R "$LIBGMP_DIR/ghc-libs/." "$WORK_DIR/vendor/ghc-libs"
6464
6565########## stack exe ###############################################
6666STACK_VER=${STACK_VER:-1.1.2}
@@ -73,7 +73,7 @@ if [ ! -e "$STACK_EXE" ]; then
7373 curl -# -L "$STACK_URL" | tar xz -C "$STACK_DIR" --strip-components=1
7474fi
7575speak "Restoring stack-$STACK_VER"
76−rsync -avq "$STACK_EXE" "$WORK_DIR/vendor/bin/stack"
76+cp "$STACK_EXE" "$WORK_DIR/vendor/bin/stack"
7777chmod a+x "$WORK_DIR/vendor/bin/stack"
7878
7979########## stack vars ##############################################
@@ -83,15 +83,23 @@ if [ -d "$ENV_DIR" ]; then
8383fi
8484
8585########## project build ###########################################
86+SANDBOX_DIR="$CACHE_DIR/.stack-work"
87+if [ -e "$SANDBOX_DIR" ]; then
88+ speak "Restoring .stack-work"
89+ cp -R "$SANDBOX_DIR" "$WORK_DIR"
90+else
91+ mkdir -p "$SANDBOX_DIR"
92+fi
93+
8694speak "Running stack"
87−cd "$BUILD_DIR"
95+cd "$WORK_DIR"
8896stack setup
8997stack build --fast --copy-bins
9098
9199# Set context environment variables.
92100set-env PATH "$WORK_DIR/.local/bin:$PATH"
93−set-default-env LIBRARY_PATH /app/vendor/ghc-libs:/usr/lib
94−set-default-env LD_LIBRARY_PATH /app/vendor/ghc-libs:/usr/lib
101+set-default-env LIBRARY_PATH "$WORK_DIR/vendor/ghc-libs:/usr/lib"
102+set-default-env LD_LIBRARY_PATH "$WORK_DIR/vendor/ghc-libs:/usr/lib"
95103
96104speak "Making stack binaries available"
97105mkdir -p "$BUILD_DIR/vendor"
@@ -99,4 +107,8 @@ mkdir -p "$BUILD_DIR/.local"
99107mv "$WORK_DIR/vendor/ghc-libs" "$BUILD_DIR/vendor"
100108mv "$WORK_DIR/.local/bin" "$BUILD_DIR/.local"
101109
110+speak "Caching .stack-work"
111+rsync -avq "$WORK_DIR/.stack-work/" "$SANDBOX_DIR"
112+mv "$WORK_DIR/.stack-work" "$BUILD_DIR"
113+
102114speak "Finished!"