4d47fd187f
changed the default installattion used in the linux_build.sh script to create an installer that deauly installs the application data files in the /var fold folder instead of the user specific folder in /home. also made it so it will now create a system user named after the name of the application and use that user to run the systemd service instead of the currently logged in user. doing this harded system security by having the application run as an under privileged user. this also opens up the possibility to lock down direct writing access to the host database to just the internal module (in a future update). removed the -start command line argument and have just the -host option to start new host instances. the -start option would start the host as the current user so i decided to remove it as a way to encourage end users to start/stop the host via systemd.
148 lines
5.2 KiB
Bash
148 lines
5.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="2.1.3"
|
|
app_name="MRCI"
|
|
install_dir="/opt/$bin_name"
|
|
var_dir="/var/opt/$bin_name"
|
|
bin_dir="/usr/bin"
|
|
tmp_dir="$HOME/.cache/mrci_build"
|
|
|
|
if [ ! -d "$qt_dir" ]; then
|
|
|
|
echo "a valid path to Qt was not provided, falling back to the default: /usr/lib/x86_64-linux-gnu/qt5/bin"
|
|
|
|
qt_dir="/usr/lib/x86_64-linux-gnu/qt5/bin"
|
|
|
|
else
|
|
|
|
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 -rf $tmp_dir
|
|
|
|
fi
|
|
|
|
if [ $? -eq 0 -a -d "$qt_dir" ]; then
|
|
|
|
mkdir -vp $tmp_dir
|
|
cp -r $src_dir/. $tmp_dir
|
|
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 "libQt" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./build/lib
|
|
ldd ./$bin_name | grep "libicu" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./build/lib
|
|
ldd ./$bin_name | grep "libssl" | awk '{print $3}' | xargs -I '{}' cp -v '{}' ./build/lib
|
|
ldd ./$bin_name | grep "libcrypto" | 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 QTDIR=$install_dir" >> $startup_script
|
|
echo "export QT_PLUGIN_PATH=$install_dir" >> $startup_script
|
|
echo "export LD_LIBRARY_PATH=\"$install_dir/lib:\$LD_LIBRARY_PATH\"" >> $startup_script
|
|
echo "export MRCI_DB_PATH=$var_dir/data.db" >> $startup_script
|
|
echo "$install_dir/$bin_name \$1 \$2 \$3" >> $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 "if [ ! -d \"$var_dir\" ]; then" >> $setup_script
|
|
echo " sudo mkdir -p $var_dir" >> $setup_script
|
|
echo "fi" >> $setup_script
|
|
echo "cp -rfv ./lib $install_dir" >> $setup_script
|
|
echo "cp -rfv ./sqldrivers $install_dir" >> $setup_script
|
|
echo "cp -fv ./$bin_name $install_dir" >> $setup_script
|
|
echo "cp -fv ./$bin_name.sh $install_dir" >> $setup_script
|
|
echo "cp -fv ./uninstall.sh $install_dir" >> $setup_script
|
|
echo "cp -fv ./$bin_name.service /etc/systemd/system/$bin_name.service" >> $setup_script
|
|
echo "useradd -r $bin_name" >> $setup_script
|
|
echo "chmod 755 $install_dir/$bin_name" >> $setup_script
|
|
echo "chmod 755 $install_dir/$bin_name.sh" >> $setup_script
|
|
echo "chmod 755 $install_dir/uninstall.sh" >> $setup_script
|
|
echo "chmod 755 $install_dir" >> $setup_script
|
|
echo "chmod -R 755 $install_dir/lib" >> $setup_script
|
|
echo "chmod -R 755 $install_dir/sqldrivers" >> $setup_script
|
|
echo "chmod 755 /etc/systemd/system/$bin_name.service" >> $setup_script
|
|
echo "chown -R $bin_name:$bin_name $var_dir" >> $setup_script
|
|
echo "chmod -R 755 $var_dir" >> $setup_script
|
|
echo "ln -sf $install_dir/$bin_name.sh $bin_dir/$bin_name" >> $setup_script
|
|
echo "systemctl start $bin_name" >> $setup_script
|
|
echo "systemctl enable $bin_name" >> $setup_script
|
|
echo "if [ \$? -eq 0 ]; then" >> $setup_script
|
|
echo " echo \"\nInstallation finished. If you ever need to uninstall this application, run this command:\n\"" >> $setup_script
|
|
echo " echo \" $install_dir/uninstall.sh\n\"" >> $setup_script
|
|
echo "fi" >> $setup_script
|
|
|
|
echo "[Unit]" > $service_file
|
|
echo "Description=$app_name Host Daemon" >> $service_file
|
|
echo "After=network.target" >> $service_file
|
|
echo "" >> $service_file
|
|
echo "[Service]" >> $service_file
|
|
echo "Type=simple" >> $service_file
|
|
echo "User=$bin_name" >> $service_file
|
|
echo "Restart=on-failure" >> $service_file
|
|
echo "RestartSec=5" >> $service_file
|
|
echo "TimeoutStopSec=infinity" >> $service_file
|
|
echo "ExecStart=/usr/bin/env $bin_name -host" >> $service_file
|
|
echo "ExecStop=/usr/bin/env $bin_name -stop" >> $service_file
|
|
echo "" >> $service_file
|
|
echo "[Install]" >> $service_file
|
|
echo "WantedBy=multi-user.target" >> $service_file
|
|
|
|
echo "#!/bin/sh" > $uninstall_script
|
|
echo "systemctl -q stop $bin_name" >> $uninstall_script
|
|
echo "systemctl -q disable $bin_name" >> $uninstall_script
|
|
echo "rm -v /etc/systemd/system/$bin_name.service" >> $uninstall_script
|
|
echo "rm -v $bin_dir/$bin_name" >> $uninstall_script
|
|
echo "rm -rv $install_dir" >> $uninstall_script
|
|
echo "chown -R root:root $var_dir" >> $uninstall_script
|
|
echo "deluser $bin_name" >> $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
|