Commit Graph

2548 Commits

Author SHA1 Message Date
vasilito 406ee9fbeb mesa-clc: vendor as full-fork recipe (path=source, patches baked) 2026-08-01 04:44:05 +03:00
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