Skip to content
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

qt: splitting out submodules (WIP) #209644

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft

qt: splitting out submodules (WIP) #209644

wants to merge 5 commits into from

Conversation

cho-m
Copy link
Member

@cho-m cho-m commented Mar 4, 2025

PR to experiment with splitting out Qt submodules. Will take some time as 39 formulae (ignore sub-splits, e.g. QtMultimedia can be broken down to ffmpeg, gstreamer, etc). Could handle across multiple PRs ignoring qt conflicts.

Main qt formula would be kept as a way of installing all modules via dependencies.

Some advantages:

  • When bumping Qt, can make use of cache on re-runs when only some part (usually WebEngine) fails
  • When revision bumping as dependent (e.g. ICU), can avoid rebuilding entire Qt
  • As formula dependency, can pare down to actual components
  • On slower connection, brew fetch-ing multiple smaller packages/bottles could be better than single large one
  • For non-default prefix, only need to rebuild qt-base which is relatively quick compared to full build.
  • Better handling of QtWebEngine Xcode requirement via depends_on xcode: ["15.3", :build] rather than silently disabling it in bottle

Some disadvantages:

  • There will be some overhead/overlap across submodules so may see slightly larger total downloaded bytes and one-time build.
  • Maintenance is now split across more formulae.
  • Possible issues from Homebrew's layout. At least seems to have better support for this than GStreamer where we had to go in opposite direction (merging multiple formulae together).

An alternative would be implementing per-formula split/sub-packages in brew. This is more like MacPorts split via Subports while prior idea is how Linux distros handle Qt. Though the biggest blocker is actually adding feature to brew as something considered for years but low priority.

Another option could be splitting out particular modules that are slow to build like WebEngine.


Submodules Checklist
  • qt3d
  • qt5compat
  • qtactiveqt
  • qtbase
  • qtcharts
  • qtconnectivity
  • qtdatavis3d
  • qtdeclarative
  • qtdoc
  • qtgraphs
  • qtgrpc
  • qthttpserver
  • qtimageformats
  • qtlanguageserver
  • qtlocation
  • qtlottie
  • qtmultimedia
  • qtnetworkauth
  • qtpositioning
  • qtquick3d
  • qtquick3dphysics
  • qtquickeffectmaker
  • qtquicktimeline
  • qtremoteobjects
  • qtscxml
  • qtsensors
  • qtserialbus
  • qtserialport
  • qtshadertools
  • qtspeech
  • qtsvg
  • qttools
  • qttranslations
  • qtvirtualkeyboard
  • qtwayland
  • qtwebchannel
  • qtwebengine
  • qtwebsockets
  • qtwebview

@cho-m cho-m added CI-skip-new-formulae Pass --skip-new to brew test-bot. CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. labels Mar 4, 2025
@github-actions github-actions bot added automerge-skip `brew pr-automerge` will skip this pull request new formula PR adds a new formula to Homebrew/homebrew-core labels Mar 4, 2025
@cho-m cho-m added the in progress Stale bot should stay away label Mar 4, 2025
@cho-m cho-m force-pushed the qt-split branch 2 times, most recently from 737b440 to d630aa1 Compare March 4, 2025 05:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automerge-skip `brew pr-automerge` will skip this pull request CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. CI-skip-new-formulae Pass --skip-new to brew test-bot. in progress Stale bot should stay away new formula PR adds a new formula to Homebrew/homebrew-core
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant