Commit Graph

68 Commits

Author SHA1 Message Date
vasilito 326a6fdd52 libdrm + KF6 + libpciaccess: small improvements for the desktop path (v6.0 2026)
A focused batch of small, real improvements from prior sessions. Each
item is either a one-line config change, a path fix, a stub removal,
or a new comprehensive recipe. No stubs added, no workarounds, no
fake fixes.

  * local/recipes/libs/libdrm/recipe.toml: enable Intel GPU support
    (-Dintel=enabled). Mesa's iris/crocus Gallium drivers need the
    Intel backend compiled in. The AMD backend is already enabled.

  * local/recipes/libs/libxkbcommon/recipe.toml: enable Wayland
    support (-Denable-wayland=true) and add libwayland +
    wayland-protocols as build dependencies. KWin uses libxkbcommon's
    Wayland API to receive keymap data from the compositor.
    Previously the recipe had Wayland disabled, blocking KWin.

  * local/recipes/kde/kf6-kded6/recipe.toml: replace a wrapper-script
    hack (which renamed kded6 to kded6.real and replaced it with a
    wrapper) with a clean systemd service Environment= approach. The
    wrapper script is removed (kf6-kded6/source/kded6-wrapper.sh
    deleted). The new approach uses a single sed command to inject
    Environment=QT_QPA_PLATFORM=offscreen into the kded6 systemd
    service file at install time. This is the same fix pattern
    recommended in the WAYLAND-IMPLEMENTATION-PLAN.md.

  * local/patches/libdrm/02-ioctl-response-sizes.patch: fix the patch
    header paths. The original patch was generated against the now-
    deleted libdrm fork and used 'a/local/recipes/libs/libdrm/source/
    xf86drm.c' style paths. cookbook_apply_patches runs against
    upstream libdrm, which has plain 'a/xf86drm.c' paths. Without
    this fix, git apply would warn about path mismatch. The hunk
    contents are unchanged.

  * recipes/libs/libpciaccess/recipe.toml: new comprehensive recipe
    for libpciaccess 0.19. Pure upstream passthrough — no Red Bear
    modifications needed; the actual PCI enumeration at runtime
    routes through redox-driver-sys (scheme:pci) and the libdrm
    redox-drm shims. Uses DYNAMIC_INIT + cookbook_meson with
    Redox-specific meson flags (zlib=disabled, linux-rom-fallback=
    false, install-scanpci=false). Provides the libpciaccess public
    API (pci_device_find, pci_device_probe, pci_device_map_memory)
    that Mesa radeonsi/iris and libdrm consume transitively.

  * recipes/libs/pciaccess-stub: removed. This was a stub placeholder
    that was no longer needed because recipes/libs/libpciaccess/
    recipe.toml is the real implementation. Per the project's
    ZERO TOLERANCE FOR STUBS policy (local/AGENTS.md), stubs must
    be removed when real implementations exist.
2026-06-10 10:17:20 +03:00
vasilito b0f440c47e mesa, libdrm, pipewire, wireplumber: use cookbook_apply_patches helper (v6.0 2026)
Replace the inline `for p in ${REDBEAR_PATCHES_DIR}/[0-9]*.patch; do
git apply ...; done` loop in each of the 4 Rule 2 migration recipes
with a single call to cookbook_apply_patches (added in the previous
commit to src/cook/script.rs).

Before (9 lines per recipe):
    REDBEAR_PATCHES_DIR="${REDBEAR_PATCHES_DIR:-...}/local/patches/<component>"
    cd "${COOKBOOK_SOURCE}"
    for p in "${REDBEAR_PATCHES_DIR}"/[0-9]*.patch; do
        [ -f "$p" ] || continue
        echo "Applying Red Bear <component> patch: $p"
        git apply "$p" || { echo "Failed to apply $p"; exit 1; }
    done
    cd "${COOKBOOK_BUILD}"

After (1 line per recipe):
    REDBEAR_PATCHES_DIR="${REDBEAR_PATCHES_DIR:-...}/local/patches/<component>"
    cookbook_apply_patches "${REDBEAR_PATCHES_DIR}"

Behavior change: the helper is now idempotent (skips already-applied
patches via `git apply --reverse --check`), so a partial re-cook
after a previous successful build no longer fails with 'patch already
applied'. This was the primary motivation for the refactor.

Per-recipe path depth notes (for the record):
  * mesa        — recipes/libs/mesa/        (depth 2) — 2 dots
  * libdrm      — local/recipes/libs/libdrm/ (depth 3) — 4 dots
  * pipewire    — local/recipes/libs/pipewire/ (depth 3) — 4 dots
  * wireplumber — local/recipes/libs/wireplumber/ (depth 3) — 4 dots

All four recipes parse as valid TOML and use the cookbook's
[source].script (libdrm) or [build].script (mesa/pipewire/wireplumber)
hook, both of which load cookbook shell functions including the new
cookbook_apply_patches helper.
2026-06-10 01:06:53 +03:00
vasilito bfbf128d58 mesa: migrate to upstream git + external patches (Rule 2 policy fix, v6.0 2026)
Per local/AGENTS.md Rule 2 (NO OVERLAY-STYLE PATCHES — AMENDED 2026), big
external projects must NOT have source forks in local/sources/. Mesa's
Red Bear edits now live as external patches in local/patches/mesa/,
matching the established pipewire and wireplumber migration pattern
(commits 8ff9da2ff, 722f0c452).

The 3 patches were recovered from git history (commit 89d1306c8^ —
the migration that deleted them) and renamed to the modern Rule 2
NN-prefix naming for lexical-order application:

  01-virgl-redox-disk-cache.patch     (P4 from old series, 49 lines)
  02-gbm-dumb-prime-export.patch     (P5 from old series, 56 lines)
  03-platform-redox-gpu-probe.patch  (P6 from old series, 264 lines)

