fix: comprehensive boot warnings and exceptions — fixable silenced, unfixable diagnosed

Build system (5 gaps hardened):
- COOKBOOK_OFFLINE defaults to true (fork-mode)
- normalize_patch handles diff -ruN format
- New 'repo validate-patches' command (25/25 relibc patches)
- 14 patched Qt/Wayland/display recipes added to protected list
- relibc archive regenerated with current patch chain

Boot fixes (fixable):
- Full ISO EFI partition: 16 MiB → 1 MiB (matches mini, BIOS hardcoded 2 MiB offset)
- D-Bus system bus: absolute /usr/bin/dbus-daemon path (was skipped)
- redbear-sessiond: absolute /usr/bin/redbear-sessiond path (was skipped)
- daemon framework: silenced spurious INIT_NOTIFY warnings for oneshot_async services (P0-daemon-silence-init-notify.patch)
- udev-shim: demoted INIT_NOTIFY warning to INFO (expected for oneshot_async)
- relibc: comprehensive named semaphores (sem_open/close/unlink) replacing upstream todo!() stubs
- greeterd: Wayland socket timeout 15s → 30s (compositor DRM wait)
- greeter-ui: built and linked (header guard unification, sem_compat stubs removed)
- mc: un-ignored in both configs, fixed glib/libiconv/pcre2 transitive deps
- greeter config: removed stale keymapd dependency from display/greeter services
- prefix toolchain: relibc headers synced, _RELIBC_STDLIB_H guard unified

