MRCI/linux_build.sh
Maurice ONeal 87d9eb0207 Fixed some bugs found in GEN_FILE
genfile commands would not terminate properly or
would end up de-synced with the host in one way or
another.

to fix this, i updated the GEN_FILE data type and
sub-protocol to now define the commands as download
or upload on the NEW_CMD frame so clients can now
define the direction of the GEN_FILE data of the
various GEN_FILE commands at the very start instead
of trying to determine that at run time.

also fixed this by creating the onTerminate() virtual
function in CmdObject and have it call this function
when term() is called. this makes it possible to
properly put the command object in a reset state if
using parameters outside of the base class when
term() is called.

updated all documentation related to the GEN_FILE
sub-protocol to reflect these changes.

fixed ASYNC_DEBUG_TEXT to self correct the ipc type
to PRIV_IPC so no debug messages can accidentally be
sent to peers.
2019-12-14 13:12:25 -05:00

133 lines
4.5 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.2"
app_name="MRCI"
install_dir="/opt/$bin_name"
bin_dir="/usr/bin"
tmp_dir="$HOME/.cache/mrci_build"
user="$USER"
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 -rfv $tmp_dir
fi
if [ $? -eq 0 -a -d "$qt_dir" ]; then
mkdir -vp $tmp_dir
cp -rv $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 "$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 "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 "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