diff --git a/misc/MacQetDeploy_arm64.sh b/misc/MacQetDeploy_arm64.sh new file mode 100644 index 000000000..856abc741 --- /dev/null +++ b/misc/MacQetDeploy_arm64.sh @@ -0,0 +1,269 @@ +#!/bin/sh + # Copyright 2023 The QElectroTech Team + # This file is part of QElectroTech. + + # QElectroTech is free software: you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation, either version 2 of the License, or + # (at your option) any later version. + + # QElectroTech is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + + # You should have received a copy of the GNU General Public License + # along with QElectroTech. If not, see . + # Need homebrew and coreutils installed see . + +# configuration +APPNAME='qelectrotech' +BUNDLE=$APPNAME.app +APPBIN="$BUNDLE/Contents/MacOS/$APPNAME" + +# Emplacement du script +current_dir=$(dirname "$0") + +# On se remet au depart +cd "${current_dir}/../" + +# Emplacement courant +current_dir=$(PWD) + + +### get system configuration ######################################## + +echo +echo "______________________________________________________________" +echo "This script prepares a Qt application bundle for deployment." +echo "Please see the \"Deploying an Application on Qt/Mac\"" +echo "page in the Qt documentation for more information." +echo +echo "This script :" +echo "\t - up date the git depot" +echo "\t - built the application bundle," +echo "\t - copy over required Qt frameworks," +echo "\t - copy additional files: translations, titleblocks and elements," +echo "\t - create image disk." +echo +echo "Enjoy ;-)" +echo + +# as long as we can find qmake, we don't need QTDIR +FWPATH=`qmake -query QT_INSTALL_LIBS` +if [ ! -d $FWPATH/QtGui.framework ] ; then + echo "ERROR: cannot find the Qt frameworks. Make sure Qt is installed" + echo "and qmake is in your environment path." + exit +fi + + +### GIT #################################################### + +echo +echo "______________________________________________________________" +echo "Run GIT:" + +# recupere le numero de la dernière revision +# Si il y a ':' garde la 2e partie +# Remplace les lettres par 'rien' +#revAv=$(svnversion | cut -d : -f 2 | tr -d '[:alpha:]') + +# Fait une mise à jour +git pull +#git checkout foliolist_position + +# recupere le numero de la nouvelle revision + +GITCOMMIT=$(git rev-parse --short HEAD) +A=$(git rev-list HEAD --count) +HEAD=$(($A+473)) + + +VERSION=$(cat sources/qetversion.cpp | grep "return QVersionNumber{ 0, "| head -n 1| cut -c32-40| sed -e 's/,/./g' -e 's/ //g') #Find major, minor, and micro version numbers in sources/qetversion.cp + +# Tarball de la dernière revision déjà créé +if [ -e "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" ] ; then + echo "There are not new updates, make disk image can" + echo "take a lot of time (5 min). Can you continu?" + echo "[y/n]" + read userinput + if [ "$userinput" == "n" ] ; then + echo + echo "Process is stopped." + echo + exit + fi +fi + + +### make install #################################################### + +echo +echo "______________________________________________________________" +echo "Run make install:" + +# pour effacer l’ancienne compilation +if [ -d $BUNDLE ] ; then + echo "Removing hold bundle..." + rm -rf $BUNDLE +fi +if [ -e Makefile ] ; then + echo "Removing hold Makefile..." + rm .qmake.stash + make clean +fi + +# genere le Makefile +echo "Generating new makefile..." +qmake -spec macx-clang + +# compilation +if [ -e Makefile.Release ] ; then + START_TIME=$SECONDS + + # arret du script si erreur de compilation + testSuccessBuild () { + if [ $? -ne 0 ]; then + cleanVerionTag + ELAPSED_TIME=$(($SECONDS - $START_TIME)) + echo + echo "make failed - $(($ELAPSED_TIME/60)) min $(($ELAPSED_TIME%60)) sec" + exit 1 + fi + } + + # utilise tout les coeurs pour une compilation plus rapide + coeur=$(sysctl hw.ncpu | awk '{print $2}') + if [ $? -ne 0 ]; then + make -f Makefile.Release + testSuccessBuild + else + make -j$(($coeur + 1)) -f Makefile.Release + testSuccessBuild + fi + + ELAPSED_TIME=$(($SECONDS - $START_TIME)) + echo + echo "The time of compilation is $(($ELAPSED_TIME/60)) min $(($ELAPSED_TIME%60)) sec" +else + echo "ERROR: Makefile not found. This script requires the macx-clang makespec" + exit +fi + +cp -R ${current_dir}/misc/Info.plist qelectrotech.app/Contents/ +cp -R ${current_dir}/ico/mac_icon/*.icns qelectrotech.app/Contents/Resources/ +# On rajoute le numero de version pour "cmd + i" +/usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $VERSION r$HEAD" "qelectrotech.app/Contents/Info.plist" # Version number + + +### copy over frameworks ############################################ + +echo +echo "______________________________________________________________" +echo "Copy Qt libraries and private frameworks:" + +echo "Processing Mac deployment tool..." +if [ ! -d $BUNDLE ] ; then + echo "ERROR: cannot find application bundle \"$BUNDLE\" in current directory" + exit +fi +#~/Qt/5.5/clang_64/bin/macdeployqt $BUNDLE +macdeployqt $BUNDLE + +### add file missing ####################################### + +echo +echo "______________________________________________________________" +echo "Copy file missing:" + +# Dossier à ajouter +QET_ELMT_DIR="${current_dir}/elements/" +QET_TBT_DIR="${current_dir}/titleblocks/" +QET_LANG_DIR="${current_dir}/lang/" + + +# Add new folder for Qt dialog translation see +## see . + +LANG_DIR="${current_dir}/lang1/" + +if [ -d "${QET_ELMT_DIR}" ]; then + echo "Copying add elements in the bundle..." + #mkdir $BUNDLE/Contents/Resources/elements + cp -R ${QET_ELMT_DIR} $BUNDLE/Contents/Resources/elements +fi + +if [ -d "${QET_TBT_DIR}" ]; then + echo "Copying titleblocks in the bundle..." + #mkdir $BUNDLE/Contents/Resources/titleblocks + cp -R ${QET_TBT_DIR} $BUNDLE/Contents/Resources/titleblocks +fi + +if [ -d "${QET_LANG_DIR}" ]; then + echo "Copying translations in the bundle... " + mkdir $BUNDLE/Contents/Resources/lang + cp ${current_dir}/lang/*.qm $BUNDLE/Contents/Resources/lang +fi + +if [ -d "${LANG_DIR}" ]; then + echo "Copying translations in the bundle... " + cp ${current_dir}/lang1/*.qm $BUNDLE/Contents/Resources/lang + +fi +codesign --force --deep --sign --timestamp -s "Developer ID Application: Laurent TRINQUES (Y73WZ6WZ5X)" $BUNDLE +### create zip tarball ############################################### + +echo +echo "______________________________________________________________" +echo "Create zip tarball:" + +/usr/bin/ditto -c -k --keepParent $BUNDLE "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" + +### The end, process is done ########################################## + +echo +echo "______________________________________________________________" +echo "The process of creating deployable application zip is done." +echo The disque image is in the folder \'build-aux/mac-osx\'. +# Affiche les mise à jour depuis l'ancienne revision +#if [ ! $(($HEAD - $revAv)) -eq 0 ] ; then +# echo +# echo "There are new updates. This numero of revision is $HEAD." + # svn log -l $(($HEAD - $revAv)) +#else + # echo +# echo "There are not new updates. This numero of revision is $HEAD." +# fi +# echo + +# La version en local n'est pas conforme à la dernière version svn +# svnversion | grep -q '[MS:]' ; if [ $? -eq 0 ] ; then +# echo Please note that the latest \local version is $(svnversion). +# echo This is not the same version as the deposit. +# echo You can use \'svn diff\' to see the differences. +# echo And use \'svn revert \\' to delete the difference. +# echo To go back, you can use svn update -r 360 +# echo to go to revision number 360. +# echo +#fi + + + +#rsync to TF DMG builds +echo -e "\033[1;31mWould you like to upload MacOS packages "${APPNAME}"-"$VERSION"-"r$HEAD-arm64.zip", n/Y?.\033[m" +read a +if [[ $a == "Y" || $a == "y" ]]; then +cp -Rf "build-aux/mac-osx/${APPNAME}-$VERSION-r$HEAD-arm64.zip" /Users/laurent/MAC_OS_X/ +rsync -e ssh -av --delete-after --no-owner --no-g --chmod=g+w --progress --exclude='.DS_Store' /Users/laurent/MAC_OS_X/ scorpio810@ssh.tuxfamily.org:/home/qet/qet-repository/builds/MAC_OS_X/arm64/ +if [ $? != 0 ]; then +{ +echo "RSYNC ERROR: problem syncing ${APPNAME}-$VERSION-r$HEAD-arm64.zip" +rsync -e ssh -av --delete-after --no-owner --no-g --chmod=g+w --progress --exclude='.DS_Store' /Users/laurent/MAC_OS_X/ scorpio810@ssh.tuxfamily.org:/home/qet/qet-repository/builds/MAC_OS_X/arm64/ + +} fi + +else +echo -e "\033[1;33mExit.\033[m" + +fi