#! /bin/sh
EXEC_PATH=`readlink -f $0`
EXEC_NAME=`basename $EXEC_PATH`
EXEC_DIR=`dirname $EXEC_PATH`

mlibdir=/usr/lib64
#@POST_MST_LIB_DIR@  # Update the lib dir by the post install script.
mbindir=/usr/bin
#@POST_MST_BIN_DIR@  # Update the bin dir by the post install script.

pkg_dir=mft
pkg_prefix=

MFT_EXT_PYTHON_LIB_DIR=$mlibdir/$pkg_dir/python_ext_libs
MFT_PYTHON_TOOLS=$mlibdir/$pkg_dir/python_tools

PY_TOOLS_REL_PATHS=$(dirname $0)/../lib/$pkg_dir/python_tools:$(dirname $0)/../lib64/$pkg_dir/python_tools:$(dirname $0)/../lib/$pkg_dir/python_tools/mst_ib_add:$(dirname $0)/../lib64/$pkg_dir/python_tools/mst_ib_add:$(dirname $0)/../lib/$pkg_dir/python_tools/mst_python_tools:$(dirname $0)/../lib64/$pkg_dir/python_tools/mst_python_tools:$(dirname $0)/../lib/$pkg_dir/python_tools/mst_retimer:$(dirname $0)/../lib64/$pkg_dir/python_tools/mst_retimer

if test -z "${PATH}"; then
   PATH=${mbindir}
else
   PATH=${mbindir}:${PATH}
fi

if test -z "${PYTHONPATH}"; then
   PYTHONPATH=$MFT_PYTHON_TOOLS:$PY_TOOLS_REL_PATHS:$MFT_EXT_PYTHON_LIB_DIR
else
   PYTHONPATH=$MFT_PYTHON_TOOLS:$PY_TOOLS_REL_PATHS:$MFT_EXT_PYTHON_LIB_DIR:${PYTHONPATH}
fi

export PATH
export PYTHONPATH
export MFT_LIB_DIR=$mlibdir
export MFT_BIN_DIR=$mbindir
export MFT_PKG_PREFIX=$pkg_prefix
if [ -z "$PYTHON_EXEC" ]; then
   PYTHON_EXEC=`find /usr/bin /bin/ /usr/local/bin -iname 'python*' 2>&1 | grep -e='*python[0-9,.]*' | sort -d | head -n 1`
   which python3 >/dev/null 2>&1
   if test $? -eq 0 ; then
      PYTHON_EXEC='/usr/bin/env python3'
   else
      which python2 >/dev/null 2>&1
      if test $? -eq 0 ; then
         PYTHON_EXEC='/usr/bin/env python2'
      fi
   fi
fi

# remove prefix from script name
if [ -n "$MFT_PKG_PREFIX" ]; then
    EXEC_NAME=${EXEC_NAME#"$MFT_PKG_PREFIX"}
fi

SCRIPT_PATH=$MFT_PYTHON_TOOLS/${EXEC_NAME}/${EXEC_NAME}.py

if test ! -f $SCRIPT_PATH; then
    SCRIPT_PATH=$(find $MFT_PYTHON_TOOLS $(echo $PY_TOOLS_REL_PATHS | sed "s/:/ /g") -name ${EXEC_NAME}.py 2>/dev/null | head -n 1)
fi

if test -z "${SCRIPT_PATH=}"; then
    >&2 echo "-E- Couldn't find ${EXEC_NAME}.py"
    exit 2
fi

# Preload libmft.so at process start to reserve static TLS for TSan runtime (if present)
_mft_lib="$mlibdir/$pkg_dir/libmft.so"
if [ -f "$_mft_lib" ] && readelf -s "$_mft_lib" 2>/dev/null | grep -q __tsan; then
    export LD_PRELOAD="${LD_PRELOAD:+$LD_PRELOAD:}$_mft_lib"
fi

exec $PYTHON_EXEC -c "
import os, sys, runpy
os.environ.pop('LD_PRELOAD', None)
sys.argv = sys.argv[1:]
sys.path[0] = os.path.dirname(os.path.abspath(sys.argv[0]))
runpy.run_path(sys.argv[0], run_name='__main__')
" "$SCRIPT_PATH" "$@"

