build system + kde: fix stale-cache force-rebuild; bump plasma-wayland-protocols to 1.21.0
redbear-ci / check (push) Has been cancelled

Root cause of kf6-kwayland's 'PlasmaWaylandProtocols >= 1.21.0 not found': the
plasma-wayland-protocols recipe (a custom data-only recipe) HARD-CODED
set(PACKAGE_VERSION "1.16.0") in the hand-written ConfigVersionCmake heredoc,
while the package + source are 1.21.0. Bumped it to 1.21.0.

Build-system fix (src/cook/cook_build.rs): the !check_source early-return served
the cached stage for dependency cooks WITHOUT honoring --force-rebuild — it fired
before the force_rebuild handling, so a stale binary-store artifact could never
be regenerated. Guard it with !cook_config.force_rebuild so --force-rebuild always
takes effect (repo binary rebuilt).

kf6-kwayland: declare redbear-input-headers (fakeinput.cpp needs <linux/input.h>).
This commit is contained in:
2026-08-01 22:01:38 +03:00
parent ed580325a3
commit e67402e018
3 changed files with 9 additions and 2 deletions
@@ -16,6 +16,8 @@ dependencies = [
"libwayland",
"wayland-protocols",
"plasma-wayland-protocols",
# <linux/input.h> for fakeinput.cpp (Linux input event codes).
"redbear-input-headers",
]
script = """
DYNAMIC_INIT
@@ -38,7 +38,7 @@ cat > "${COOKBOOK_STAGE}/usr/lib/cmake/PlasmaWaylandProtocols/PlasmaWaylandProto
set(PLASMA_WAYLAND_PROTOCOLS_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../share/plasma-wayland-protocols")
EOF
cat > "${COOKBOOK_STAGE}/usr/lib/cmake/PlasmaWaylandProtocols/PlasmaWaylandProtocolsConfigVersion.cmake" << 'EOF'
set(PACKAGE_VERSION "1.16.0")
set(PACKAGE_VERSION "1.21.0")
if(PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION)
set(PACKAGE_VERSION_COMPATIBLE FALSE)
else()
+6 -1
View File
@@ -496,7 +496,12 @@ pub fn build(
};
}
if !check_source {
// Dependencies normally skip the source check for speed. But --force-rebuild
// must always take effect here — otherwise this early-return fires before the
// force_rebuild handling below, so a stale binary-store artifact whose source
// changed could never be regenerated (the KWayland/plasma-wayland-protocols
// 1.16-vs-1.21 stale-cache bug).
if !check_source && !cook_config.force_rebuild {
// TODO: when stage_dirs does not exist due to clean_target was true, extract from stage.pkgar?
let stage_present = stage_pkgars.iter().all(|file| file.is_file());
if stage_present && auto_deps_file.is_file() {