blob: dfbd83e7488085ac3fac565c7191f237b80c89f7 [file] [log] [blame]
#!/bin/bash
set -eu
USERDIR="$1"
BUILDSCRIPT="$2"
BUILDNAME="$3"
# Import config if present.
[ -e "${USERDIR}/config" ] && . "${USERDIR}/config"
# Create workspace directory.
if [ -z ${TRYDIR+x} ]; then
TRYDIR="$TMPDIR"
if [ -z ${TRYDIR+x} ]; then
TRYDIR="/tmp"
fi
fi
export WORKSPACE="${TRYDIR}/${BUILDNAME}"
mkdir "${TRYDIR}/${BUILDNAME}"
echo "Workspace: ${WORKSPACE}"
# Work with a minimum PATH
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
# Clear environment from some typical user-specific settings.
# TODO: Should we rather start with a blank environment?
unset CPATH
unset LIBRARY_PATH
unset MANPATH
unset PKG_CONFIG_PATH
LOGFILE="${WORKSPACE}/log.txt"
SANDBOXPROFILE="$(pwd)/try.sb"
cd "${WORKSPACE}"
: ${HOME:=/tmp}
if [ -z "${TASK_TRY_NO_SANDBOX:-}" ]; then
/bin/sh "${BUILDSCRIPT}" 2>&1 | tee "$LOGFILE"
else
# Note that sandboxes don't work recursively, so we set TASK_TRY_NO_SANDBOX
# for the child.
TASK_TRY_NO_SANDBOX=1 sandbox-exec -f "${SANDBOXPROFILE}" -D WORKSPACE="$WORKSPACE" -D HOME="$HOME" /bin/sh "${BUILDSCRIPT}" 2>&1 | tee "$LOGFILE"
fi
# Gather results
if [ -d "${WORKSPACE}/result" ]; then
mkdir -p "${USERDIR}/results"
RESULTFILE="${USERDIR}/results/${BUILDNAME}.tar.xz"
cd "${WORKSPACE}/result"
shopt -s dotglob nullglob
tar -c --xz -f "${RESULTFILE}" *
echo 1>&2 "Results written to ${RESULTFILE}"
fi