59 lines
1.6 KiB
Bash
59 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "$BASH_SOURCE")" ; pwd)
|
|
TOP_DIR=$(cd "$SCRIPT_DIR/../../.." ; pwd)
|
|
|
|
# args: package
|
|
# returns 0 if installed, 1 if it needs to be installed
|
|
PackageIsInstalled()
|
|
{
|
|
PackageName=$1
|
|
|
|
dpkg-query -W -f='${Status}\n' $PackageName | head -n 1 | awk '{print $3;}' | grep -q '^installed$'
|
|
}
|
|
|
|
# main
|
|
set -e
|
|
|
|
TOP_DIR=$(cd "$SCRIPT_DIR/../../.." ; pwd)
|
|
cd "${TOP_DIR}"
|
|
|
|
if [ -e /etc/os-release ]; then
|
|
source /etc/os-release
|
|
# Ubuntu/Debian/Mint
|
|
if [[ "$ID" == "ubuntu" ]] || [[ "$ID_LIKE" == "ubuntu" ]] || [[ "$ID" == "debian" ]] || [[ "$ID_LIKE" == "debian" ]] || [[ "$ID" == "tanglu" ]] || [[ "$ID_LIKE" == "tanglu" ]]; then
|
|
|
|
# Both dotnet and the compiler toolchain are now bundled.
|
|
# build-essential can still be useful for making sure the system has make
|
|
DEPS="
|
|
build-essential
|
|
"
|
|
|
|
for DEP in $DEPS; do
|
|
if ! PackageIsInstalled $DEP; then
|
|
echo "Attempting installation of missing package: $DEP"
|
|
set -x
|
|
sudo apt-get install -y $DEP
|
|
set +x
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
|
|
# Install our bundled toolchain unless we are running a Perforce build or a an our of source toolchain is available.
|
|
if [ ! -f Build/PerforceBuild.txt ] && [ -z "$LINUX_MULTIARCH_ROOT" ] && [ -z "$UE_SDKS_ROOT" ]; then
|
|
echo "Installing a bundled clang toolchain"
|
|
pushd Build/BatchFiles/Linux > /dev/null
|
|
./SetupToolchain.sh
|
|
popd > /dev/null
|
|
fi
|
|
|
|
# Provide the hooks for locally building third party libs if needed
|
|
echo
|
|
pushd Build/BatchFiles/Linux > /dev/null
|
|
./BuildThirdParty.sh
|
|
popd > /dev/null
|
|
|
|
echo "Setup successful."
|
|
touch Build/OneTimeSetupPerformed
|