0.13.0: deps-vcpkg, deps-cmake and rules-qt, written against mcpp's SPEC-007 (engine floor 2026.9.26.2) - #29
Merged
Merged
Conversation
…cpp-deps, and its prefix mapped into the build
… action, and its prefix mapped into the build
…path, and the plugins beside the program; rules-qt-xim and rules-qt-xim-addons declare the SDK
…rrying member compiles on every host; CI measures the new members on three platforms
… rules-qt; the design record and the plan
…library_dir and moves a check's stamp
… program on Windows and linked by name on Linux; measured on mcpp 2026.9.26.1
…h an output directory, prefixes are runtime search directories, and the build program never reads what an installation produces
…lation; uic, rcc and lrelease refuse two inputs with one output name; the Widgets fixture runs on macOS Found by a review of the branch against mcpp's SPEC-007. The added-file criterion fails with the watch removed and passes with it.
…date's output directory outlives submit()
speak-agent
marked this pull request as ready for review
September 26, 2026 02:53
…riple>] table only when a target is named, so a host build embedded a second libstdc++ and QtCore's RUNPATH found none
… logs there: the fixtures live inside the package they depend on by path, whose host tool mcpp keys by a stamp of its tree (mcpp#705); the second build is planned on every host
…untime contract on each host (clang on the MSVC ABI links the static CRT); the installation stamp comes from a prepare action
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Engine floor: mcpp 2026.9.26.2, the release that lands mcpp-community/mcpp#702 (
MCPP_VERSION: 2026.9.26.2in CI). The members are written against mcpp's SPEC-007 (docs/specs/build-plugins.md):mcpp::runtime_search_dir,mcpp::roles::preparewithoutput_dir, the engine-maintained stamp, and the Windows DLL placement after the link.Design record and plan:
.agents/docs/2026-09-26-deps-vcpkg-rules-qt-design.md(§0.1 states the implementation's decisions),.agents/docs/2026-09-26-deps-vcpkg-rules-qt-plan.md. The xim packages this needs are published: openxlings/xim-pkgindex#878 (vcpkg2026.7.27,qtandqt-addons6.11.1).A fourth family:
deps-*, where a library comes fromA
deps-*member installs a prefix through a program mcpp does not drive and maps it into the build by name. The installation is aprepareaction whose output directory is the prefix and whose command ismcpp-deps, a program built from this package (tools = ["mcpp-deps"]): an action has no environment, vcpkg is configured through its environment, and two workspace members installing one prefix take a lock on it. The build program states the include directory, the libraries by full path and the runtime search directory, and never reads what the installation produces (SPEC-007 R1.3), somcpp emit build-databaseon a machine that never built plans what the build will do.deps-vcpkg(mcpp.deps.vcpkg): avcpkg.jsonmanifest found at or above the package root; the triplet derived from the target or named; overlay ports and triplets as the action's inputs; the triplet file decides the link form.xim:vcpkgis vcpkg-tool 2026-07-27 with the standalone bundle published beside it, sobuiltin-baselineresolves through vcpkg's git registry into its per-user cache and no clone is made per project. Build trees and downloads go to vcpkg's per-user directory, beside its default binary cache.deps-cmake(mcpp.deps.cmake): a CMake subproject configured, built and installed by one action whose inputs are the subproject's files;layoutnames nested install directories,prefix_pathbecomesCMAKE_PREFIX_PATH.rules-qtmoc(headers declaring a meta-object, found by content, and sources including their own.moc),uic,rccandlreleaseassourceactions with declared inputs;lupdateas aprepareaction whenupdate_sourcesasks for it. The modules are linked by full path; the SDK'sbin/orlib/is a runtime search directory (on Windows the engine places the Qt DLLs the program imports beside it); the plugin directoriesdeploy_pluginsnames are deployed. A missing SDK, module or tool is a warning (R1.2).rules-qt-ximdeclaresxim:qt6.11.1 and, on Linux, the glib, zstd and zlib QtCore loads;rules-qt-xim-addonsaddsxim:qt-addonsas a second prefix. On Linux the rule serves programs that do not load QtGui (QtGui needslibdbus-1.so.3, which the ecosystem does not publish); on macOS the modules are frameworks.CI
all-rules-compilerequires every member that carries sources and checks that every name it lists is declared; payload-only features (rules-qt-xim,dist-apk-kotlin) are no longer required there, so no SDK is downloaded on every host..github/scripts/check-deps-and-qt.shholds the criteria and runs on Linux, macOS and Windows: planning installs nothing and still names the include directory; a second build with nothing changed runs no installation; an edited subproject source rebuilds the subproject once and the build after it does not; two workspace members that share no dependency both install and link one prefix; moc, rcc and lrelease reach the program; on Windows the program started from the build directory finds its DLLs, and the packed tree carriesfmt.dll, the Qt modules andplatforms/qoffscreen.dll.Consumer
Sunrisepeak/GalTranslPP temporary PR 2 builds through these members on windows-2025 once this is released.