Unfixable (diagnosed, upstream):
- i2c-hidd: abort on no-I2C-hardware (QEMU) — process::exit → relibc abort
- kded6/greeter-ui: page fault 0x8 — Qt library null deref
- Thread panics fd != -1 — Rust std library on Redox
- DHCP timeout / eth0 MAC — QEMU user-mode networking
- hwrngd/thermald — no hardware RNG/thermal in VM
- live preload allocation — BIOS memory fragmentation, continues on demand
This commit is contained in:
2026-05-05 20:20:37 +01:00
parent a5f97b6632
commit f31522130f
81834 changed files with 11051982 additions and 108 deletions
@@ -0,0 +1,184 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtWayland.Compositor
import QtWayland.Compositor.QtShell
QtShellChrome {
id: chrome
property alias shellSurface: shellSurfaceItemId.shellSurface
//! [maximizedRect]
maximizedRect: Qt.rect(usableArea.x,
usableArea.y,
usableArea.width,
usableArea.height)
//! [maximizedRect]
//! [leftResizeHandle]
Rectangle {
id: leftResizeHandle
color: "gray"
width: visible ? 5 : 0
anchors.topMargin: 5
anchors.bottomMargin: 5
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
}
//! [leftResizeHandle]
Rectangle {
id: rightResizeHandle
color: "gray"
width: visible ? 5 : 0
anchors.topMargin: 5
anchors.bottomMargin: 5
anchors.right: parent.right
anchors.top: parent.top
anchors.bottom: parent.bottom
}
Rectangle {
id: topResizeHandle
color: "gray"
height: visible ? 5 : 0
anchors.leftMargin: 5
anchors.rightMargin: 5
anchors.left: parent.left
anchors.top: parent.top
anchors.right: parent.right
}
Rectangle {
id: bottomResizeHandle
color: "gray"
height: visible ? 5 : 0
anchors.leftMargin: 5
anchors.rightMargin: 5
anchors.left: parent.left
anchors.bottom: parent.bottom
anchors.right: parent.right
}
Rectangle {
id: titleBar
anchors.top: topResizeHandle.bottom
anchors.left: leftResizeHandle.right
anchors.right: rightResizeHandle.left
height: visible ? xButton.height + 10 : 0
color: shellSurface.active ? "cornflowerblue" : "lightgray"
Text {
anchors.left: parent.left
anchors.right: rowLayout.left
anchors.verticalCenter: parent.verticalCenter
font.pixelSize: xButton.height
text: shellSurface.windowTitle
fontSizeMode: Text.Fit
}
//! [buttons]
RowLayout {
id: rowLayout
anchors.right: parent.right
anchors.rightMargin: 5
ToolButton {
text: "-"
Layout.margins: 5
visible: (chrome.windowFlags & Qt.WindowMinimizeButtonHint) != 0
onClicked: {
chrome.toggleMinimized()
}
}
ToolButton {
text: "+"
Layout.margins: 5
visible: (chrome.windowFlags & Qt.WindowMaximizeButtonHint) != 0
onClicked: {
chrome.toggleMaximized()
}
}
ToolButton {
id: xButton
text: "X"
Layout.margins: 5
visible: (chrome.windowFlags & Qt.WindowCloseButtonHint) != 0
onClicked: shellSurface.sendClose()
}
}
//! [buttons]
}
Rectangle {
id: topLeftResizeHandle
color: "gray"
height: 5
width: 5
anchors.left: parent.left
anchors.top: parent.top
}
Rectangle {
id: topRightResizeHandle
color: "gray"
height: 5
width: 5
anchors.right: parent.right
anchors.top: parent.top
}
Rectangle {
id: bottomLeftResizeHandle
color: "gray"
height: 5
width: 5
anchors.left: parent.left
anchors.bottom: parent.bottom
}
Rectangle {
id: bottomRightResizeHandle
color: "gray"
height: 5
width: 5
anchors.right: parent.right
anchors.bottom: parent.bottom
}
//! [decorations]
leftResizeHandle: leftResizeHandle
rightResizeHandle: rightResizeHandle
topResizeHandle: topResizeHandle
bottomResizeHandle: bottomResizeHandle
bottomLeftResizeHandle: bottomLeftResizeHandle
bottomRightResizeHandle: bottomRightResizeHandle
topLeftResizeHandle: topLeftResizeHandle
topRightResizeHandle: topRightResizeHandle
titleBar: titleBar
//! [decorations]
//! [shellsurfaceitem]
ShellSurfaceItem {
id: shellSurfaceItemId
anchors.top: titleBar.bottom
anchors.bottom: bottomResizeHandle.top
anchors.left: leftResizeHandle.right
anchors.right: rightResizeHandle.left
moveItem: chrome
staysOnBottom: shellSurface.windowFlags & Qt.WindowStaysOnBottomHint
staysOnTop: !staysOnBottom && shellSurface.windowFlags & Qt.WindowStaysOnTopHint
}
shellSurfaceItem: shellSurfaceItemId
//! [shellsurfaceitem]
}
@@ -0,0 +1,108 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtWayland.Compositor
WaylandOutput {
id: output
property bool isNestedCompositor: Qt.platform.pluginName.startsWith("wayland") || Qt.platform.pluginName === "xcb"
//! [handleShellSurface]
property ListModel shellSurfaces: ListModel {}
function handleShellSurface(shellSurface) {
shellSurfaces.append({shellSurface: shellSurface});
}
//! [handleShellSurface]
// During development, it can be useful to start the compositor inside X11 or
// another Wayland compositor. In such cases, set sizeFollowsWindow to true to
// enable resizing of the compositor window to be forwarded to the Wayland clients
// as the output (screen) changing resolution. Consider setting it to false if you
// are running the compositor using eglfs, linuxfb or similar QPA backends.
sizeFollowsWindow: output.isNestedCompositor
window: Window {
width: 1920
height: 1080
visible: true
WaylandMouseTracker {
id: mouseTracker
anchors.fill: parent
// Set this to false to disable the outer mouse cursor when running nested
// compositors. Otherwise you would see two mouse cursors, one for each compositor.
windowSystemCursorEnabled: output.isNestedCompositor
Image {
id: background
anchors.fill: parent
fillMode: Image.Tile
source: "qrc:/images/background.jpg"
smooth: true
//! [repeater]
Repeater {
id: chromeRepeater
model: output.shellSurfaces
// Chrome displays a shell surface on the screen (See Chrome.qml)
Chrome {
shellSurface: modelData
onClientDestroyed:
{
output.shellSurfaces.remove(index)
}
}
}
//! [repeater]
}
Rectangle {
anchors.fill: taskbar
color: "lavenderblush"
}
//! [taskbar]
Row {
id: taskbar
height: 40
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
Repeater {
anchors.fill: parent
model: output.shellSurfaces
ToolButton {
anchors.verticalCenter: parent.verticalCenter
text: modelData.windowTitle
onClicked: {
var item = chromeRepeater.itemAt(index)
if ((item.windowState & Qt.WindowMinimized) != 0)
item.toggleMinimized()
chromeRepeater.itemAt(index).activate()
}
}
}
}
//! [taskbar]
//! [usableArea]
Item {
id: usableArea
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: taskbar.top
}
//! [usableArea]
}
}
}
@@ -0,0 +1,21 @@
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtWayland.Compositor
import QtWayland.Compositor.QtShell
WaylandCompositor {
id: waylandCompositor
CompositorScreen { id: screen; compositor: waylandCompositor }
// Shell surface extension. Needed to provide a window concept for Wayland clients.
// I.e. requests and events for maximization, minimization, resizing, closing etc.
//! [shell]
QtShell {
onQtShellSurfaceCreated: (qtShellSurface) => screen.handleShellSurface(qtShellSurface)
}
//! [shell]
}