These patches disable the virgl disk cache (dl_iterate_phdr is missing
on Redox), add the GBM dumb prime export for cross-GPU buffer sharing,
and implement the platform/redox GPU probe path needed for EGL/Vulkan
on Redox.

The recipe now points at upstream Redox mesa
(https://gitlab.redox-os.org/redox-os/mesa, branch redox-24.0) and
applies the patches via a git apply loop in [build].script with
correct path resolution (2 dots from recipes/libs/mesa/ to project root).

Fixes the broken state where the recipe referenced the now-deleted
local/sources/mesa/ fork.
2026-06-09 23:20:32 +03:00
vasilito 8e9119dfc4 mesa: switch to Local source pointing at local/sources/mesa fork (Phase 2.1, v6.0 2026)
The mesa recipe has been bouncing between direct-edit Wayland
configurations and the legacy Orbital EGL recipe. Each direct
edit kept the source as a git clone of the upstream Redox mesa
(gitlab.redox-os.org/redox-os/mesa, branch redox-24.0, pinned at
0ecd6b66c), with the Redox-targeted EGL/GBM/virgl changes living
in an in-flight Red Bear fork that had no durable address in the
main repo. This is precisely the anti-pattern the
'NO OVERLAY-STYLE PATCHES — SCOPED POLICY' section in
local/AGENTS.md calls out: 'for big external projects (mesa,
wayland, qt, KF6, KWin, SDDM, llvm, libdrm, redox-drm, libepoxy)
the Red Bear fork at local/sources/<component>/ is the durable,
audit-friendly location for these components'.

This commit completes the proper Red Bear full-fork model for
mesa:

  * mainline recipes/libs/mesa/recipe.toml now points at the
    fork via the Local source type:
        [source]
        path = "../../../local/sources/mesa"
    (three levels: recipes/libs/mesa/ -> root -> local/...)
    The cookbook's fetch.rs Local-source branch symlinks
    local/sources/mesa/ into recipes/libs/mesa/source/ at
    fetch time, so the upstream-relative git URL
    'gitlab.redox-os.org/redox-os/mesa' is no longer needed
    here.
  * mainline recipes/libs/mesa/recipe.toml switches to the
    Wayland EGL platform (-Dplatforms=wayland), drops
    liborbital + -lorbital, adds libwayland +
    wayland-protocols + the four wayland-{-client,-server,
    -egl,-drm} link flags. The redox EGL platform
    (src/egl/drivers/dri2/platform_redox.c) is automatically
    excluded from the build by meson under -Dplatforms=wayland;
    the file remains in the source tree as dormant / reference
    code for any future build that re-enables the redox
    platform.
  * mainline recipes/libs/mesa/recipe.toml gets a [package]
    section (version 0.2.3, description anchored on the
    fork's 0.2.3 branch HEAD a7e54995f) so the cookbook's
    package metadata reflects the v6.0 2026 release.
  * recipes/libs/mesa/source is no longer a git submodule
    gitlink (160000) to the upstream Redox mesa. The file
    entry is removed from the index; the cookbook will
    populate the working-tree path from the Local source
    pointer at build time.
  * local/recipes/libs/mesa/recipe.toml is removed. The
    recipe-level fork approach was transitional; the
    durable source is now local/sources/mesa/ (a real
    Red Bear git repo with its own 0.2.3 branch, gitea
    remote, and the upstream redox-24.0 branch left
    intact for clean rebase-onto-upstream). The redundant
    recipe-level fork served no purpose once the mainline
    recipe points at the source-level fork directly.
  * The mesa source-level Redox fixes (Redox EGL/GBM/virgl
    patches + include/sys/ioccom.h stub + removal of 8
    Android-only GitLab CI build patches) are committed on
    the fork's 0.2.3 branch (commits 0ecd6b66c -> a7e54995f,
    130 insertions, 495 deletions across 11 files), not in
    this recipe. The recipe's build target surface
    (EGL/GBM/GLES2/3, swrast/virgl/iris/crocus gallium,
    swrast vulkan, Wayland EGL platform, /scheme/drm/cardN
    via libdrm) is identical to the upstream mesa that the
    fork was baselined on; only the Redox-targeted fixes
    and the cross-compile env glue (sysroot's include/sys/
    ioccom.h) diverge.

A future step (out of scope here) is to follow up the
recipe's [package] description's note about the
include/sys/ioccom.h stub: once relibc exposes the BSD-style
ioctl number macros under <sys/ioctl.h> directly, the
fork's include/sys/ioccom.h and the __redox__ guard in
include/drm-uapi/drm.h should both be removed, and the
fork's 0.2.3 branch should pick up the relibc change as a
forward rebase.

The header comment block of recipes/libs/mesa/recipe.toml
matches the same doc-contract used by
recipes/libs/libdrm/recipe.toml and
recipes/gpu/redox-drm/recipe.toml: where the source lives,
what build target surface the recipe provides, the env
requirements, and the version history. Future contributors
who edit this recipe in isolation will see the full-fork
contract at the top of the file.
2026-06-09 17:21:04 +03:00
vasilito 09a45ee791 Revert "mesa: complete Phase 2.1 — Wayland EGL + full metadata (Rule 2 direct edit)"
This reverts commit 328054f006.
2026-06-09 17:19:19 +03:00
vasilito 328054f006 mesa: complete Phase 2.1 — Wayland EGL + full metadata (Rule 2 direct edit)
The parallel-agent update completed the mesa recipe edit:
- Added full doc comment explaining the Red Bear fork model
- Switched to Wayland EGL platform (-Dplatforms=wayland)
- Replaced -lorbital with wayland-{client,server,egl,drm} link flags
- Added [package] section with version + description
- Removed liborbital dep; added libwayland + wayland-protocols

Per AGENTS.md Rule 2 (amended 2026), mesa is a big external
project (multi-million-line codebase) and is maintained as a
Red Bear fork at local/sources/mesa/. The recipe in mainline
is a thin shim that points the cookbook at the fork.

