You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge #475: Add cmake, qt6, and bitcoin core submodule
67423ba build artifacts in CI (Matthew Zipkin)
1091c9f Update README for qt6 and cmake (Matthew Zipkin)
7573889 move qml/README to front page (Matthew Zipkin)
c01451c build with cmake (Matthew Zipkin)
9020d75 include Bitcoin Core as a git submodule (Matthew Zipkin)
58f8d5a CRecipient now takes CTxDestination not CScript (Matthew Zipkin)
7d7f55f Use Txid instead of uint256 (Matthew Zipkin)
c2ac37d listWalletDir() now returns vector of std::pair (Matthew Zipkin)
08f97b8 remove "watch only" -- no longer possible with descriptor wallets (Matthew Zipkin)
b3d78ad options_model: #include chainstatemanager_args (Matthew Zipkin)
764cb5e update time offset from NodeStateStats (Matthew Zipkin)
3a98d9f copy qt/main.cpp and remove legacy GUI logic (Matthew Zipkin)
a1e1ef8 bitcoin.cpp: rebase node initialization for upstream master (Matthew Zipkin)
ee7928a Clean up Untranslated strings (Matthew Zipkin)
4a67da8 temporarily revert PeersNumByType (needs follow-up) (Matthew Zipkin)
e0e235b nodemodel: copy ProxyAddress methods into qml/ (Matthew Zipkin)
4de5fd6 remove UPnP (Matthew Zipkin)
26042dd use fs::path::utf8string() (Matthew Zipkin)
947e7df update QSGRendererInterface strings (Matthew Zipkin)
92b5f03 use *CACHE constants from bitcoin core (Matthew Zipkin)
1140537 use FoundBlock() interface instead of removed getBlockTime() (Matthew Zipkin)
210439d icons: copy bitcoin.png into qml/ (Matthew Zipkin)
ddc8293 bitcoin.cpp: replace LogPrint with LogDebug (Matthew Zipkin)
7fe6636 send: access declared property color (Matthew Zipkin)
6af46c5 Qt6 changed RegExpValidator to RegularExpressionValidator (Matthew Zipkin)
655d02f QQueue requires cast qtsizetype to int (Matthew Zipkin)
52599cd explicity capture `this` in lambdas as required by C++11 (Matthew Zipkin)
3643091 StorageLocations: Qt 6 FileDialog has slightly different properties (Matthew Zipkin)
fb278ed Use QtQuick.Dialogs default version for Qt6 compatibility (Matthew Zipkin)
Pull request description:
This PR rebases the QML GUI code on upstream Bitcoin Core master, updates dependencies and build system, and defines a new organizational model for the project which may eventually lead to a separation of the GUI completely from bitcoin/bitcoin.
# Code changes in `qml/`
Each commit has a link to Qt docs or to a Bitcoin Core PR to explain it. QML code had to be updated to respect API changes and other conflicts:
- Upstream master bitcoin/bitcoin
- Qt6
# Git submodule
Bitcoin core is now included as a git submodule. This is a cleaner model than forking the bitcoin core repo:
- Prevent GUI contributors from creating new conflicts with upstream by changing bitcoin core in the forked repo
- Garuntee that bitcoin core code is not modified, meaning we don't have to run upstream tests
- Simplifies the build instructions and the repo itself to make it easier for front end contributors
# Cmake
Adds a cmake build system on top of the new submodule+`qml/` pair. We currently still need to compile upstream `qt/` and there is no flag to separate its library from its binary, so the result is that both GUIs will be built, but no command-line daemon, fuzz, tests, or utility binaries:
```
build/bin
├── bitcoin-core-app
└── bitcoin-qt
```
**Note:** I'm going with the title "Bitcoin Core App" from the design community and to make even more clear the separation from `bitcoin-qt`
# CI
I added a very minimal CI to build binaries for macos and ubuntu, and upload the [artifacts](https://github.com/bitcoin-core/gui-qml/actions/runs/16242179284). This is mainly a "does it build?" test but I have downloaded and run both artifacts locally and they do work, given that the right linked libraries are available. Future work can make those artifacts more easily usable by testers.
# Future work
Obviously there is still a lot to do, but I consider these to be the next major steps:
- GUI tests
- Tests builds for all supported platforms
- Extract `qt/` from upstream and integrate in this repo
- Much of that code can probably be abandoned now
- The build system can be cleaned up and the legacy binary removed from the output
- Extract Qt depends build from upstream and integrate in this repo
- After this, the upstream repo will be set up to clear out all GUI code
- Figure out guix builds, guix attestations, project release process, and overall degree of separation from Bitcoin Core
Top commit has no ACKs.
Tree-SHA512: 25046860f1055a9e9d24e5d92ddefac81483f2c78dbc0adc40e69adb85535d719d2c7f976a2bc4b504fcf38288842f4e6b3722bc9d8c6a188a82d031bc690258
**WARNING: THIS IS EXPERIMENTAL, DO NOT USE BUILDS FROM THIS REPO FOR REAL TRANSACTIONS!**
4
6
5
-
This directory contains the source code for an experimental Bitcoin Core graphical user interface (GUI) built using the [Qt Quick](https://doc.qt.io/qt-5/qtquick-index.html) framework.
7
+
This directory contains the source code for an experimental Bitcoin Core graphical user interface (GUI) built using the [Qt Quick](https://doc.qt.io/qt-6/qtquick-index.html) framework.
6
8
7
-
Unsecure CI artifacts are available for local testing of the master branch, avoiding the need to build. These can be found under the [Actions](https://github.com/bitcoin-core/gui-qml/actions?query=branch%3Amain) tab. It is required to have and be logged into a github account in order to download these.
9
+
Unsecure CI artifacts are available for local testing of the master branch, avoiding the need to build. These can be found under the [Actions](https://github.com/bitcoin-core/gui-qml/actions?query=branch%3Aqt6) tab. It is required to have and be logged into a github account in order to download these.
8
10
9
11
Note: For macOS, the CI artifact binary must be made executable and code-signed before it can
10
12
be ran. To make executable and apply a signature, run the following on the unzipped CI artifact:
@@ -25,24 +27,22 @@ The primary goals of the project can be summed up as follows:
25
27
- Work alongside the Bitcoin Design community to develop an aesthetic GUI
26
28
- Develop a mobile-optimized GUI
27
29
28
-
We must avoid conflicts with the Bitcoin Core repo.
29
-
As such, this project will aim to make very few changes outside of the qml directory.
30
-
Pull requests must be focused on developing the GUI itself, adding build support,
31
-
or improving relevant documentation.
30
+
Avoid conflicts with the Bitcoin Core repository by importing it unmodified as a [git submodule](https://git-scm.com/book/en/v2/Git-Tools-Submodules).
31
+
As such, this project **can not** accept pull requests making any significant changes unrelated to the GUI.
32
+
Pull requests must be focused on developing the GUI itself, adding build support, or improving relevant documentation.
32
33
33
-
This project will **not** accept pull requests making any significant changes unrelated to the GUI.
34
34
35
35
## Development Process
36
36
37
-
This repo is synced with the [Bitcoin Core repo](https://github.com/bitcoin/bitcoin) on a weekly basis, or as needed to resolve conflicts.
37
+
This repo is synced with the [Bitcoin Core repo](https://github.com/bitcoin/bitcoin) on a regular basis.
38
38
39
-
Contributions are welcome from all, developers and designers. If you are a new contributor, please read [CONTRIBUTING.md](../../CONTRIBUTING.md).
39
+
Contributions are welcome from all, developers and designers. If you are a new contributor, please read [CONTRIBUTING.md](https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md).
40
40
41
41
### Minimum Required Qt Version
42
42
43
-
All development must adhere to the current upstream Qt Version to minimize our divergence from upstream and avoid costly changes. Review of open PR's must ensure that changes are compatible with this Qt version. Currently, the required version is [Qt 5.15.2](https://github.com/bitcoin-core/gui-qml/blob/main/depends/packages/qt.mk#L2).
43
+
All development must adhere to the current upstream Qt Version to minimize our divergence from upstream and avoid costly changes. Review of open PR's must ensure that changes are compatible with this Qt version. Currently, the required version is [Qt 6.2](https://github.com/bitcoin/bitcoin/blob/master/doc/dependencies.md#build-1).
44
44
45
-
As the Qt Version changes upstream, refactoring is allowed to use the now available features.
45
+
As the Qt Version changes upstream, refactoring is allowed to use the newly available features.
46
46
47
47
### Policies
48
48
@@ -52,50 +52,69 @@ This project has custom policies for development, see:
52
52
53
53
## Compile and Run
54
54
55
-
The master branch is only guaranteed to work and build on Debian-based systems, Fedora, and macOS.
55
+
The master branch is only guaranteed to work and build on Debian-based systems and macOS.
56
56
Support for more systems will be confirmed and documented as the project matures.
57
57
58
58
### Dependencies
59
-
No additional dependencies, besides those in [build-osx.md](../../doc/build-osx.md), are needed for macOS.
60
59
61
-
Aside from the dependencies listed in [build-unix.md](../../doc/build-unix.md), the following additional dependencies are required to compile:
60
+
Bitcoin Core App requires all the same dependencies as Bitcoin Core, see the
If you're unable to install the dependencies through your system's package manager, you can instead perform a [depends build](../../depends/README.md).
0 commit comments