#!/bin/sh
# Set-up environment variables to run programs which are built in DESTDIR folder
#
# Usage example to use variables in the current shell:
#   $ export DESTDIR=$HOME/selinux-destdir
#   $ make install install-pywrap install-rubywrap
#   $ . ./scripts/env_use_destdir
#   $ make test
#
# Or to use variables in a subcommand, for example to run tests:
#   $ export DESTDIR=$HOME/selinux-destdir
#   $ make install install-pywrap install-rubywrap
#   $ ./scripts/env_use_destdir secilc ...
#   $ ./scripts/env_use_destdir make test

if [ -z "${DESTDIR:-}" ] ; then
    echo >&2 "Error: variable DESTDIR needs to be defined in order to use this script."
    echo >&2 "Example:"
    # shellcheck disable=SC2164
    echo >&2 "    DESTDIR=$(cd "$(dirname -- "$0")/.." ; pwd)/DESTDIR . $0"
    exit 1
fi

export LD_LIBRARY_PATH="$DESTDIR/usr/lib:$DESTDIR/lib"
if [ -n "${PREFIX:-}" ] ; then
    LD_LIBRARY_PATH="$DESTDIR$PREFIX/lib:$LD_LIBRARY_PATH"
fi
if [ -n "${LIBDIR:-}" ] ; then
    LD_LIBRARY_PATH="$DESTDIR$LIBDIR:$LD_LIBRARY_PATH"
fi
if [ -n "${SHLIBDIR:-}" ] ; then
    LD_LIBRARY_PATH="$DESTDIR$SHLIBDIR:$LD_LIBRARY_PATH"
fi

export PATH="$DESTDIR/usr/sbin:$DESTDIR/usr/bin:$DESTDIR/sbin:$DESTDIR/bin:$PATH"
if [ -n "${PREFIX:-}" ] ; then
    PATH="$DESTDIR$PREFIX/sbin:$DESTDIR$PREFIX/bin:$LD_LIBRARY_PATH"
fi
if [ -n "${BINDIR:-}" ] ; then
    PATH="$DESTDIR$BINDIR:$PATH"
fi
if [ -n "${SBINDIR:-}" ] ; then
    PATH="$DESTDIR$SBINDIR:$PATH"
fi

NEW_PYTHONPATH="$DESTDIR$(${PYTHON:-python3} -c "import sysconfig; print(sysconfig.get_path('platlib', vars={'platbase': '/usr', 'base': '/usr'}))"):$DESTDIR$(${PYTHON:-python3} -c "import sysconfig; print(sysconfig.get_path('purelib', vars={'platbase': '/usr', 'base': '/usr'}))")"
if [ -n "${PYTHONPATH:-}" ] ; then
    # Prefix the PYTHONPATH with the new directories
    export PYTHONPATH="$NEW_PYTHONPATH:$PYTHONPATH"
else
    # Define PYTHONPATH
    export PYTHONPATH="$NEW_PYTHONPATH"
fi

# shellcheck disable=SC2155
export RUBYLIB="$DESTDIR/$(${RUBY:-ruby} -e 'puts RbConfig::CONFIG["vendorlibdir"]'):$DESTDIR/$(${RUBY:-ruby} -e 'puts RbConfig::CONFIG["vendorarchdir"]')"

# Run the command given on the command line
if [ $# -gt 0 ] ; then
    exec "$@"
fi
