spesmilo / electrum

Electrum Bitcoin Wallet
https://electrum.org
MIT License
7.35k stars 3.06k forks source link

android qt6 build not reproducible #8746

Closed SomberNight closed 9 months ago

SomberNight commented 9 months ago

Building Android from the 4.5.0b0 tag (f4cddd7335e27b8e27190830a64eac7511b1e1ce), using

$ ELECBUILD_COMMIT=HEAD ./contrib/android/build.sh qml armeabi-v7a release-unsigned

the apk is not reproducible.

The following files differ:

88c88
< d562c02c975c364407d2498ff1721ab24f83d638952e20aebdbd9cea0ab67b40  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Material_qtquickcontrols2materialstyleplugin_armeabi-v7a.so
---
> 1b8d8099c541bf740835a10cd21bdfac18bdf25829a292b7b1e7d605529e6797  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Material_qtquickcontrols2materialstyleplugin_armeabi-v7a.so
104c104
< e4b7ba4af0894c66acedeb0486f84130fde71341121f0297f8df122117f14873  ./lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so
---
> d6602f9d4598e2477e776f51b2f3c682d4b0239f612e9f4d4f1de843a3228536  ./lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so
108c108
< 3eb2827af49a27682a4efe4b3666e589f0ad25026a8f70e47bc87e57d4c4feed  ./lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so
---
> f7ab326f246a85b97b07cac32194fc88412af0ef88968107a28752b8a4497876  ./lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so
110c110
< 8c5ae8e2e90c0484906b5a5091de25b3ca98e072827b03c92038530aed5a15c2  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so
---
> c3a93057ea96d89afd0c493616395b9e705c889a297ce4d43e0459638fddd106  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so
114c114
< 6ca7acb7cdad1353c038aee6ae5582299305b3db6a6b1fbd55ee3a1948dc7e7c  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so
---
> e7fbc46fb7d4a1fb0534465f55a10321cc05adc3093a95602bbbb3ccb1af8012  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so
125c125
< fc066cec6463b09c1ec8ad9b71b8f749e2783b31d0cb4ca922a47985a3909d3c  ./lib/armeabi-v7a/libQt6MultimediaQuick_armeabi-v7a.so
---
> e210cc4299ccb714ef64ef3c99c147c28c2f3d175369fbf6619dee1b7d5bff34  ./lib/armeabi-v7a/libQt6MultimediaQuick_armeabi-v7a.so
130c130
< b208fbc9cd9b922d4ccb1ea1338bc7f480afb8284c157c9e5af63a5a0e4458f2  ./lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so
---
> 593263b0b49728456da5dc5f51c2e66cb7321ed224fd88c00ccd35f04c73b96e  ./lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so

The differences look non-trivial and not localised to small sections.

related https://github.com/spesmilo/electrum/pull/8545

accumulator commented 9 months ago

The differences look non-trivial and not localised to small sections.

Looking at libQt6Quick_arm64-v8a.so, it seems that there's mainly offset shifts of 8 or 16 bytes, leading to a large diff but with a single (or at least limited amount of) cause(s).

SomberNight commented 9 months ago

I tried a build with qt 6.5.3 and ndk 25c (803ec2bd978bc113d88b13dfd5e350cc2a5310f8), there only 3 files differ. These 3 are a subset of the original 7 files.

110c110
< e7da340b63a559771948f850a7ff1e76555c4f16ac3e5eb106cb11f4c3826902  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so
---
> a59b974888ebfd8e61159d38c090f42eb2d9186a9f5eee652ac2daccce4cda11  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so
114c114
< 6e9d94d66b9b138ea782f5f6552561640530a4b0734a9ac01bf27fbf607287b6  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so
---
> c86dc78d2efe7c7a959d57eaa20a11775aa6fad1a866de6c6b74dba1f97edf30  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so
130c130
< 7e445af4d0aa034413079c32e0bec97c3ccaf722f28dafc8519c67ca9d8bc3d6  ./lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so
---
> 9387f867f4b7b4784f73bafc8f9dfaf425e08cba0e2341ecd983fd2e7ba249bd  ./lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so
ecdsa commented 9 months ago

