-
Notifications
You must be signed in to change notification settings - Fork 37.7k
gui: Drop qt4 support #13458
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
gui: Drop qt4 support #13458
Conversation
What would this make our minimum supported version of Qt? 5.4.x IIRC? |
That's a good question. I'm not sure that's something to be decided here, I don't change anything with regard to Qt5 versions supported. Though there are a few |
@@ -113,63 +113,48 @@ AC_DEFUN([BITCOIN_QT_CONFIGURE],[ | |||
TEMP_CXXFLAGS=$CXXFLAGS |
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.
Qt4 mentions in the comment here ^, and another starting at line 288.
Fair enough. Some qt4 related code here: bitcoin/src/qt/coincontroldialog.cpp Line 125 in f532d52
bitcoin/src/qt/test/wallettests.cpp Line 90 in f532d52
There are some qt4 related docs that could be dropped. i.e: |
f00d4d1
to
bcf01c9
Compare
Thanks @fanquake, updated for those. Edit: I left the |
Concept ACK, will review. |
ACK. A follow up pull request could clarify which versions of qt5 are supported. |
Concept ACK ecda9463649d7a5b3d35e31f0c6753f7f4f721c5. Nits:
|
Concept ACK. |
.travis.yml
Outdated
# Qt4 & system libs | ||
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qt4-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev xvfb libqt4-dev" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt4 CPPFLAGS=-DDEBUG_LOCKORDER" DISPLAY=:99.0 | ||
# x86_64 Linux (Qt5 & system libs) | ||
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev xvfb libqt4-dev" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER" DISPLAY=:99.0 |
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.
Missed libqt4-dev.
Also, I believe this means that we can get rid of xvfb, since qt5's 'minimal' plugin should work.
Concept ACK |
@@ -233,7 +233,7 @@ namespace GUIUtil | |||
void mouseReleaseEvent(QMouseEvent *event); | |||
}; | |||
|
|||
#if defined(Q_OS_MAC) && QT_VERSION >= 0x050000 | |||
#if defined(Q_OS_MAC) |
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.
Note: Still need to test, but we might be able to remove this Qt workaround entirely.
Concept ACK |
Remove |
All |
Ok, I think all comments by @promag @MarcoFalke @theuni have been addressed. |
.travis.yml
Outdated
# Qt4 & system libs | ||
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qt4-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev xvfb libqt4-dev" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt4 CPPFLAGS=-DDEBUG_LOCKORDER" DISPLAY=:99.0 | ||
# x86_64 Linux (Qt5 & system libs) | ||
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER" DISPLAY=:99.0 |
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.
I think cory mentioned you could get rid of xvfb?
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.
Didn't I? oh, there's an environment variable too...
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.
$DISPLAY was also related to xvfb and can be removed.
.travis.yml
Outdated
# Qt4 & system libs | ||
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qt4-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev xvfb libqt4-dev" NO_DEPENDS=1 NEED_XVFB=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt4 CPPFLAGS=-DDEBUG_LOCKORDER" DISPLAY=:99.0 | ||
# x86_64 Linux (Qt5 & system libs) | ||
- HOST=x86_64-unknown-linux-gnu PACKAGES="python3-zmq qtbase5-dev qttools5-dev-tools libssl1.0-dev libevent-dev bsdmainutils libboost-system-dev libboost-filesystem-dev libboost-chrono-dev libboost-program-options-dev libboost-test-dev libboost-thread-dev libdb5.3++-dev libminiupnpc-dev libzmq3-dev libprotobuf-dev protobuf-compiler libqrencode-dev" NO_DEPENDS=1 RUN_TESTS=true GOAL="install" BITCOIN_CONFIG="--enable-zmq --with-incompatible-bdb --enable-glibc-back-compat --enable-reduce-exports --with-gui=qt5 CPPFLAGS=-DDEBUG_LOCKORDER" DISPLAY=:99.0 |
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.
Can probably also remove two instances of DISPLAY
?
Note to reviewers: This pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
Concept ACK |
@laanwj You wouldn't need to export https://github.com/laanwj/bitcoin/blob/e2dc0e7f02b63ab5990b6f3c806ceaedf40cf3ea/.travis.yml#L48 |
Should be able to drop this check from paymentrequestplus.cpp:
|
@MarcoFalke @fanquake done |
I presume, barring some major rewrite, this implies the PPA should simply not ship with a GUI except on 18.04? (And replace bitcoin-qt with a dummy package instead of letting it get stale?)
…On June 15, 2018 7:56:01 PM UTC, "Wladimir J. van der Laan" ***@***.***> wrote:
@MarcoFalke @fanquake done
this is becoming a palimpsest of commits, if there's no more things I
missed I'm going to squash them into more sensible subdivision
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
#13458 (comment)
|
@TheBlueMatt I doubt anyone running ubuntu 14.04 is running the gui from the ppa. If there is one, they might as well download the release build. Edit: Ah, according to #8043, using the release builds wouldn't help and xenial is affected as well. Though, since the only problem is the tray icon, we might as well just ship a package with a slight ui glitch instead of no package at all. |
|
Or a three-line patch to disable tray icon support in the PPA, for those versions. It seems ridiculous to me to remove the entire GUI package just because of a small glitch. |
Wrong @wumpus. |
There were surprisingly many `#ifdef` fallbacks for Qt 4. Remiving them simplifies maintenance, as well as adding new GUI functionality.
Change Qt4 & system libs build to Qt5 & system libs build.
56c25b3
to
af6ac3b
Compare
Squashed into sensible commits: |
Concept re-ACK af6ac3b. (No changes since feedback addressed, but I didn't review the build changes) |
af6ac3b doc: Remove mention of Qt4 from build docs (Wladimir J. van der Laan) 462c71f test: Update travis to not test Qt4 anymore (Wladimir J. van der Laan) 907f73b gui: Remove QT_VERSION fallbacks for Qt < 5 (Wladimir J. van der Laan) bad068a build: Build system changes to support only Qt5 (Wladimir J. van der Laan) Pull request description: Implements #8263. Qt4.x has been EOL since 2015, and at least Gentoo has, or is going to drop support for it. I wouldn't be surprised if other Linux distributions follow. This removes Qt4 detection from the build system, as well as removes all Qt4 fallbacks from the code. Turns out there's more than I expected: this is going to make maintenance of the GUI code, as well as adding new features significantly easier. (I know there's still some references left to qt4 in RPM and Debian build script, but I don't have the knowledge how to fix them) Tree-SHA512: d495924fd4dda6f6566ba44ee96be7cbe62e69ba1ca993b80a8449f78da852b7f1bd3e8200d57cfa1d72233c340eeff4596fb0032ecbddc715d99aea63817d3f
af6ac3b doc: Remove mention of Qt4 from build docs (Wladimir J. van der Laan) 462c71f test: Update travis to not test Qt4 anymore (Wladimir J. van der Laan) 907f73b gui: Remove QT_VERSION fallbacks for Qt < 5 (Wladimir J. van der Laan) bad068a build: Build system changes to support only Qt5 (Wladimir J. van der Laan) Pull request description: Implements bitcoin#8263. Qt4.x has been EOL since 2015, and at least Gentoo has, or is going to drop support for it. I wouldn't be surprised if other Linux distributions follow. This removes Qt4 detection from the build system, as well as removes all Qt4 fallbacks from the code. Turns out there's more than I expected: this is going to make maintenance of the GUI code, as well as adding new features significantly easier. (I know there's still some references left to qt4 in RPM and Debian build script, but I don't have the knowledge how to fix them) Tree-SHA512: d495924fd4dda6f6566ba44ee96be7cbe62e69ba1ca993b80a8449f78da852b7f1bd3e8200d57cfa1d72233c340eeff4596fb0032ecbddc715d99aea63817d3f (cherry picked from commit dc53f7f) # Conflicts: # .travis.yml # build-aux/m4/bitcoin_qt.m4 # configure.ac # doc/build-osx.md # doc/build-unix.md # doc/dependencies.md # src/qt/README.md # src/qt/bitcoingui.cpp # src/qt/coincontroldialog.cpp # src/qt/dash.cpp # src/qt/guiutil.cpp # src/qt/macdockiconhandler.mm # src/qt/networkstyle.cpp # src/qt/openuridialog.cpp # src/qt/peertablemodel.cpp # src/qt/signverifymessagedialog.cpp # src/qt/test/wallettests.cpp # src/qt/transactionview.cpp
af6ac3b doc: Remove mention of Qt4 from build docs (Wladimir J. van der Laan) 462c71f test: Update travis to not test Qt4 anymore (Wladimir J. van der Laan) 907f73b gui: Remove QT_VERSION fallbacks for Qt < 5 (Wladimir J. van der Laan) bad068a build: Build system changes to support only Qt5 (Wladimir J. van der Laan) Pull request description: Implements bitcoin#8263. Qt4.x has been EOL since 2015, and at least Gentoo has, or is going to drop support for it. I wouldn't be surprised if other Linux distributions follow. This removes Qt4 detection from the build system, as well as removes all Qt4 fallbacks from the code. Turns out there's more than I expected: this is going to make maintenance of the GUI code, as well as adding new features significantly easier. (I know there's still some references left to qt4 in RPM and Debian build script, but I don't have the knowledge how to fix them) Tree-SHA512: d495924fd4dda6f6566ba44ee96be7cbe62e69ba1ca993b80a8449f78da852b7f1bd3e8200d57cfa1d72233c340eeff4596fb0032ecbddc715d99aea63817d3f (cherry picked from commit dc53f7f) # Conflicts: # .travis.yml # build-aux/m4/bitcoin_qt.m4 # configure.ac # doc/build-osx.md # doc/build-unix.md # doc/dependencies.md # src/qt/README.md # src/qt/bitcoingui.cpp # src/qt/coincontroldialog.cpp # src/qt/dash.cpp # src/qt/guiutil.cpp # src/qt/macdockiconhandler.mm # src/qt/networkstyle.cpp # src/qt/openuridialog.cpp # src/qt/peertablemodel.cpp # src/qt/signverifymessagedialog.cpp # src/qt/test/wallettests.cpp # src/qt/transactionview.cpp
af6ac3b doc: Remove mention of Qt4 from build docs (Wladimir J. van der Laan) 462c71f test: Update travis to not test Qt4 anymore (Wladimir J. van der Laan) 907f73b gui: Remove QT_VERSION fallbacks for Qt < 5 (Wladimir J. van der Laan) bad068a build: Build system changes to support only Qt5 (Wladimir J. van der Laan) Pull request description: Implements bitcoin#8263. Qt4.x has been EOL since 2015, and at least Gentoo has, or is going to drop support for it. I wouldn't be surprised if other Linux distributions follow. This removes Qt4 detection from the build system, as well as removes all Qt4 fallbacks from the code. Turns out there's more than I expected: this is going to make maintenance of the GUI code, as well as adding new features significantly easier. (I know there's still some references left to qt4 in RPM and Debian build script, but I don't have the knowledge how to fix them) Tree-SHA512: d495924fd4dda6f6566ba44ee96be7cbe62e69ba1ca993b80a8449f78da852b7f1bd3e8200d57cfa1d72233c340eeff4596fb0032ecbddc715d99aea63817d3f (cherry picked from commit dc53f7f) # Conflicts: # .travis.yml # build-aux/m4/bitcoin_qt.m4 # configure.ac # doc/build-osx.md # doc/build-unix.md # doc/dependencies.md # src/qt/README.md # src/qt/bitcoingui.cpp # src/qt/coincontroldialog.cpp # src/qt/dash.cpp # src/qt/guiutil.cpp # src/qt/macdockiconhandler.mm # src/qt/networkstyle.cpp # src/qt/openuridialog.cpp # src/qt/peertablemodel.cpp # src/qt/signverifymessagedialog.cpp # src/qt/test/wallettests.cpp # src/qt/transactionview.cpp
af6ac3b doc: Remove mention of Qt4 from build docs (Wladimir J. van der Laan) 462c71f test: Update travis to not test Qt4 anymore (Wladimir J. van der Laan) 907f73b gui: Remove QT_VERSION fallbacks for Qt < 5 (Wladimir J. van der Laan) bad068a build: Build system changes to support only Qt5 (Wladimir J. van der Laan) Pull request description: Implements bitcoin#8263. Qt4.x has been EOL since 2015, and at least Gentoo has, or is going to drop support for it. I wouldn't be surprised if other Linux distributions follow. This removes Qt4 detection from the build system, as well as removes all Qt4 fallbacks from the code. Turns out there's more than I expected: this is going to make maintenance of the GUI code, as well as adding new features significantly easier. (I know there's still some references left to qt4 in RPM and Debian build script, but I don't have the knowledge how to fix them) Tree-SHA512: d495924fd4dda6f6566ba44ee96be7cbe62e69ba1ca993b80a8449f78da852b7f1bd3e8200d57cfa1d72233c340eeff4596fb0032ecbddc715d99aea63817d3f (cherry picked from commit dc53f7f) # Conflicts: # .travis.yml # build-aux/m4/bitcoin_qt.m4 # configure.ac # doc/build-osx.md # doc/build-unix.md # doc/dependencies.md # src/qt/README.md # src/qt/bitcoingui.cpp # src/qt/coincontroldialog.cpp # src/qt/dash.cpp # src/qt/guiutil.cpp # src/qt/macdockiconhandler.mm # src/qt/networkstyle.cpp # src/qt/openuridialog.cpp # src/qt/peertablemodel.cpp # src/qt/signverifymessagedialog.cpp # src/qt/test/wallettests.cpp # src/qt/transactionview.cpp
af6ac3b doc: Remove mention of Qt4 from build docs (Wladimir J. van der Laan) 462c71f test: Update travis to not test Qt4 anymore (Wladimir J. van der Laan) 907f73b gui: Remove QT_VERSION fallbacks for Qt < 5 (Wladimir J. van der Laan) bad068a build: Build system changes to support only Qt5 (Wladimir J. van der Laan) Pull request description: Implements bitcoin#8263. Qt4.x has been EOL since 2015, and at least Gentoo has, or is going to drop support for it. I wouldn't be surprised if other Linux distributions follow. This removes Qt4 detection from the build system, as well as removes all Qt4 fallbacks from the code. Turns out there's more than I expected: this is going to make maintenance of the GUI code, as well as adding new features significantly easier. (I know there's still some references left to qt4 in RPM and Debian build script, but I don't have the knowledge how to fix them) Tree-SHA512: d495924fd4dda6f6566ba44ee96be7cbe62e69ba1ca993b80a8449f78da852b7f1bd3e8200d57cfa1d72233c340eeff4596fb0032ecbddc715d99aea63817d3f (cherry picked from commit dc53f7f)
Implements #8263.
Qt4.x has been EOL since 2015, and at least Gentoo has, or is going to drop support for it. I wouldn't be surprised if other Linux distributions follow.
This removes Qt4 detection from the build system, as well as removes all Qt4 fallbacks from the code. Turns out there's more than I expected: this is going to make maintenance of the GUI code, as well as adding new features significantly easier.
(I know there's still some references left to qt4 in RPM and Debian build script, but I don't have the knowledge how to fix them)