#!/usr/bin/env bash
set -e

JEMALLOC_VERSION=5.4.0
PCRE_VERSION=8.45
PIP_VERSION=23.1.2
VARNISH_VERSION=6.0.18
VARNISH_MODULES_VERSION=0.15.1

LOCAL_STATE_DIR="/var/vcap/data/varnish/workdir"

export PACKAGES=/var/vcap/packages

addBuildTool(){
  export PATH=$PACKAGES/$1/bin:$PATH
  export ACLOCAL_PATH="${PACKAGES}/$1/share/aclocal:${ACLOCAL_PATH}"
}

addLib(){
  export PATH=$PACKAGES/$1/bin:$PATH
  export PKG_CONFIG_PATH="${PACKAGES}/$1/lib/pkgconfig:${PKG_CONFIG_PATH}"
  export LDFLAGS="${LDFLAGS} -L${PACKAGES}/$1/lib"
  export CFLAGS="${CFLAGS} -I${PACKAGES}/$1/include"
}

setDeps() {
  addBuildTool autoconf
  addBuildTool automake
  addBuildTool libtool
  addBuildTool pkg-config

  addLib libedit
  addLib ncurses
  addLib varnish
}

python3 varnish/get-pip-${PIP_VERSION}.py
pip3 install docutils sphinx

mkdir ${BOSH_INSTALL_TARGET}/bin

echo "Extracting jemalloc"
tar xjf "varnish/jemalloc-${JEMALLOC_VERSION}.tar.bz2"
pushd jemalloc-${JEMALLOC_VERSION}
  ./configure "--prefix=${BOSH_INSTALL_TARGET}"
  make
  make install "prefix=${BOSH_INSTALL_TARGET}"
popd

echo "Extracting pcre"
tar xzf varnish/pcre-${PCRE_VERSION}.tar.gz
pushd pcre-${PCRE_VERSION}
  ./configure "--prefix=${BOSH_INSTALL_TARGET}"
  make
  make install "prefix=${BOSH_INSTALL_TARGET}"
popd

echo "Extracting varnish"
tar xzf varnish/varnish-${VARNISH_VERSION}.tgz
pushd varnish-${VARNISH_VERSION}
  setDeps
  sh autogen.sh
  sh configure --prefix=${BOSH_INSTALL_TARGET} --localstatedir=${LOCAL_STATE_DIR}
  make
  make install
popd

echo "Extracting varnish modules"
tar xzf varnish/varnish-modules-${VARNISH_MODULES_VERSION}.tar.gz
pushd varnish-modules-${VARNISH_MODULES_VERSION}
  setDeps
  addLib varnish
  sh bootstrap
  sh configure --prefix=${BOSH_INSTALL_TARGET}
  make
  make install
popd

# Copy libedit libs instead of installing the package
cp -d ${PACKAGES}/libedit/lib/libedit.so* ${BOSH_INSTALL_TARGET}/lib
