diff --git a/metadata/net.drawpile.yml b/metadata/net.drawpile.yml new file mode 100644 index 0000000000..75ad33426d --- /dev/null +++ b/metadata/net.drawpile.yml @@ -0,0 +1,124 @@ +Categories: + - Graphics + - Internet + - Multimedia +License: GPL-3.0-or-later +WebSite: https://drawpile.net/ +SourceCode: https://github.com/drawpile/Drawpile +IssueTracker: https://github.com/drawpile/Drawpile/issues +Translation: https://hosted.weblate.org/engage/drawpile/ +Changelog: https://drawpile.net/news/ + +RepoType: git +Repo: https://github.com/drawpile/Drawpile.git + +Builds: + - versionName: 2.2.2-beta.4 + versionCode: 2020204001 + commit: b2221cd1ca3e6ec850a4a79d9507b85329d4403c + sudo: + - apt-get update + - apt-get install -y build-essential cmake nasm ninja-build pkg-config yasm + - rm -rf /opt/android-sdk/{build-tools,ndk,platforms} + - sdkmanager 'build-tools;34.0.0-rc3' 'ndk;27.0.12077973' 'platforms;android-34' + patch: + - build-target-version.patch + - ic_launcher.patch + output: buildandroid-armeabi-v7a-release/bin/Drawpile-$$VERSION$$-armeabi-v7a.apk + build: + - BUILD_TYPE=release ANDROID_ABI=armeabi-v7a ANDROID_BUILD_TOOLS_VERSION=34.0.0-rc3 + ANDROID_NDK_VERSION=27.0.12077973 ANDROID_PLATFORM_VERSION=34 ANDROID_TARGET_VERSION=23 + ANDROID_SDK_DIR=$$SDK$$ ANDROID_SDKMANAGER=sdkmanager bash -c 'pkg/android/build.bash + setup && pkg/android/build.bash configure -DBUILD_ANDROID_VERSION_CODE=$$VERCODE$$ + -DBUILD_VERSION=$$VERSION$$ -DCLANG_TIDY=OFF -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON + -DDISABLE_UPDATE_CHECK_DEFAULT=ON -DDIST_BUILD=ON -DUSE_STRICT_ALIASING=ON + -DANDROID_MIN_SDK_VERSION=23' + - QT_ANDROID_PACKAGE_MODE=release cmake --build buildandroid-armeabi-v7a-release + --config Release + + - versionName: 2.2.2-beta.4 + versionCode: 2020204002 + commit: b2221cd1ca3e6ec850a4a79d9507b85329d4403c + sudo: + - apt-get update + - apt-get install -y build-essential cmake nasm ninja-build pkg-config yasm + - rm -rf /opt/android-sdk/{build-tools,ndk,platforms} + - sdkmanager 'build-tools;34.0.0-rc3' 'ndk;27.0.12077973' 'platforms;android-34' + output: buildandroid-arm64-v8a-release/bin/Drawpile-$$VERSION$$-arm64-v8a.apk + build: + - BUILD_TYPE=release ANDROID_ABI=arm64-v8a ANDROID_BUILD_TOOLS_VERSION=34.0.0-rc3 + ANDROID_NDK_VERSION=27.0.12077973 ANDROID_PLATFORM_VERSION=34 ANDROID_SDK_DIR=$$SDK$$ + ANDROID_SDKMANAGER=sdkmanager bash -c 'pkg/android/build.bash setup && pkg/android/build.bash + configure -DBUILD_ANDROID_VERSION_CODE=$$VERCODE$$ -DBUILD_VERSION=$$VERSION$$ + -DCLANG_TIDY=OFF -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DDISABLE_UPDATE_CHECK_DEFAULT=ON + -DDIST_BUILD=ON -DUSE_STRICT_ALIASING=ON -DANDROID_MIN_SDK_VERSION=30' + - QT_ANDROID_PACKAGE_MODE=release cmake --build buildandroid-arm64-v8a-release + --config Release + + - versionName: 2.2.2-beta.4 + versionCode: 2020204003 + commit: b2221cd1ca3e6ec850a4a79d9507b85329d4403c + sudo: + - apt-get update + - apt-get install -y build-essential cmake nasm ninja-build pkg-config yasm + - rm -rf /opt/android-sdk/{build-tools,ndk,platforms} + - sdkmanager 'build-tools;34.0.0-rc3' 'ndk;27.0.12077973' 'platforms;android-34' + patch: + - build-target-version.patch + - ic_launcher.patch + - x86-fseeko.patch + output: buildandroid-x86-release/bin/Drawpile-$$VERSION$$-x86.apk + build: + - BUILD_TYPE=release ANDROID_ABI=x86 ANDROID_BUILD_TOOLS_VERSION=34.0.0-rc3 + ANDROID_NDK_VERSION=27.0.12077973 ANDROID_PLATFORM_VERSION=34 ANDROID_TARGET_VERSION=23 + ANDROID_SDK_DIR=$$SDK$$ ANDROID_SDKMANAGER=sdkmanager bash -c 'pkg/android/build.bash + setup && pkg/android/build.bash configure -DBUILD_ANDROID_VERSION_CODE=$$VERCODE$$ + -DBUILD_VERSION=$$VERSION$$ -DCLANG_TIDY=OFF -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON + -DDISABLE_UPDATE_CHECK_DEFAULT=ON -DDIST_BUILD=ON -DUSE_STRICT_ALIASING=ON + -DANDROID_MIN_SDK_VERSION=23' + - QT_ANDROID_PACKAGE_MODE=release cmake --build buildandroid-x86-release --config + Release + + - versionName: 2.2.2-beta.4 + versionCode: 2020204004 + commit: b2221cd1ca3e6ec850a4a79d9507b85329d4403c + sudo: + - apt-get update + - apt-get install -y build-essential cmake nasm ninja-build pkg-config yasm + - rm -rf /opt/android-sdk/{build-tools,ndk,platforms} + - sdkmanager 'build-tools;34.0.0-rc3' 'ndk;27.0.12077973' 'platforms;android-34' + output: buildandroid-x86_64-release/bin/Drawpile-$$VERSION$$-x86_64.apk + build: + - BUILD_TYPE=release ANDROID_ABI=x86_64 ANDROID_BUILD_TOOLS_VERSION=34.0.0-rc3 + ANDROID_NDK_VERSION=27.0.12077973 ANDROID_PLATFORM_VERSION=34 ANDROID_SDK_DIR=$$SDK$$ + ANDROID_SDKMANAGER=sdkmanager bash -c 'pkg/android/build.bash setup && pkg/android/build.bash + configure -DBUILD_ANDROID_VERSION_CODE=$$VERCODE$$ -DBUILD_VERSION=$$VERSION$$ + -DCLANG_TIDY=OFF -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DDISABLE_UPDATE_CHECK_DEFAULT=ON + -DDIST_BUILD=ON -DUSE_STRICT_ALIASING=ON -DANDROID_MIN_SDK_VERSION=30' + - QT_ANDROID_PACKAGE_MODE=release cmake --build buildandroid-x86_64-release + --config Release + +MaintainerNotes: |- + Qt's Android build process is extremely fragile and will fail by the mere + presence of superfluous build-tools, ndk or platform versions, no matter how + hard you may try to specify them explicitly. We remove those entirely before + the build and install only the required ones. + + The build-tools, ndk and platform versions are the same as used in Drawpile's + own repository. You can find them there in .github/workflows/main.yml in the + step "Set Android environment variables". + + Installing NDK 27.0.12077973 via the usual ndk entry under Builds fails to + find the version for some reason. We just install it via sdkmanager directly, + since we need to run that ourselves anyway due to the Qt issues above. + +AutoUpdateMode: Version +UpdateCheckMode: Tags +VercodeOperation: + - 10 * %c + 1 + - 10 * %c + 2 + - 10 * %c + 3 + - 10 * %c + 4 +UpdateCheckData: metadata/fdroidversion.txt|code=([0-9]+)|.|name=(\S+) +CurrentVersion: 2.2.2-beta.4 +CurrentVersionCode: 2020204004 diff --git a/metadata/net.drawpile/build-target-version.patch b/metadata/net.drawpile/build-target-version.patch new file mode 100644 index 0000000000..013b805a78 --- /dev/null +++ b/metadata/net.drawpile/build-target-version.patch @@ -0,0 +1,49 @@ +diff --git a/pkg/android/build.bash b/pkg/android/build.bash +index 47f6fafc4..2758d8e05 100755 +--- a/pkg/android/build.bash ++++ b/pkg/android/build.bash +@@ -26,6 +26,7 @@ croak_with_usage() { + carp " ANDROID_BUILD_TOOLS_VERSION [$ANDROID_BUILD_TOOLS_VERSION]" + carp " ANDROID_NDK_VERSION [$ANDROID_NDK_VERSION]" + carp " ANDROID_PLATFORM_VERSION [$ANDROID_PLATFORM_VERSION]" ++ carp " ANDROID_TARGET_VERSION [$ANDROID_TARGET_VERSION]" + carp " ANDROID_SDK_DIR [$ANDROID_SDK_DIR]" + carp + exit 2 +@@ -98,7 +99,7 @@ run_build_script() { + -DANDROID_SDK_ROOT="$ANDROID_SDK_DIR" \ + -DANDROID_NDK_ROOT="$ANDROID_NDK_DIR" \ + -DANDROID_ABI="$ANDROID_ABI" \ +- -DANDROID_PLATFORM="$ANDROID_PLATFORM" \ ++ -DANDROID_PLATFORM="$ANDROID_TARGET_PLATFORM" \ + -DTARGET_ARCH="$TARGET_ARCH" \ + -DKEEP_SOURCE_DIRS=ON \ + -DKEEP_BINARY_DIRS=ON \ +@@ -183,9 +184,9 @@ configure() { + -DCMAKE_INTERPROCEDURAL_OPTIMIZATION="$cmake_interprocedural_optimization" \ + -DCMAKE_TOOLCHAIN_FILE="$ANDROID_TOOLCHAIN_FILE" \ + -DANDROID_ABI="$ANDROID_ABI" \ +- -DANDROID_PLATFORM="$ANDROID_PLATFORM" \ ++ -DANDROID_PLATFORM="$ANDROID_TARGET_PLATFORM" \ + -DANDROID_SDK_BUILD_TOOLS_REVISION="$ANDROID_BUILD_TOOLS_VERSION" \ +- -DANDROID_TARGET_SDK_VERSION="$ANDROID_PLATFORM_VERSION" \ ++ -DANDROID_TARGET_SDK_VERSION="$ANDROID_TARGET_VERSION" \ + -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ON \ + -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH \ + -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH \ +@@ -220,6 +221,7 @@ fi + : "${ANDROID_BUILD_TOOLS_VERSION:=34.0.0-rc3}" + : "${ANDROID_NDK_VERSION:=27.0.12077973}" + : "${ANDROID_PLATFORM_VERSION:=34}" ++: "${ANDROID_TARGET_VERSION:="$ANDROID_PLATFORM_VERSION"}" + : "${ANDROID_SDK_DIR:=$HOME/Android/Sdk}" + : "${ANDROID_SDKMANAGER:=$ANDROID_SDK_DIR/cmdline-tools/latest/bin/sdkmanager}" + +@@ -267,6 +269,7 @@ fi + ANDROID_NDK_DIR="$ANDROID_SDK_DIR/ndk/$ANDROID_NDK_VERSION" + ANDROID_TOOLCHAIN_FILE="$ANDROID_NDK_DIR/build/cmake/android.toolchain.cmake" + ANDROID_PLATFORM="android-$ANDROID_PLATFORM_VERSION" ++ANDROID_TARGET_PLATFORM="android-$ANDROID_TARGET_VERSION" + + case $1 in + 'setup') diff --git a/metadata/net.drawpile/ic_launcher.patch b/metadata/net.drawpile/ic_launcher.patch new file mode 100644 index 0000000000..4aec3e049e --- /dev/null +++ b/metadata/net.drawpile/ic_launcher.patch @@ -0,0 +1,18 @@ +diff --git a/src/desktop/CMakeLists.txt b/src/desktop/CMakeLists.txt +index e97900ef9..854547657 100644 +--- a/src/desktop/CMakeLists.txt ++++ b/src/desktop/CMakeLists.txt +@@ -792,7 +792,12 @@ elseif(ANDROID) + endif() + + include(DrawpileFileExtensions) +- set(ANDROID_APPLICATION_ATTRIBUTES "android:icon=\"@drawable/ic_launcher\"") ++ # Older Android versions can't deal with references for drawables. ++ if(ANDROID_MIN_SDK_VERSION GREATER_EQUAL 26) ++ set(ANDROID_APPLICATION_ATTRIBUTES "android:icon=\"@drawable/ic_launcher\"") ++ else() ++ set(ANDROID_APPLICATION_ATTRIBUTES "android:icon=\"@drawable/ic_launcher_foreground\"") ++ endif() + set(ANDROID_PACKAGE_NAMESPACE net.drawpile) + get_android_extensions(ANDROID_VIEW_INTENTS) + diff --git a/metadata/net.drawpile/x86-fseeko.patch b/metadata/net.drawpile/x86-fseeko.patch new file mode 100644 index 0000000000..d99b69a717 --- /dev/null +++ b/metadata/net.drawpile/x86-fseeko.patch @@ -0,0 +1,23 @@ +diff --git a/.github/scripts/build-ffmpeg.cmake b/.github/scripts/build-ffmpeg.cmake +index 73803de98..5d3a580a5 100644 +--- a/.github/scripts/build-ffmpeg.cmake ++++ b/.github/scripts/build-ffmpeg.cmake +@@ -196,7 +196,7 @@ if(NOT EMSCRIPTEN AND LIBX264) + ) + + if(ANDROID) +- if(TARGET_ARCH STREQUAL "arm32") ++ if(TARGET_ARCH STREQUAL "arm32" OR TARGET_ARCH STREQUAL "x86") + # Configure only checks if *linkage* of functions works, but not if + # they're actually present in any headers. This causes weird + # compile errors about fseeko and ftello not being present on 32 +@@ -204,7 +204,8 @@ if(NOT EMSCRIPTEN AND LIBX264) + # doesn't matter or we don't hit that code. So we just disable the + # error and carry on. + list(APPEND x264_configure_args "--extra-cflags=-Wno-error=implicit-function-declaration") +- elseif(TARGET_ARCH STREQUAL "x86" OR TARGET_ARCH STREQUAL "x86_64") ++ endif() ++ if(TARGET_ARCH STREQUAL "x86" OR TARGET_ARCH STREQUAL "x86_64") + # Configure fails to check for the nasm version properly somehow, + # failing even if a more recent version is found than required. + # We just disable assembly on this ABI then.