Commit Graph

2547 Commits

Author SHA1 Message Date
vasilito f8e4789a2b libtool: vendor as full-fork recipe (path=source, patches baked) 2026-08-01 04:44:01 +03:00
vasilito 3acd6f389f libelf: vendor as full-fork recipe (path=source, patches baked) 2026-08-01 04:43:38 +03:00
vasilito cca1a820f0 dev/gnu-make, libs/freetype2: vendor as full-fork recipes (path=source, patches baked) 2026-08-01 04:43:37 +03:00
vasilito e99f220c6a kde/sddm: vendor as a full-fork recipe (path=source, patches baked)
Convert the transient git-fetch sddm recipe to the vendored model: commit the
source/ tree (pristine sddm @63780fcd + the two Redox patches baked in), switch
[source] to path="source" so the build never reaches github at cook time, and
keep the .patch files tracked for re-application on a version bump. Also fixes
the malformed redox-helper-utmpx-stub.patch (wrong hunk line-counts -> 'malformed
patch at line 24') by regenerating it with correct headers. First of the 26
transient recipes being vendored for an offline, reproducible full-fork build.
2026-08-01 04:40:56 +03:00
vasilito fa6b8a39f4 relibc: bump submodule pointer to 1a6d3221 (real error()/error_at_line() symbols for gnulib/m4) 2026-08-01 04:30:41 +03:00
vasilito d22ae0dea2 test: regression suite for vendored-source staleness invalidation + wire into CI
Proves build-redbear.sh's vendored source/ staleness loop: seeds on first sight
(no spurious rebuild), stays quiet unchanged, and invalidates target/ on
committed/uncommitted/untracked source/ changes. Keeps the loop body in sync.
2026-08-01 03:56:10 +03:00
vasilito 3e32079b79 build-redbear.sh: invalidate a recipe's target/ when its vendored source/ changes
The staleness gap behind the qtshadertools failure: cookbook keys its build
cache on the source.tar hash, but the actual build input for a vendored recipe
is the git-committed source/ tree. A version bump that propagates into source/
without changing source.tar (Qt's source.tar was already 6.11.1 while source/
was a 6.11.0 muddle) leaves cookbook reusing a stale stage — the desktop then
builds the old version. New loop fingerprints each vendored source/ by its git
tree hash (+ dirty flag) and rm's target/ on change; first observation only
seeds the fingerprint so it never forces a spurious full rebuild.
2026-08-01 03:52:28 +03:00
vasilito ee46489ccb kde/{kdecoration,kf6-kwayland,kglobalacceld,kwin}: rebase to Plasma 6.7.2 (RedBear additions preserved)
redbear-ci / check (push) Has been cancelled
2026-08-01 01:11:44 +03:00
vasilito 1c8858d14d versioning: parse Plasma PROJECT_VERSION + KDE Gear RELEASE_SERVICE_VERSION markers
The 6 Plasma modules (breeze/kdecoration/kf6-kwayland/kglobalacceld/kwin) and
konsole were 'no-marker(skip)' because src_version/the validator only knew KF's
KF_VERSION. Now both also read set(PROJECT_VERSION) (Plasma) and the split
RELEASE_SERVICE_VERSION_MAJOR/MINOR/MICRO (KDE Gear), so these vendored modules
are version-checked and rebasable. Test E23.
2026-08-01 00:50:26 +03:00
vasilito 7b58282eb0 kde/kf6-kio: rebase to 6.28.0 (obsolete previewjob guard dropped; redox_qtnetwork_compat/ added dir preserved) 2026-08-01 00:43:36 +03:00
vasilito 75d273bff0 sync-recipe-source: raise download ceiling to 300s (slow KDE mirrors) while keeping fast-fail on a stalled transfer 2026-08-01 00:34:52 +03:00
vasilito e7380cb69f dev/m4: fix bogus recipe URL m4-1.14.21 -> m4-1.4.21 (matches the vendored 1.4.21 source) + stamp 2026-08-01 00:32:42 +03:00
vasilito 423f3b825e kf6-kio: drop obsolete previewjob Q_OS_REDOX guard (WITH_SHM path removed upstream in 6.28) 2026-08-01 00:27:50 +03:00
vasilito 9bb82036d5 kde: correct rebase to 6.28.0 preserving ALL RedBear additions
Redo of the earlier lossy rebase with the added-file-preserving engine. 38
modules rebased to their declared upstream (KF 6.28.0 / Plasma 6.7.2 / Gear /
plasma-wayland-protocols 1.21.0) with every RedBear-added file kept (verified:
kglobalacceld5-wrapper.sh, utmp_compat.h, notifications_interface.cpp, kpty
shims) and blake3/source.tar reconciled. Deletion audit vs the pre-rebase base
shows zero RedBear files lost. 7 modules remain at their tested version pending a
manual Redox-port rebase (kf6-kded6/kiconthemes/kio/kservice SHIM-REJECT,
kirigami PATCH-REJECT, kf6-kimageformats/plasma-desktop DL-FAIL) — flagged, not
silently shipped.
2026-08-01 00:20:03 +03:00
vasilito 1c09490949 sync-recipe-source: resolve accepts full/trailing-slash/absolute recipe paths
The engine silently no-op'd ('!! not found') when given full paths like
local/recipes/kde/kf6-kio/ — resolve only understood bare names or group/name
tokens. Now strips a trailing slash, an absolute ROOT prefix, and a
local/recipes/ prefix before matching. Test E22.
2026-07-31 23:29:43 +03:00
vasilito 7d020018c8 sync-recipe-source: fail fast on a stalled mirror (max-time 120 + speed-limit) so one hung download can't stall the whole run 2026-07-31 23:22:23 +03:00
vasilito 6c25f4dd06 build system: actual code marker wins over the .redbear-src-version stamp
9th silent-failure bug: the version stamp was checked BEFORE the real code marker
(Qt .cmake.conf / KDE KF_VERSION). A code-only revert leaves the stamp stale, and
the stale stamp then reported the module 'consistent' -> the engine skipped a
needed rebase and the validator false-passed a divergent tree. Both now check the
authoritative code marker first and use the stamp only as a fallback for
marker-less trees. The validator also learned KDE's KF_VERSION marker. Test E21.
2026-07-31 22:55:58 +03:00
vasilito 9ec00ca793 build system: engine preserves ALL RedBear-added files across a rebase
Data-loss bug: rsync --delete during a rebase dropped RedBear-added files that
carry no __redox__ token (a Redox Wayland-crash wrapper .sh, a utmp compat
header, a generated D-Bus interface) because the capture was grep-on-marker
only. The engine now, for EVERY vendored rebase, fetches pristine(Vold) and
carries forward every committed file absent from Vold (content-agnostic, matched
by path) — so RedBear additions survive. If Vold cannot be fetched it rejects
(manual) rather than produce a lossy tree. New tests E20 (non-marker added file
preserved) + Vold fixtures for the rebase cases. 41 tests green.
2026-07-31 22:28:52 +03:00
vasilito 68510dd34b kde/{kf6-pty,kf6-solid}: rebase to 6.28.0 with Redox shims ported
Auto-resolved by sync-recipe-source.sh once the shim-port bugs were fixed: the
baked Redox shims (kpty PTY/utmp guards, UDisks2 D-Bus/optical-disc branches)
apply cleanly to 6.28.0 and are content-verified present in the rebased tree.
2026-07-31 21:01:51 +03:00
vasilito 49377f768c build system: fix 3 more silent-failure bugs in the baked-shim port path
Found by extending the edge-case suite to the baked-shim path (E17-E19) after a
sync reported 'ready' but silently dropped a module's Redox shim:
 - git show used an ABSOLUTE recipe path ('HEAD:/mnt/.../source/f') which git
   rejects (needs repo-relative) -> empty content -> garbage delta. Now uses
   ${dir#$ROOT/}.
 - diff|patch under 'set -o pipefail': diff exits 1 whenever files differ (always
   here), so the pipeline looked failed even when patch succeeded -> EVERY shim
   false-rejected. Now captures the delta to a file and checks patch's own exit.
 - a shim whose file was renamed/removed upstream, or unreadable from HEAD, was
   silently skipped. Now: Redox-added files are carried in verbatim; a missing
   target or unreadable HEAD file -> SHIM-REJECT (manual), never a silent drop.
Also: old-version URL derivation now rewrites the major.minor dir component too
(KDE mirrors nest tarballs under .../6.28/foo-6.28.0). CI branch glob widened to
[0-9]* so 0.4.0/0.5.0 release branches keep triggering.
2026-07-31 21:01:23 +03:00
vasilito 7bffe6c7c3 kde/recipes: reconcile recipe blake3 + bump transient source.tar to declared versions
Follow-up to the KDE rebase: the vendored bumps had left recipe blake3 stale
(URL bumped, hash not), so recipe.toml declared a hash that no longer matched its
own source.tar. sync-recipe-source.sh now sets recipe blake3 to the authoritative
source.tar hash, and bumps transient recipes' stale cached source.tar to the
declared version. Applied to the marker-readable + transient set.
2026-07-31 20:48:55 +03:00
vasilito f786f163bc build system: integrate versioning machinery into CI + engine blake3/transient reconcile
Integration (answers 'does it run automatically'):
 - redbear-ci.yml now runs test-versioning-machinery.sh (33 cases) and
   verify-external-source-versions.sh on every push/PR; trigger widened to
   0.3.* so a release-branch increment keeps CI (and these checks) firing.
 - The validator already runs in build-preflight.sh Phase 1.0C (every build),
   and bump-graphics-recipes.sh (invoked by bump-release.sh --with-external)
   now calls the sync engine — so an external bump propagates + is validated.

Engine hardening (both regression-tested):
 - reconcile_blake3: a vendored bump often left recipe blake3 stale (URL bumped,
   hash not); the engine now sets recipe blake3 to the authoritative source.tar
   hash (only when source.tar version matches the URL version; no-op under --check).
 - transient recipes (no vendored source/) now get their stale cached source.tar
   bumped to the declared version too, instead of being skipped.
2026-07-31 20:47:42 +03:00
vasilito 40bc25693d kde: rebase 37 vendored modules to declared upstream (6.10.0 -> 6.28.0)
Applies the versioning fix to the KDE stack via sync-recipe-source.sh: these
modules carry no Redox port (0 __redox__ markers, 0 or auto-appliable patches),
so each is a clean pristine-6.28.0 re-lay with --checksum + a version stamp,
dropping the stale 6.10.0 trees and the line-duplication corruption. The 6
Redox-touching modules (kf6-pty/kio/solid/kservice/kded6, kirigami) are left for
manual port rebasing; mesa and other unknown-marker trees are untouched.

Each module still needs a Redbear OS build-adaptation pass at 6.28.0 (18 versions
of upstream drift); tracked as follow-up.
2026-07-31 20:37:27 +03:00
vasilito 8413b69334 build system: harden + regression-test the versioning machinery
Edge-case suite (local/scripts/test-versioning-machinery.sh, 27 cases, zero
network via file:// tarballs) covering the validator and the sync engine.
It found and fixed three silent-failure bugs — the exact class the user flagged:
 - sync engine used 'rsync -a --delete' (size+mtime quick-check): a changed file
   of identical size with a coincidental mtime was skipped, leaving stale content
   in source/. Now uses --checksum (content comparison).
 - apply_patch relied on patch's default fuzz: a patch whose context no longer
   matched the new upstream was force-fitted instead of rejected. Now --fuzz=0
   (exact context; line offsets still allowed).
 - decorrupt collapsed ANY run of identical lines, mangling legitimate paired
   lines; now only collapses the corruption pattern (runs >=4).
Also: unknown-version recipes are skipped (never clobber a ported tree like
mesa), and grep patterns use [[:space:]] for portability.
2026-07-31 20:33:10 +03:00
vasilito 27274403da build system: systematic versioning machinery for external recipes
Root cause of the Qt 6.11.0/6.11.1 and KDE 6.10.0/6.28.0 divergences: a version
bump rewrote recipe tar=/blake3= but never propagated into the vendored source/
tree (the actual build input), and nothing caught the resulting drift.

Adds the missing pieces (see local/docs/VERSIONING.md):
 - sync-recipe-source.sh: propagation engine — rebases a vendored source/ onto
   the recipe's declared version (pristine + patches + captured baked delta),
   with baked-shim preservation and corruption drop; reports patches/shims that
   need a manual rebase instead of applying with fuzz.
 - verify-external-source-versions.sh: preflight gate (build-preflight.sh Phase
   1.0C, REDBEAR_SKIP_EXTERNAL_SOURCE_CHECK) that fails loudly on recipe-vs-
   source-vs-tarball version divergence — the tar-recipe analogue of
   verify-fork-functions.sh.
 - bump-graphics-recipes.sh: now calls the sync engine after a bump, so a bump
   can never again silently no-op on a vendored recipe.
 - source/.redbear-src-version stamp; seeded for the corrected qt modules.
2026-07-31 20:20:53 +03:00
vasilito 9e692fc77f qt/{qtwayland,qtdeclarative,qtsvg}: finish 6.11.0->6.11.1 vendored bump
Same half-done bump as qtbase: recipe tar= was 6.11.1 but the vendored source/
trees stayed 6.11.0. These three carry no Redox port (0 __redox__ markers), so
each is a clean pristine-6.11.1 re-lay:
 - qtwayland: pristine 6.11.1 (no patches)
 - qtdeclarative: pristine 6.11.1 + P1-skip-tools-crosscompile.patch
 - qtsvg: pristine 6.11.1; stale 6.11.0 source.tar replaced; CVE-2026-6210 patch
   dropped (the heap-overflow fix is already in upstream 6.11.1)
Drops the injected line-duplication corruption present in the old trees.
2026-07-31 20:04:59 +03:00
vasilito 3a5b67ddd1 qt/qtbase: finish 6.11.0->6.11.1 vendored bump left half-done by build system
The recipe tar= and blake3 were bumped to 6.11.1 at the 0.3.1 branch cut, but
the vendored source/ tree was never propagated: it was a muddle of 6.11.0 and
6.11.1 files plus injected line-duplication corruption. Rebase the Redox port
onto a clean pristine 6.11.1 tree:
 - pristine 6.11.1 + redox.patch + in6-pktinfo/ifreq/forkfd_qt patches
 - re-apply the 6 baked-only Redox shims never captured as patches
   (forkfd waitid, qprocess vfork, posix-sem decls, qassert, qplugin, qnet)
 - qtwaylandscanner null-guard one-liner (its patch file was malformed)
 - drop the sys/ioctl.h / assert.h / QT_CONFIG(opengl) line-duplication corruption
Result differs from pristine 6.11.1 by exactly the 36-file Redox port.
2026-07-31 20:02:10 +03:00
vasilito c2eb289014 relibc: bump submodule pointer to 29752835 (mesa deps: C-ABI futex, __isoc23_* strto*, elf/link.h + search.h) 2026-07-31 19:17:31 +03:00
vasilito 72e686f120 mesa/redox: port the Redox GPU winsys + EGL/pipe-loader to Mesa 26.1.4
Make the vendored Red Bear Redox GPU port compile against Mesa 26.1.4:

- winsys meson.build: fix doubled 'drm/' source paths (meson.build already sits
  in drm/); drop invalid declare_dependency(sources: [static_library]).
- redox_drm_winsys.c: adapt the custom swrast pipe_screen to 26.1.4 — the
  never-mainline pipe_screen_ops indirection is gone (wire get_name/get_vendor/
  get_device_vendor/get_screen_fd/is_format_supported/resource_create/destroy/
  flush_frontbuffer/fence_reference/fence_finish directly on pipe_screen) and
  per-cap get_param() is replaced by u_init_pipe_screen_caps(). The context-level
  callbacks (resource_map/unmap, create_surface/destroy, fence_create/submit/
  signalled) stay defined for the future full HW screen but leave the vtable.
  Drop the dead rws->base.base.screen tracking (sw_winsys has no such member).
- redox_drm_surface.h: forward-declare struct redox_drm_winsys so the
  flip_to_crtc prototype matches its definition (was a prototype-scoped tag ->
  'conflicting types'). redox_drm_bo.c: PIPE_TEXTURE_ARRAY -> PIPE_TEXTURE_2D_ARRAY,
  util/u_format.h -> util/format/u_format.h.
- pipe_loader_redox.c: include <xf86drm.h>; store the drm_driver_descriptor on
  the redux device (base pipe_loader_device has no 'dd'); drop the bogus cast to
  the private pipe_loader_drm_device.
- platform_redox.c: define redox_flush_front_buffer (was undefined
  dri2_flush_front_buffer). egl_dri2.h: rename the surfaceless/device dri_image
  front/back to image_front/image_back to avoid colliding with the wayland/drm
  color-buffer 'back' when all platforms are enabled.

Result: the entire Mesa tree (iris/radeonsi/ANV + softpipe/llvmpipe/virgl/lavapipe)
compiles for x86_64-unknown-redox.
2026-07-31 18:22:09 +03:00
vasilito e35feb1dbe mesa: consume native mesa-clc host tools (-Dmesa-clc=system -Dprecomp-compiler=system)
Add the mesa-clc dependency, put its staged usr/bin on PATH so meson's
find_program(native) resolves mesa_clc/vtn_bindgen2, and pass -Dmesa-clc=system
-Dprecomp-compiler=system. This resolves the cross-build structural error where
vtn_bindgen2 (native) linked target libs; with_clc now flips false so the cross
build no longer builds the in-tree CLC infra. Verified: cross mesa finds both
tools YES and passes every dependency + CLC gate (next blocker is the Redox
gallium winsys port).
2026-07-31 15:47:56 +03:00
vasilito caa2fb48b8 mesa-clc: native host build of mesa_clc + vtn_bindgen2 for cross builds
A Redox cross build cannot run the target shader-precompile tools on the host,
so build them natively once and feed them to the cross Mesa via
-Dmesa-clc=system -Dprecomp-compiler=system. Native meson build against
llvm-native's CLEAN host LLVM/Clang (the redoxer toolchain's llvm-config emits
-I<toolchain>/include, which holds Redox target libc headers that poison host
g++), host system deps (libdrm/expat/zlib/zstd), and our host-built
SPIRV-Tools/LLVMSPIRVLib/libclc (pkg-config with absolute .pc prefixes; native
pkg-config, not the cross wrapper). Driver-agnostic tools, so iris-only (no
amdgpu-LLVM needed); they serve radeonsi/radv in the cross build too.
2026-07-31 15:32:38 +03:00
vasilito 41d0ff60d9 libelf: new recipe (elfutils carve-out) for Mesa radeonsi; wire into mesa
Mesa's radeonsi gallium driver requires libelf. Add a libelf recipe that builds
only the elfutils lib/+libelf/ subdirs (avoiding the libdw/libasm/tools glibc
surface) as a PIC static archive, relying on the new relibc headers/functions
(byteswap/error/libintl/ar/search + tsearch/mempcpy/rawmemchr). Installs
libelf.a + libelf.h/gelf.h/nlist.h + libelf.pc. Wired into mesa deps.

Verified: cook libelf - successful.
2026-07-31 15:04:40 +03:00
vasilito c775ea2539 llvm21: host libLLVM must keep rustc's CPU targets (X86;AArch64;RISCV) + GPU
The host libLLVM.so (COOKBOOK_HOST_SYSROOT=/usr branch) lives in the redoxer
toolchain and is dynamically linked by rustc's librustc_driver. Building it as
X86;AMDGPU;NVPTX only dropped AArch64/RISCV, so after the AMDGPU splice rustc
failed to load with 'undefined symbol: LLVMInitializeAArch64AsmPrinter' —
breaking every Rust compile in the tree. Build the host LLVM with all CPU
targets rustc emits (X86;AArch64;RISCV) PLUS the GPU backends (AMDGPU;NVPTX).
The Redox-target llvm21 stays X86;AMDGPU;NVPTX (Redox is amd64-only, no need to
bloat the shipped libLLVM with foreign CPU backends).

Fixes a latent regression from 80d20db8/a6999912.
2026-07-31 14:40:09 +03:00
vasilito e4c78b3d18 mesa: add CLC/SPIRV chain (SPIRV-Headers/Tools/LLVM-Translator) + clang21 dep
Shipping the Intel iris/ANV gallium+vulkan drivers turns on Mesa's with_clc
(with_driver_using_cl), which requires, in the native mesa_clc/intel_clc shader
precompile path: LLVMSPIRVLib (SPIRV-LLVM-Translator), SPIRV-Tools, and clang's
C++ libraries. None had recipes. Add three host-built dev recipes modelled on
libclc (built against llvm-native's host LLVM 21, staged into the cross sysroot
so Mesa's pkg-config resolves them):
  - spirv-headers          (SPIR-V grammar + headers; find_package package)
  - spirv-tools            (SPIRV-Tools.pc; SPIRV-Headers via find_package)
  - spirv-llvm-translator  (LLVMSPIRVLib.pc, v21.1.0.0; llvm_release_210 branch)
All three clear the cross-sysroot __libc_start_main leak with the llvm21-style
flag-clearing block in their native toolchain files.

Wire them + clang21 into mesa deps: Mesa resolves dep_clang via
cpp.find_library('clang-cpp', dirs: llvm-config --libdir), which the wrapper
rewrites to the target sysroot/lib, so clang21's target libclang-cpp.so must be
staged there (shared-llvm=enabled avoids needing the static clang libs).

Verified: mesa meson now passes amdgpu, LLVMSPIRVLib, SPIRV-Tools, and clang-cpp
(next gate is libelf for radeonsi).
2026-07-31 13:42:25 +03:00
vasilito 8a6d8ff2b7 build-redbear: ensure toolchain LLVM has AMDGPU backend before cooking (Mesa)
The redoxer toolchain ships a prebuilt host LLVM built X86;AArch64;RISCV only.
Mesa resolves dependency('llvm', modules:[amdgpu,...]) against that host
llvm-config (COOKBOOK_HOST_SYSROOT), so radeonsi/radv AND the Intel iris/ANV
CLC precompile path fail and the whole desktop stack silently drops. The
binary prefix never regenerates that host LLVM, so add an idempotent pre-cook
hook (redbear-full only): if the toolchain llvm-config lacks AMDGPU, cook
host:llvm21 (recipe carries X86;AMDGPU;NVPTX) and splice its llvm-config +
libLLVM.so + AMDGPU headers/static libs into the toolchain, backing up the
originals first. Fails loudly; a no-op once AMDGPU is present.
2026-07-31 13:21:47 +03:00
vasilito 448800aea9 prefix: propagate AMDGPU/NVPTX host LLVM into the redoxer toolchain
clang-install now cooks host:llvm21 (which carries AMDGPU;NVPTX). rsync its
host LLVM (llvm-config + libs + llvm headers) into ~/.redoxer/toolchain so the
host llvm-config the Mesa build reads reports the amdgpu module (mesa's
dependency('llvm', modules: amdgpu) otherwise fails against the toolchain's
downloaded X86-only LLVM). Mirrors the existing relibc->toolchain propagation;
rsync without --delete preserves the toolchain's gcc/rust/redox-target files.
2026-07-31 11:10:52 +03:00
vasilito ce8359342c llvm21+policy: add NVPTX (future NVIDIA) + document GPU-driver/LLVM strategy
Per operator: don't forget Intel + virgl, and prepare for future NVIDIA. Intel
(iris/anvil) and virgl need NO LLVM GPU backend (NIR / virtualized) — they stay
in Mesa's driver lists as first-class targets. AMD needs AMDGPU (now); NVIDIA
(future, nouveau/NVK) needs NVPTX. LLVM rebuilds are very expensive, so include
NVPTX now (llvm21: X86;AMDGPU;NVPTX) to avoid an LLVM rebuild when NVIDIA lands.
Documented the vendor->driver->LLVM-backend matrix in the amd64-only policy.
2026-07-31 11:05:42 +03:00
vasilito 5d087d63bc llvm21: add AMDGPU LLVM target for Mesa radeonsi/radv (amd64-only)
Mesa's radeonsi/radv AMD-GPU drivers require the LLVM 'amdgpu' codegen backend
(dependency('llvm', modules: [... amdgpu ...])). llvm21 built X86 only, so the
host llvm-config the mesa build reads reported amdgpu(missing). Add AMDGPU to
LLVM_TARGETS_TO_BUILD (X86;AMDGPU per the amd64-only policy — AMDGPU is a GPU
backend, not a second CPU platform). This is the redox-target LLVM whose libs
mesa links AND the source of the prefix clang-install host LLVM. NB: the
~/.redoxer toolchain host llvm-config (a provisioned prebuilt) still needs the
rebuilt AMDGPU host-LLVM propagated into it (follow-up).
2026-07-31 11:03:12 +03:00
vasilito 567b195713 policy: document amd64-only CPU platform (LLVM X86-name + AMDGPU caveats)
Red Bear OS supports exactly one CPU platform: amd64 (x86_64-unknown-redox).
No 32-bit x86, AArch64, RISC-V. Clarify that LLVM's 'X86' target name IS amd64
(not 32-bit) and that GPU backends like AMDGPU are a separate axis from the CPU
platform (radeonsi/radv need AMDGPU codegen; it doesn't add a second CPU arch).
2026-07-31 10:28:18 +03:00
vasilito cd429561b2 redbear-*: fix logging-refactor regressions + Redox-correct daemon shutdown
The redbear-* logging-unify refactor (println/eprintln -> log::*) left three
mechanical corruptions, caught by --check-sweep:
  1. log::MACRO!();  (empty call + spurious ;, args dangling) -> log::MACRO!(
  2. log::MACRO!(<args>));  (one extra trailing paren) -> log::MACRO!(<args>);
  3. use log::{..};  inserted INSIDE a 'use std::{' block -> moved out
Fixed across redbear-greeter/notifications/session-launch/statusnotifierwatcher/
upower (string-aware paren-balance sweep; balanced nested-paren calls untouched).

Separately, the 'tokio minimal' refactor left redbear-notifications and
redbear-statusnotifierwatcher using tokio::signal::ctrl_c/unix without the
tokio 'signal' feature (compile break). Per redbear-upower's documented finding,
tokio::signal::unix page-faults on Redox (relibc lacks the signal-handler
registration path) and Redox manages daemon lifecycle via the init system, not
POSIX signals. So the correct fix is NOT to re-add the feature but to drop the
signal-based shutdown entirely — the daemon holds its shutdown channel open and
runs until init stops it. Applied to all four signal-using daemons
(notifications, statusnotifierwatcher, udisks, polkit) and removed the now-unused
tokio 'signal' feature from udisks/polkit for consistency with upower.
2026-07-31 10:14:33 +03:00
vasilito 22dceb4e8a libclc: fix install path nesting + relocate libclc.pc to lib/pkgconfig
Install used an ABSOLUTE CMAKE_INSTALL_PREFIX (${COOKBOOK_STAGE}/usr) together
with DESTDIR=${COOKBOOK_STAGE}/stage, so everything double-nested under
stage.tmp/<abs>/stage.tmp/usr/... and libclc.pc/.bc never reached the expected
paths. Use the standard pattern: relative prefix /usr + DESTDIR=${COOKBOOK_STAGE}
(libclc.pc gets prefix=/usr, resolved downstream via PKG_CONFIG_SYSROOT_DIR);
drop the stage-flatten hack. Also relocate libclc.pc from share/pkgconfig
(upstream's DATADIR) to lib/pkgconfig (cookbook convention mesa looks up).
All 2610 GPU bitcode files already generate + install correctly.
2026-07-31 09:39:19 +03:00
vasilito c1b8124286 libclc: put build dir on PATH so bitcode gen finds prepare_builtins
In LIBCLC_STANDALONE_BUILD the bitcode-gen custom commands invoke the host tool
by bare name ('prepare_builtins -o foo.bc'), which fails 'command not found'
when '.' isn't in PATH. prepare_builtins is built into the build dir (CWD), so
add it to PATH before the ninja run.
2026-07-31 09:35:18 +03:00
vasilito 7e9c310746 libclc: link prepare_builtins with clang++ (C++ driver), not clang
CMAKE_CXX_COMPILER was the plain `clang` (C) driver, so cmake's link of the
C++ prepare_builtins tool did not pull in the C++ runtime -> ld failed
'libstdc++.so.6: DSO missing from command line' (undefined
std::__cxx11::basic_string::_M_assign). Resolve a HOST_CLANGXX (clang++) and
use it for CMAKE_CXX_COMPILER; clang++ links libstdc++. Verified: relinking
prepare-builtins.cpp.o with clang++ succeeds.
2026-07-31 09:31:54 +03:00
vasilito f0332241b4 libclc: keep llvm-native in dependencies so the cook-tree builds it
Moving llvm-native fully to dev-dependencies removed it from the cook set: the
cookbook's cook-tree (src/cook/tree.rs) only follows `dependencies` when
resolving --with-package-deps, so llvm-native was staged-but-never-built and
libclc failed installing a nonexistent stage.pkgar. Cooking llvm-native (main)
via `dependencies` produces all its subpackage pkgars; stage .dev + .runtime
(host static libs/cmake + host clang) as dev-dependencies.
2026-07-31 09:03:02 +03:00
vasilito 777998a31f llvm-native: default clang to the HOST triple, not Redox
LLVM_DEFAULT_TARGET_TRIPLE was ${TARGET} (redox), so the host clang defaulted
to x86_64-unknown-redox and searched the Redox sysroot for the C++ stdlib when
libclc compiled its host prepare_builtins.cpp -> 'type_traits' file not found.
A host clang must default to the host triple (the redoxer toolchain's clang
does exactly this: Target x86_64-unknown-linux-gnu). Set it to
${COOKBOOK_HOST_TARGET}. libclc's .cl->bitcode compiles pass -target amdgcn
explicitly, so the host default does not affect them.
2026-07-31 08:54:16 +03:00
vasilito a2dff24d43 libclc: depend on llvm-native.runtime for the host clang (build-only)
The host build works and staged llvm-native's .dev (static libs + cmake) so
find_package(LLVM) now resolves — but the host clang binaries live in
llvm-native's .runtime subpackage, which libclc didn't pull. The .dev ->
.runtime package link does NOT transitively stage at build time, so libclc
errored 'host clang not found under .../sysroot/usr/bin'.

Move the entire host toolchain to dev-dependencies (build-only; libclc's
shipped artifact is the .bc/.pc files, never clang) and add llvm-native.runtime
explicitly so usr/bin/clang* is staged.
2026-07-31 08:48:46 +03:00
vasilito ecc971b4ec llvm-native: re-architect as a PURE HOST build (fixes libclc host-LLVM)
llvm-native's job is to supply a COMPLETE host LLVM dev tree (host clang +
host static component libs + matching cmake/llvm export) that libclc's
find_package(LLVM) and host clang need for Mesa's iris/radeonsi CLC path. The
redoxer toolchain ships host clang + libLLVM.so but strips the static libs, so
find_package fails — and stubbing them violates the no-stub policy.

The recipe was WRONGLY cross-compiling LLVM for the Redox target via
cookbook_cmake: that (a) produces host-unusable Redox binaries and (b) fails to
link because Redox's libstdc++ lacks symbols LLVM uses (std::random_device
etc.). My earlier LLVM_USE_HOST_TOOLS=OFF / tblgen-var / native.cmake patches
were all treating symptoms of that wrong architecture.

Rewrite: build entirely with the host gcc, targeting the host, exactly like
libclc builds its own host prepare_builtins tool — invoke cmake directly (not
cookbook_cmake) with /usr/bin/gcc and no CMAKE_SYSTEM_NAME so CROSSCOMPILING is
false (LLVM builds one native tblgen with host gcc; no NATIVE sub-project, no
Redox-header leak). Drop all Redox build-deps and the llvm21.runtime package
dep. Validated: host GCC 16.1.1 configures LLVM 21 and builds llvm-min-tblgen +
libLLVMSupport.a/libLLVMTableGen.a cleanly.

This is how upstream-style host LLVM tooling should be produced; it supersedes
the cross-build patch chain (312659fe21, 5d426d89a7, 872935057c, b2d9a31a4f).
2026-07-31 08:18:46 +03:00
vasilito b2d9a31a4f llvm-native: LLVM_USE_HOST_TOOLS=OFF to kill the native sub-build
redbear-ci / check (push) Has been cancelled
Even with LLVM_TABLEGEN/CLANG_TABLEGEN provided, LLVM_USE_HOST_TOOLS defaults
ON when cross-compiling, so llvm/CMakeLists.txt creates the NATIVE external
project (llvm_create_cross_target LLVM NATIVE) — a full second HOST LLVM build
that inherits the Redox cross flags and died compiling native llvm-config.
We already supply the only native tools a cross-build needs (the tablegens),
so OFF eliminates the native sub-build entirely; LLVM uses the provided host
tblgens for .inc generation. Completes the llvm-native cross-build fix chain
(native-link, OPTIMIZED_TABLEGEN, LLVM_TABLEGEN var name, and now this).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 05:16:36 +03:00
vasilito 1a503b0d1b housekeeping: untrack downloaded toolchain tarballs (~430MB)
redbear-ci / check (push) Has been cancelled
These three tarballs were tracked in git despite being downloaded
artifacts, not Red Bear source. They total ~430MB on disk:

  prefix/x86_64-unknown-redox/clang-install.tar.gz  138,545,573 bytes
  prefix/x86_64-unknown-redox/gcc-install.tar.gz     99,661,186 bytes
  prefix/x86_64-unknown-redox/rust-install.tar.gz   191,883,635 bytes

Why they were tracked is unknown (they predate AGENTS.md, which now
explicitly excludes toolchain installer tarballs via .gitignore pattern
'/prefix/**/*.tar.gz' added in the previous commit). They are reproducible
from build-redbear.sh — the script downloads them into this prefix path
when invoked.

This commit uses 'git rm --cached' so the working tree retains the
tarballs (the build system can still consume them as-is, no re-download
required). They are now untracked but covered by the .gitignore pattern
so future 'git status' is clean.

Working tree size reduction: ~430MB from the index. Full history rewrite
is out of scope for this housekeeping pass — old commits retain the
tarballs, but any new checkout/clone will skip downloading these blobs
via the 'thin pack' optimization. A full history rewrite via filter-repo
could be performed in a follow-up if storage pressure demands it.

Per AGENTS.md 'Never gitignore critical build infrastructure' policy: the
tarballs are NOT build infrastructure — they are reproducible download
artifacts. The real build infrastructure (recipes/, mk/, src/, local/) is
untouched.
2026-07-31 04:43:33 +03:00
vasilito 24f1088a95 housekeeping: drop empty tracked relibc root placeholder
The 0-byte tracked file at the repo root was an artifact of the reverted
'phase 1.1: refresh gitlink SHAs for 9 submodules' commit (ba169e7e66,
reverted by b062cf43b7). It was supposed to become the relibc submodule
registration but the revert left behind an empty regular file with no
content, no purpose, and no reference in the codebase.

History:
  328d1abbcd  rate-limit scheme error spam           -> created relibc (submodule)
  8af119d1a9  Remove duplicate redbear-netctl-console -> still a submodule
  ba169e7e66  phase 1.1: refresh gitlink SHAs         -> replaced with empty file
  b062cf43b7  Revert 'phase 1.1: refresh gitlink SHAs' -> empty file remained
  (this commit)                                      -> drops the empty file

The real relibc lives at local/sources/relibc/ (a submodule on the
'submodule/relibc' branch). This commit restores the intended post-revert
state: no placeholder, only the canonical submodule.

Per AGENTS.md 'Never delete' rule this is a restoration of correct state,
not a deletion-as-fix. The file was empty (0 bytes), had no code content,
and is now covered by '/relibc' in .gitignore (previous commit) to prevent
recreation.
2026-07-31 04:42:55 +03:00