113 lines
3.2 KiB
Bash
Executable File
113 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
if [[ $# -ne 4 ]]; then
|
|
echo "Build script has to be called with exactly two arguments."
|
|
echo "The version number (Major.Minor.Patch) as its first argument."
|
|
echo "... and the OS (linux, windows or macos) as the second argument"
|
|
echo "TODO: DOCUMENT ARGUMENTS 3 & 4!!!"
|
|
echo "Aborting..."
|
|
exit 1
|
|
fi
|
|
|
|
VERSION=$1
|
|
regex='^([0-9]+\.){0,2}(\*|[0-9]+)$'
|
|
if [[ $VERSION =~ $regex ]]; then
|
|
echo "Version accepted: $VERSION"
|
|
else
|
|
echo "Version '$VERSION' is not acceptable. Aborting..."
|
|
exit 1
|
|
fi
|
|
|
|
PLATFORM=$2
|
|
TARGET=$3
|
|
EXECUTABLE="$TARGET-Widgets"
|
|
BUILD_PREFIX="_build/UIs/GenericWidgets"
|
|
# TODO refactor this to use PLATFORMS.contains(PLATFORM)
|
|
if [[ $PLATFORM == linux ]]; then
|
|
echo "OS: $PLATFORM"
|
|
BUILD_DIR=$BUILD_PREFIX
|
|
elif [[ $PLATFORM == windows ]]; then
|
|
echo "OS: $PLATFORM"
|
|
BUILD_DIR="$BUILD_PREFIX/release"
|
|
elif [[ $PLATFORM == macos ]]; then
|
|
echo "OS: $PLATFORM"
|
|
BUILD_DIR=$BUILD_PREFIX
|
|
else
|
|
echo "Version '$PLATFORM' is not acceptable. Aborting..."
|
|
exit 1
|
|
fi
|
|
|
|
#if [[ ! -e .env ]]; then
|
|
# echo "File .env not found. Aborting..."
|
|
# exit 1
|
|
#fi
|
|
#echo "Sourcing .env file..."
|
|
#source .env
|
|
|
|
PACKAGENAME=$4
|
|
INSTALLER_DIR="_build/installer"
|
|
PKG_DATA_DIR="$INSTALLER_DIR/packages/$PACKAGENAME/data"
|
|
PKG_META_DIR="$INSTALLER_DIR/packages/$PACKAGENAME/meta"
|
|
ASSET_DIR="../assets/icons"
|
|
OUTPUT_DIR="../_output/installer"
|
|
|
|
if [[ -e $PKG_DATA_DIR/$TARGET ]]; then
|
|
echo "old $TARGET exe exists, cleaning the package data directory..."
|
|
rm -r $PKG_DATA_DIR/*
|
|
fi
|
|
|
|
if [[ ! -d $PKG_DATA_DIR ]]; then
|
|
echo "creating package data folder..."
|
|
mkdir -p $PKG_DATA_DIR
|
|
fi
|
|
|
|
mv $INSTALLER_DIR/packages/meta $PKG_META_DIR
|
|
|
|
echo "copying executable..."
|
|
if [[ $PLATFORM == macos ]]; then
|
|
cp -r $BUILD_DIR/$EXECUTABLE.app $PKG_DATA_DIR/$TARGET.app
|
|
else
|
|
cp $BUILD_DIR/$EXECUTABLE $PKG_DATA_DIR/$TARGET
|
|
fi
|
|
|
|
echo "copying assets..."
|
|
cp $ASSET_DIR/$TARGET.png $PKG_DATA_DIR/$TARGET.png
|
|
|
|
echo "copying license..."
|
|
cp ../LICENSE $PKG_META_DIR/license.txt
|
|
|
|
### Platform dependencies
|
|
echo "Applying platform dependencies..."
|
|
INSTALLER_APPENDIX="installer"
|
|
if [[ $PLATFORM == linux ]]; then
|
|
echo "Linux..."
|
|
# echo "Patching the config.xml"
|
|
# sed -i "s/<PLATFORM>/$PLATFORM/g" config/config.xml
|
|
elif [[ $PLATFORM == windows ]]; then
|
|
echo "Windows..."
|
|
cd $PKG_DATA_DIR
|
|
echo "Copying OpenSSL dlls..."
|
|
cp /c/Qt/Tools/OpenSSL/Win_x64/bin/libcrypto-1_1-x64.dll .
|
|
cp /c/Qt/Tools/OpenSSL/Win_x64/bin/libssl-1_1-x64.dll .
|
|
echo "Calling windeployqt..."
|
|
$QMAKE_LOCATION/windeployqt $TARGET.exe
|
|
cd -
|
|
# echo "Patching the config.xml"
|
|
# sed -i "s/<PLATFORM>/$PLATFORM/g" config/config.xml
|
|
elif [[ $PLATFORM == macos ]]; then
|
|
echo "MacOS..."
|
|
echo "Calling macdeployqt..."
|
|
INSTALLER_APPENDIX="installer.dmg"
|
|
cd $PKG_DATA_DIR
|
|
macdeployqt $TARGET.app
|
|
cd -
|
|
# echo "Patching the config.xml..."
|
|
# sed -i '' "s/<PLATFORM>/$PLATFORM/g" config/config.xml
|
|
fi
|
|
|
|
|
|
echo "running binarycreator..."
|
|
#echo "$QIF_LOCATION/binarycreator"
|
|
binarycreator -n -c $INSTALLER_DIR/config/config.xml -p $INSTALLER_DIR/packages $OUTPUT_DIR/$TARGET-$PLATFORM-$VERSION-$INSTALLER_APPENDIX-online
|
|
binarycreator -f -c $INSTALLER_DIR/config/config.xml -p $INSTALLER_DIR/packages $OUTPUT_DIR/$TARGET-$PLATFORM-$VERSION-$INSTALLER_APPENDIX-offline
|