Files
kiwistation/tools/tgs4_scripts/PreCompile.sh
T
Kyle Spier-Swenson c07394cf66 Update precompile.sh with the one I had to use to get everything to work (#55304)
Some notes:
* failures are hard to deal with if so many installs are behind narrowly scoped checks. This should be improved. for instance rustup failing meant it never ran again. even if you fixed the cause.
* you have to install the 64 bit version of openssl too or pkg-config can't find it.
* rustup was not in path
* setting a target changes the path the .so is dumped out to.

I don't care how ugly and bad this is, this is likely what will get used in production unless somebody hands me a better working version. 

side-note: move to debian based docker images when?
2020-12-09 19:58:44 -05:00

67 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# REPO MAINTAINERS: KEEP CHANGES TO THIS IN SYNC WITH /tools/LinuxOneShot/SetupProgram/PreCompile.sh
# No ~mso
set -e
set -x
#load dep exports
#need to switch to game dir for Dockerfile weirdness
original_dir=$PWD
cd "$1"
. dependencies.sh
cd "$original_dir"
#find out what we have (+e is important for this)
set +e
has_git="$(command -v git)"
has_cargo="$(command -v ~/.cargo/bin/cargo)"
has_sudo="$(command -v sudo)"
has_grep="$(command -v grep)"
set -e
# install cargo if needful
if ! [ -x "$has_cargo" ]; then
echo "Installing rust..."
curl https://sh.rustup.rs -sSf | sh -s -- -y
. ~/.profile
fi
# apt packages, libssl needed by rust-g but not included in TGS barebones install
if ! ( [ -x "$has_git" ] && [ -x "$has_grep" ] && [ -f "/usr/lib/i386-linux-gnu/libssl.so" ] ); then
echo "Installing apt dependencies..."
if ! [ -x "$has_sudo" ]; then
dpkg --add-architecture i386
apt-get update
apt-get install -y git libssl-dev:i386
rm -rf /var/lib/apt/lists/*
else
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y git libssl-dev:i386
sudo rm -rf /var/lib/apt/lists/*
fi
fi
dpkg --add-architecture i386
apt-get update
#apt-get upgrade -y
apt-get install -y lib32z1 pkg-config libssl-dev:i386 libssl-dev
#update rust-g
if [ ! -d "rust-g" ]; then
echo "Cloning rust-g..."
git clone https://github.com/tgstation/rust-g
cd rust-g
~/.cargo/bin/rustup target add i686-unknown-linux-gnu
else
echo "Fetching rust-g..."
cd rust-g
git fetch
~/.cargo/bin/rustup target add i686-unknown-linux-gnu
fi
echo "Deploying rust-g..."
git checkout "$RUST_G_VERSION"
~/.cargo/bin/cargo build --release --target=i686-unknown-linux-gnu
mv target/i686-unknown-linux-gnu/release/librust_g.so "$1/rust_g"
cd ..