-
Notifications
You must be signed in to change notification settings - Fork 37.7k
build, qt: Make Qt rcc output always deterministic #21654
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Guix builds:
|
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsNo conflicts as of last run. |
Gitian builds:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Contributing GUIX hashes, mine match @hebasto
find guix-build-$(git rev-parse --short=12 HEAD)/output/ -type f -print0 | env LC_ALL=C sort -z | xargs -r0 sha256sum
5d0c5016f27b1e3122a38dbe32ece19543a7fb01c94a6da5146f017cea81efa2 guix-build-bbd54508e186/output/aarch64-linux-gnu/bitcoin-bbd54508e186-aarch64-linux-gnu-debug.tar.gz
1694738123d5bd4af625f38eaa17b7ba1df223aa4e3471f53a5d081d3a8cc7ed guix-build-bbd54508e186/output/aarch64-linux-gnu/bitcoin-bbd54508e186-aarch64-linux-gnu.tar.gz
d62e913e95a6843b6cb84d607dca6db832cb55a3e286a9a739dd1b17d58a8bb1 guix-build-bbd54508e186/output/arm-linux-gnueabihf/bitcoin-bbd54508e186-arm-linux-gnueabihf-debug.tar.gz
37af054550f202f307f6c031f88f3ef23b39bbba4a4b6cda850f0a04048ceb8e guix-build-bbd54508e186/output/arm-linux-gnueabihf/bitcoin-bbd54508e186-arm-linux-gnueabihf.tar.gz
9f7fec2708b006635646ca5f259abbd96a99cb5a2b2b6ee7fbc15de07499d2ee guix-build-bbd54508e186/output/dist-archive/bitcoin-bbd54508e186.tar.gz
de142857b2ea16b4a6b6c9cb67c169dc79020e07bf90fc4dd48c5eceba34cbce guix-build-bbd54508e186/output/powerpc64-linux-gnu/bitcoin-bbd54508e186-powerpc64-linux-gnu-debug.tar.gz
3f3e6e1dac5d35cd70310fd966edd257bce4d6e58a7c0f5481bf41bfe2a32d09 guix-build-bbd54508e186/output/powerpc64-linux-gnu/bitcoin-bbd54508e186-powerpc64-linux-gnu.tar.gz
c7111777890122068de13006c13048a7fad2c3761f367949639b30401d2573fe guix-build-bbd54508e186/output/powerpc64le-linux-gnu/bitcoin-bbd54508e186-powerpc64le-linux-gnu-debug.tar.gz
967bf59cc18478b50c6563d32b1f34bac4d22e9b21f3af580d0704cdf1479ae7 guix-build-bbd54508e186/output/powerpc64le-linux-gnu/bitcoin-bbd54508e186-powerpc64le-linux-gnu.tar.gz
4126161aadf7c2eef8070e2a8a9c6064f9d66fe220261db4cf2f6c668e0f1ec2 guix-build-bbd54508e186/output/riscv64-linux-gnu/bitcoin-bbd54508e186-riscv64-linux-gnu-debug.tar.gz
b9a17f4bb45c5d19ea2085da2703057bc4cbdf9297004712382f593aa6150201 guix-build-bbd54508e186/output/riscv64-linux-gnu/bitcoin-bbd54508e186-riscv64-linux-gnu.tar.gz
c589a046701b6eb27fef10ebb5f1c637f3419483cfffdc2cb0a30396777f03c5 guix-build-bbd54508e186/output/x86_64-apple-darwin18/bitcoin-bbd54508e186-osx-unsigned.dmg
dd1cf0e945fc47a59d760688aa11db877f5267a3bd5df45393edc3992b5a2912 guix-build-bbd54508e186/output/x86_64-apple-darwin18/bitcoin-bbd54508e186-osx-unsigned.tar.gz
a799066051cc52bcee54bd8e4f513a97c4fad3ecd237c20711b50e8b02384e95 guix-build-bbd54508e186/output/x86_64-apple-darwin18/bitcoin-bbd54508e186-osx64.tar.gz
446ce5a65a7671d61d5f7a81dd908413059531967ec6245c5847fc99cedcdca9 guix-build-bbd54508e186/output/x86_64-linux-gnu/bitcoin-bbd54508e186-x86_64-linux-gnu-debug.tar.gz
f7c8c35a4cbd0fbf8e4ed2cef34c31d817f17dfda5114ec9536d1aee4cc9f774 guix-build-bbd54508e186/output/x86_64-linux-gnu/bitcoin-bbd54508e186-x86_64-linux-gnu.tar.gz
35be25ad31ebf3dc90b1f513a269974b650ba242e4dd2ac5ea41de549988513e guix-build-bbd54508e186/output/x86_64-w64-mingw32/bitcoin-bbd54508e186-win-unsigned.tar.gz
47a0e86ed18af195c051e2e67f4f5b55d6ef8d0d6fc4240ef95483975414342b guix-build-bbd54508e186/output/x86_64-w64-mingw32/bitcoin-bbd54508e186-win64-debug.zip
ccf64b3eeac2725da079121da4df07830e94002af1e56dcc8a68c91ce94b2992 guix-build-bbd54508e186/output/x86_64-w64-mingw32/bitcoin-bbd54508e186-win64-setup-unsigned.exe
c752ae831b88c758989ae8c93ffadfc06572520105ebb364a33e1d3d8e19b206 guix-build-bbd54508e186/output/x86_64-w64-mingw32/bitcoin-bbd54508e186-win64.zip
Does this still need setting in the qt build env if it's now being done in the makefile? If so you should probably note why that's the case: bitcoin/depends/packages/qt.mk Line 177 in e7af2f3
I assume we could also skip setting |
No. The determinism is preserved.
Thanks!. I checked the Qt source code, and implemented your suggestion. |
Guix builds:
Gitian builds:
|
Updated 6c05fa9 -> 712d9b4 (pr21654.02 -> pr21654.03, diff): |
Guix builds:
Gitian builds:
|
Rebased 712d9b4 -> f17d340 (pr21654.03 -> pr21654.04) due to the conflict with #21655. |
Guix builds:
Gitian builds:
|
🕵️ @achow101 @sipa @practicalswift have been requested to review this pull request as specified in the REVIEWERS file. |
The Qt Resource Compiler (rcc) has a command-line option `--format-version` which has the default value 2. The only difference from `--format-version 1` is adding a last modified timestamp to the output file. That, in turn, forces us to use `QT_RCC_SOURCE_DATE_OVERRIDE=1` to get deterministic builds. This change makes rcc output always deterministic by using `--format-version 1` option that makes usage of the `QT_RCC_SOURCE_DATE_OVERRIDE` needless. Also it improves interaction with ccache. Co-authored-by: fanquake <fanquake@gmail.com>
Rebased f17d340 -> a58868d (pr21654.04 -> pr21654.05) due to the conflict with #21708. |
Guix builds:
Gitian builds:
|
@laanwj do you have any opinion on passing |
Not really. If it improves determinism that's a good thing. I think the only thing to be careful of is that if a new version of Qt adds a new format that is better somehow and differs in more than just this comment, we need to remember to reevaluate this. |
Do you think the usage of |
I don't have a strong opinion on it. I think it's fine to change this. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACK a58868d
The Qt Resource Compiler (rcc) has a command-line option
--format-version
which has the default value 2.The only difference from
--format-version 1
is adding a last modified timestamp to the output file (credits to fanquake). That, in turn, forces us to useQT_RCC_SOURCE_DATE_OVERRIDE=1
to get deterministic builds (#13732).This change makes rcc output always deterministic by using
--format-version 1
option that makes usage of theQT_RCC_SOURCE_DATE_OVERRIDE
needless.Also it improves interaction with ccache:
On master (f6c44e9):
The missed file is always
qt/libbitcoinqt_a-qrc_bitcoin_locale.o
.With this PR: