#!/bin/bash set -e #Download a file from internet function GetFile { local uri=$1 local path=$2 local force=${3:-false} local download_retries=${4:-5} local retry_wait_time_seconds=${5:-30} if [[ -f $path ]]; then if [[ $force = false ]]; then echo "File '$path' already exists. Skipping download" return 0 else rm -rf $path fi fi if [[ -f $uri ]]; then echo "'$uri' is a file path, copying file to '$path'" cp $uri $path return $? fi echo "Downloading $uri" # Use aria2c if available, otherwise use curl if command -v aria2c > /dev/null; then aria2c -q -d $(dirname $path) -o $(basename $path) "$uri" else curl "$uri" -sSL --retry $download_retries --retry-delay $retry_wait_time_seconds --create-dirs -o "$path" --fail fi return $? } mkdir -p /tmp/src cd /tmp/src echo "Installing Ninja" GetFile https://github.com/ninja-build/ninja/archive/v1.10.0.tar.gz /tmp/src/ninja-linux.tar.gz tar -zxf ninja-linux.tar.gz cd ninja-1.10.0 cmake -Bbuild-cmake -H. cmake --build build-cmake mv ./build-cmake/ninja /usr/bin cd / rm -rf /tmp/src