diff --git a/.docker/android_dev/tools/android-env.sh b/.docker/android_dev/tools/android-env.sh index 1847f3170e..a33259a4e4 100644 --- a/.docker/android_dev/tools/android-env.sh +++ b/.docker/android_dev/tools/android-env.sh @@ -8,43 +8,43 @@ export ANDROID_SDK=${ANDROID_HOME} export PATH=${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/tools/bin:${ANDROID_HOME}/emulator:${ANDROID_HOME}/bin: if [[ ! -z "$http_proxy" ]] || [[ ! -z "$https_proxy" ]]; then - export JAVA_OPTS="-Djava.net.useSystemProxies=true $JAVA_OPTS -Dhttp.noProxyHosts=${no_proxy}" - # This only works if there is a proxy listening on docker host machine and - # container is started with --net=host. No other options for now. Thanks - # google.... - export SDKMNGR_OPTS=" --proxy=http --proxy_host=127.0.0.1 --proxy_port=3128 --no_https " + export JAVA_OPTS="-Djava.net.useSystemProxies=true $JAVA_OPTS -Dhttp.noProxyHosts=${no_proxy}" + # This only works if there is a proxy listening on docker host machine and + # container is started with --net=host. No other options for now. Thanks + # google.... + export SDKMNGR_OPTS=" --proxy=http --proxy_host=127.0.0.1 --proxy_port=3128 --no_https " fi function print_header() { - figlet SBB CFF FFS - figlet welcome to - figlet andep - echo '' - echo '' - echo '' + figlet SBB CFF FFS + figlet welcome to + figlet andep + echo '' + echo '' + echo '' } function help() { - figlet "usage:" - echo "update_sdk: Updates the SDK" - echo "andep: Installs one or more android Packets." - echo " -Example: anddep \"platforms;android-26\"" - echo "help: Shows this help" - echo '' - echo '' - echo '' + figlet "usage:" + echo "update_sdk: Updates the SDK" + echo "andep: Installs one or more android Packets." + echo " -Example: anddep \"platforms;android-26\"" + echo "help: Shows this help" + echo '' + echo '' + echo '' } function update_sdk() { - android-accept-licenses.sh "sdkmanager ${SDKMNGR_OPTS} --update" + android-accept-licenses.sh "sdkmanager ${SDKMNGR_OPTS} --update" } function andep() { - if [ -z ${1} ]; then - help - return 1 - fi - android-accept-licenses.sh "sdkmanager ${SDKMNGR_OPTS} ${1}" + if [ -z ${1} ]; then + help + return 1 + fi + android-accept-licenses.sh "sdkmanager ${SDKMNGR_OPTS} ${1}" } export -f help diff --git a/.docker/android_dev/tools/android-sdk-update.sh b/.docker/android_dev/tools/android-sdk-update.sh index a28bc281c4..9eaab92aab 100755 --- a/.docker/android_dev/tools/android-sdk-update.sh +++ b/.docker/android_dev/tools/android-sdk-update.sh @@ -6,32 +6,29 @@ source /opt/android-sdk-linux/bin/android-env.sh built_in_sdk=1 -if [ $# -ge 0 ] && [ "$1" == "lazy-dl" ] -then - echo "Using Lazy Download Flavour" - built_in_sdk=0 -elif [ $# -ge 0 ] && [ "$1" == "built-in" ] -then - echo "Using Built-In SDK Flavour" - built_in_sdk=1 +if [ $# -ge 0 ] && [ "$1" == "lazy-dl" ]; then + echo "Using Lazy Download Flavour" + built_in_sdk=0 +elif [ $# -ge 0 ] && [ "$1" == "built-in" ]; then + echo "Using Built-In SDK Flavour" + built_in_sdk=1 else - echo "Please use either built-in or lazy-dl as parameter" - exit 1 + echo "Please use either built-in or lazy-dl as parameter" + exit 1 fi cd ${ANDROID_HOME} echo "Set ANDROID_HOME to ${ANDROID_HOME}" -if [ -f .bootstrapped ] -then - echo "SDK Tools already bootstrapped. Skipping initial setup" +if [ -f .bootstrapped ]; then + echo "SDK Tools already bootstrapped. Skipping initial setup" else - echo "Bootstrapping SDK-Tools" - mkdir -p cmdline-tools/latest/ \ - && curl -sSL http://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -o sdk-tools-linux.zip \ - && bsdtar xvf sdk-tools-linux.zip --strip-components=1 -C cmdline-tools/latest \ - && rm sdk-tools-linux.zip \ - && touch .bootstrapped + echo "Bootstrapping SDK-Tools" + mkdir -p cmdline-tools/latest/ && + curl -sSL http://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -o sdk-tools-linux.zip && + bsdtar xvf sdk-tools-linux.zip --strip-components=1 -C cmdline-tools/latest && + rm sdk-tools-linux.zip && + touch .bootstrapped fi echo "Make sure repositories.cfg exists" @@ -48,17 +45,15 @@ cp -v /opt/tools/*.sh ${ANDROID_HOME}/bin echo "Print sdkmanager version" sdkmanager --version - echo "Installing packages" -if [ $built_in_sdk -eq 1 ] -then - while read p; do - android-accept-licenses.sh "sdkmanager ${SDKMNGR_OPTS} ${p}" - done < /opt/tools/package-list-minimal.txt +if [ $built_in_sdk -eq 1 ]; then + while read p; do + android-accept-licenses.sh "sdkmanager ${SDKMNGR_OPTS} ${p}" + done &1 &` - if [[ "${bootcomplete}" =~ "" ]]; then - ((failcounter += 1)) - echo "Waiting for emulator to start" - if [[ ${failcounter} -gt ${maxfail} ]]; then - echo "Timeout ($timeout seconds) reached; failed to start emulator" - while pkill -9 "emulator" >/dev/null 2>&1; do - echo "Killing emulator process...." - pgrep "emulator" - done - echo "Process terminated" - pgrep "emulator" - exit 1 - fi - fi - sleep ${sleeptime} + bootcomplete=$(adb -e shell getprop dev.bootcomplete 2>&1 &) + if [[ "${bootcomplete}" =~ "" ]]; then + ((failcounter += 1)) + echo "Waiting for emulator to start" + if [[ ${failcounter} -gt ${maxfail} ]]; then + echo "Timeout ($timeout seconds) reached; failed to start emulator" + while pkill -9 "emulator" >/dev/null 2>&1; do + echo "Killing emulator process...." + pgrep "emulator" + done + echo "Process terminated" + pgrep "emulator" + exit 1 + fi + fi + sleep ${sleeptime} done echo "Emulator is ready" diff --git a/.docker/android_dev/tools/entrypoint.sh b/.docker/android_dev/tools/entrypoint.sh index dd818641d7..f28da13542 100755 --- a/.docker/android_dev/tools/entrypoint.sh +++ b/.docker/android_dev/tools/entrypoint.sh @@ -1,11 +1,11 @@ #!/bin/bash function checkbin() { - type -P su-exec + type -P su-exec } function su_mt_user() { - su android -c '"$0" "$@"' -- "$@" + su android -c '"$0" "$@"' -- "$@" } chown android:android /opt/android-sdk-linux @@ -13,14 +13,7 @@ chown android:android /opt/android-sdk-linux printenv if checkbin; then - exec su-exec android:android /opt/tools/android-sdk-update.sh "$@" + exec su-exec android:android /opt/tools/android-sdk-update.sh "$@" else - su_mt_user /opt/tools/android-sdk-update.sh ${1} + su_mt_user /opt/tools/android-sdk-update.sh ${1} fi - - - - - - - diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 00b8ead37c..d2721184b6 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -14,8 +14,11 @@ on: jobs: pre-commit: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: + - name: Install dependencies + run: sudo apt install -y shfmt + - uses: actions/github-script@v6 if: ${{ github.event.issue.pull_request }} id: get-pr diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index eeddb36a4f..b4c64ae700 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,6 +18,23 @@ repos: - id: check-added-large-files args: ['--maxkb=8000'] +- repo: local + hooks: +# - id: qmllint +# name: Run qmllint +# description: QML linter +# entry: qmllint +# language: system +# files: .*\.qml + + - id: shfmt + name: Run shfmt + description: shfmt Shell code formatter. + entry: shfmt -w + language: system + types: [file, shell] + exclude: .docker/android_dev/tools/android-accept-licenses.sh + # Shellcheck - repo: https://github.com/jumanjihouse/pre-commit-hooks rev: 2.1.5 diff --git a/platform/android/gradlew b/platform/android/gradlew index 91a7e269e1..456e5f2840 100755 --- a/platform/android/gradlew +++ b/platform/android/gradlew @@ -10,153 +10,153 @@ DEFAULT_JVM_OPTS="" APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=$(basename "$0") # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { - echo "$*" +warn() { + echo "$*" } -die ( ) { - echo - echo "$*" - echo - exit 1 +die() { + echo + echo "$*" + echo + exit 1 } # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; +case "$(uname)" in +CYGWIN*) + cygwin=true + ;; +Darwin*) + darwin=true + ;; +MINGW*) + msys=true + ;; esac # For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +if $cygwin; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=$(cygpath --unix "$JAVA_HOME") fi # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" # Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +while [ -h "$PRG" ]; do + ls=$(ls -ld "$PRG") + link=$(expr "$ls" : '.*-> \(.*\)$') + if expr "$link" : '/.*' >/dev/null; then + PRG="$link" + else + PRG=$(dirname "$PRG")"/$link" + fi done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" +SAVED="$(pwd)" +cd "$(dirname \"$PRG\")/" >&- +APP_HOME="$(pwd -P)" cd "$SAVED" >&- CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. -if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - if [ ! -x "$JAVACMD" ] ; then - die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME +if [ -n "$JAVA_HOME" ]; then + if [ -x "$JAVA_HOME/jre/sh/java" ]; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ]; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." - fi + fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if [ "$cygwin" = "false" -a "$darwin" = "false" ]; then + MAX_FD_LIMIT=$(ulimit -H -n) + if [ $? -eq 0 ]; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ]; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ]; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi fi # For Darwin, add options to specify how the application appears in the dock if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi # For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=$((i+1)) - done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac +if $cygwin; then + APP_HOME=$(cygpath --path --mixed "$APP_HOME") + CLASSPATH=$(cygpath --path --mixed "$CLASSPATH") + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=$(find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null) + SEP="" + for dir in $ROOTDIRSRAW; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ]; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@"; do + CHECK=$(echo "$arg" | egrep -c "$OURCYGPATTERN" -) + CHECK2=$(echo "$arg" | egrep -c "^-") ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ]; then ### Added a condition + eval $(echo args$i)=$(cygpath --path --ignore --mixed "$arg") + else + eval $(echo args$i)="\"$arg\"" + fi + i=$((i + 1)) + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac fi # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules function splitJvmOpts() { - JVM_OPTS=("$@") + JVM_OPTS=("$@") } eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" diff --git a/scripts/build-vcpkg.sh b/scripts/build-vcpkg.sh index a0a2160c73..39e0aa882b 100755 --- a/scripts/build-vcpkg.sh +++ b/scripts/build-vcpkg.sh @@ -16,30 +16,30 @@ echo "Package name ${APP_PACKAGE_NAME}" # Configure and install deps cmake -S "${SOURCE_DIR}" \ - -B "${CMAKE_BUILD_DIR}" \ - -G Ninja \ - -D BUILD_WITH_QT6=ON \ - -D CMAKE_PREFIX_PATH=${Qt6_DIR} \ - -D QT_HOST_PATH=/home/devel/6.5.2/gcc_64 \ - -D QT_HOST_PATH_CMAKE_DIR=/home/devel/6.5.2/gcc_64/lib/cmake \ - -D VCPKG_TARGET_TRIPLET="${triplet}" \ - -D SYSTEM_QT=ON \ - -D ANDROID_NDK_VERSION="${ANDROID_NDK_VERSION}" \ - -D ANDROID_SDK=/opt/android-sdk-linux \ - -D ANDROID_SDK_ROOT=/opt/android-sdk-linux \ - -D ANDROID_BUILD_TOOLS_VERSION="${ANDROID_BUILD_TOOLS_VERSION}" \ - -D WITH_SPIX=OFF \ - -D APP_VERSION="v1.0.0" \ - -D APK_VERSION_CODE="${APK_VERSION_CODE}" \ - -D APP_VERSION_STR="${APP_VERSION_STR}" \ - -D APP_PACKAGE_NAME="${APP_PACKAGE_NAME}" \ - -D APP_ICON="${APP_ICON}" \ - -D APP_NAME="${APP_NAME}" \ - ${NUGET_TOKEN:+-D NUGET_TOKEN=${NUGET_TOKEN}} \ - ${NUGET_USERNAME:+-D NUGET_USERNAME=${NUGET_USERNAME}} + -B "${CMAKE_BUILD_DIR}" \ + -G Ninja \ + -D BUILD_WITH_QT6=ON \ + -D CMAKE_PREFIX_PATH=${Qt6_DIR} \ + -D QT_HOST_PATH=/home/devel/6.5.2/gcc_64 \ + -D QT_HOST_PATH_CMAKE_DIR=/home/devel/6.5.2/gcc_64/lib/cmake \ + -D VCPKG_TARGET_TRIPLET="${triplet}" \ + -D SYSTEM_QT=ON \ + -D ANDROID_NDK_VERSION="${ANDROID_NDK_VERSION}" \ + -D ANDROID_SDK=/opt/android-sdk-linux \ + -D ANDROID_SDK_ROOT=/opt/android-sdk-linux \ + -D ANDROID_BUILD_TOOLS_VERSION="${ANDROID_BUILD_TOOLS_VERSION}" \ + -D WITH_SPIX=OFF \ + -D APP_VERSION="v1.0.0" \ + -D APK_VERSION_CODE="${APK_VERSION_CODE}" \ + -D APP_VERSION_STR="${APP_VERSION_STR}" \ + -D APP_PACKAGE_NAME="${APP_PACKAGE_NAME}" \ + -D APP_ICON="${APP_ICON}" \ + -D APP_NAME="${APP_NAME}" \ + ${NUGET_TOKEN:+-D NUGET_TOKEN=${NUGET_TOKEN}} \ + ${NUGET_USERNAME:+-D NUGET_USERNAME=${NUGET_USERNAME}} # Build app cmake --build "${CMAKE_BUILD_DIR}" # Package app -cmake --build "${CMAKE_BUILD_DIR}" --target bundle --config Release +cmake --build "${CMAKE_BUILD_DIR}" --target bundle --config Release diff --git a/scripts/build.sh b/scripts/build.sh index 50c4ba9c42..9fba3b1099 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -2,7 +2,7 @@ set -e -SRC_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"/.. +SRC_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"/.. export APK_VERSION_CODE=${APK_VERSION_CODE:-1} export APP_VERSION_STR=${APP_VERSION_STR:-dev} @@ -13,22 +13,22 @@ docker build ${SRC_DIR}/.docker/android_dev -t qfield_and_dev docker run -it --rm qfield_and_dev env docker run -it --rm \ - -v "$SRC_DIR":/usr/src/qfield:Z \ - $(if [ -n "$CACHE_DIR" ]; then echo "-v $CACHE_DIR:/io/.cache:Z"; fi) \ - -e triplet=${triplet} \ - -e STOREPASS \ - -e KEYNAME \ - -e KEYPASS \ - -e APP_PACKAGE_NAME \ - -e APP_NAME \ - -e APP_ICON \ - -e APP_VERSION \ - -e APP_VERSION_STR \ - -e APK_VERSION_CODE \ - -e NUGET_TOKEN \ - -e NUGET_USERNAME \ - -e USER_GID=$(stat -c "%g" .) \ - -e USER_UID=$(stat -c "%u" .) \ - -e VCPKG_BINARY_SOURCES=clear\;files,/io/.cache,readwrite \ - qfield_and_dev \ - /usr/src/qfield/scripts/build-vcpkg.sh + -v "$SRC_DIR":/usr/src/qfield:Z \ + $(if [ -n "$CACHE_DIR" ]; then echo "-v $CACHE_DIR:/io/.cache:Z"; fi) \ + -e triplet=${triplet} \ + -e STOREPASS \ + -e KEYNAME \ + -e KEYPASS \ + -e APP_PACKAGE_NAME \ + -e APP_NAME \ + -e APP_ICON \ + -e APP_VERSION \ + -e APP_VERSION_STR \ + -e APK_VERSION_CODE \ + -e NUGET_TOKEN \ + -e NUGET_USERNAME \ + -e USER_GID=$(stat -c "%g" .) \ + -e USER_UID=$(stat -c "%u" .) \ + -e VCPKG_BINARY_SOURCES=clear\;files,/io/.cache,readwrite \ + qfield_and_dev \ + /usr/src/qfield/scripts/build-vcpkg.sh diff --git a/scripts/ci/docker_pull.sh b/scripts/ci/docker_pull.sh index e7d4f748f3..0112dbd3b6 100755 --- a/scripts/ci/docker_pull.sh +++ b/scripts/ci/docker_pull.sh @@ -3,4 +3,3 @@ echo "::group::docker-pull" docker pull opengisch/qfield-sdk:${QFIELD_SDK_VERSION} echo "::endgroup::" - diff --git a/scripts/ci/env_gh.sh b/scripts/ci/env_gh.sh index 9e3227c18f..b4dc70b3c8 100755 --- a/scripts/ci/env_gh.sh +++ b/scripts/ci/env_gh.sh @@ -1,27 +1,26 @@ #!/bin/bash -e if [[ ${GITHUB_REF} == *"refs/heads"* ]]; then - TMP_CI_BRANCH=${GITHUB_REF#refs/heads/}; + TMP_CI_BRANCH=${GITHUB_REF#refs/heads/} elif [[ ${GITHUB_REF} == *"refs/tags"* ]]; then - TMP_CI_TAG=${GITHUB_REF#refs/tags/} - TMP_CI_BRANCH=${TMP_CI_TAG} + TMP_CI_TAG=${GITHUB_REF#refs/tags/} + TMP_CI_BRANCH=${TMP_CI_TAG} else - TMP_CI_BRANCH=${TMP_CI_BRANCH:=""} - TMP_CI_TAG=${TMP_CI_TAG:=""} + TMP_CI_BRANCH=${TMP_CI_BRANCH:=""} + TMP_CI_TAG=${TMP_CI_TAG:=""} fi TMP_CI_COMMIT_BEFORE=$(jq --raw-output .before "${GITHUB_EVENT_PATH}") TMP_CI_COMMIT_AFTER=$(jq --raw-output .after "${GITHUB_EVENT_PATH}") TMP_CI_PULL_REQUEST_NUMBER=${TMP_CI_PULL_REQUEST_NUMBER:=$(jq --raw-output ".pull_request.number" "${GITHUB_EVENT_PATH}")} - # -- SC2004: $/${} is unnecessary on arithmetic variables. -if (( TMP_CI_PULL_REQUEST_NUMBER > 0 )); then - TMP_CI_PULL_REQUEST=true - TMP_CI_UPLOAD_ARTIFACT_ID=${TMP_CI_PULL_REQUEST_NUMBER} +if ((TMP_CI_PULL_REQUEST_NUMBER > 0)); then + TMP_CI_PULL_REQUEST=true + TMP_CI_UPLOAD_ARTIFACT_ID=${TMP_CI_PULL_REQUEST_NUMBER} else - TMP_CI_PULL_REQUEST=false - TMP_CI_UPLOAD_ARTIFACT_ID=${TMP_CI_BRANCH} + TMP_CI_PULL_REQUEST=false + TMP_CI_UPLOAD_ARTIFACT_ID=${TMP_CI_BRANCH} fi export CI_BUILD_DIR=${CI_BUILD_DIR:=${GITHUB_WORKSPACE}} @@ -35,49 +34,46 @@ export CI_COMMIT_RANGE=${CI_COMMIT_RANGE:="${TMP_CI_COMMIT_BEFORE}...${TMP_CI_CO export CI_REPO_SLUG=${CI_REPO_SLUG:=${GITHUB_REPOSITORY}} export CI_UPLOAD_ARTIFACT_ID=${CI_UPLOAD_ARTIFACT_ID:=${TMP_CI_UPLOAD_ARTIFACT_ID}} export CI_RUN_NUMBER=${GITHUB_RUN_NUMBER} -if [[ "${CI_TAG}" || ${GITHUB_REF} == "master" && ${CI_PULL_REQUEST} == "false" ]]; -then - export CI_USE_IOS_DIST_CERT=1 +if [[ "${CI_TAG}" || ${GITHUB_REF} == "master" && ${CI_PULL_REQUEST} == "false" ]]; then + export CI_USE_IOS_DIST_CERT=1 else - export CI_USE_IOS_DIST_CERT= + export CI_USE_IOS_DIST_CERT= fi -if [[ "${CI_TAG}" ]]; -then - export CI_PACKAGE_FILE_SUFFIX="${CI_TAG}" - export APP_PACKAGE_NAME_SUFFIX="" +if [[ "${CI_TAG}" ]]; then + export CI_PACKAGE_FILE_SUFFIX="${CI_TAG}" + export APP_PACKAGE_NAME_SUFFIX="" else - export CI_PACKAGE_FILE_SUFFIX="dev-${CI_UPLOAD_ARTIFACT_ID}-${CI_COMMIT}" - export APP_PACKAGE_NAME_SUFFIX="_dev" + export CI_PACKAGE_FILE_SUFFIX="dev-${CI_UPLOAD_ARTIFACT_ID}-${CI_COMMIT}" + export APP_PACKAGE_NAME_SUFFIX="_dev" fi -if [[ ${ALL_FILES_ACCESS} == "ON" ]]; -then - export APP_PACKAGE_NAME="qfield_all_access${APP_PACKAGE_NAME_SUFFIX}" - export CI_PACKAGE_NAME="qfield_all_access" +if [[ ${ALL_FILES_ACCESS} == "ON" ]]; then + export APP_PACKAGE_NAME="qfield_all_access${APP_PACKAGE_NAME_SUFFIX}" + export CI_PACKAGE_NAME="qfield_all_access" else - export APP_PACKAGE_NAME="qfield${APP_PACKAGE_NAME_SUFFIX}" - export CI_PACKAGE_NAME="qfield" + export APP_PACKAGE_NAME="qfield${APP_PACKAGE_NAME_SUFFIX}" + export CI_PACKAGE_NAME="qfield" fi { - echo "CI_BUILD_DIR=${CI_BUILD_DIR}" - echo "CI_COMMIT=${CI_COMMIT}" - echo "CI_BRANCH=${CI_BRANCH}" - echo "CI_TAG=${CI_TAG}" - echo "CI_SECURE_ENV_VARS=${CI_SECURE_ENV_VARS}" - echo "CI_PULL_REQUEST=${CI_PULL_REQUEST}" - echo "CI_PULL_REQUEST_NUMBER=${CI_PULL_REQUEST_NUMBER}" - echo "CI_PULL_REQUEST_BRANCH=${CI_PULL_REQUEST_BRANCH}" - echo "CI_COMMIT_RANGE=${CI_COMMIT_RANGE}" - echo "CI_REPO_SLUG=${CI_REPO_SLUG}" - echo "CI_UPLOAD_ARTIFACT_ID=${CI_UPLOAD_ARTIFACT_ID}" - echo "CI_PACKAGE_NAME=${CI_PACKAGE_NAME}" - echo "CI_PACKAGE_FILE_SUFFIX=${CI_PACKAGE_FILE_SUFFIX}" - echo "CI_RUN_NUMBER=${CI_RUN_NUMBER}" - echo "CI_USE_IOS_DIST_CERT=${CI_USE_IOS_DIST_CERT}" - echo "APP_PACKAGE_NAME=${APP_PACKAGE_NAME}" -} >> $GITHUB_ENV + echo "CI_BUILD_DIR=${CI_BUILD_DIR}" + echo "CI_COMMIT=${CI_COMMIT}" + echo "CI_BRANCH=${CI_BRANCH}" + echo "CI_TAG=${CI_TAG}" + echo "CI_SECURE_ENV_VARS=${CI_SECURE_ENV_VARS}" + echo "CI_PULL_REQUEST=${CI_PULL_REQUEST}" + echo "CI_PULL_REQUEST_NUMBER=${CI_PULL_REQUEST_NUMBER}" + echo "CI_PULL_REQUEST_BRANCH=${CI_PULL_REQUEST_BRANCH}" + echo "CI_COMMIT_RANGE=${CI_COMMIT_RANGE}" + echo "CI_REPO_SLUG=${CI_REPO_SLUG}" + echo "CI_UPLOAD_ARTIFACT_ID=${CI_UPLOAD_ARTIFACT_ID}" + echo "CI_PACKAGE_NAME=${CI_PACKAGE_NAME}" + echo "CI_PACKAGE_FILE_SUFFIX=${CI_PACKAGE_FILE_SUFFIX}" + echo "CI_RUN_NUMBER=${CI_RUN_NUMBER}" + echo "CI_USE_IOS_DIST_CERT=${CI_USE_IOS_DIST_CERT}" + echo "APP_PACKAGE_NAME=${APP_PACKAGE_NAME}" +} >>$GITHUB_ENV echo "" echo "CI_BUILD_DIR: ${CI_BUILD_DIR}" diff --git a/scripts/ci/generate-version-details.sh b/scripts/ci/generate-version-details.sh index 521c043486..94765e9899 100755 --- a/scripts/ci/generate-version-details.sh +++ b/scripts/ci/generate-version-details.sh @@ -2,74 +2,73 @@ set -e - CURRENT_COMMIT=$(git rev-parse --short HEAD) echo "CURRENT_COMMIT: ${CURRENT_COMMIT}" -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" if [[ -n ${CI_TAG} ]]; then - echo "Building release from tag" - APP_VERSION_NAME=$(cat ${DIR}/../../RELEASE_NAME) - # v1.2.3 Release Name -> 1.2.3 Release Name - # v1.2.3-rc4 Release Name -> 1.2.3 RC4 Release Name - APP_VERSION_STR="$(app_version_str ${CI_TAG}) - ${APP_VERSION_NAME}" - # v1.2.3-rc4 arm7 -> 0102030400 - APK_VERSION_CODE=$(apk_version_code "${CI_TAG}" "${TRIPLET}") - # ^-- SC2155: Declare and assign separately to avoid masking return values. + echo "Building release from tag" + APP_VERSION_NAME=$(cat ${DIR}/../../RELEASE_NAME) + # v1.2.3 Release Name -> 1.2.3 Release Name + # v1.2.3-rc4 Release Name -> 1.2.3 RC4 Release Name + APP_VERSION_STR="$(app_version_str ${CI_TAG}) - ${APP_VERSION_NAME}" + # v1.2.3-rc4 arm7 -> 0102030400 + APK_VERSION_CODE=$(apk_version_code "${CI_TAG}" "${TRIPLET}") + # ^-- SC2155: Declare and assign separately to avoid masking return values. - if [[ ${ALL_FILES_ACCESS} == "ON" ]]; then - export APP_NAME="QField~" - export APP_PACKAGE_NAME="qfield_all_access" - else - export APP_NAME="QField" - export APP_PACKAGE_NAME="qfield" - fi - export APP_ICON="qfield_logo" - export APP_VERSION="${CI_TAG}" # v1.2.3 or v1.2.3-rc4 - export APP_VERSION_STR - export APK_VERSION_CODE - export APP_ENV="prod" + if [[ ${ALL_FILES_ACCESS} == "ON" ]]; then + export APP_NAME="QField~" + export APP_PACKAGE_NAME="qfield_all_access" + else + export APP_NAME="QField" + export APP_PACKAGE_NAME="qfield" + fi + export APP_ICON="qfield_logo" + export APP_VERSION="${CI_TAG}" # v1.2.3 or v1.2.3-rc4 + export APP_VERSION_STR + export APK_VERSION_CODE + export APP_ENV="prod" elif [[ ${CI_PULL_REQUEST} = false ]]; then - echo "Building dev (nightly)" - TRIPLET_NUMBER=$(arch_to_build_number ${TRIPLET}) - # get numbers of masters commits - CUSTOM_APP_PACKAGE_NAME=$(echo ${NIGHTLY_PACKAGE_NAME} | awk '{print $NF}' FS=.) + echo "Building dev (nightly)" + TRIPLET_NUMBER=$(arch_to_build_number ${TRIPLET}) + # get numbers of masters commits + CUSTOM_APP_PACKAGE_NAME=$(echo ${NIGHTLY_PACKAGE_NAME} | awk '{print $NF}' FS=.) - if [[ ${ALL_FILES_ACCESS} == "ON" ]]; then - export APP_NAME="${CUSTOM_APP_NAME:-QField~ Dev}" - export APP_PACKAGE_NAME="${CUSTOM_APP_PACKAGE_NAME:-qfield_all_access_dev}" - else - export APP_NAME="${CUSTOM_APP_NAME:-QField Dev}" - export APP_PACKAGE_NAME="${CUSTOM_APP_PACKAGE_NAME:-qfield_dev}" - fi - export APP_ICON="qfield_logo_beta" - export APP_VERSION="" - # take 0 + (2020400 + number of CI runs) + arch(triplet) number - # 020204000 has no meaning - it's just where we had to start - # max = 2100000000 - export APP_VERSION_STR="${CI_BRANCH}-dev" - if [[ -n ${CUSTOM_APP_PACKAGE_NAME} ]]; then - export APK_VERSION_CODE="${CI_RUN_NUMBER}${TRIPLET_NUMBER}" - else - export APK_VERSION_CODE=0$((2020400+CI_RUN_NUMBER))${TRIPLET_NUMBER} - fi - export APP_ENV="dev" + if [[ ${ALL_FILES_ACCESS} == "ON" ]]; then + export APP_NAME="${CUSTOM_APP_NAME:-QField~ Dev}" + export APP_PACKAGE_NAME="${CUSTOM_APP_PACKAGE_NAME:-qfield_all_access_dev}" + else + export APP_NAME="${CUSTOM_APP_NAME:-QField Dev}" + export APP_PACKAGE_NAME="${CUSTOM_APP_PACKAGE_NAME:-qfield_dev}" + fi + export APP_ICON="qfield_logo_beta" + export APP_VERSION="" + # take 0 + (2020400 + number of CI runs) + arch(triplet) number + # 020204000 has no meaning - it's just where we had to start + # max = 2100000000 + export APP_VERSION_STR="${CI_BRANCH}-dev" + if [[ -n ${CUSTOM_APP_PACKAGE_NAME} ]]; then + export APK_VERSION_CODE="${CI_RUN_NUMBER}${TRIPLET_NUMBER}" + else + export APK_VERSION_CODE=0$((2020400 + CI_RUN_NUMBER))${TRIPLET_NUMBER} + fi + export APP_ENV="dev" else - echo "Building pull request beta" - if [[ ${ALL_FILES_ACCESS} == "ON" ]]; then - export APP_NAME="QField~ Beta ${CI_PULL_REQUEST_NUMBER}" - export APP_PACKAGE_NAME="qfield_all_access_beta" - else - export APP_NAME="QField Beta ${CI_PULL_REQUEST_NUMBER}" - export APP_PACKAGE_NAME="qfield_beta" - fi - export APP_ICON="qfield_logo_pr" - export APP_VERSION="" - export APP_VERSION_STR="PR${CI_PULL_REQUEST_NUMBER}" - export APK_VERSION_CODE="1" - export APP_ENV="pr" + echo "Building pull request beta" + if [[ ${ALL_FILES_ACCESS} == "ON" ]]; then + export APP_NAME="QField~ Beta ${CI_PULL_REQUEST_NUMBER}" + export APP_PACKAGE_NAME="qfield_all_access_beta" + else + export APP_NAME="QField Beta ${CI_PULL_REQUEST_NUMBER}" + export APP_PACKAGE_NAME="qfield_beta" + fi + export APP_ICON="qfield_logo_pr" + export APP_VERSION="" + export APP_VERSION_STR="PR${CI_PULL_REQUEST_NUMBER}" + export APK_VERSION_CODE="1" + export APP_ENV="pr" fi echo "Arch number: ${TRIPLET_NUMBER}" @@ -81,10 +80,9 @@ echo "APP_VERSION_STR: ${APP_VERSION_STR}" echo "ANDROID_NDK_PLATFORM : ${ANDROID_NDK_PLATFORM}" echo "APK_VERSION_CODE: ${APK_VERSION_CODE}" - # safe guard to avoid too big number # remove leading 0 to avoid var recognized as an octal number -if [[ ( $(echo "${APK_VERSION_CODE}" | sed 's/^0*//') -gt 2000000000 ) ]] ; then - echo "APK_VERSION_CODE is getting too big!" - exit 1 +if [[ ($(echo "${APK_VERSION_CODE}" | sed 's/^0*//') -gt 2000000000) ]]; then + echo "APK_VERSION_CODE is getting too big!" + exit 1 fi diff --git a/scripts/ci/git-full-fetch.sh b/scripts/ci/git-full-fetch.sh index b84f368ac1..1e383cf3b5 100755 --- a/scripts/ci/git-full-fetch.sh +++ b/scripts/ci/git-full-fetch.sh @@ -10,4 +10,3 @@ git fetch --tags # checkout the tagged commit git checkout -qf ${CI_TAG} - diff --git a/scripts/ci/prepare-release.sh b/scripts/ci/prepare-release.sh index 6ca8d2c449..a9029d55a5 100755 --- a/scripts/ci/prepare-release.sh +++ b/scripts/ci/prepare-release.sh @@ -7,11 +7,10 @@ set -e # if on master => create release branch # if TX resource doesn't exist => create it from master -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" source ${DIR}/../version_number.sh - if [[ -z ${CI_TAG} ]]; then - echo "we should not be here without a CI_TAG" - exit 1 + echo "we should not be here without a CI_TAG" + exit 1 fi diff --git a/scripts/ci/pull_translations.sh b/scripts/ci/pull_translations.sh index c22e2d5c50..e42804c3b8 100755 --- a/scripts/ci/pull_translations.sh +++ b/scripts/ci/pull_translations.sh @@ -10,20 +10,19 @@ echo "::endgroup::" echo "::group::android specific translations" for x in platform/android/res/values-*_*; do - # $x is evaluated to the glob string literal when no dir is found - if [[ -d $x ]] - then - rm -rf $(echo $x | sed -e 's/_/-r/') - mv $x $(echo $x | sed -e 's/_/-r/') - fi + # $x is evaluated to the glob string literal when no dir is found + if [[ -d $x ]]; then + rm -rf $(echo $x | sed -e 's/_/-r/') + mv $x $(echo $x | sed -e 's/_/-r/') + fi done find platform/android/res/values-* -name strings.xml -type f -print0 | while read -d $'\0' file; do - # .bak is a workaround GNU & BSD/macOS compatibility - sed -i.bak 's//dev/null && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" SOURCE_DIR=${DIR}/../.. source ${SOURCE_DIR}/scripts/version_number.sh @@ -8,6 +8,6 @@ lupdate -recursive ${SOURCE_DIR} -ts ${SOURCE_DIR}/i18n/qfield_en.ts # release only if the branch is master if [[ ${CI_BRANCH} = master ]]; then - # push source files only - ./tx push --source + # push source files only + ./tx push --source fi diff --git a/scripts/ci/upload_artifacts.sh b/scripts/ci/upload_artifacts.sh index fccc88d304..5f7d82357a 100755 --- a/scripts/ci/upload_artifacts.sh +++ b/scripts/ci/upload_artifacts.sh @@ -3,26 +3,25 @@ set -e # If we have secure env vars and are in either a pull request or a tag, we need to upload artifacts -if [[ "${S3CFG}" ]]; -then - echo -e "\e[31mAbout to upload build artifacts\e[0m" +if [[ "${S3CFG}" ]]; then + echo -e "\e[31mAbout to upload build artifacts\e[0m" - #FILENAME_AAB="${CI_PACKAGE_NAME}-${CI_PACKAGE_FILE_SUFFIX}-${TRIPLET}.aab" - FILENAME_APK="${CI_PACKAGE_NAME}-${CI_PACKAGE_FILE_SUFFIX}-${TRIPLET}.apk" + #FILENAME_AAB="${CI_PACKAGE_NAME}-${CI_PACKAGE_FILE_SUFFIX}-${TRIPLET}.aab" + FILENAME_APK="${CI_PACKAGE_NAME}-${CI_PACKAGE_FILE_SUFFIX}-${TRIPLET}.apk" - # skip AAB upload until we need it - #mv ${CMAKE_BUILD_DIR}/android-build/build/outputs/bundle/release/android-build-release.aab /tmp/${FILENAME_AAB} - #echo "${S3CFG}" > ~/.s3cfg - #s3cmd put --acl-public /tmp/${FILENAME_AAB} s3://qfieldapks/ci-builds/${FILENAME_AAB} - #echo -e "\e[31mUploaded to https://sos-ch-dk-2.exo.io/qfieldapks/ci-builds/${FILENAME_AAB} \e[0m" - #s3cmd modify --add-header=content-type:application/octet-stream s3://qfieldapks/ci-builds/${FILENAME_AAB} - #echo -e "\e[31mcontent-type modified \e[0m" + # skip AAB upload until we need it + #mv ${CMAKE_BUILD_DIR}/android-build/build/outputs/bundle/release/android-build-release.aab /tmp/${FILENAME_AAB} + #echo "${S3CFG}" > ~/.s3cfg + #s3cmd put --acl-public /tmp/${FILENAME_AAB} s3://qfieldapks/ci-builds/${FILENAME_AAB} + #echo -e "\e[31mUploaded to https://sos-ch-dk-2.exo.io/qfieldapks/ci-builds/${FILENAME_AAB} \e[0m" + #s3cmd modify --add-header=content-type:application/octet-stream s3://qfieldapks/ci-builds/${FILENAME_AAB} + #echo -e "\e[31mcontent-type modified \e[0m" - mv ${CMAKE_BUILD_DIR}/src/app/android-build/build/outputs/apk/release/android-build-release-signed.apk /tmp/${FILENAME_APK} - echo "${S3CFG}" > ~/.s3cfg - s3cmd put --acl-public -m 'application/vnd.android.package-archive' /tmp/${FILENAME_APK} s3://qfieldapks/ci-builds/${FILENAME_APK} - echo -e "\e[31mUploaded to https://sos-ch-dk-2.exo.io/qfieldapks/ci-builds/${FILENAME_APK} \e[0m" - rm ~/.s3cfg + mv ${CMAKE_BUILD_DIR}/src/app/android-build/build/outputs/apk/release/android-build-release-signed.apk /tmp/${FILENAME_APK} + echo "${S3CFG}" >~/.s3cfg + s3cmd put --acl-public -m 'application/vnd.android.package-archive' /tmp/${FILENAME_APK} s3://qfieldapks/ci-builds/${FILENAME_APK} + echo -e "\e[31mUploaded to https://sos-ch-dk-2.exo.io/qfieldapks/ci-builds/${FILENAME_APK} \e[0m" + rm ~/.s3cfg else - echo -e "Not uploading artifacts ..." + echo -e "Not uploading artifacts ..." fi diff --git a/scripts/compare_qgisquick.sh b/scripts/compare_qgisquick.sh index f821c2791a..ce1e4dd59d 100755 --- a/scripts/compare_qgisquick.sh +++ b/scripts/compare_qgisquick.sh @@ -6,15 +6,14 @@ FILE=$1 QGIS_SRC=~/opt/qgis/QGIS OUT_PATH=~/Documents/temp/quick -CURDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +CURDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" mkdir -p ${OUT_PATH} cp -R ${QGIS_SRC}/src/quickgui/* ${OUT_PATH} - for f in $(find ${OUT_PATH} -type f); do - perl -i -pe 's/^( *\*\n)? *\* \\since QGIS 3.*//igs' $f - gsed -i -r '/^ *\* \\ingroup quick/d;' $f + perl -i -pe 's/^( *\*\n)? *\* \\since QGIS 3.*//igs' $f + gsed -i -r '/^ *\* \\ingroup quick/d;' $f gsed -i -r '/#include "qgis_quick.h"/d;' $f gsed -i -r 's/^#include "(qgs[^"]+)"/#include <\1>/; s/QUICK_EXPORT //;' $f gsed -i -r 's/QUICK_EXPORT //;' $f @@ -24,5 +23,5 @@ for f in $(find ${OUT_PATH} -type f); do done echo "running: meld ${CURDIR}/../src/qgsquick/${FILE} ${OUT_PATH}/${FILE} &" if [[ -n ${FILE} ]]; then - meld ${CURDIR}/../src/qgsquick/${FILE} ${OUT_PATH}/${FILE} & + meld ${CURDIR}/../src/qgsquick/${FILE} ${OUT_PATH}/${FILE} & fi diff --git a/scripts/copy-material-icons.sh b/scripts/copy-material-icons.sh index 01523d8f81..a8881daff4 100755 --- a/scripts/copy-material-icons.sh +++ b/scripts/copy-material-icons.sh @@ -1,6 +1,5 @@ #!/bin/bash -for size in "mdpi" "hdpi" "xhdpi" "xxhdpi" "xxxhdpi" -do - cp ../../material-design-icons/$1/drawable-$size/ic_$2_$3_$4dp.png images/themes/qfield/$size +for size in "mdpi" "hdpi" "xhdpi" "xxhdpi" "xxxhdpi"; do + cp ../../material-design-icons/$1/drawable-$size/ic_$2_$3_$4dp.png images/themes/qfield/$size done diff --git a/scripts/cppcheck.sh b/scripts/cppcheck.sh index c384a4403f..eee841d467 100755 --- a/scripts/cppcheck.sh +++ b/scripts/cppcheck.sh @@ -4,14 +4,14 @@ set -eu SCRIPT_DIR=$(dirname "$0") case $SCRIPT_DIR in - "/"*) - ;; - ".") - SCRIPT_DIR=$(pwd) - ;; - *) - SCRIPT_DIR=$(pwd)/$(dirname "$0") - ;; +"/"*) ;; + +".") + SCRIPT_DIR=$(pwd) + ;; +*) + SCRIPT_DIR=$(pwd)/$(dirname "$0") + ;; esac LOG_FILE=/tmp/cppcheck_qgis.txt @@ -20,46 +20,46 @@ rm -f ${LOG_FILE} echo "Checking ${SCRIPT_DIR}/../src ..." cppcheck --library=qt.cfg --inline-suppr \ - --template='{file}:{line},{severity},{id},{message}' \ - --enable=all --inconclusive --std=c++11 \ - -DPROJ_VERSION_MAJOR=6 \ - -USIP_RUN \ - -DSIP_TRANSFER= \ - -DSIP_TRANSFERTHIS= \ - -DSIP_INOUT= \ - -DSIP_OUT= \ - -DQ_FLAG= \ - -D_QGIS_VERSION_INT=32600 \ - -j $(nproc) \ - -isrc/qml \ - ${SCRIPT_DIR}/../src \ - >>${LOG_FILE} 2>&1 & + --template='{file}:{line},{severity},{id},{message}' \ + --enable=all --inconclusive --std=c++11 \ + -DPROJ_VERSION_MAJOR=6 \ + -USIP_RUN \ + -DSIP_TRANSFER= \ + -DSIP_TRANSFERTHIS= \ + -DSIP_INOUT= \ + -DSIP_OUT= \ + -DQ_FLAG= \ + -D_QGIS_VERSION_INT=32600 \ + -j $(nproc) \ + -isrc/qml \ + ${SCRIPT_DIR}/../src \ + >>${LOG_FILE} 2>&1 & PID=$! while kill -0 $PID 2>/dev/null; do - printf "." - sleep 1 + printf "." + sleep 1 done echo " done" if ! wait $PID; then - echo "cppcheck could not be started" - exit 1 + echo "cppcheck could not be started" + exit 1 fi ret_code=0 for category in "error" "style" "performance" "warning" "clarifyCalculation" "portability"; do - if grep "${category}," ${LOG_FILE} >/dev/null; then - echo "ERROR: Issues in '${category}' category found:" - grep "${category}," ${LOG_FILE} - echo "" - echo "${category} check failed !" - ret_code=1 - fi + if grep "${category}," ${LOG_FILE} >/dev/null; then + echo "ERROR: Issues in '${category}' category found:" + grep "${category}," ${LOG_FILE} + echo "" + echo "${category} check failed !" + ret_code=1 + fi done if [ ${ret_code} = 0 ]; then - echo "cppcheck succeeded" + echo "cppcheck succeeded" fi exit ${ret_code} diff --git a/scripts/create-images.sh b/scripts/create-images.sh index 6ecd847ab1..18c883b0c2 100755 --- a/scripts/create-images.sh +++ b/scripts/create-images.sh @@ -2,48 +2,46 @@ SKIP_EXISTING=FALSE -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" if [[ -z $1 ]]; then - FILES="${DIR}/../images/themes/qfield/nodpi/$1*.svg" + FILES="${DIR}/../images/themes/qfield/nodpi/$1*.svg" else - FILES=$1 + FILES=$1 fi if [[ -z $2 ]]; then - DESTINATION_PATH=${DIR}/../images/themes/qfield + DESTINATION_PATH=${DIR}/../images/themes/qfield else - DESTINATION_PATH=${DIR}/../android/res - PREFIX="drawable-" + DESTINATION_PATH=${DIR}/../android/res + PREFIX="drawable-" fi -for f in $FILES -do - filename=$(basename "$f") - filename="${filename%.*}" - echo $filename - for size in "mdpi" "hdpi" "xhdpi" "xxhdpi" "xxxhdpi" - do - case $size in - mdpi) - res=24 - ;; - hdpi) - res=36 - ;; - xhdpi) - res=48 - ;; - xxhdpi) - res=72 - ;; - xxxhdpi) - res=96 - ;; - esac - DEST_FILE=${DESTINATION_PATH}/${PREFIX}${size}/$filename.png - if [[ ! -f ${DEST_FILE} ]] || [[ ${SKIP_EXISTING} != TRUE ]]; then - inkscape -z -o ${DEST_FILE} -w $res -h $res $f - else - echo " skipping" - fi - done +for f in $FILES; do + filename=$(basename "$f") + filename="${filename%.*}" + echo $filename + for size in "mdpi" "hdpi" "xhdpi" "xxhdpi" "xxxhdpi"; do + case $size in + mdpi) + res=24 + ;; + hdpi) + res=36 + ;; + xhdpi) + res=48 + ;; + xxhdpi) + res=72 + ;; + xxxhdpi) + res=96 + ;; + esac + DEST_FILE=${DESTINATION_PATH}/${PREFIX}${size}/$filename.png + if [[ ! -f ${DEST_FILE} ]] || [[ ${SKIP_EXISTING} != TRUE ]]; then + inkscape -z -o ${DEST_FILE} -w $res -h $res $f + else + echo " skipping" + fi + done done diff --git a/scripts/create-qt-translations.sh b/scripts/create-qt-translations.sh index 6829297a5c..145500d191 100755 --- a/scripts/create-qt-translations.sh +++ b/scripts/create-qt-translations.sh @@ -2,17 +2,15 @@ GITDIR=$(git rev-parse --show-toplevel) -for LANG in "ca" "de" "en" "es" "fi" "fr" "gl" "hu" "it" "lt" "mn" "nl" "pl" "pt" "ro" "uk" "zh" -do - langfiles="$QTDIR/android_armv7/translations/*_${LANG}.qm" +for LANG in "ca" "de" "en" "es" "fi" "fr" "gl" "hu" "it" "lt" "mn" "nl" "pl" "pt" "ro" "uk" "zh"; do + langfiles="$QTDIR/android_armv7/translations/*_${LANG}.qm" - echo "Translating $LANG ..." - echo " $langfiles" + echo "Translating $LANG ..." + echo " $langfiles" - if [ -n "$langfiles" ] - then - lconvert-qt5 -o $GITDIR/i18n/qt_$LANG.qm $langfiles - else - echo "No Qt translations available for $LANG" - fi + if [ -n "$langfiles" ]; then + lconvert-qt5 -o $GITDIR/i18n/qt_$LANG.qm $langfiles + else + echo "No Qt translations available for $LANG" + fi done diff --git a/scripts/docker-build-wrapper.sh b/scripts/docker-build-wrapper.sh index 7206da6260..9b4ce2bc93 100755 --- a/scripts/docker-build-wrapper.sh +++ b/scripts/docker-build-wrapper.sh @@ -1,6 +1,6 @@ #!/bin/env bash -DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd ) +DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd) USER_ID=$(stat -c '%u' "${BASH_SOURCE[0]}") GROUP_ID=$(stat -c '%g' "${BASH_SOURCE[0]}") diff --git a/scripts/mac_deploy.sh b/scripts/mac_deploy.sh index 1340420db8..1fb34db4d1 100755 --- a/scripts/mac_deploy.sh +++ b/scripts/mac_deploy.sh @@ -7,16 +7,16 @@ QGIS_INSTALL_PATH=$1 -qgis_libs=( qgis_core qgis_analysis ) -libs=( src/qgsquick/libqgsquick.dylib src/core/libcore.dylib src/app/qfield.app/Contents/MacOS/qfield output/bin/vertexmodeltest output/bin/qfield output/lib/libqfield_core.dylib ) +qgis_libs=(qgis_core qgis_analysis) +libs=(src/qgsquick/libqgsquick.dylib src/core/libcore.dylib src/app/qfield.app/Contents/MacOS/qfield output/bin/vertexmodeltest output/bin/qfield output/lib/libqfield_core.dylib) for lib in "${libs[@]}"; do - if [[ ! -f ${lib} ]]; then - echo "skipping missing ${lib}" - continue - else - echo "running install_name_tool on ${lib}" - fi - for qgis_lib in "${qgis_libs[@]}"; do - install_name_tool -change @executable_path/../Frameworks/${qgis_lib}.framework/${qgis_lib} ${QGIS_INSTALL_PATH}/QGIS.app/Contents/Frameworks/${qgis_lib}.framework/${qgis_lib} ${lib} - done + if [[ ! -f ${lib} ]]; then + echo "skipping missing ${lib}" + continue + else + echo "running install_name_tool on ${lib}" + fi + for qgis_lib in "${qgis_libs[@]}"; do + install_name_tool -change @executable_path/../Frameworks/${qgis_lib}.framework/${qgis_lib} ${QGIS_INSTALL_PATH}/QGIS.app/Contents/Frameworks/${qgis_lib}.framework/${qgis_lib} ${lib} + done done diff --git a/scripts/test_banned_keywords.sh b/scripts/test_banned_keywords.sh index ada3e93d89..90c13500ee 100755 --- a/scripts/test_banned_keywords.sh +++ b/scripts/test_banned_keywords.sh @@ -128,28 +128,26 @@ HINTS[34]="Use QString() instead" RES= DIR=$(git rev-parse --show-toplevel) -pushd "${DIR}" > /dev/null || exit - -for i in "${!KEYWORDS[@]}" -do - FOUND=$(git grep "${KEYWORDS[$i]}" -- 'src/*.h' 'src/*.cpp' -- ':!*qtermwidget*' | grep --invert-match skip-keyword-check) - - if [[ ${FOUND} ]]; then - echo "Found source files with banned keyword: ${KEYWORDS[$i]}!" - echo " -> ${HINTS[$i]}" - echo " or mark with // skip-keyword-check" - echo - echo "${FOUND}" - echo - RES=1 - fi +pushd "${DIR}" >/dev/null || exit + +for i in "${!KEYWORDS[@]}"; do + FOUND=$(git grep "${KEYWORDS[$i]}" -- 'src/*.h' 'src/*.cpp' -- ':!*qtermwidget*' | grep --invert-match skip-keyword-check) + + if [[ ${FOUND} ]]; then + echo "Found source files with banned keyword: ${KEYWORDS[$i]}!" + echo " -> ${HINTS[$i]}" + echo " or mark with // skip-keyword-check" + echo + echo "${FOUND}" + echo + RES=1 + fi done -popd > /dev/null || exit +popd >/dev/null || exit if [ $RES ]; then - echo " *** Found banned keywords" - exit 1 + echo " *** Found banned keywords" + exit 1 fi - diff --git a/scripts/test_licenses.sh b/scripts/test_licenses.sh index 1682bc5a30..2db9e40d9c 100755 --- a/scripts/test_licenses.sh +++ b/scripts/test_licenses.sh @@ -8,14 +8,16 @@ LICENSE_CHECK="scripts/licensecheck.pl" DIR=$(git rev-parse --show-toplevel) -pushd "${DIR}" > /dev/null || exit -missing=$(! { "$LICENSE_CHECK" -r -i "$EXCLUDE_LIST" src & "$LICENSE_CHECK" -r -i "$EXCLUDE_LIST" python; } | grep UNKNOWN) +pushd "${DIR}" >/dev/null || exit +missing=$(! { + "$LICENSE_CHECK" -r -i "$EXCLUDE_LIST" src & + "$LICENSE_CHECK" -r -i "$EXCLUDE_LIST" python +} | grep UNKNOWN) -popd > /dev/null || exit +popd >/dev/null || exit if [[ $missing ]]; then - echo " *** Found source files without valid license headers" - echo "$missing" - exit 1 + echo " *** Found source files without valid license headers" + echo "$missing" + exit 1 fi - diff --git a/scripts/version_number.sh b/scripts/version_number.sh index 4f660a9b9e..f87b188e7c 100644 --- a/scripts/version_number.sh +++ b/scripts/version_number.sh @@ -3,49 +3,49 @@ # GNU prefix command for mac os support (gsed, gsplit) GP= if [[ "${OSTYPE}" =~ darwin* ]]; then - GP=g + GP=g fi # give the TRIPLET name and it returns an integer as build number increment # arg1: TRIPLET arch_to_build_number() { - TRIPLET=$1 - if [[ ${TRIPLET} == arm-android ]]; then - echo 1 - elif [[ ${TRIPLET} == arm-neon-android ]]; then - echo 2 - elif [[ ${TRIPLET} == arm64-android ]]; then - echo 3 - elif [[ ${TRIPLET} == x86-android ]]; then - echo 4 - elif [[ ${TRIPLET} == x64-android ]]; then - echo 5 - else - echo 0 - fi + TRIPLET=$1 + if [[ ${TRIPLET} == arm-android ]]; then + echo 1 + elif [[ ${TRIPLET} == arm-neon-android ]]; then + echo 2 + elif [[ ${TRIPLET} == arm64-android ]]; then + echo 3 + elif [[ ${TRIPLET} == x86-android ]]; then + echo 4 + elif [[ ${TRIPLET} == x64-android ]]; then + echo 5 + else + echo 0 + fi } # version to version code # arg1: APP_VERSION (e.g. v1.2.3 or v1.2.3-rc4) # arg2: TRIPLET apk_version_code() { - APP_VERSION=$1 - TRIPLET=$2 - TRIPLET_BUILD_NUMBER=$(arch_to_build_number ${TRIPLET}) + APP_VERSION=$1 + TRIPLET=$2 + TRIPLET_BUILD_NUMBER=$(arch_to_build_number ${TRIPLET}) - VERSION_MAJOR=$(echo "${APP_VERSION}" | cut -f 2 -dv | cut -f1 -d.) - VERSION_MINOR=$(echo "${APP_VERSION}" | cut -f 2 -d.) - VERSION_FIX=$(echo "${APP_VERSION}" | cut -f 3 -d. | cut -f1 -d-) - VERSION_NUMBER=$(echo "${APP_VERSION}" | ${GP}sed -r -e 's/^.*-rc([0-9]+)/\1/;t;d') # v.1.2.3-rc4 => 4, v1.2.3 => NULL + VERSION_MAJOR=$(echo "${APP_VERSION}" | cut -f 2 -dv | cut -f1 -d.) + VERSION_MINOR=$(echo "${APP_VERSION}" | cut -f 2 -d.) + VERSION_FIX=$(echo "${APP_VERSION}" | cut -f 3 -d. | cut -f1 -d-) + VERSION_NUMBER=$(echo "${APP_VERSION}" | ${GP}sed -r -e 's/^.*-rc([0-9]+)/\1/;t;d') # v.1.2.3-rc4 => 4, v1.2.3 => NULL - APK_VERSION_CODE=$(printf "%02d%02d%02d%02d%01d" ${VERSION_MAJOR} ${VERSION_MINOR} ${VERSION_FIX} ${VERSION_NUMBER:-99} ${TRIPLET_BUILD_NUMBER}) - echo ${APK_VERSION_CODE} + APK_VERSION_CODE=$(printf "%02d%02d%02d%02d%01d" ${VERSION_MAJOR} ${VERSION_MINOR} ${VERSION_FIX} ${VERSION_NUMBER:-99} ${TRIPLET_BUILD_NUMBER}) + echo ${APK_VERSION_CODE} } # version to version str # arg1: APP_VERSION (e.g. v1.2.3 or v1.2.3-rc4) # returns: 1.2.3 or 1.2.3 RC4 app_version_str() { - APP_VERSION=$1 - echo ${APP_VERSION} | ${GP}sed -r 's/^v//; s/-(rc[0-9]+)/ \U\1/' + APP_VERSION=$1 + echo ${APP_VERSION} | ${GP}sed -r 's/^v//; s/-(rc[0-9]+)/ \U\1/' } diff --git a/test/test_version_number.sh b/test/test_version_number.sh index 618d8b391a..afb9725eb4 100755 --- a/test/test_version_number.sh +++ b/test/test_version_number.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" source ${DIR}/../scripts/version_number.sh set -v