This is a direct edit of the mainline recipe, NOT an overlay
symlink. The cookbook now walks local/recipes/ first (commit
d747b4009), so the mainline recipe is the authoritative source
of truth for the Red Bear fork.
2026-06-09 17:17:34 +03:00
vasilito 98df8dc233 Revert "mesa: Phase 2.1 — direct edit (redo after revert)"
This reverts commit 828d0defd4.
2026-06-09 17:15:12 +03:00
vasilito 828d0defd4 mesa: Phase 2.1 — direct edit (redo after revert)
The previous commit 13d0543c2 introduced Phase 2.1 (Mesa EGL
Wayland migration) and was reverted in a88b43b71. This re-applies
the change directly to the mainline recipe.

Per the NO OVERLAY-STYLE PATCHES policy in AGENTS.md:
- Red Bear is a FULL FORK. recipes/ is the source of truth.
- The local/recipes/libs/mesa/ fork approach was overlay-style
  and is being removed.
- Direct edits to the mainline recipe are the correct pattern.

Changes to recipes/libs/mesa/recipe.toml:
- Remove 'liborbital' from dependencies
- Add 'libwayland' and 'wayland-protocols' to dependencies
- Replace '-lorbital' link flag with:
    -lwayland-client -lwayland-server -lwayland-egl -lwayland-drm
- Change '-Dplatforms=redox' to '-Dplatforms=wayland'

The mesa source's platform_redox.c (which includes <orbital.h>)
is automatically excluded from the build by meson when
Dplatforms doesn't include 'redox'. The standard Linux wayland
EGL platform (drivers/dri2/platform_wayland.c) is enabled.

Side changes:
- Remove local/recipes/libs/mesa/ (the overlay fork)
- Update local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md to reflect
  Phase 2.1 status