I tried a build with qt 6.5.3 and ndk 25c (https://github.com/spesmilo/electrum/commit/803ec2bd978bc113d88b13dfd5e350cc2a5310f8), there only 3 files differ.

interesting. is there a way to build these files individually, without waiting for the entire build?

SomberNight commented 9 months ago

A bit of a tangent, but also a heads-up, I've wasted lots of hours due to missing this: https://github.com/SomberNight/python-for-android/commit/a35fa3a04c0979b466b1cb8f59607f8f8380a700 Hopefully I can prevent the same for you.

diff --git a/pythonforandroid/recipes/genericndkbuild/__init__.py b/pythonforandroid/recipes/genericndkbuild/__init__.py
index f114f080ef..f6eff79214 100644
--- a/pythonforandroid/recipes/genericndkbuild/__init__.py
+++ b/pythonforandroid/recipes/genericndkbuild/__init__.py
@@ -10,7 +10,7 @@ class GenericNDKBuildRecipe(BootstrapNDKRecipe):
     url = None

     depends = ['python3']
-    conflicts = ['sdl2', 'qt5']
+    conflicts = ['sdl2', 'qt6']

     def should_build(self, arch):
         return True

This was causing ~non-deterministic build failures for me. Sometimes p4a's dependency graph-resolver (graph.py), to satisfy the "android" recipe, would pick "genericndkbuild" instead of "qt6".

To be specific, the "android" recipe specifies the following: depends = [('sdl2', 'genericndkbuild', 'qt6'), 'pyjnius'] graph.py explores all possible ways to satisfy the dependencies of the requested recipes. e.g. the "pyqt6" recipe specifies: depends = ['qt6', 'pyjnius', 'setuptools', 'pyqt6sip', 'hostpython3', 'pyqt_builder'] So "qt6" would always get pulled in because of pyqt6. But for "android", graph.py would try both qt6 and genericndkbuild, in some order.

So graph.py would try both of these options:

  1. pick "qt6" for "pyqt6", and "qt6" for "android"
  2. pick "qt6" for "pyqt6", and "genericndkbuild" for "android"

Case 2 should not be valid as qt6 and genericndkbuild should not be picked together -- that results in build issues e.g. for the "pyjnius" recipe (due to e.g. conditional git patches, but AFAICT there are multiple potential ways it can fail based on the order of the other dependencies). This should be prevented by declaring the conflict in the recipes -- and p4a assumes that conflicts are consistently declared symmetrically.

graph.py picks case1 or case2 depending on the order the graph is explored, which depends on PYTHONHASHSEED, which we set in contrib/android/Makefile.

For debug builds, PYTHONHASHSEED is set to the current time, for release builds, PYTHONHASHSEED is set to the time of the last git commit.

So that means debug builds would just be failing randomly, independently for each build. But release builds would be failing consistently for a given commit, but completely independently of the code contents of that commit.

Because we are debugging reproducibility issues, I was building release builds, and making temp commits left-and-right. And I was getting the weirdest build failures that looked completely unrelated to what I just changed, and when I reverted to known good code and created a new commit for it, that code too would sometimes fail.

I actually considered hardware failure and ran memtest and looked at smartctl...


Note that the CI is building debug builds. i.e. there should be lots of random failures for the CI android build task. So I don't quite understand why that is not the case. Have you been manually restarting the randomly failed tasks until the current-time-based-PYTHONHASHSEED rolled lucky? :P I found at least e.g. https://cirrus-ci.com/task/6037980943482880 failed due to this.

SomberNight commented 9 months ago

(testing with https://github.com/sombernight/electrum/commit/6694ab9701f8f3a991ed5fee400dc65551dd4ccf, qt6.5.3)

The reason for libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so differing seems to be .cpp (generated) "source" files differing. Specifically between two builds here, only qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp differ:

$ a="/tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android" && b="/tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android" && for f in $(sudo find "$a" -name "*qtquickcontrols2materialstyleimplplugin*" | grep -v "\.so$" | cut -c70-); do sudo diff -qr "$a/$f" "$b/$f"; done
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/meta_types/qtquickcontrols2materialstyleimplplugin_json_file_list.txt.timestamp and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/meta_types/qtquickcontrols2materialstyleimplplugin_json_file_list.txt.timestamp differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/hostqt6/native-build/qtdeclarative/src/quickcontrols/material/impl/meta_types/qtquickcontrols2materialstyleimplplugin_json_file_list.txt.timestamp and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/hostqt6/native-build/qtdeclarative/src/quickcontrols/material/impl/meta_types/qtquickcontrols2materialstyleimplplugin_json_file_list.txt.timestamp differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o differ
Files /tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/meta_types/qtquickcontrols2materialstyleimplplugin_json_file_list.txt.timestamp and /tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/meta_types/qtquickcontrols2materialstyleimplplugin_json_file_list.txt.timestamp differ

The parent folder contains a dozen cpp files, all start with a large inlined blob followed by some generated functions.

$ ls /tmp/electrum_build/android{2,3}/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/ -la
/tmp/electrum_build/android2/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/:
total 380
drwxr-xr-x 2 user user  4096 Dec 15 04:51 .
drwxr-xr-x 3 user user  4096 Dec 15 04:51 ..
-rw-r--r-- 1 user user 30940 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_BoxShadow_qml.cpp
-rw-r--r-- 1 user user 53747 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_CheckIndicator_qml.cpp
-rw-r--r-- 1 user user 21037 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_CursorDelegate_qml.cpp
-rw-r--r-- 1 user user 68956 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_ElevationEffect_qml.cpp
-rw-r--r-- 1 user user  7076 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_qmlcache_loader.cpp
-rw-r--r-- 1 user user   670 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_qml_loader_file_list.rsp
-rw-r--r-- 1 user user 21360 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_RadioIndicator_qml.cpp
-rw-r--r-- 1 user user 42871 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_RectangularGlow_qml.cpp
-rw-r--r-- 1 user user  9553 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp
-rw-r--r-- 1 user user 30912 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_SliderHandle_qml.cpp
-rw-r--r-- 1 user user 68002 Dec 15 04:51 qtquickcontrols2materialstyleimplplugin_SwitchIndicator_qml.cpp

/tmp/electrum_build/android3/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/:
total 380
drwxr-xr-x 2 user user  4096 Dec 15 05:41 .
drwxr-xr-x 3 user user  4096 Dec 15 05:41 ..
-rw-r--r-- 1 user user 30940 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_BoxShadow_qml.cpp
-rw-r--r-- 1 user user 53747 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_CheckIndicator_qml.cpp
-rw-r--r-- 1 user user 21037 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_CursorDelegate_qml.cpp
-rw-r--r-- 1 user user 68956 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_ElevationEffect_qml.cpp
-rw-r--r-- 1 user user  7076 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_qmlcache_loader.cpp
-rw-r--r-- 1 user user   670 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_qml_loader_file_list.rsp
-rw-r--r-- 1 user user 21360 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_RadioIndicator_qml.cpp
-rw-r--r-- 1 user user 42871 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_RectangularGlow_qml.cpp
-rw-r--r-- 1 user user 12115 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp
-rw-r--r-- 1 user user 30912 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_SliderHandle_qml.cpp
-rw-r--r-- 1 user user 68002 Dec 15 05:41 qtquickcontrols2materialstyleimplplugin_SwitchIndicator_qml.cpp

However for this one cpp file, in one of two builds, only the inlined binary blob is present, the generated functions are missing:

qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp ```diff $ sudo diff /tmp/electrum_build/android{2,3}/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp 264a265,280 > > template > void wrapCall(const QQmlPrivate::AOTCompiledContext *aotContext, void *dataPtr, void **argumentsPtr, Binding &&binding) > { > using return_type = std::invoke_result_t; > if constexpr (std::is_same_v) { > Q_UNUSED(dataPtr) > binding(aotContext, argumentsPtr); > } else { > if (dataPtr) { > new (dataPtr) return_type(binding(aotContext, argumentsPtr)); > } else { > binding(aotContext, argumentsPtr); > } > } > } 266c282,349 < extern const QQmlPrivate::TypedFunction aotBuiltFunctions[] = { { 0, QMetaType::fromType(), {}, nullptr } };QT_WARNING_POP --- > extern const QQmlPrivate::TypedFunction aotBuiltFunctions[] = { > { 0, QMetaType::fromType(), { }, > [](const QQmlPrivate::AOTCompiledContext *context, void *data, void **argv) { > wrapCall(context, data, argv, [](const QQmlPrivate::AOTCompiledContext *aotContext, void **argumentsPtr) { > Q_UNUSED(aotContext) > Q_UNUSED(argumentsPtr) > // expression for _shadows at line 10, column 5 > bool r2_1; > QVariant r2_2; > int r2_0; > int r7_0; > // generate_LoadQmlContextPropertyLookup > while (!aotContext->loadScopeObjectPropertyLookup(0, &r2_0)) { > aotContext->setInstructionPointer(2); > aotContext->initLoadScopeObjectPropertyLookup(0, QMetaType::fromType()); > if (aotContext->engine->hasError()) > return QVariant(); > } > // generate_StoreReg > r7_0 = r2_0; > // generate_GetLookup > while (!aotContext->getEnumLookup(2, &r2_0)) { > aotContext->setInstructionPointer(8); > aotContext->initGetEnumLookup(2, []() { static const auto t = QMetaType::fromName("QQuickMaterialStyle*"); return t; }().metaObject(), "RoundedScale", "NotRounded"); > if (aotContext->engine->hasError()) > return QVariant(); > } > // generate_CmpStrictEqual > r2_1 = r7_0 == r2_0; > // generate_JumpFalse > if (!r2_1) { > goto label_0; > } > ; > // generate_LoadQmlContextPropertyLookup > while (!aotContext->loadScopeObjectPropertyLookup(3, &r2_2)) { > aotContext->setInstructionPointer(14); > aotContext->initLoadScopeObjectPropertyLookup(3, QMetaType::fromType()); > if (aotContext->engine->hasError()) > return QVariant(); > } > // generate_Jump > { > goto label_1; > } > ; > label_0:; > // generate_CallQmlContextPropertyLookup > { > QVariant callResult; > void *args[] = { &callResult }; > const QMetaType types[] = { QMetaType::fromType() }; > while (!aotContext->callQmlContextPropertyLookup(4, args, types, 0)) { > aotContext->setInstructionPointer(20); > aotContext->initCallQmlContextPropertyLookup(4); > if (aotContext->engine->hasError()) > return QVariant(); > } > r2_2 = std::move(callResult); > } > label_1:; > // generate_Ret > if (!r2_2.isValid()) > aotContext->setReturnValueUndefined(); > return r2_2; > });} > },{ 0, QMetaType::fromType(), {}, nullptr }}; > QT_WARNING_POP ```

detailed diff (a31 vs a32) (paths within `.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/`) ``` $ ./pdiff.py File differs: src/main/libs/Qt6Android.jar File differs: src/main/libs/Qt6AndroidNetwork.jar File differs: src/main/libs/Qt6AndroidMultimedia.jar File differs: src/main/libs/Qt6AndroidNetworkInformationBackend.jar File differs: libs/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so File differs: libs/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: libs/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so File differs: __pycache__/build.cpython-311.pyc File differs: jni/qt6/qtmultimedia/src/spatialaudioquick3d/CMakeFiles/Quick3DSpatialAudioPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/multimediaquick/CMakeFiles/MultimediaQuickPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/spatialaudio/CMakeFiles/SpatialAudio.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmltyperegistrar/CMakeFiles/QmlTypeRegistrarPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrolstestutils/CMakeFiles/QuickControlsTestUtilsPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicktestutils/CMakeFiles/QuickTestUtilsPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmllocalstorage/CMakeFiles/QmlLocalStorage.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlworkerscript/CMakeFiles/QmlWorkerScript.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_CursorDelegate_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/material/impl/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_SwitchIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_SwitchIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_CursorDelegate_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/material/impl/CMakeFiles/qtquickcontrols2materialstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2materialstyleimplplugin_RoundedElevationEffect_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/.rcc/qmlcache/qtquickcontrols2fusionstyleplugin_Dial_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/.rcc/qmlcache/qtquickcontrols2fusionstyleplugin_BusyIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/CMakeFiles/qtquickcontrols2fusionstyleplugin.dir/.rcc/qmlcache/qtquickcontrols2fusionstyleplugin_Dial_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/CMakeFiles/qtquickcontrols2fusionstyleplugin.dir/.rcc/qmlcache/qtquickcontrols2fusionstyleplugin_BusyIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_CheckIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_SwitchIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_SliderHandle_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_RadioIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_ButtonPanel_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/CMakeFiles/qtquickcontrols2fusionstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_ButtonPanel_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/CMakeFiles/qtquickcontrols2fusionstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_RadioIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/CMakeFiles/qtquickcontrols2fusionstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_SliderHandle_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/CMakeFiles/qtquickcontrols2fusionstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_SwitchIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/fusion/impl/CMakeFiles/qtquickcontrols2fusionstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2fusionstyleimplplugin_CheckIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/universal/impl/.rcc/qmlcache/qtquickcontrols2universalstyleimplplugin_SwitchIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/universal/impl/.rcc/qmlcache/qtquickcontrols2universalstyleimplplugin_CheckIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/universal/impl/CMakeFiles/qtquickcontrols2universalstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2universalstyleimplplugin_SwitchIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/universal/impl/CMakeFiles/qtquickcontrols2universalstyleimplplugin.dir/.rcc/qmlcache/qtquickcontrols2universalstyleimplplugin_CheckIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/basic/.rcc/qmlcache/qtquickcontrols2basicstyleplugin_Dial_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/basic/.rcc/qmlcache/qtquickcontrols2basicstyleplugin_BusyIndicator_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickcontrols/basic/CMakeFiles/qtquickcontrols2basicstyleplugin.dir/.rcc/qmlcache/qtquickcontrols2basicstyleplugin_Dial_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/basic/CMakeFiles/qtquickcontrols2basicstyleplugin.dir/.rcc/qmlcache/qtquickcontrols2basicstyleplugin_BusyIndicator_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickcontrols/CMakeFiles/QuickControls2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmldom/CMakeFiles/QmlDomPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quick/CMakeFiles/Quick.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/labs/settings/CMakeFiles/LabsSettings.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmldebug/CMakeFiles/QmlDebugPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickshapes/CMakeFiles/QuickShapesPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlxmllistmodel/CMakeFiles/QmlXmlListModel.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmltest/CMakeFiles/QuickTest.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrolsimpl/CMakeFiles/QuickControls2Impl.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/core/CMakeFiles/QmlCore.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicktemplates/CMakeFiles/QuickTemplates2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicklayouts/CMakeFiles/QuickLayouts.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsutils/CMakeFiles/QuickDialogs2Utils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/ColorDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/FolderDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/FileDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/MessageDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/FontDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FileDialogDelegate_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FolderDialogDelegate_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/ColorDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FolderDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FileDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/MessageDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FontDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FileDialogDelegate_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FolderDialogDelegate_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FolderBreadcrumbBar_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/ColorDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FolderDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FileDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FontDialog_qml.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/MessageDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/FolderDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/FileDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/ColorDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Imagine/FontDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/MessageDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FileDialogDelegate_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FolderDialogDelegate_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FolderDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FileDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/ColorDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Fusion/FontDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FileDialogDelegate_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FolderDialogDelegate_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FolderDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FolderBreadcrumbBar_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FileDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/ColorDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogsquickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qmlcache/QuickDialogs2QuickImpl_qml/+Material/FontDialog_qml.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs/quickdialogs/CMakeFiles/QuickDialogs2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qml/CMakeFiles/Qml.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlmodels/CMakeFiles/QmlModels.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquicktimeline/src/timeline/CMakeFiles/QuickTimeline.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/jar/Qt6Android.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidNetwork.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidMultimedia.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidNetworkInformationBackend.jar File differs: jni/qt6/qtbase/src/platformsupport/input/CMakeFiles/InputSupportPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/platformsupport/fbconvenience/CMakeFiles/FbSupportPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/xml/CMakeFiles/Xml.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/opengl/CMakeFiles/OpenGL.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/sql/CMakeFiles/Sql.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/concurrent/CMakeFiles/Concurrent.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/testlib/CMakeFiles/Test.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/network/CMakeFiles/Network.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/gui/CMakeFiles/Gui.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/lib/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: jni/qt6/qtbase/qml/QtQuick/Controls/Fusion/libqml_QtQuick_Controls_Fusion_qtquickcontrols2fusionstyleplugin_armeabi-v7a.so File differs: jni/qt6/qtbase/qml/QtQuick/Controls/Fusion/impl/libqml_QtQuick_Controls_Fusion_impl_qtquickcontrols2fusionstyleimplplugin_armeabi-v7a.so File differs: jni/qt6/qtbase/qml/QtQuick/Controls/Material/impl/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so File differs: jni/qt6/qtbase/qml/QtQuick/Controls/Basic/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so File differs: jni/qt6/qtbase/qml/QtQuick/Controls/Universal/impl/libqml_QtQuick_Controls_Universal_impl_qtquickcontrols2universalstyleimplplugin_armeabi-v7a.so File differs: jni/qt6/qtshadertools/src/shadertools/CMakeFiles/ShaderTools.dir/cmake_pch.hxx.pch File differs: jni/qt6/CMakeFiles/CMakeOutput.log File differs: jni/qt6/CMakeFiles/CMakeError.log File differs: jni/qt6/CMakeFiles/3.25.1/CMakeDetermineCompilerABI_C.bin File differs: jni/qt6/CMakeFiles/3.25.1/CMakeDetermineCompilerABI_CXX.bin File differs: jni/qt6/qtquick3d/src/iblbaker/CMakeFiles/Quick3DIblBaker.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/assetutils/CMakeFiles/Quick3DAssetUtils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/helpers/CMakeFiles/Quick3DHelpers.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/helpers/impl/CMakeFiles/Quick3DHelpersImpl.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/effects/CMakeFiles/Quick3DEffects.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/utils/CMakeFiles/Quick3DUtils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/assetimport/CMakeFiles/Quick3DAssetImport.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/quick3d/CMakeFiles/Quick3D.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/quick3dparticles/CMakeFiles/Quick3DParticles.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/glslparser/CMakeFiles/Quick3DGlslParserPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtlanguageserver/src/jsonrpc/CMakeFiles/JsonRpcPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtlanguageserver/src/languageserver/CMakeFiles/LanguageServerPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtsvg/src/svg/CMakeFiles/Svg.dir/cmake_pch.hxx.pch File differs: build/outputs/logs/manifest-merger-release-report.txt File differs: build/outputs/sdk-dependencies/release/sdkDependencies.txt File differs: build/outputs/apk/release/Electrum-release-unsigned.apk File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-hdpi-v4.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-xhdpi-v4.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/release.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-xxhdpi-v4.json File differs: build/intermediates/sdk_dependency_data/release/sdkDependencyData.pb File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so File differs: build/intermediates/metadata_library_dependencies_report/release/dependencies.pb File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libqml_QtQuick_Controls_Material_impl_qtquickcontrols2materialstyleimplplugin_armeabi-v7a.so File differs: build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml File differs: build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml File differs: build/intermediates/incremental/mergeReleaseResources/merger.xml File differs: build/intermediates/incremental/release-mergeJavaRes/merge-state diff: /tmp/electrum_build/android32/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/A2e4G5LxfgZpX91lkgTrBHVgQ1g=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/A2e4G5LxfgZpX91lkgTrBHVgQ1g= diff: /tmp/electrum_build/android32/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/VXlN0SsnWDPyg7EeGzi5bRJXNLI=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/VXlN0SsnWDPyg7EeGzi5bRJXNLI= diff: /tmp/electrum_build/android32/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/HL5oynowhgm8UK9AQLoxErEB8EY=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/HL5oynowhgm8UK9AQLoxErEB8EY= diff: /tmp/electrum_build/android32/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/w58Wfc7lVz_SNkTGgSj2BtIhe+o=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/w58Wfc7lVz_SNkTGgSj2BtIhe+o= diff: /tmp/electrum_build/android32/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/fyAr57EnsWejkQdaOS2B0bddK6A=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/fyAr57EnsWejkQdaOS2B0bddK6A= File differs: .gradle/7.4.1/fileHashes/fileHashes.bin File differs: .gradle/7.4.1/fileHashes/resourceHashesCache.bin File differs: .gradle/7.4.1/fileHashes/fileHashes.lock File differs: .gradle/7.4.1/dependencies-accessors/dependencies-accessors.lock File differs: .gradle/7.4.1/executionHistory/executionHistory.lock File differs: .gradle/7.4.1/executionHistory/executionHistory.bin File differs: .gradle/7.4.1/checksums/sha1-checksums.bin File differs: .gradle/7.4.1/checksums/md5-checksums.bin File differs: .gradle/7.4.1/checksums/checksums.lock File differs: .gradle/buildOutputCleanup/buildOutputCleanup.lock File differs: .gradle/buildOutputCleanup/outputFiles.bin ```
accumulator commented 9 months ago

Hopefully I can prevent the same for you.

Well, I've lost quite some hours on this as well in the past, until I added 'qt5' (and later 'qt6') to the other bootstrap recipes' conflict list. Since then, I've not seen these conflicts arise at all.

Since this worked for me, I haven't dug any further into graph.py. Thanks for your analysis, I think the proper fix would be for graph.py to exclude any recipes derived from BootstrapNDKRecipe other than the one defined in the .spec file.

Note that the CI is building debug builds. i.e. there should be lots of random failures for the CI android build task. So I don't quite understand why that is not the case. Have you been manually restarting the randomly failed tasks until the current-time-based-PYTHONHASHSEED rolled lucky? :P I found at least e.g. https://cirrus-ci.com/task/6037980943482880 failed due to this.

I do keep a shell inside the build container open for long stretches of time, and run make_apk.sh directly for a build. Probably, once build-<arch>/dists/Electrum/dist_info.json is present, the dependency graph is solidified.

accumulator commented 9 months ago

I tried a build with qt 6.5.3 and ndk 25c (803ec2b), there only 3 files differ. These 3 are a subset of the original 7 files.

110c110
< e7da340b63a559771948f850a7ff1e76555c4f16ac3e5eb106cb11f4c3826902  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so
---
> a59b974888ebfd8e61159d38c090f42eb2d9186a9f5eee652ac2daccce4cda11  ./lib/armeabi-v7a/libqml_QtQuick_Controls_Basic_qtquickcontrols2basicstyleplugin_armeabi-v7a.so

The basic style plugin can probably be excluded from the APK. There's no linker dependency from the Material style we use, unless it is loaded dynamically at runtime, but AFAIR this is not done.

accumulator commented 9 months ago

When generating compiled resources using qmlcachegen, the produced output is always different.

Details

``` /home/user/wspace/electrum/.buildozer/android/platform/build-arm64-v8a/build/other_builds/hostqt6/native-build/install/libexec/qmlcachegen --bare --resource-path /qt-project.org/imports/QtQuick/Controls/Material/Button.qml -I /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtbase/./qml -I /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtbase/./qml -i /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtbase/qml/QtQuick/Controls/Material/qmldir --resource /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols2/material/.rcc/qmake_QtQuick_Controls_Material.qrc --resource /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols2/material/.rcc/qtquickcontrols2materialstyleplugin_raw_qml_0.qrc --resource /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols2/material/.rcc/qtquickcontrols2materialstyleplugin.qrc -o /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols2/material/.rcc/qmlcache/qtquickcontrols2materialstyleplugin_Button_qml.cpp /mnt/buildozer/.buildozer/android/platform/build-arm64-v8a/build/bootstrap_builds/qt6/jni/qt6/qtdeclarative/src/quickcontrols2/material/Button.qml ```

qmlcachegen source code contains this

    // Produce reliably the same output for the same input by disabling QHash's random seeding.
    qSetGlobalQHashSeed(0);

.. and Qt claims to support the QT_HASH_SEED environment var to do the same.

However, on each successive run, the output is different.

(this is with Qt6.4.3)

Edit: the hash seed hack used in the code for qmlcachegen is an attempt to have deterministic ordering for items in a QHash. This doesn't work in all cases, as the hash map for local variables is keyed to a pointer, which is probably why the ordering is not deterministic.

accumulator commented 9 months ago

The cache generator is not generating code deterministicly, but I think I have a patch for qmlcachegen to produce deterministic output. I'll do a full compile first to see if nothing fell over.

accumulator commented 9 months ago

patch here: https://github.com/accumulator/python-for-android/commit/a6e4f1b6472d674fe351d56db472c4585869806a

SomberNight commented 9 months ago

Nice! Great find! So on qt6.4.3, that reduces the diff to:

< 3328acf272806ea1e347da98352fde4f8baf777899647fd5c1299aad6333d329  ./lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so
---
> 7d5220988d5345ced028717a4823a7cd798761804d9c9947e36475f1ef97a634  ./lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so
108c108
< 518841d88346449896ba32d1d24a76f946df8fffb9a6f390c7f0d94012727129  ./lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so
---
> 182c15253cbb864a50824f2e2027efe975835bf1d23950b9362f7e0e0c78dcfc  ./lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so
130c130
< d111bbac5d346dc107ae71535e7ca8e188adc587a2dc268eff4510bdf7c6b6e0  ./lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so
---
> c208d6b55972d8617e234b12182f90b7010c2b238b01aa71824387bccfcd8188  ./lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so

detailed diff (a11 vs a12) (paths within `.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/`) ``` $ ./pdiff.py File differs: src/main/libs/Qt6Android.jar File differs: src/main/libs/Qt6AndroidNetwork.jar File differs: src/main/libs/Qt6AndroidMultimedia.jar File differs: src/main/libs/Qt6AndroidNetworkInformationBackend.jar File differs: libs/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: libs/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: libs/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: __pycache__/build.cpython-311.pyc File differs: jni/qt6/qtmultimedia/src/spatialaudioquick3d/CMakeFiles/Quick3DSpatialAudioPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/multimedia/.rcc/qrc_shaders_linear.cpp File differs: jni/qt6/qtmultimedia/src/multimedia/.rcc/qrc_shaders_gl_macos_linear.cpp File differs: jni/qt6/qtmultimedia/src/multimedia/.rcc/qrc_shaders_gl_macos.cpp File differs: jni/qt6/qtmultimedia/src/multimedia/.rcc/qrc_shaders.cpp File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/.rcc/qrc_shaders_linear.cpp.o File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/.rcc/qrc_shaders_gl_macos.cpp.o File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/.rcc/qrc_shaders.cpp.o File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/.rcc/qrc_shaders_gl_macos_linear.cpp.o File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_bt2020_hlg.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuyv.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc2_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/rectsampler_bgra_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/bgra.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/ayuv.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/argb.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc4.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv21_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar_p10.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yvu_triplanar.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/rectsampler.vert.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/abgr_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/externalsampler.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_bt2020_pq.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/abgr.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/externalsampler.vert.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/uyvy.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yvu_triplanar_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc4_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/vertex.vert.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/y_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/uyvy_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/ayuv_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_bt2020_hlg_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/rgba_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/rectsampler_bgra.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/y.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/argb_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv21.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/rgba.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/bgra_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar_p10_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc2.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuyv_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_bt2020_pq_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/externalsampler_linear.frag.qsb@glsl,100es,shaders/externalsampler_gles_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimediaquick/CMakeFiles/MultimediaQuickPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/spatialaudio/CMakeFiles/SpatialAudio.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrolstestutils/CMakeFiles/QuickControlsTestUtilsPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicktestutils/CMakeFiles/QuickTestUtilsPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2/CMakeFiles/QuickDialogs2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2quickimpl/.rcc/qrc_QuickDialogs2QuickImplShaders.cpp File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2quickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2quickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/.rcc/qrc_QuickDialogs2QuickImplShaders.cpp.o File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2quickimpl/.qsb/shaders/SaturationLightness.frag.qsb File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2utils/CMakeFiles/QuickDialogs2Utils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmllocalstorage/CMakeFiles/QmlLocalStorage.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlworkerscript/CMakeFiles/QmlWorkerScript.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrols2/CMakeFiles/QuickControls2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmldom/CMakeFiles/QmlDomPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicktemplates2/CMakeFiles/QuickTemplates2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quick/.rcc/qrc_scenegraph_shaders.cpp File differs: jni/qt6/qtdeclarative/src/quick/CMakeFiles/Quick.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quick/CMakeFiles/Quick.dir/.rcc/qrc_scenegraph_shaders.cpp.o File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/smoothtexture.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/styledtext.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldshiftedtext.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/outlinedtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext_a_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldoutlinetext_a_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/smoothcolor.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/textmask.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/outlinedtext.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/24bittextmask.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/stencilclip.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldoutlinetext_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/shadereffect.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/loqsubpixeldistancefieldtext.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/8bittextmask_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/32bitcolortext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/smoothtexture.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/vertexcolor.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldshiftedtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/loqsubpixeldistancefieldtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/smoothcolor.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/stencilclip.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/sprite.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/sprite.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/visualization.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/textmask.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/styledtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldshiftedtext_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldshiftedtext_a_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/shadereffect.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/styledtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/flatcolor.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/vertexcolor.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/outlinedtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/flatcolor.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/texture.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/8bittextmask.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldoutlinetext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/visualization.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/opaquetexture.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/opaquetexture.vert.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldshiftedtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldoutlinetext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/texture.frag.qsb File differs: jni/qt6/qtdeclarative/src/labs/settings/CMakeFiles/LabsSettings.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmldebug/CMakeFiles/QmlDebugPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickshapes/CMakeFiles/QuickShapesPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlxmllistmodel/CMakeFiles/QmlXmlListModel.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmltest/CMakeFiles/QuickTest.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/core/CMakeFiles/QmlCore.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrols2impl/CMakeFiles/QuickControls2Impl.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicklayouts/CMakeFiles/QuickLayouts.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qml/CMakeFiles/Qml.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlmodels/CMakeFiles/QmlModels.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquicktimeline/src/timeline/CMakeFiles/QuickTimeline.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/jar/Qt6Android.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidNetwork.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidMultimedia.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidNetworkInformationBackend.jar File differs: jni/qt6/qtbase/src/platformsupport/input/CMakeFiles/InputSupportPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/platformsupport/fbconvenience/CMakeFiles/FbSupportPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/xml/CMakeFiles/Xml.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/opengl/CMakeFiles/OpenGL.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/sql/CMakeFiles/Sql.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/concurrent/CMakeFiles/Concurrent.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/testlib/CMakeFiles/Test.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/network/CMakeFiles/Network.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/gui/CMakeFiles/Gui.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/lib/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: jni/qt6/qtbase/lib/libQt6Quick3DRuntimeRender_armeabi-v7a.so File differs: jni/qt6/qtbase/lib/libQt6Multimedia_armeabi-v7a.so File differs: jni/qt6/qtbase/lib/libQt6Quick_armeabi-v7a.so File differs: jni/qt6/qtshadertools/src/shadertools/CMakeFiles/ShaderTools.dir/cmake_pch.hxx.pch File differs: jni/qt6/CMakeFiles/CMakeOutput.log File differs: jni/qt6/CMakeFiles/CMakeError.log File differs: jni/qt6/CMakeFiles/3.25.1/CMakeDetermineCompilerABI_C.bin File differs: jni/qt6/CMakeFiles/3.25.1/CMakeDetermineCompilerABI_CXX.bin File differs: jni/qt6/qtquick3d/src/iblbaker/CMakeFiles/Quick3DIblBaker.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/assetutils/CMakeFiles/Quick3DAssetUtils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/helpers/CMakeFiles/Quick3DHelpers.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/effects/CMakeFiles/Quick3DEffects.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/utils/CMakeFiles/Quick3DUtils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/assetimport/CMakeFiles/Quick3DAssetImport.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/quick3d/CMakeFiles/Quick3D.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/quick3dparticles/CMakeFiles/Quick3DParticles.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/glslparser/CMakeFiles/Quick3DGlslParserPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_nolight_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_lightmapuvraster_default.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_es3_gl3.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_rgbe_linear.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_hdr_aces.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_vlight_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_lightprobe_rgbe.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_rgbe_none.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_es3.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_hdr_linear.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_vlight_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_rgbe_aces.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_hdr_none.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_vlight.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_nolight.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_pertarget.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_es3_pertarget.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_lightmapuvraster_both.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_lightmapuvraster_emissivemap.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_vlight_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_lightmapuvraster_basecolormap.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_nolight_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_hdr_filmic.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_vlight_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_vlight.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_hdr_hejldawson.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_rgbe_filmic.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_rgbe_hejldawson.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_nolight_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_es3_pertarget.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_nolight_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_es3.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_rgbe_aces.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_nolight.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_vlight_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_rgbe_hejldawson.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_hdr_hejldawson.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_rgbe_filmic.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_lightmapuvraster_emissivemap.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_hdr_aces.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_vlight_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_pertarget.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_es3_gl3.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_hdr_filmic.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_vlight.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_vlight.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_vlight_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_rgbe_none.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_lightmapuvraster_basecolormap.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_hdr_none.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_lightmapuvraster_both.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_vlight_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_hdr_linear.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_rgbe_linear.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_lightmapuvraster_default.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_lightprobe_rgbe.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_basecolormap.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightmapped.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightsimple.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/progressiveaa.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesanimated.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_aces.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_basecolormap.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_emissivemap.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_both.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/texturedquad.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_aces.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/reflectionprobeprefilter.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skyboxcube.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_hejldawson.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_emissivemap.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/cubeshadowblury.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightsimple.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapdilate.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightsimple.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightanimated.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesmapped.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/orthoshadowblury.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/reflectionprobeprefilter.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_none.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_linear.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_none.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/ssao.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_aces.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/orthoshadowblurx.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightsimple.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/simplequad.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_filmic.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmap.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/simplequad.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_linear.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_hejldawson.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_hejldawson.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightanimated.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/orthoshadowblurx.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticles.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_linear.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/ssao.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/ssaaresolve.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmapprefilter.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/cubeshadowblury.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightmapped.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_filmic.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmap.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightmapped.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightanimated.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmapprefilter_rgbe.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_aces.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_linear.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_both.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticles.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightsimple.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_hejldawson.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmapprefilter.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmapprefilter_rgbe.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_none.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/orthoshadowblury.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/progressiveaa.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightmapped.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightsimple.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skyboxcube.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/ssaaresolve.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/texturedquad.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/cubeshadowblurx.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesmapped.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightmapped.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_none.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_filmic.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapdilate.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightmapped.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/cubeshadowblurx.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_filmic.vert.qsb File differs: jni/qt6/qtlanguageserver/src/jsonrpc/CMakeFiles/JsonRpcPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtlanguageserver/src/languageserver/CMakeFiles/LanguageServerPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtsvg/src/svg/CMakeFiles/Svg.dir/cmake_pch.hxx.pch File differs: build/outputs/logs/manifest-merger-release-report.txt File differs: build/outputs/sdk-dependencies/release/sdkDependencies.txt File differs: build/outputs/apk/release/Electrum-release-unsigned.apk File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-hdpi-v4.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-xhdpi-v4.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/release.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-xxhdpi-v4.json File differs: build/intermediates/sdk_dependency_data/release/sdkDependencyData.pb File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: build/intermediates/metadata_library_dependencies_report/release/dependencies.pb File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libQt6QuickDialogs2QuickImpl_armeabi-v7a.so File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml File differs: build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml File differs: build/intermediates/incremental/mergeReleaseResources/merger.xml File differs: build/intermediates/incremental/release-mergeJavaRes/merge-state diff: /tmp/electrum_build/android12/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/eKffMODTBpXUXtP_s4DppSW6M9Y=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/eKffMODTBpXUXtP_s4DppSW6M9Y= diff: /tmp/electrum_build/android12/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/eMDP+_oqb1c4ddbcjLyLni2KhPg=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/eMDP+_oqb1c4ddbcjLyLni2KhPg= diff: /tmp/electrum_build/android12/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/J27xkvY6HOBZfxhVu3hYMiVTrQU=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/J27xkvY6HOBZfxhVu3hYMiVTrQU= diff: /tmp/electrum_build/android12/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/uFWoCS98gj+XWQqfZrExgFF3c4o=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/uFWoCS98gj+XWQqfZrExgFF3c4o= diff: /tmp/electrum_build/android12/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/UAR6U2lIezp+fVQV8QNW8ibx5Sc=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/UAR6U2lIezp+fVQV8QNW8ibx5Sc= File differs: .gradle/7.4.1/fileHashes/fileHashes.bin File differs: .gradle/7.4.1/fileHashes/resourceHashesCache.bin File differs: .gradle/7.4.1/fileHashes/fileHashes.lock File differs: .gradle/7.4.1/dependencies-accessors/dependencies-accessors.lock File differs: .gradle/7.4.1/executionHistory/executionHistory.lock File differs: .gradle/7.4.1/executionHistory/executionHistory.bin File differs: .gradle/7.4.1/checksums/sha1-checksums.bin File differs: .gradle/7.4.1/checksums/md5-checksums.bin File differs: .gradle/7.4.1/checksums/checksums.lock File differs: .gradle/buildOutputCleanup/buildOutputCleanup.lock File differs: .gradle/buildOutputCleanup/outputFiles.bin ```
SomberNight commented 9 months ago

(testing with 50d3c52dee2d2371c615dd0bd07935825b82281d)

With qt6.4.3, applying the patch for this bug from qt6.5: https://github.com/SomberNight/python-for-android/commit/80f6fcf99d8f04a00ec606873aabd5e2a19c23e0

The diff is now:

104c104
< 9bb68b4ca783c78488c5c876e5faeed8be9b9ffd7f514119203d3f4c5927058b  ./lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so
---
> 86b77e6f835eb0168e22e200b679d8fcaf1cd323324992d95a61d1ef9309f8a7  ./lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so
108c108
< 2cc21633b844c5841d18d0c165d496b43afe243b3adaf50df3fab5a69f8ffef6  ./lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so
---
> 56fb95ea876357c5e947f57770dcd6724a1f5eabd4cb58bd014d66c511c891bb  ./lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so

EDIT: Hmm, looks like (part of) the remaining diff is still caused by qsb non-determinicity:

detailed diff (a21 vs a22) (paths within `.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/`) ``` $ ./pdiff.py File differs: src/main/libs/Qt6Android.jar File differs: src/main/libs/Qt6AndroidNetwork.jar File differs: src/main/libs/Qt6AndroidMultimedia.jar File differs: src/main/libs/Qt6AndroidNetworkInformationBackend.jar File differs: libs/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: libs/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: __pycache__/build.cpython-311.pyc File differs: jni/qt6/qtmultimedia/src/spatialaudioquick3d/CMakeFiles/Quick3DSpatialAudioPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/multimedia/.rcc/qrc_shaders_linear.cpp File differs: jni/qt6/qtmultimedia/src/multimedia/.rcc/qrc_shaders.cpp File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/.rcc/qrc_shaders_linear.cpp.o File differs: jni/qt6/qtmultimedia/src/multimedia/CMakeFiles/Multimedia.dir/.rcc/qrc_shaders.cpp.o File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuyv.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc2_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/ayuv.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/argb.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc4.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv21_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar_p10.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yvu_triplanar.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/externalsampler.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_bt2020_pq.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yvu_triplanar_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc4_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/uyvy_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_bt2020_hlg_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/rgba_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/y.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/argb_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/rgba.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/bgra_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/yuv_triplanar_p10_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/imc2.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/nv12_bt2020_pq_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimedia/.qsb/shaders/externalsampler_linear.frag.qsb@glsl,100es,shaders/externalsampler_gles_linear.frag.qsb File differs: jni/qt6/qtmultimedia/src/multimediaquick/CMakeFiles/MultimediaQuickPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtmultimedia/src/spatialaudio/CMakeFiles/SpatialAudio.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrolstestutils/CMakeFiles/QuickControlsTestUtilsPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicktestutils/CMakeFiles/QuickTestUtilsPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2/CMakeFiles/QuickDialogs2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2quickimpl/CMakeFiles/QuickDialogs2QuickImpl.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickdialogs2/quickdialogs2utils/CMakeFiles/QuickDialogs2Utils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmllocalstorage/CMakeFiles/QmlLocalStorage.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlworkerscript/CMakeFiles/QmlWorkerScript.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrols2/CMakeFiles/QuickControls2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmldom/CMakeFiles/QmlDomPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicktemplates2/CMakeFiles/QuickTemplates2.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quick/.rcc/qrc_scenegraph_shaders.cpp File differs: jni/qt6/qtdeclarative/src/quick/CMakeFiles/Quick.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quick/CMakeFiles/Quick.dir/.rcc/qrc_scenegraph_shaders.cpp.o File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/outlinedtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext_a_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldoutlinetext_a_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/24bittextmask.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/hiqsubpixeldistancefieldtext_a.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/shadereffect.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/32bitcolortext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/styledtext.frag.qsb File differs: jni/qt6/qtdeclarative/src/quick/.qsb/scenegraph/shaders_ng/distancefieldshiftedtext_fwidth.frag.qsb File differs: jni/qt6/qtdeclarative/src/labs/settings/CMakeFiles/LabsSettings.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmldebug/CMakeFiles/QmlDebugPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickshapes/CMakeFiles/QuickShapesPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlxmllistmodel/CMakeFiles/QmlXmlListModel.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmltest/CMakeFiles/QuickTest.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/core/CMakeFiles/QmlCore.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quickcontrols2impl/CMakeFiles/QuickControls2Impl.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/quicklayouts/CMakeFiles/QuickLayouts.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qml/CMakeFiles/Qml.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtdeclarative/src/qmlmodels/CMakeFiles/QmlModels.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquicktimeline/src/timeline/CMakeFiles/QuickTimeline.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/jar/Qt6Android.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidNetwork.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidMultimedia.jar File differs: jni/qt6/qtbase/jar/Qt6AndroidNetworkInformationBackend.jar File differs: jni/qt6/qtbase/src/platformsupport/input/CMakeFiles/InputSupportPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/platformsupport/fbconvenience/CMakeFiles/FbSupportPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/xml/CMakeFiles/Xml.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/opengl/CMakeFiles/OpenGL.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/sql/CMakeFiles/Sql.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/concurrent/CMakeFiles/Concurrent.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/testlib/CMakeFiles/Test.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/network/CMakeFiles/Network.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/gui/CMakeFiles/Gui.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/src/corelib/CMakeFiles/Core.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtbase/lib/libQt6Quick3DRuntimeRender_armeabi-v7a.so File differs: jni/qt6/qtbase/lib/libQt6Multimedia_armeabi-v7a.so File differs: jni/qt6/qtbase/lib/libQt6Quick_armeabi-v7a.so File differs: jni/qt6/qtshadertools/src/shadertools/CMakeFiles/ShaderTools.dir/cmake_pch.hxx.pch File differs: jni/qt6/CMakeFiles/CMakeOutput.log File differs: jni/qt6/CMakeFiles/CMakeError.log File differs: jni/qt6/CMakeFiles/3.25.1/CMakeDetermineCompilerABI_C.bin File differs: jni/qt6/CMakeFiles/3.25.1/CMakeDetermineCompilerABI_CXX.bin File differs: jni/qt6/qtquick3d/src/iblbaker/CMakeFiles/Quick3DIblBaker.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/assetutils/CMakeFiles/Quick3DAssetUtils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/helpers/CMakeFiles/Quick3DHelpers.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/effects/CMakeFiles/Quick3DEffects.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/utils/CMakeFiles/Quick3DUtils.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/assetimport/CMakeFiles/Quick3DAssetImport.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/quick3d/CMakeFiles/Quick3D.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/quick3dparticles/CMakeFiles/Quick3DParticles.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/glslparser/CMakeFiles/Quick3DGlslParserPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_nolight_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_es3_gl3.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_vlight_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_lightprobe_rgbe.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_rgbe_none.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_es3.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_hdr_linear.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_vlight_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_vlight.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_nolight.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_pertarget.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_lightmapuvraster_both.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_lightmapuvraster_emissivemap.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_vlight_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_nolight_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_particles_vlight_animated.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_line_particles_mapped.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/.rcc/qrc_res_shaders_skybox_rgbe_filmic.cpp File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_nolight_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_nolight_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_es3.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_nolight.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_vlight_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_rgbe_filmic.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_lightmapuvraster_emissivemap.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_vlight_animated.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_pertarget.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_es3_gl3.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_vlight.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_particles_vlight_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_rgbe_none.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_lightmapuvraster_both.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_line_particles_vlight_mapped.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_skybox_hdr_linear.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/CMakeFiles/Quick3DRuntimeRender.dir/.rcc/qrc_res_shaders_lightprobe_rgbe.cpp.o File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightmapped.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_emissivemap.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/texturedquad.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/cubeshadowblury.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightsimple.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightanimated.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/orthoshadowblury.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_hdr_linear.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/orthoshadowblurx.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightsimple.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/ssao.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmapprefilter.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightmapped.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightmapped.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightanimated.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightanimated.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lightmapuvraster_both.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightsimple.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/environmentmapprefilter_rgbe.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_none.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/progressiveaa.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesvlightmapped.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesvlightsimple.vert.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skyboxcube.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/lineparticlesmapped.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/skybox_rgbe_filmic.frag.qsb File differs: jni/qt6/qtquick3d/src/runtimerender/.qsb/res/rhishaders/particlesnolightmapped.frag.qsb File differs: jni/qt6/qtlanguageserver/src/jsonrpc/CMakeFiles/JsonRpcPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtlanguageserver/src/languageserver/CMakeFiles/LanguageServerPrivate.dir/cmake_pch.hxx.pch File differs: jni/qt6/qtsvg/src/svg/CMakeFiles/Svg.dir/cmake_pch.hxx.pch File differs: build/outputs/logs/manifest-merger-release-report.txt File differs: build/outputs/sdk-dependencies/release/sdkDependencies.txt File differs: build/outputs/apk/release/Electrum-release-unsigned.apk File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-hdpi-v4.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-xhdpi-v4.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/release.json File differs: build/intermediates/merged_res_blame_folder/release/out/multi-v2/values-xxhdpi-v4.json File differs: build/intermediates/sdk_dependency_data/release/sdkDependencyData.pb File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: build/intermediates/merged_native_libs/release/out/lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: build/intermediates/stripped_native_libs/release/out/lib/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: build/intermediates/metadata_library_dependencies_report/release/dependencies.pb File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libQt6Multimedia_armeabi-v7a.so File differs: build/intermediates/merged_jni_libs/release/out/armeabi-v7a/libQt6Quick_armeabi-v7a.so File differs: build/intermediates/incremental/lintVitalAnalyzeRelease/release-mainArtifact-libraries.xml File differs: build/intermediates/incremental/lintVitalReportRelease/release-mainArtifact-libraries.xml File differs: build/intermediates/incremental/mergeReleaseResources/merger.xml File differs: build/intermediates/incremental/release-mergeJavaRes/merge-state diff: /tmp/electrum_build/android22/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/bXp2q7Qoiroq7UEMgk2gfbPPmUk=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/bXp2q7Qoiroq7UEMgk2gfbPPmUk= diff: /tmp/electrum_build/android22/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/ru2eRBD98XYzcdNMUwqo5BVDMoo=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/ru2eRBD98XYzcdNMUwqo5BVDMoo= diff: /tmp/electrum_build/android22/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/O_NUSzCKP0+4i_lO1FCcaPKLyts=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/O_NUSzCKP0+4i_lO1FCcaPKLyts= diff: /tmp/electrum_build/android22/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/QhO7M6v99gLoRuhxtTGTv5ZX9uw=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/QhO7M6v99gLoRuhxtTGTv5ZX9uw= diff: /tmp/electrum_build/android22/fresh_clone/electrum/.buildozer/android/platform/build-armeabi-v7a/dists/Electrum/build/intermediates/incremental/release-mergeJavaRes/zip-cache/gj49Zp1s_ZgHvE9hRTqmmVwLy7E=: No such file or directory File differs: build/intermediates/incremental/release-mergeJavaRes/zip-cache/gj49Zp1s_ZgHvE9hRTqmmVwLy7E= File differs: .gradle/7.4.1/fileHashes/fileHashes.bin File differs: .gradle/7.4.1/fileHashes/resourceHashesCache.bin File differs: .gradle/7.4.1/fileHashes/fileHashes.lock File differs: .gradle/7.4.1/dependencies-accessors/dependencies-accessors.lock File differs: .gradle/7.4.1/executionHistory/executionHistory.lock File differs: .gradle/7.4.1/executionHistory/executionHistory.bin File differs: .gradle/7.4.1/checksums/sha1-checksums.bin File differs: .gradle/7.4.1/checksums/md5-checksums.bin File differs: .gradle/7.4.1/checksums/checksums.lock File differs: .gradle/buildOutputCleanup/buildOutputCleanup.lock File differs: .gradle/buildOutputCleanup/outputFiles.bin ```

When building with qt6.5.3, all qsb files are deterministic (none appear in diff in https://github.com/spesmilo/electrum/issues/8746#issuecomment-1857380714), so hopefully there is some other patch (and not a large refactor) that we could just "backport". libQt6Quick_armeabi-v7a.so and libQt6Multimedia_armeabi-v7a.so are built deterministicly in qt6.5.3 (however some other libs are not... - btw your patch from https://github.com/spesmilo/electrum/issues/8746#issuecomment-1857970418 cannot be applied at all as the relevant code was refactored).

SomberNight commented 9 months ago

Hmm, looks like (part of) the remaining diff is still caused by qsb non-determinicity When building with qt6.5.3, all qsb files are deterministic (none appear in diff in https://github.com/spesmilo/electrum/issues/8746#issuecomment-1857380714), so hopefully there is some other patch (and not a large refactor) that we could just "backport".

This is that patch, extracted from a large changeset merged into qt6.5.0: https://github.com/SomberNight/python-for-android/commit/01c6068791f44074e189e1a5d945cf50b02f4dcc

With that, I can now reproducibly build the full armeabi-v7a apk, with qt6.4.3.

EDIT: I only tested one arch, but hopefully master can now be built reproducibly, at https://github.com/spesmilo/electrum/commit/bf4934bb9f5f10f881c9e538f49962c7b6f74eaa.


qmlcachegen source code contains this

    // Produce reliably the same output for the same input by disabling QHash's random seeding.
    qSetGlobalQHashSeed(0);

.. and Qt claims to support the QT_HASH_SEED environment var to do the same.

I wonder if we could just use QT_HASH_SEED instead of the qshader patches.

ecdsa commented 9 months ago

thank both of you for fixing this so quickly