167 lines
5.5 KiB
Bash
167 lines
5.5 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
|
||
|
|
||
|
# ==================================================================================================
|
||
|
# -- FUNCTIONS -------------------------------------------------------------------------------------
|
||
|
# ==================================================================================================
|
||
|
|
||
|
satisfies_minimum_version() {
|
||
|
CMAKE_VERSION="$(cmake --version | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+')"
|
||
|
CMAKE_MINIMUM_VERSION=$1
|
||
|
MAJOR="${CMAKE_VERSION%%.*}"
|
||
|
REMAINDER="${CMAKE_VERSION#*.}"
|
||
|
MINOR="${REMAINDER%.*}"
|
||
|
REVISION="${REMAINDER#*.}"
|
||
|
MINIMUM_MAJOR="${CMAKE_MINIMUM_VERSION%%.*}"
|
||
|
MINIMUM_REMAINDER="${CMAKE_MINIMUM_VERSION#*.}"
|
||
|
MINIMUM_MINOR="${MINIMUM_REMAINDER%.*}"
|
||
|
|
||
|
if [ $MAJOR -gt $MINIMUM_MAJOR ] ||
|
||
|
( [ $MAJOR -eq $MINIMUM_MAJOR ] &&
|
||
|
( [ $MINOR -gt $MINIMUM_MINOR ] || [ $MINOR -eq $MINIMUM_MINOR ])) ; then
|
||
|
true
|
||
|
else
|
||
|
false
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
# ==================================================================================================
|
||
|
# -- MAIN ------------------------------------------------------------------------------------------
|
||
|
# ==================================================================================================
|
||
|
|
||
|
set -e
|
||
|
sudo echo "Got super powers..."
|
||
|
|
||
|
echo "Parsing GIT_LOCAL_CREDENTIALS local variable "
|
||
|
arrIN=(${GIT_LOCAL_CREDENTIALS//@/ })
|
||
|
GIT_LOCAL_USER=${arrIN[0]}
|
||
|
GIT_LOCAL_TOKEN=${arrIN[1]}
|
||
|
if [ -z "$GIT_LOCAL_CREDENTIALS" ]
|
||
|
then
|
||
|
echo "Git credentials are not set, they will be requested later on during the download of Unreal Engine Carla fork"
|
||
|
fi
|
||
|
|
||
|
echo "Installing Ubuntu Pacakges..."
|
||
|
if ! command -v retry &> /dev/null
|
||
|
then
|
||
|
sudo apt update
|
||
|
sudo apt-get install retry
|
||
|
fi
|
||
|
retry --until=success --times=12 --delay=300 -- sudo apt-get update
|
||
|
retry --until=success --times=12 --delay=300 -- sudo apt-get -y install \
|
||
|
build-essential \
|
||
|
g++-12 \
|
||
|
gcc-12 \
|
||
|
make \
|
||
|
ninja-build \
|
||
|
libvulkan1 \
|
||
|
python3 \
|
||
|
python3-dev \
|
||
|
python3-pip \
|
||
|
libpng-dev \
|
||
|
libtiff5-dev \
|
||
|
libjpeg-dev \
|
||
|
tzdata \
|
||
|
sed \
|
||
|
curl \
|
||
|
libtool \
|
||
|
rsync \
|
||
|
libxml2-dev \
|
||
|
git \
|
||
|
git-lfs
|
||
|
echo "Ubuntu Pacakges Installed..."
|
||
|
|
||
|
echo "Installing Python Pacakges..."
|
||
|
pip3 install --upgrade pip
|
||
|
pip3 install -r requirements.txt
|
||
|
echo "Python Pacakges Installed..."
|
||
|
|
||
|
echo "Clonning CARLA Content asynchronously... (see the progres in ContentClone.log)"
|
||
|
mkdir -p Unreal/CarlaUnreal/Content
|
||
|
git -C Unreal/CarlaUnreal/Content clone -b ue5-dev https://bitbucket.org/carla-simulator/carla-content.git Carla &> ContentClone.log&
|
||
|
|
||
|
CMAKE_MINIMUM_VERSION=3.28.0
|
||
|
if satisfies_minimum_version $CMAKE_MINIMUM_VERSION; then
|
||
|
echo "Found CMake $CMAKE_VERSION - OK"
|
||
|
else
|
||
|
echo "Found CMake $CMAKE_VERSION - FAIL"
|
||
|
echo "Installing CMake 3.28.3..."
|
||
|
curl -L -O https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz
|
||
|
sudo mkdir -p /opt
|
||
|
sudo tar -xzf cmake-3.28.3-linux-x86_64.tar.gz -C /opt
|
||
|
echo -e '\n#CARLA CMake 3.28.3\nPATH=/opt/cmake-3.28.3-linux-x86_64/bin:$PATH' >> ~/.bashrc
|
||
|
export PATH=/opt/cmake-3.28.3-linux-x86_64/bin:$PATH
|
||
|
rm -rf cmake-3.28.3-linux-x86_64.tar.gz
|
||
|
echo "CMake Intalled 3.28.3..."
|
||
|
fi
|
||
|
|
||
|
if [ ! -z $CARLA_UNREAL_ENGINE_PATH ] && [ -d $CARLA_UNREAL_ENGINE_PATH ]; then
|
||
|
echo "Found UnrealEngine5 $CARLA_UNREAL_ENGINE_PATH - OK"
|
||
|
elif [ -d ../UnrealEngine5_carla ]; then
|
||
|
pushd ..
|
||
|
pushd UnrealEngine5_carla
|
||
|
echo "Found UnrealEngine5 ../UnrealEngine5_carla - OK"
|
||
|
export CARLA_UNREAL_ENGINE_PATH=$PWD
|
||
|
echo -e '\n#CARLA UnrealEngine5\nexport CARLA_UNREAL_ENGINE_PATH='$CARLA_UNREAL_ENGINE_PATH >> ~/.bashrc
|
||
|
popd
|
||
|
popd
|
||
|
else
|
||
|
echo "Found UnrealEngine5 $CARLA_UNREAL_ENGINE_PATH - FAIL"
|
||
|
echo "Cloning CARLA UnrealEngine5..."
|
||
|
pushd ..
|
||
|
if [ -z "$GIT_LOCAL_CREDENTIALS" ]
|
||
|
then
|
||
|
git clone -b ue5-dev-carla https://github.com/CarlaUnreal/UnrealEngine.git UnrealEngine5_carla
|
||
|
else
|
||
|
git clone -b ue5-dev-carla https://$GIT_LOCAL_USER:$GIT_LOCAL_TOKEN@github.com/CarlaUnreal/UnrealEngine.git UnrealEngine5_carla
|
||
|
fi
|
||
|
pushd UnrealEngine5_carla
|
||
|
echo -e '\n#CARLA UnrealEngine5\nexport CARLA_UNREAL_ENGINE_PATH='$PWD >> ~/.bashrc
|
||
|
export CARLA_UNREAL_ENGINE_PATH=$PWD
|
||
|
popd
|
||
|
popd
|
||
|
echo "CARLA UnrealEngine5 Installed..."
|
||
|
fi
|
||
|
pushd ..
|
||
|
pushd $CARLA_UNREAL_ENGINE_PATH
|
||
|
echo Checking if UnreaEngine5 is in the last commit...
|
||
|
git fetch
|
||
|
if [[ $(git status) =~ "up to date" ]]; then
|
||
|
echo UnreaEngine5 is already in the last commit - OK
|
||
|
else
|
||
|
echo UnreaEngine5 is NOT in the last commit - FAIL
|
||
|
echo Cleaning UnrealEngine5 build...
|
||
|
git clean -fdx
|
||
|
echo Pulling last UnrealEngine5 changes...
|
||
|
git pull
|
||
|
fi
|
||
|
echo "Setup CARLA UnrealEngine5..."
|
||
|
./Setup.sh --force
|
||
|
echo "GenerateProjectFiles CARLA UnrealEngine5..."
|
||
|
./GenerateProjectFiles.sh
|
||
|
echo "Build CARLA UnrealEngine5..."
|
||
|
make
|
||
|
popd
|
||
|
popd
|
||
|
|
||
|
echo "Configuring CARLA..."
|
||
|
retry --until=success --times=10 -- cmake -G Ninja -S . -B Build \
|
||
|
--toolchain=$PWD/CMake/LinuxToolchain.cmake \
|
||
|
-DLAUNCH_ARGS="-prefernvidia" \
|
||
|
-DCMAKE_BUILD_TYPE=Release \
|
||
|
-DENABLE_ROS2=ON \
|
||
|
-DBUILD_CARLA_UNREAL=ON \
|
||
|
-DCARLA_UNREAL_ENGINE_PATH=$CARLA_UNREAL_ENGINE_PATH
|
||
|
echo "Building CARLA..."
|
||
|
retry --until=success --times=10 -- cmake --build Build
|
||
|
echo "Installing PythonAPI..."
|
||
|
cmake --build Build --target carla-python-api-install
|
||
|
echo "Waitting for Content to be downloaded... (see the progres in ContentClone.log)"
|
||
|
wait #Waitting for content
|
||
|
echo "Instalation and build succesfull! :)"
|
||
|
echo "Lauching Carla with Unreal Editor..."
|
||
|
cmake --build Build --target launch
|