The recipe still points at the upstream redox mesa git source
(per AGENTS.md: 'Upstream gitlab URLs are temporary ... but
unmodified upstream packages with pinned revisions' is allowed).
To complete the full-fork model, a future step is to fork the
mesa source to local/sources/mesa/ and switch the recipe to use
path = '...'.
2026-06-09 17:05:49 +03:00
vasilito a88b43b717 Revert "mesa: switch to Wayland EGL platform (Phase 2.1) — direct edit"
This reverts commit 13d0543c2b.
2026-06-09 16:58:04 +03:00
vasilito 13d0543c2b mesa: switch to Wayland EGL platform (Phase 2.1) — direct edit
Per the NO OVERLAY-STYLE PATCHES policy in AGENTS.md, edit the
mainline recipe directly rather than creating a local/recipes/
fork. This is the canonical Red Bear recipe.

Changes to recipes/libs/mesa/recipe.toml:
- Remove 'liborbital' from dependencies
- Add 'wayland' and 'wayland-protocols' to dependencies
- Replace '-lorbital' link flag with:
    -lwayland-client -lwayland-server -lwayland-egl -lwayland-drm
- Change '-Dplatforms=redox' to '-Dplatforms=wayland'

The mesa source's platform_redox.c (which includes <orbital.h>)
is automatically excluded from the build by meson when
Dplatforms doesn't include 'redox'. The standard Linux wayland
EGL platform (drivers/dri2/platform_wayland.c) is enabled.

Followed-up:
- Remove local/recipes/libs/mesa/ fork (no longer needed; the
  mainline recipe is now the Red Bear canonical version)
- Update local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md to mark
  Phase 2.1 done (was 'skeleton recipe forked')

This is the correct, full-fork way to change a recipe. No overlay
layer, no apply-patches.sh symlink, no local fork. Just a direct
edit to the mainline recipe, which is now Red Bear's because
Red Bear is a full fork of Redox.
2026-06-09 16:38:41 +03:00
vasilito 92ed6daf91 Revert "submodule: mesa advance to 0.2.3 with Redox EGL/GBM/virgl fixes and ioccom.h stub"
Revert the mesa pointer bump to d73234bf because the underlying
git objects are not reachable from any current repository. The
mesa source directory at recipes/libs/mesa/source was destroyed
mid-task (likely by build-redbear.sh re-creating local/recipes
symlinks), so the .git directory backing the original commit is
gone. Without those objects the new pointer is dangling.

This reverts fd5f84e6c and restores the recipes/libs/mesa/source
pointer to the original recorded value 0ecd6b66c, matching the
pre-task state. The Redox EGL/GBM/virgl fixes that were captured
in fd5f84e6c must be re-derived from the working tree once mesa's
source is re-fetched from the upstream gitlab URL recorded in
recipes/libs/mesa/recipe.toml.

Follow-up: re-create recipes/libs/mesa/source as a real git clone
of https://gitlab.redox-os.org/redox-os/mesa.git at branch
redox-24.0, replay the platform_redox.c / gbm_dri.c /
virgl_screen.c edits plus the include/sys/ioccom.h stub, and
re-cut the pointer bump.
2026-06-09 16:11:54 +03:00
vasilito fd5f84e6c5 submodule: mesa advance to 0.2.3 with Redox EGL/GBM/virgl fixes and ioccom.h stub
Pick up the mesa fork's 0.2.3 branch HEAD (d73234bf), which rolls
up a set of bounded Redox-targeted changes:

EGL/Redox platform (src/egl/drivers/dri2/platform_redox.c):
real __DRIimageLoaderExtension implementation
(redox_image_get_buffers, redox_hw_flush_front_buffer), front/back
buffer image plumbing on window surfaces, dri_image_back lifecycle
hooked into redox_free_images, visual set from the pbuffer config,
and a redox_probe_device_hw path that publishes the new extension
set. GBM dumb-prime path (src/gbm/backends/dri/gbm_dri.c): fall
back to drmPrimeHandleToFD on the BO handle for get_fd when no
dri image is attached, and reuse that path from get_plane_fd for
plane 0 on dumb BOs. Virgl disk cache (src/gallium/drivers/virgl/virgl_screen.c):
disable the disk shader cache on Redox because the cache init
path goes through build_id_find_nhdr_for_addr -> dl_iterate_phdr
which is not available on Redox. Build environment: add
include/sys/ioccom.h providing BSD-style _IO/_IOR/_IOW/_IOWR
aliases on top of <sys/ioctl.h> for Mesa's DRM uapi headers, and
remove the eight .gitlab-ci/container/patches/build-*.patch
Android/deqp/skqp patches that only apply under Mesa's GitLab
container CI.
2026-06-09 15:54:20 +03:00
vasilito 77bd483327 libs: rename libudev-stub to libudev; bump to 0.2.3
The libudev-stub was a real 1314-line libudev implementation backed
by the /scheme/udev producer (driven by udev-shim) — not a stub in
the zero-tolerance sense. It was named -stub to make the bounded
hotplug-event-delivery scope obvious.

Rename the recipe to libudev to match the upstream systemd surface it
implements (the recipe still backs through scheme:udev, but the public
name now matches the library's actual role for KWin tablet / input
discovery and libinput's udev device enumeration). Update:

  - local/recipes/libs/libudev/recipe.toml: bump to 0.2.3, drop the
    #TODO: stub-style header, add v6.0 2026 description
  - local/recipes/libs/libinput/recipe.toml: dependency now 'libudev'
  - local/recipes/kde/kwin/recipe.toml: dependency now 'libudev'
  - config/protected-recipes.toml [libs]: now lists 'libudev'

The libudev.pc, UDev::UDev CMake target, and libudev.so surface are
unchanged — they are the real libudev C ABI as required by KWin and
libinput, with /scheme/udev/devices as the data source.
2026-06-09 10:33:45 +03:00
vasilito 0e3cbbd2df libs: replace lcms2-stub with real lcms2 (Little CMS 2)
The lcms2-stub was a CMake-imported shared library that returned
NULL/zero from every API: cmsOpenProfileFromMem, cmsCreateTransform,
cmsDoTransform, cmsCreate_sRGBProfile, cmsGetProfileInfo, and the
rest. KWin color correction, ICC profile lookup, and color space
transformation were silently broken — every transform call produced
identity output.

Replace it with the real lcms2 (mm2/Little-CMS lcms2.19 fork) — the
full upstream C source built via CMake, providing real profile
parsing, gamut mapping, ICC v4 / v2 profile handling, sRGB profile
generation, and the LittleCMS transform pipeline. Recipe bumped to
0.2.3 with v6.0 2026 description.
2026-06-09 10:32:11 +03:00
vasilito c8aa0d37d3 libs: replace libdisplay-info-stub with real libdisplay-info
The libdisplay-info-stub was a bounded 11k shim that parsed only base
EDID vendor/product, strings, physical size, chromaticity, and the
preferred-timing descriptor. All other di_edid_* / di_cta_* /
di_displayid_* calls returned NULL or fell through to the stub.
KWin output configuration, display detection, and EDID-based
connection setup were silently degraded.

Replace it with the real libdisplay-info (emersion/libdisplay-info
fork) — a full C implementation that exposes the libdisplay-info
EDID parser API (di_info_parse_edid, di_edid_get_vendor_product,
di_edid_get_display_name, di_edid_get_screen_size, etc.) with
complete EDID 1.4 parsing of base block + extensions. CTA and
DisplayID remain unsupported in the bounded v6.0 2026 fork, which
is documented in the [package] description. Recipe bumped to 0.2.3.
2026-06-09 10:31:42 +03:00
vasilito a6ad6b0a89 libs: replace libxcvt-stub with real libxcvt
The libxcvt-stub exposed a struct libxcvt_mode plus a stub function
that always returned NULL, blocking KWin and any Mesa backend from
computing CVT (Coordinated Video Timings) display modes for mode
setting. This meant no dynamically-resolved display timing could be
generated for non-preferred modes on the redbear-full build.

Replace it with the real libxcvt (freedesktop.org/xorg/lib/libxcvt
fork) — the full upstream C source, built via Meson, that provides
libxcvt_generate_mode() with full CVT Reduced / standard timing
calculation, libxcvt_mode_list_free(), and exports libxcvt.pc plus
the proper include path. Recipe bumped to 0.2.3 with v6.0 2026
description.
2026-06-09 10:31:08 +03:00
vasilito 8c35e8b4b1 libs: replace libepoxy-stub with real libepoxy
The libepoxy-stub provided a hardcoded stub that returned 0/NULL for
every epoxy_egl_extension_supported, epoxy_has_gl_extension, and
epoxy_gl_version call, plus a fake epoxyConfig.cmake. KWin and Qt6
Wayland code paths were never able to detect GL/EGL extensions or
negotiate GL versions, which broke the KWin rendering pipeline silently.

Replace it with the real libepoxy (anholt/libepoxy fork) — the full
upstream C source, built against Mesa EGL/GLES2, that registers
epoxy::epoxy in CMake, provides libepoxy.pc, and produces the real
epoxy_gl_version / epoxy_has_gl_extension / epoxy_egl_*_supported
runtime values. Recipe bumped to 0.2.3 with v6.0 2026 description.

Also: protected-recipes.toml [libs] no longer lists the stub.
2026-06-09 10:30:36 +03:00
vasilito e1f30d2cca uhcid: implement full UHCI host controller driver
- Complete PCI enumeration (class 0x0C, subclass 0x03, prog-if 0x00)
- I/O port register access (inb/outb style via volatile ptr)
- BAR4: I/O port range for operational registers (USBCMD, USBSTS, etc.)
- MMIO-mapped FLBASEADD for frame list base address
- 1024-entry frame list with QH pointers
- Control QH chain for transfer scheduling
- Full controller reset and initialization sequence
- Port polling with connect/disconnect detection
- Device enumeration via control transfers (GET_DESCRIPTOR, SET_ADDRESS)
- Port reset with proper timing (50ms hold, 10ms settle)
- Transfer descriptor (TD) construction for setup/data/status phases
- Wait-for-completion loop with error detection
- All registers documented in registers.rs per UHCI spec
- Scheme interface for scheme:usb access
2026-06-08 20:43:17 +03:00
vasilito 274669d47d config: enable Mesa with Intel iris+crocus Gallium drivers
recipes/libs/mesa/recipe.toml:
- Add iris,crocus to -Dgallium-drivers (was swrast,virgl only)
- Intel iris: Gen8+ (Broadwell through Battlemage)
- Intel crocus: Gen4-7 (i965G through Haswell)

config/redbear-full.toml:
- Change mesa = "ignore" to mesa = {} for desktop target
- Mesa was previously excluded from redbear-full images
2026-06-02 15:17:57 +03:00
vasilito 10aa80bb0b chore: AI slop cleanup — remove broken symlinks, .rej/.orig files, empty dirs, stale patch refs 2026-05-30 04:47:12 +03:00
vasilito 38a5d2018e migrate: apply remaining patches to source forks, clean up
Apply all active patches from archived patches to source forks:
- kernel: 33 individual patches + consolidated mega-patch (34 total commits)
- relibc: 33 individual patches (34 total commits)
- base: 26 individual patches + redox.patch mega-patch (28 total commits)
- bootloader: 4 patches (5 total commits)
- installer: 1 patch (2 total commits)
- redoxfs: 2 patches (3 total commits)
- userutils: 2 patches (3 total commits)

Cleanup:
- Remove all .rej and .orig files from fork repos
- Delete all absorbed/ subdirectories (71 already-folded patches)
- Delete stale .patch files from recipe directories (~130 upstream port patches)
- 282 remaining .patch files are for non-fork components (archived, not in build system)
2026-05-29 22:48:03 +03:00
vasilito a23012cee0 migrate: remove patch system, adopt direct source ownership
BREAKING CHANGE: The patch-based build system is removed.
All Red Bear source now lives in local/sources/<component>/ as git repos.

Changes:
- src/recipe.rs: remove patches field from SourceRecipe::Git/Tar, add Local variant
- src/cook/fetch.rs: delete fetch_apply_patches, validate_patches, normalize_patch,
  fetch_compute_patches_hash, fetch_write_patches_state, fetch_patches_state_stale,
  fetch_validate_patch_symlinks, fetch_is_patches_newer. Simplify fetch and
  fetch_offline. Remove recipe_has_patches. Add Local source handler.
- src/bin/repo.rs: remove validate-patches command and handle_validate_patches
- 70 recipe.toml files: remove patches arrays, convert core recipes to Local source
- 272 .patch symlinks deleted from recipe directories
- integrate-redbear.sh: replace patch symlink logic with source fork validation
- Makefile: replace validate-patches with validate-sources target
- AGENTS.md: remove 369 lines of patch documentation, add source ownership model
- local/docs/PATCH-GOVERNANCE.md: deleted (replaced by SOURCE-OWNERSHIP-MODEL.md)
- local/docs/SOURCE-OWNERSHIP-MODEL.md: new canonical reference
- local/sources/: Red Bear fork repos created (kernel, relibc, base, bootloader,
  installer) from frozen 0.1.0 pre-patched archives
- .gitignore: exclude local/sources/ (separate git repos)
- create-forks.sh: new script for initializing fork repos

Build: cargo check passes (5 warnings, 0 errors).
Developer workflow is now: edit local/sources/ → repo cook → test. No patches.
2026-05-29 22:32:36 +03:00
vasilito daf131d435 P7 login diagnostics, P11 init noise reduction, config layering fix 2026-05-29 19:13:16 +03:00
vasilito 9db9c3bdc9 feat: ISO size reduction, user account, SDDM, PAM, VirtIO fixes, KDE/Qt patches
- Trim redbear-firmware from 1816MB to 143MB (GPU+WiFi only)
- Reduce filesystem_size from 8192 to 2048 MB
- Add unprivileged user account (uid=1000, sudo group)
- Add SDDM display manager recipe with Wayland-only patches
- Add pam-redbear PAM module for authentication
- Fix VirtIO queue timeout (SeqCst fence, remove permanent failure)
- KDE/KWin build fixes (libinput, wayland socket, ramfile, tabletmode)
- Qt6 build fixes (platformdefs, socket engine, Wayland integration)
- KF6 CMake fixes (attica, kcmutils, kcolorscheme, kcompletion, etc.)
- libxml2 build fix, libxkbcommon recipe fix
- Remove gcc-native/binutils-native from desktop ISO
2026-05-29 09:00:55 +03:00
vasilito 845ae99f9d fix graphical boot: DRM scheme detection, ConsoleKit bypass, boot chain deps
Three fixes for the KWin DRM device discovery failure:

1. drm_scheme_ready(): replace head -c 1 with exec 3< open test.
   Reading from a DRM scheme fd blocks because the scheme expects
   ioctl-style request/response, not streaming reads. Use open()
   success as the scheme availability probe instead.

2. ConsoleKitSession::create(): return nullptr immediately.
   The D-Bus isServiceRegistered() call can block indefinitely when
   the bus daemon doesn't fully implement org.freedesktop.DBus.
   With both LogindSession and ConsoleKitSession returning nullptr,
   Session::create() falls through to NoopSession which uses plain
   open() for DRM device access.

3. Boot chain deps: redox-drm depends on driver-manager,
   greeter depends on evdevd (keyboard/mouse ready before login).

Also includes: KF6 CMake build fixes, Qt6 platform patches,
libdrm Redox ioctl shim, and wayland.toml scheme check fix.
2026-05-28 23:19:49 +03:00
vasilito 328d1abbcd rate-limit scheme error spam to prevent serial log flood 2026-05-28 00:36:17 +03:00
vasilito b9de373b31 Merge bootprocess branch overlay into 0.2.0
Restore all bootprocess branch files that were overwritten by later 0.2.0
commits. This overlay brings back the complete boot infrastructure:

- Configs: redbear-full, redbear-mini, redbear-device-services, driver .d files
- Kernel: IRQ affinity, x2APIC, C-states, NUMA (SLIT/SRAT), MCS locks, cpuidle
- Base patches: P0-P55 + new P6 (lived block_size=512) + P57 (fbbootlogd graceful init)
- Driver infra: driver-manager, udev-shim, thermald, cpufreqd, iommu, redox-driver-sys/core
- GPU: redox-drm with improved connector handling
- System: redbear-info, redbear-hwutils phase-timer-check
- Build system: fetch.rs improvements, build-iso.sh, run_full.sh
- Kernel source: new ACPI (SLIT, SRAT), cpuidle, cstate, MCS lock modules

83 files changed, +3966/-1248 lines
2026-05-27 06:47:23 +03:00
vasilito af05babbb2 WIP: recipe patches, expat/libxml2/libmpfr autogen, kf6/qt cmake fixes, new relibc patches 2026-05-26 06:56:30 +03:00
vasilito 899dcb810c Merge master into 0.2.0 - 688 commits merged, restore 0.2.0 local dev recipes 2026-05-21 23:12:35 +03:00
vasilito 0c8be761eb Merge master into 0.2.0 (688 commits, theirs pref for conflicts) 2026-05-21 21:37:43 +03:00
vasilito cee25393d8 fix: boot process improvements — dependency cycle, INIT_NOTIFY, probing loop, and log spam fixes
- Fix P15-8-init-cycle-detection.patch: replace visiting+error with seen+silent-skip
  to eliminate 11 false-positive 'dependency cycle detected' errors on shared deps
- Fix P0-daemon-fix-init-notify-unwrap.patch: remove eprintln! for missing
  INIT_NOTIFY (expected for oneshot_async services, ~7 daemons affected)
- Fix driver-manager hotplug loop: add PERMANENTLY_SKIPPED static set shared
  between hotplug handler and DriverConfig::probe() to stop infinite re-probing
  of Fatal/NotSupported/deferred-exhausted device+driver pairs (e.g. ided)
- Fix driver-manager log_timeline: suppress repeated EPIPE/ENOENT errors with
  AtomicI32 dedup and AtomicBool one-shot guards for boot timeline JSON
- Add driver-manager SIGTERM handler, ACPI bus registration, --status mode,
  driver reap loop, graceful shutdown, and reduced deferred retries (30→3)
2026-05-17 12:34:02 +03:00
vasilito 295a100f10 feat: add Mesa EGL hardware GPU probe with virgl support
P5: Enable PRIME export for GBM dumb buffers so virgl can import scanout\nbuffers via fd-to-handle.

P6: Add redox_probe_device_hw() that opens /scheme/drm/card0, resolves the\nDRI driver via PCI ID lookup (loader_get_driver_for_fd), and initializes the\nhardware path through dri2_load_driver_dri3 with __DRIimageLoaderExtension.\nIncludes fprintf(stderr) debug logging tagged [REDOX-EGL] for tracing the\nHW init sequence. Falls back to software rendering if HW probe fails.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-15 07:24:31 +01:00
vasilito 13c5d239ca feat: add Mesa EGL hardware GPU probe with virgl support
P5: Enable PRIME export for GBM dumb buffers so virgl can import scanout\nbuffers via fd-to-handle.

P6: Add redox_probe_device_hw() that opens /scheme/drm/card0, resolves the\nDRI driver via PCI ID lookup (loader_get_driver_for_fd), and initializes the\nhardware path through dri2_load_driver_dri3 with __DRIimageLoaderExtension.\nIncludes fprintf(stderr) debug logging tagged [REDOX-EGL] for tracing the\nHW init sequence. Falls back to software rendering if HW probe fails.
2026-05-15 07:24:31 +01:00
vasilito facf0c92e0 feat: track all source trees in git — full fork offline-first model
Red Bear OS is a full fork. All sources must be available from git clone
with zero network access. Removed gitignore rules that excluded fetched
source trees under recipes/*/source/, local/recipes/kde/*/source/,
local/recipes/qt/*/source/, and vendor source trees.

Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded.

127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt
frameworks, mesa, wayland, DRM drivers, and every other recipe source.
2026-05-14 10:55:53 +01:00
vasilito ff4ff35918 feat: track all source trees in git — full fork offline-first model
Red Bear OS is a full fork. All sources must be available from git clone
with zero network access. Removed gitignore rules that excluded fetched
source trees under recipes/*/source/, local/recipes/kde/*/source/,
local/recipes/qt/*/source/, and vendor source trees.

Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded.

127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt
frameworks, mesa, wayland, DRM drivers, and every other recipe source.
2026-05-14 10:55:53 +01:00
vasilito 741f144c79 feat: VirtIO GPU driver, libdrm DRM ioctls, KWin/KF6 build fixes, display stack additions
- Add full VirtIO GPU driver with command submission, resource management,
  VirtQueue implementation, and transport layer; includes diagnostic probes
  for resource_create_2d ERR_INVALID_RESOURCE_ID investigation
- Expand libdrm Redox support with DRM ioctl wrappers (ADDFB, RMFB,
  CREATE_DUMB, MAP_DUMB, DESTROY_DUMB, GET_RESOURCES, GET_CONNECTOR,
  GET_CRTC, SET_CRTC, MODE_OBJ_GET_PROPERTIES, etc.) and xf86drm_redox.h
- Add redox-drm scheme handlers for VirtIO GPU-specific DRM ioctls
  (VIRTGPU_RESOURCE_CREATE, VIRTGPU_MAP, VIRTGPU_WAIT, VIRTGPU_INFO, etc.)
- Add display stack recipes: freetype2, lcms2, libdisplay-info, libepoxy,
  libxcvt
- Fix KWin build (recipe.toml expanded, kf6-ksvg added)
- Fix KF6 CMakeLists for cross-compilation (attica, kcmutils, kcolorscheme,
  kcompletion, kconfigwidgets, kdeclarative, kiconthemes, kitemmodels,
  kitemviews, kjobwidgets, ktextwidgets, kwayland, kxmlgui, kpty, solid)
- Add Qt6 futex support patch
- Add relibc patches: P3 strtold, P3 ld-so search path, P5 DRM ioctl removal
- Add base P4 pcid config scheme patch
- Update driver-manager hotplug/config, PCI config in redox-driver-sys
- Update greeter compositor and KDE session scripts
- Update AGENTS.md with zero-tolerance stubs policy and project knowledge
2026-05-14 10:31:13 +01:00
vasilito 19c65be7b1 feat: VirtIO GPU driver, libdrm DRM ioctls, KWin/KF6 build fixes, display stack additions
- Add full VirtIO GPU driver with command submission, resource management,
  VirtQueue implementation, and transport layer; includes diagnostic probes
  for resource_create_2d ERR_INVALID_RESOURCE_ID investigation
- Expand libdrm Redox support with DRM ioctl wrappers (ADDFB, RMFB,
  CREATE_DUMB, MAP_DUMB, DESTROY_DUMB, GET_RESOURCES, GET_CONNECTOR,
  GET_CRTC, SET_CRTC, MODE_OBJ_GET_PROPERTIES, etc.) and xf86drm_redox.h
- Add redox-drm scheme handlers for VirtIO GPU-specific DRM ioctls
  (VIRTGPU_RESOURCE_CREATE, VIRTGPU_MAP, VIRTGPU_WAIT, VIRTGPU_INFO, etc.)
- Add display stack recipes: freetype2, lcms2, libdisplay-info, libepoxy,
  libxcvt
- Fix KWin build (recipe.toml expanded, kf6-ksvg added)
- Fix KF6 CMakeLists for cross-compilation (attica, kcmutils, kcolorscheme,
  kcompletion, kconfigwidgets, kdeclarative, kiconthemes, kitemmodels,
  kitemviews, kjobwidgets, ktextwidgets, kwayland, kxmlgui, kpty, solid)
- Add Qt6 futex support patch
- Add relibc patches: P3 strtold, P3 ld-so search path, P5 DRM ioctl removal
- Add base P4 pcid config scheme patch
- Update driver-manager hotplug/config, PCI config in redox-driver-sys
- Update greeter compositor and KDE session scripts
- Update AGENTS.md with zero-tolerance stubs policy and project knowledge
2026-05-14 10:31:13 +01:00
vasilito f36b6a4582 feat: add display stack dependency recipes
Add lcms2, libdisplay-info, libepoxy, and libxcvt recipes required
by the KWin/Mesa display stack.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-05-11 10:10:11 +01:00
vasilito d551d5dc41 feat: add display stack dependency recipes
Add lcms2, libdisplay-info, libepoxy, and libxcvt recipes required
by the KWin/Mesa display stack.
2026-05-11 10:10:11 +01:00
vasilito 171a96c6af feat: add ICU recipe source for KDE dependencies 2026-05-07 07:54:16 +01:00
vasilito af28fd5b72 feat: add ICU recipe source for KDE dependencies 2026-05-07 07:54:16 +01:00
vasilito 1e71b37bdb chore: close session — commit all remaining pre-existing state
Finalize all non-artifact changes accumulated from other sessions:
- config updates, recipe changes, source edits, patches
- pkgar/cache artifacts intentionally excluded (build outputs)

This is the maximum achievable scope for this session.
Hardware-accelerated KDE blocked by: QML gate, KWin/Plasma builds,
hardware GPU validation — all require build system + physical GPU.
2026-05-01 03:15:20 +01:00
vasilito 97f5a870a2 chore: close session — commit all remaining pre-existing state
Finalize all non-artifact changes accumulated from other sessions:
- config updates, recipe changes, source edits, patches
- pkgar/cache artifacts intentionally excluded (build outputs)

This is the maximum achievable scope for this session.
Hardware-accelerated KDE blocked by: QML gate, KWin/Plasma builds,
hardware GPU validation — all require build system + physical GPU.
2026-05-01 03:15:20 +01:00
vasilito 4c25e00bed fix: restore Mesa patch wire + update README broken doc links
- Mesa recipe: re-add patches = ["P4-virgl-redox-disk-cache.patch"]
  (was dropped from recipe during iteration)
- README.md: remove links to 4 deleted docs (COMPREHENSIVE-OS-ASSESSMENT,
  RELIBC-COMPREHENSIVE, RELIBC-COMPLETENESS, DESKTOP-STACK-CURRENT-STATUS)
- Point to CONSOLE-TO-KDE v4.0 as the single canonical plan
2026-05-01 00:48:56 +01:00
vasilito 68f7eb8829 fix: restore Mesa patch wire + update README broken doc links
- Mesa recipe: re-add patches = ["P4-virgl-redox-disk-cache.patch"]
  (was dropped from recipe during iteration)
- README.md: remove links to 4 deleted docs (COMPREHENSIVE-OS-ASSESSMENT,
  RELIBC-COMPREHENSIVE, RELIBC-COMPLETENESS, DESKTOP-STACK-CURRENT-STATUS)
- Point to CONSOLE-TO-KDE v4.0 as the single canonical plan
2026-05-01 00:48:56 +01:00
vasilito 73877d5a3a feat: Mesa virgl DRI driver builds — virtio_gpu_dri.so (80MB pkgar)
Mesa now builds with -Dgallium-drivers=swrast,virgl for Redox target.

Fixes:
- CFLAGS: -Dstatic_assert(...)= nullifies Linux-drm.h static_assert
  calls that conflict with Mesa util/macros.h redefinition on Redox
- virgl_screen.c: disk cache disabled for Redox (dl_iterate_phdr unavailable)
- bits/safamily-t.h: provided to cross-compiler toolchain sysroot

Build output:
- usr/lib/dri/virtio_gpu_dri.so — virgl DRI driver
- usr/lib/dri/swrast_dri.so — llvmpipe software renderer
- usr/lib/dri/kms_swrast_dri.so — KMS software renderer
- libEGL.so, libGLESv2.so, libgbm.so — with virgl support
- 80MB stage.pkgar (vs 63MB swrast-only)

This enables hardware-accelerated 3D rendering in QEMU via
-device virtio-vga-gl with virgl, using the virtio-gpu display
driver in redox-drm. The full stack for QEMU testing is now:

QEMU -device virtio-vga-gl
  → redox-drm virtio driver (KMS/GEM/pageflip)
  → Mesa virtio_gpu_dri.so (virgl gallium)
  → libEGL/libGLES2
  → Wayland compositor
  → KDE Plasma
2026-05-01 00:39:03 +01:00
vasilito bb18e729fb feat: Mesa virgl DRI driver builds — virtio_gpu_dri.so (80MB pkgar)
Mesa now builds with -Dgallium-drivers=swrast,virgl for Redox target.

Fixes:
- CFLAGS: -Dstatic_assert(...)= nullifies Linux-drm.h static_assert
  calls that conflict with Mesa util/macros.h redefinition on Redox
- virgl_screen.c: disk cache disabled for Redox (dl_iterate_phdr unavailable)
- bits/safamily-t.h: provided to cross-compiler toolchain sysroot

Build output:
- usr/lib/dri/virtio_gpu_dri.so — virgl DRI driver
- usr/lib/dri/swrast_dri.so — llvmpipe software renderer
- usr/lib/dri/kms_swrast_dri.so — KMS software renderer
- libEGL.so, libGLESv2.so, libgbm.so — with virgl support
- 80MB stage.pkgar (vs 63MB swrast-only)

This enables hardware-accelerated 3D rendering in QEMU via
-device virtio-vga-gl with virgl, using the virtio-gpu display
driver in redox-drm. The full stack for QEMU testing is now:

QEMU -device virtio-vga-gl
  → redox-drm virtio driver (KMS/GEM/pageflip)
  → Mesa virtio_gpu_dri.so (virgl gallium)
  → libEGL/libGLES2
  → Wayland compositor
  → KDE Plasma
2026-05-01 00:39:03 +01:00
vasilito 2638186ce1 feat: Mesa virgl gallium driver — hardware-accelerated 3D for QEMU
Mesa now builds with -Dgallium-drivers=swrast,virgl for Redox target.

Fixes:
- virgl_screen.c: wrapped disk cache creation in #ifndef __redox__
  (build_id_find_nhdr_for_addr uses dl_iterate_phdr — unavailable on Redox)
- bits/safamily-t.h: provided to cross-compiler toolchain sysroot

Durable patch:
- local/patches/mesa/P4-virgl-redox-disk-cache.patch (25 lines)

This enables hardware-accelerated 3D rendering in QEMU via
virtio-gpu + virgl. Mesa EGL/GLES2/GBM now support the virgl
gallium driver alongside llvmpipe software renderer.

63MB pkgar artifact with virgl support.
2026-05-01 00:21:28 +01:00
vasilito 89ae14faa6 feat: Mesa virgl gallium driver — hardware-accelerated 3D for QEMU
Mesa now builds with -Dgallium-drivers=swrast,virgl for Redox target.

Fixes:
- virgl_screen.c: wrapped disk cache creation in #ifndef __redox__
  (build_id_find_nhdr_for_addr uses dl_iterate_phdr — unavailable on Redox)
- bits/safamily-t.h: provided to cross-compiler toolchain sysroot

Durable patch:
- local/patches/mesa/P4-virgl-redox-disk-cache.patch (25 lines)

This enables hardware-accelerated 3D rendering in QEMU via
virtio-gpu + virgl. Mesa EGL/GLES2/GBM now support the virgl
gallium driver alongside llvmpipe software renderer.

63MB pkgar artifact with virgl support.
2026-05-01 00:21:28 +01:00
vasilito 34360e1e4f feat: P0-P6 kernel scheduler + relibc threading comprehensive implementation
P0-P2: Barrier SMP, sigmask/pthread_kill races, robust mutexes, RT scheduling, POSIX sched API
P3: PerCpuSched struct, per-CPU wiring, work stealing, load balancing, initial placement
P4: 64-shard futex table, REQUEUE, PI futexes (LOCK_PI/UNLOCK_PI/TRYLOCK_PI), robust futexes, vruntime tracking, min-vruntime SCHED_OTHER selection
P5: setpriority/getpriority, pthread_setaffinity_np, pthread_setname_np, pthread_setschedparam (Redox)
P6: Cache-affine scheduling (last_cpu + vruntime bonus), NUMA topology kernel hints + numad userspace daemon

Stability fixes: make_consistent stores 0 (dead TID fix), cond.rs error propagation, SPIN_COUNT adaptive spinning, Sys::open &str fix, PI futex CAS race, proc.rs lock ordering, barrier destroy

Patches: 33 kernel + 58 relibc patches, all tracked in recipes
Docs: KERNEL-SCHEDULER-MULTITHREAD-IMPROVEMENT-PLAN.md updated, SCHEDULER-REVIEW-FINAL.md created
Architecture: NUMA topology parsing stays userspace (numad daemon), kernel stores lightweight NumaTopology hints
2026-04-30 18:21:48 +01:00