MRCI/linux_build.sh
2019-09-06 23:43:07 -04:00

126 lines
4.2 KiB
Bash

#!/bin/sh
qt_dir="$1"
installer_file="$2"
src_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
bin_name="mrci"
app_version="1.0.0"
app_name="MRCI"
install_dir="/opt/$bin_name"
bin_dir="/usr/bin"
tmp_dir="$HOME/.cache/mrci_build"
user="$USER"
if [ "$qt_dir" != "" ]; then
PATH=$qt_dir:$PATH
fi
if [ "$installer_file" = "" ]; then
installer_file="$src_dir/$bin_name-$app_version.run"
fi
if [ -d "$tmp_dir" ]; then
rm -rfv $tmp_dir
fi
mkdir -vp $tmp_dir
cp -rv $src_dir/. $tmp_dir
if [ $? -eq 0 ]; then
cd $tmp_dir
qmake -config release
if [ $? -eq 0 ]; then
make
if [ $? -eq 0 ]; then
mkdir -v ./build/
mkdir -v ./build/sqldrivers
mkdir -v ./build/lib
ldd ./$bin_name | grep "=> /" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./build/lib
mv -v ./$bin_name ./build/$bin_name
cp -v $qt_dir/../plugins/sqldrivers/libqsqlite.so ./build/sqldrivers
startup_script="./build/$bin_name.sh"
setup_script="./build/setup.sh"
uninstall_script="./build/uninstall.sh"
service_file="./build/$bin_name.service"
echo "#!/bin/sh" > $startup_script
echo "export LD_LIBRARY_PATH=$install_dir/lib" >> $startup_script
echo "$install_dir/$bin_name \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8 \$9 \$10" >> $startup_script
echo "#!/bin/sh" > $setup_script
echo "if [ -f \"$install_dir/uninstall.sh\" ]; then" >> $setup_script
echo " sh $install_dir/uninstall.sh" >> $setup_script
echo "fi" >> $setup_script
echo "if [ ! -d \"$install_dir\" ]; then" >> $setup_script
echo " sudo mkdir -p $install_dir" >> $setup_script
echo "fi" >> $setup_script
echo "sudo cp -rfv ./lib $install_dir" >> $setup_script
echo "sudo cp -rfv ./sqldrivers $install_dir" >> $setup_script
echo "sudo cp -fv ./$bin_name $install_dir" >> $setup_script
echo "sudo cp -fv ./$bin_name.sh $install_dir" >> $setup_script
echo "sudo cp -fv ./uninstall.sh $install_dir" >> $setup_script
echo "sudo cp -fv ./$bin_name.service /etc/systemd/system/$bin_name@$USER.service" >> $setup_script
echo "sudo chmod 755 $install_dir/$bin_name" >> $setup_script
echo "sudo chmod 755 $install_dir/$bin_name.sh" >> $setup_script
echo "sudo chmod 755 $install_dir/uninstall.sh" >> $setup_script
echo "sudo chmod 755 $install_dir" >> $setup_script
echo "sudo chmod -R 755 $install_dir/lib" >> $setup_script
echo "sudo chmod -R 755 $install_dir/sqldrivers" >> $setup_script
echo "sudo chmod 755 /etc/systemd/system/$bin_name@$USER.service" >> $setup_script
echo "sudo ln -sf $install_dir/$bin_name.sh $bin_dir/$bin_name" >> $setup_script
echo "cd $install_dir/lib" >> $setup_script
echo "ldd $install_dir/$bin_name | grep \"=> /\" | awk '{if (\$3 != \"not found\") print \$1}' | xargs -I '{}' sudo rm -f '{}'" >> $setup_script
echo "sudo systemctl start $bin_name@$USER" >> $setup_script
echo "sudo systemctl enable $bin_name@$USER" >> $setup_script
echo "echo \"\nInstallation finished. If you ever need to uninstall this application, run this command:\n\"" >> $setup_script
echo "echo \" sh $install_dir/uninstall.sh\n\"" >> $setup_script
echo "[Unit]" > $service_file
echo "Description=$app_name host" >> $service_file
echo "After=network.target" >> $service_file
echo "" >> $service_file
echo "[Service]" >> $service_file
echo "Type=simple" >> $service_file
echo "User=%i" >> $service_file
echo "ExecStart=/usr/bin/env $bin_name -host" >> $service_file
echo "" >> $service_file
echo "[Install]" >> $service_file
echo "WantedBy=multi-user.target" >> $service_file
echo "#!/bin/sh" > $uninstall_script
echo "sudo systemctl -q stop $bin_name@$USER" >> $uninstall_script
echo "sudo systemctl -q disable $bin_name@$USER" >> $uninstall_script
echo "sudo rm -v /etc/systemd/system/$bin_name@$USER.service" >> $uninstall_script
echo "sudo rm -v $bin_dir/$bin_name" >> $uninstall_script
echo "sudo rm -rv $install_dir" >> $uninstall_script
chmod +x $setup_script
makeself ./build $installer_file "$app_name Installation" ./setup.sh
fi
fi
fi
if [ -d "$tmp_dir" ]; then
rm -rf $tmp_dir
fi