Skip to content

[POC] [RFC] build: Separate GUI application build system #24911

@hebasto

Description

@hebasto

There is an inherent contradiction between (a) Bitcoin Core build system and (b) Bitcoin Core GUI build system.

Bitcoin Core:

  • strives to minimize dependencies for security reasons
  • adds new features without introducing new build dependencies (as usual)

Bitcoin Core GUI:

  • new features (e.g., QR-code reader, QML-based UI, OpenGL support, Wayland support) usually do introduce new build dependencies

A concept of the separated GUI build system is here: https://github.com/hebasto/bitcoin-qtw/commits/220418-add-core-subtree

One could test it as follows:

$ ./autogen.sh
$ ./configure --disable-fuzz-binary --disable-tests --disable-bench --without-utils --without-daemon --without-libs
$ make
$ ./src/qt/bitcoin-qt

The suggested approach uses this repository as a subtree.

Pros:

  • ability to drop GUI-related stuff from this repo
  • ability to use alternative build system for the current Qt Widget based GUI (e.g., use CMake which allows to adopt Qt6 more seamless, even without upstream support of *.pc files)
  • ability to develop alternative UI frameworks (e.g., Qt Quick based GUI; fwiw, keeping QML GUI project synchronized to this repo preserving commit history goes out of hands due to the shared build system)

Cons:

  • a GUI repo becomes a completely separated one, not like current https://github.com/bitcoin-core/gui
  • the release process requires to be modified to handle GUI binaries from a separated repo

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions