Commit Graph

147 Commits

Author SHA1 Message Date
vasilito 688645bf98 feat(serial): headless serial console for mini/bare via fbcond mirror
Track base e9342b78 (fbcond bidirectional serial mirror) + kernel 229046c6
(debug fevent readable). Disable the standalone 31_debug_console getty since
fbcond now owns the serial/debug console (avoids competing for the shared debug
input queue and duplicated output). Gives headless serial login on mini + bare.
2026-07-18 07:23:58 +09:00
vasilito 5b49b36724 fix(boot): base submodule ptr (bare/mini warning cleanup) + bare serial console
Track base 1769b083 (condition_path_exists for optional daemons, ahcid no-media,
netstack no-NIC idle, dhcpd fast-fail). Re-enable the serial debug console on
the bare target so it has a headless-visible login prompt (matching mini up to
login).
2026-07-18 00:30:00 +09:00
vasilito c096e29825 config: use brush as the login shell for bare and mini
Switch the text-login shell from zsh to brush now that brush builds and
packages for Redox. base.toml [users.root]/[users.user] -> /usr/bin/brush
covers mini (which inherits base); redbear-bare.toml gets the same shell
plus the brush package so bare and mini share an identical boot-to-login
path (bare stays the minimal boot-test surface, mini adds the app payload).

bare/full keep their own [users.root]; full and the greeter remain on zsh
(that is the graphical/sddm path, handled separately). zsh stays installed
as a fallback. Verified: redbear-mini.iso builds and its /etc/passwd reads
`.../usr/bin/brush` for root and user.
2026-07-16 23:42:36 +09:00
vasilito 9c97cefc57 recipes: adopt brush shell into local/recipes with Redox port patches
Port the brush shell (reubeno/brush) to Redox and adopt the recipe as a
Red Bear local recipe under local/recipes/shells/brush, with the standard
recipes/shells/brush -> ../../local/recipes/shells/brush overlay symlink so
it takes priority over any upstream WIP copy (per local/AGENTS.md "Local
recipe priority vs upstream WIP"). Removes the old recipes/wip/shells/brush.

The dependency tree did not build for Redox: nix 0.31 only partially
cfg-enables Redox and the libc crate's Redox module omits POSIX symbols that
relibc provides. Fixes are reviewable unified diffs under
local/recipes/shells/brush/patches/:

  nix-0.31-redox.patch   cfg-enable resource/Id/waitid/from_siginfo, rlimit
                         import + repr(i32), SaFlags width casts, pty.
  libc-0.2-redox.patch   add idtype_t, P_*/CLD_*, rusage, getrusage/waitid/
                         forkpty externs, siginfo child accessors.
  brush-umask-redox.patch  mode_t is signed on Redox; cast, not u32::from.

The recipe runs `cargo fetch` to materialise registry sources before
patching (they are only unpacked during the build), resolves the right
crate version from Cargo.lock (brush pulls both nix 0.26 and 0.31), and
applies each patch idempotently, failing loudly on version drift. The
binary target is named `brush` (not `brush-shell`), so install it
explicitly. Verified: cooks from a pristine cargo cache using only the
patch files. brush is shipped in redbear-mini as a package for in-image
validation; the login shell stays zsh until brush is runtime-proven.
2026-07-16 23:23:37 +09:00
vasilito d5561184f0 boot: restore mini ISO to a working login prompt + build-system fixes
Mini now boots (q35/KVM) all the way to the getty "Red Bear login:" prompt
on VT2 with zero kernel panics. Root-cause fixes across submodules + config:

- config: 00_base.service zsh->mkdir (a full shell startup hangs an init
  oneshot; the earlier 'echo/mkdir also hang' result was a silent config
  override running zsh). 00_ptyd.service notify->{scheme=pty} (ptyd signals
  readiness via its scheme fd; notify made init block on a byte forever).
- kernel: wrmsr_safe/rdmsr_safe #GP recovery so /scheme/sys/msr can't panic
  the kernel (cpufreqd's P-state MSR write #GP'd on KVM, halting the boot
  before login). base: ptyd scheme type + hwd ACPI enum -> debug (noise).
  installer: warn on config [[files]] override. relibc/bootloader: prior
  getrlimit + warning-demotion pointers.
- build-redbear.sh: fix host-fstools staleness (installer/redoxfs never
  rebuilt on source change), prefix rebuild-every-build (touch libc.a), add
  concurrent-build flock.

Submodule pointers: base 8aa8616d, installer 460d9530, kernel 155d01b1,
relibc a7663b3a, bootloader 6e119641.
2026-07-16 12:20:14 +09:00
vasilito 87d5a24dbc fix(redbear-bare): enable bare target to build and boot
Multiple fixes to make redbear-bare actually build and progress
through boot:

config/redbear-bare.toml:
- filesystem_size: 96 -> 192 MiB. The bare image packages ~153 MiB
  of installed content (zsh, base, base-initfs, kernel, relibc,
  userutils, libgcc, libstdcxx, plus coreutils/extrautils/etc.),
  so 96 MiB triggers installer ENOSPC during commit.
- Override 31_debug_console.service with postinstall=true so the
  override wins over minimal.toml's version that uses
  /scheme/debug/no-preserve (which busy-loops when the debug
  scheme returns ENODEV in the bare initfs).

recipes/core/base-initfs/recipe.toml:
- bare_initfs() now only references BINS in the base workspace
  (init, logd, ramfs, randd, zerod, ptyd). getty is removed from
  BINS because it lives in userutils, not base.
- Copy getty from the sysroot into the initfs after the cargo
  build (analogous to the existing redoxfs/ion/driver-manager
  sysroot copies).
- Filter the init.d copy under REDBEAR_BARE_INITFS to keep only
  services for binaries we actually built (logd, randd, zerod,
  runtime.target, ramfs@.service, 90_initfs.target, 50_rootfs).
  The mainline 23 services reference fbcond/vesad/acpid/pcid/
  fbbootlogd/hwd/inputd which aren't in the bare BINS, so
  init would try to start them and busy-loop.
- Synthesize minimal 00_ptyd.service and 30_getty.service units
  in the initfs since they're built/copied but not in the
  mainline init.initfs.d.
- Override 00_runtime.target to add ptyd and getty as weak
  requires (the mainline target references nulld/rtcd which we
  filtered out).
2026-07-15 06:48:46 +09:00
vasilito b447c22da1 build-redbear.sh + redbear-bare: wire REDBEAR_BARE_INITFS to make
Round-25 fix landed the bare initfs conditional in
recipes/core/base-initfs/recipe.toml but the cookbook does NOT parse
[build.env] sections in TOML configs. The REDBEAR_BARE_INITFS=1
env var I put in redbear-bare.toml was silently ignored.

Fix: propagate REDBEAR_BARE_INITFS through build-redbear.sh's make live
invocation. When CONFIG=redbear-bare and the operator has not already
exported REDBEAR_BARE_INITFS, auto-set it to 1 so the bare initfs
branch is triggered. Also propagates any pre-existing REDBEAR_BARE_INITFS
through the make call (override-only).

Also rewrote the [build.env] section in redbear-bare.toml to a
comment-only section explaining the dispatch mechanism, since the
cookbook parser ignores it.

(NO AI attribution)
2026-07-14 23:39:18 +09:00
vasilito 48a6f4c20b config + base-initfs: comprehensive redbear-bare target gaps
Address 4 gaps in the new redbear-bare target per review:

Gap 1: add REDBEAR_BARE_INITFS env var to base-initfs recipe. When
  set, BINS=init logd ramfs randd zerod ptyd getty instead of 22+
  daemons/drivers. The bare target can now opt into the truly-minimal
  initfs via the env var.

Gap 2: add ptyd and getty to the cp case-list so they go to /initfs/bin
  not /initfs/lib/drivers. Without this, the getty 2 service cannot
  start because ptyd (which it requires) isn't in the initfs.

Gap 3: add /etc/issue (pre-login banner) and /etc/motd (post-login
  message) to the bare config. Standard Unix login surface polish.

Gap 4: trim packages in the bare config. Override ca-certificates,
  pkgutils, kibi (from minimal.toml) to empty. Bare only needs:
  zsh, coreutils, base, base-initfs, kernel, relibc, userutils,
  libgcc, libstdcxx.

Build invocation:
  REDBEAR_BARE_INITFS=1 make live CONFIG_NAME=redbear-bare

(NO AI attribution)
2026-07-14 23:32:53 +09:00
vasilito 1256a43a5b config: add redbear-bare target
Strips to bare minimum: kernel boots, base-initfs 90_initfs.target
brings up init daemons (logd, randd, zerod, ptyd, inputd), console
getty 2 hands off to zsh as default shell. No networking, no
display/audio, no driver-manager, no extra services.

filesystem_size=96 MiB. Includes only minimal.toml. Overrides
base.toml's /etc/net/* and /etc/pkg.d/50_redox (empty) and
/etc/login_schemes.toml (display/audio removed).

Build: make live CONFIG_NAME=redbear-bare

(NO AI attribution)
2026-07-14 23:09:01 +09:00
vasilito 80880bb363 config: un-ignore curl and git packages
These were set to "ignore" to prevent cascade rebuilds during
development, not because they fail to build. Per project policy,
packages must not be ignored without explicit user request.
2026-07-10 14:27:58 +03:00
vasilito 199eb44642 config: remove qtdeclarative from full (QML not available yet) 2026-07-10 04:01:59 +03:00
vasilito 2ed15a5e04 fix: remove duplicate package keys in redbear-full.toml
Python 3.14 tomllib rejects duplicate keys (strict mode).
Removed: libxkbcommon (line 121 dup), konsole (line 238 dup),
kf6-pty (line 239 dup). All kept at their first declaration.
2026-07-09 23:17:57 +03:00
vasilito a2e3db139d config: re-enable mc (midnight commander)
The mc recipe exists at local/recipes/tui/mc. It was the last
remaining commented-out package in redbear-full.toml.

All previously commented-out packages are now re-enabled:
- libxkbcommon, xkeyboard-config (keyboard layouts)
- kirigami (KDE QML framework)
- konsole (KDE terminal)
- kf6-pty (PTY support)
- kde-cli-tools (KDE CLI tools)
- mc (midnight commander)
2026-07-09 21:29:48 +03:00
vasilito 15018fb50d stubs: remove KWin fake cmake configs, enable KIdleTime Wayland, add kde-cli-tools
Three fixes from the stub audit:

1. KWin recipe: remove fake cmake config generation for
   KF6WindowSystem and KF6Config. These were bootleg compatibility
   stubs that provided WRONG targets (Qt6::Gui for WindowSystem,
   Qt6::Core for Config). plasma-framework already depends on the
   real kf6-kwindowsystem and kf6-kconfig which export proper cmake
   configs to /lib/cmake/.

2. KIdleTime recipe: enable WITH_WAYLAND=ON (was OFF). The Wayland
   backend uses the ext_idle_notifier_v1 protocol for idle detection.
   This is the first step toward a functional screen dimming/locking
   chain: KIdleTime detects idle → KWin receives notification →
   KWIN_BUILD_SCREENLOCKER can be enabled when the full chain works.

3. Config: re-enable kde-cli-tools. Recipe exists with all
   dependencies (kf6-kio, kf6-kwindowsystem, etc.). Previous
   'direct repo cook fails' resolved by KF6 stack maturity.
2026-07-09 21:20:21 +03:00
vasilito a97d8c6379 config+kwin: re-enable konsole, kf6-pty, mc + KWin tabbox/notifications/runners
Round 3 of stub replacement:

Config (redbear-full.toml):
- Re-enabled konsole (KDE terminal emulator) — recipe exists, WIP libiconv
  fetch resolved in prior work.
- Re-enabled kf6-pty (KF6 PTY support for Konsole terminal).
- Uncommented mc (midnight commander) — recipe exists at local/recipes/tui/mc.

KWin recipe:
- KWIN_BUILD_TABBOX=ON (was OFF) — requires QML which builds (qtdeclarative).
- KWIN_BUILD_RUNNERS=ON (was OFF) — KRunner plugin support.
- KWIN_BUILD_NOTIFICATIONS=ON (was OFF) — KNotifications framework is built.
- KWIN_BUILD_X11/KCMS/SCREENLOCKER/GLOBALSHORTCUTS remain OFF (require
  X11, KCMUtils+QML gate, KIdleTime backend, kglobalacceld respectively).

These bring KWin from 0/7 enabled subsystems to 3/7 enabled.
2026-07-09 21:14:54 +03:00
vasilito c47ba088cf config: re-enable libxkbcommon, xkeyboard-config, kirigami
Three packages that were commented out in redbear-full.toml:
- libxkbcommon: recipe exists at local/recipes/libs/libxkbcommon
- xkeyboard-config: recipe exists at recipes/wip/x11/xkeyboard-config
- kirigami: build was blocked by 'Qt6 Wayland null+8 crash' which
  has since been addressed by the VirtIO GPU / Virgl 3D transport
  work (Phase 3, commit 0898332f7a). Headers and libs exist.

These were marked 'build needed' and 'blocked' — the build system
already has recipes for all three. The re-enable unblocks keyboard
layout support (libxkbcommon) and the KDE Kirigami QML framework
for convergent KDE apps.
2026-07-09 21:12:08 +03:00
vasilito 0ec7bd46bb Phase 3: GPU 3D drivers + Phase 1-2 stability fixes — full rollup
ROLLUP of all Phase 1-3 work on branch 0.3.0, targeting a production-ready
console + full graphical desktop under Intel and Virgl/VirtIO-GPU.

=== Phase 1 — Stability ===
 - fbcond: Enter key handler (scancode 0x1C→\n), display map buffering,
   control-char filter in all 7 keymaps, write_event assert
 - build-redbear.sh: auto-rebuild-prefix when fork timestamps are newer
   than prefix/x86_64-unknown-redox/sysroot (was warning-only). Added
   configurable REDBEAR_SKIP_PREFIX_REBUILD guard.
 - build-redbear.sh: set explicit keymap '-K us' in console activation
 - config/redbear-device-services.toml: remove spurious init.d service
   files for redbear-acmd/ecmd/usbaudiod. These USB device daemons are
   spawned dynamically by pcid-spawner, not as boot-time init services.
   Starting them without args panicked the boot flow.
 - relibc: grantpt/unlockpt/ptsname (then deduplicated against stdlib)
 - userutils: cherry-pick upstream getty commit 2834434 (standard C
   ptsname/grantpt/unlockpt)
 - base fork: Russian (ЙЦУКЕН) keymap + inputd control-char filter
   (K_ESC/K_BKSP/K_ENTER → \0, commit 73e44d81 in submodule/base)

=== Phase 2 — Login & Console ===
 - login.rs: restored to 0.2.5-known-good liner-based prompt
 - redbear-upower: removed tokio full/signal features → protection fault fix
 - redbear-power: excluded temporarily (being fixed in other session)
 - tlc version: updated to 0.3.0

=== Phase 3 — GPU/3D Drivers (commit 0898332f7a) ===
Intel i915: FULLY implemented — real ring buffer + MMIO command
submission via GEM DMA → GGTT → i915 render ring, with hardware
head-pointer polling (2M iterations, 50µs backoff). Zero stubs.

VirtIO GPU/Virgl (VirtioTransport): 11 VIRTGPU ioctls (GETPARAM,
GET_CAPS, RESOURCE_CREATE, RESOURCE_INFO, CONTEXT_INIT, EXECBUFFER,
WAIT, TRANSFER_TO_HOST, TRANSFER_FROM_HOST, MAP, CREATE_BLOB) ported
from Linux 7.1 virtgpu_ioctl.c and virtgpu_vq.c.
 - driver.rs: 8 virgl_* trait methods (default Unsupported)
 - scheme.rs: 11 ioctl constants + 8 wire structures + dispatch
 - virtio/transport.rs: PCI capability discovery, feature negotiation,
   control+cursor virtqueue setup, vring descriptor building
 - virtio/mod.rs: real implementations for all 8 virgl_* methods
 - intel/mod.rs: explicit virgl Unsupported stubs

Other changes from active sessions: Cargo.toml version bumps, linux-kpi
headers, libpciaccess recipe, mesa/recipe.toml, kf6 patches, expat,
driver-manager, redbear-sessiond, redbear-compositor, cub, tlc, and
many other local recipes.
2026-07-09 20:29:28 +03:00
vasilito 048a4eaa3b config: enable libxkbcommon + xkeyboard-config (was ignored)
Both were set to 'ignore' with comment 'build needed'.
libxkbcommon provides keyboard handling for Wayland compositor.
xkeyboard-config provides keyboard layout definitions.
Without these, Wayland clients (KWin, Qt6 apps) cannot
process keyboard input.

Changed from 'ignore' to '{}' to enable building. This is
required for keyboard input in the graphical desktop.
2026-07-09 15:29:20 +03:00
vasilito c4da1d5525 config/wayland.toml: fix misleading kwin_pid→compositor_pid
The Wayland compositor service currently launches redbear-compositor,
not kwin_wayland. Renamed kwin_pid→compositor_pid and updated the
error message from 'kwin_wayland failed' to 'Wayland compositor failed'.

Added comment documenting that redbear-compositor is the bootstrap
compositor until KWin completes its build. The transition path is
documented: replace 'redbear-compositor --drm' with 'kwin_wayland --drm'
when KWin is runtime-ready.
2026-07-09 15:10:20 +03:00
vasilito 9390c40194 build: fix ARCH export and remove spurious USB-device init services
Three Phase 1.3/2.4 fixes that have real runtime impact:

1. local/scripts/build-redbear.sh: Export ARCH and HOST_ARCH at the top
   of the script (derived from uname -m when unset). This fixes the
   'Unsupported ARCH for QEMU ""' error from the auto-rebuild-prefix
   path introduced in Phase 1.3 — the env(1) wrapper was masking
   the variables, and even without it mk/config.mk needed explicit
   ARCH to be exported to subprocesses. The prefix rule now succeeds
   when the fork source is newer than prefix/x86_64-unknown-redox/sysroot.

2. config/redbear-device-services.toml: Remove the three init.d service
   files 16_redbear-{acmd,ecmd,usbaudiod}.service. These are USB device
   daemons that take <scheme> <port> [<iface>] arguments and panic on
   missing args. They are spawned dynamically by pcid-spawner (00_driver-
   manager.service) when matching USB hardware is detected. Starting
   them as init services caused the boot to fail with
   'thread main panicked at redbear-acmd <scheme> <port> <iface>'.
   The binaries are still installed via the [packages] section so
   pcid-spawner can find and exec them. This matches the Linux model
   where cdc_acm / cdc_eem / snd-usb-audio are kernel modules or
   udev-spawned, not init services.

3. config/redbear-mini.toml: Add explicit '-K us' to
   29_activate_console.service so the inputd daemon activates VT 2 with
   a deterministic keymap. Combined with the Russian (ЙЦУКЕН) keymap
   added in commit 75f5480f, all 7 layouts (US, GB, Dvorak, Azerty, Bepo,
   IT, RU) are now selectable via 'inputd -K <layout>' or by editing
   this service.
2026-07-08 22:00:03 +03:00
vasilito 777a2c71d3 USB: redbear-usb-hotplugd — auto-spawn class drivers on device connect
Cross-referenced with Linux 7.1 drivers/usb/core/hub.c port event
handling and drivers/usb/core/driver.c device-driver binding.

New daemon (216 lines) that watches USB controllers for device
attachment/detachment and auto-spawns the appropriate class driver.

Architecture:
- Polls /scheme/usb/ every 1000ms for controller directories
- For each controller, enumerates root hub ports
- Reads device descriptors (class/subclass/protocol) via XhciClientHandle
- Maps class to driver binary: HID(0x03)→usbhidd, Storage(0x08)→usbscsid,
  Hub(0x09)→usbhubd
- Spawns driver with <scheme> <port> <protocol> arguments
- Tracks spawned Child processes in HashMap<port_path, TrackedDevice>
- Detects disconnection (descriptor read fails) → kills driver + removes
  from tracking
- Detects driver exit (try_wait) → removes from tracking
- Skips hub interfaces (usbhubd handles its own children)

Config:
- Added to redbear-mini.toml (inherited by redbear-full)
- Auto-started via 02_usb_hotplug.service (oneshot_async, after base.target
  and pcid-spawner)

Driver map supports: HID (0x03), Mass Storage (0x08 with BOT protocol),
Hub (0x09). Additional class drivers extendable via DRIVER_MAP constant.
2026-07-07 15:33:42 +03:00
vasilito e28d575668 USB: add redbear-ftdi — FTDI FT232 USB-serial driver
Cross-referenced with Linux 7.1 drivers/usb/serial/ftdi_sio.c (2,876 lines).

Implements the core FTDI protocol:
- Reset (SIO_RESET_SIO + purge RX/TX buffers)
- Baud rate setting (48MHz base clock, 16-bit divisor encoding)
- Flow control (RTS/CTS, DTR/DSR)
- Modem control (DTR/RTS line state)
- Bidirectional bulk I/O: bulk IN → stdout, stdin → bulk OUT (spawned thread)

Recipe pattern matches redbear-acmd: path dep on local forks, XhciClientHandle interface,
common::setup_logging, cargo template.

Wired into redbear-mini.toml (inherited by redbear-full) with probe marker service.
2026-07-07 13:06:20 +03:00
vasilito 53058e3e4e config/redbear-mini.toml: remove invalid respawn field, restore ptyd notify type for console readiness 2026-07-06 16:07:27 +03:00
vasilito 29f08c949a base/config: fix scheme daemon service types, console respawn, init hidden-file skip, pcid timeout 2026-07-06 15:04:51 +03:00
vasilito e8fa2ca97b config: re-enable diffutils and curl in redbear-mini; nghttp2: build with -fPIC for libcurl; relibc: bump submodule with float.h/getprogname fixes 2026-07-06 04:29:07 +03:00
vasilito f54b53fbfb config: ensure console getty services depend on ptyd
The getty binary opens a PTY via /scheme/pty during startup. Adding an
explicit requires_weak on 00_ptyd.service avoids races where getty runs
before the pseudo-terminal daemon is fully ready, which could delay or
prevent the login prompt from appearing.
2026-07-06 03:59:56 +03:00
vasilito 2c702465a1 fix: convert ucsid, driver-params to oneshot_async; add ipcd/ptyd overrides
Config changes to prevent scheduler hangs on live-mini ISO:
- 00_ucsid.service: scheme -> oneshot_async
- 13_driver-params.service: scheme -> oneshot_async
- 00_ipcd.service: new override (notify -> oneshot_async)
- 00_ptyd.service: new override (notify -> oneshot_async)
- 00_pcid-spawner.service: new override (oneshot -> oneshot_async)
- base: update submodule to 4bfb878 (force-run scheduler)
2026-07-04 01:07:56 +03:00
vasilito 1eed99c54f fix: change gpiod, i2cd, pcid-spawner to oneshot_async; add pcid-spawner override
All three were blocking the boot scheduler in /usr phase on live-mini
because their daemons never notify readiness without hardware present.

- 00_gpiod.service: scheme -> oneshot_async
- 00_i2cd.service: scheme -> oneshot_async
- 00_pcid-spawner.service: new override, oneshot -> oneshot_async
- base: update submodule to 4a1d1f4 (scheduler counter)
2026-07-03 10:43:31 +03:00
vasilito f47ee4fb18 fix: change blocking oneshot services to oneshot_async, add init scheduler tracing
- pcid-spawner: oneshot -> oneshot_async (blocked boot in /usr phase)
- inputd: oneshot -> oneshot_async (unnecessary blocking during initfs)
- base: update submodule to b1a6bd8 (serial debug tracing for scheduler)
- run_mini1.sh: reduce QEMU memory 12G -> 2G for faster CI testing
2026-07-03 08:56:39 +03:00
vasilito a84a99cc24 build-cache: package groups in config + installer local fork (Phase 3)
- config/redbear-full.toml: 9 package groups defined (graphics-core,
  input-stack, dbus-services, firmware-stack, qt6-core, qt6-extras,
  kf6-frameworks, desktop-session, kde-desktop)
- Cargo.toml: switch redox_installer from upstream git to local fork
  (path = "local/sources/installer") to use package group support
- Cargo.lock: remove installer git source entry
- local/sources/installer: bump to package groups commit

Groups are resolved transparently by Config::from_file() — the cookbook
repo binary sees expanded packages automatically.
2026-06-30 15:59:36 +03:00
vasilito 5a542e1cf6 fix: root-cause strtold — patch GCC <cstdlib> at prefix build time
Add explicit #include <stdlib.h> after #include_next <stdlib.h> in
GCC 13 cstdlib. This ensures ::strtold is declared before the
using-directives execute. Previously relibc's declaration was
not visible to the C++ wrapper.

Reverted unjustified ignores: qt6-sensors, kf6-ki18n, kf6-kidletime,
kf6-kwayland, redbear-greeter — per project policy: fix, don't ignore.

Also reverted kf6-ki18n to full build (stub removed).
2026-06-30 02:08:01 +03:00
vasilito fd62e34140 build: redbear-greeter → ignore (strtold blocker)
GCC <cstdlib> ::strtold needs proper long double impl in relibc.
Greeter binary won't be in ISO; login falls back to console.
2026-06-29 14:46:46 +03:00
vasilito c437bca589 build: qt6-sensors → ignore (strtold PCH issue) 2026-06-29 13:28:34 +03:00
vasilito c33d771031 build: kf6-ki18n → ignore (strtold blocker, unblock ISO)
strtold include chain fix applied but C++ <cstdlib> still fails.
KI18n is i18n — non-critical for bootable desktop. Re-enable when
strtold root cause is resolved in relibc or GCC <cstdlib>.
2026-06-29 10:57:00 +03:00
vasilito 304692a11f build: relibc circular include fix (stddef→cbindgen) + config ignores
relibc (3 commits integrated from upstream, pushed to gitea:redbear-v2):
- 826a984f: stddef.h moved from hand-written C to cbindgen (3be84f4b)
  Creates bits_wchar-t, bits_size-t, bits_null sub-headers.
  Fixes missing wchar_t in inttypes.h that broke xkbcommon.
- 4eabdf20: wchar.h upstream include ordering + stdbool.h POSIX fix
  wint_t before stddef.h; dropped redundant wchar_t redefinition.
  #define bool _Bool replaces non-standard typedef.

Build config (ignores gate):
- libxkbcommon, xkeyboard-config = ignore (X11-only, not needed)
- gcc-native, gcc13 = ignore (native compilers, not needed for ISO)

gettext recipe: autoreconf path fix + disable C++/C#/Java parts.

AGENTS.md: updated relibc Header Circular Includes section with
new commits 826a984f + 4eabdf20 and stddef→cbindgen architecture.
2026-06-29 01:43:25 +03:00
vasilito 1eb4df5bfd config: drop unsupported 'before' field from 12_dbus.service
The local init fork's Service struct does not have a 'before' field
(it supports cmd, args, envs, inherit_envs, type only), and the
deny_unknown_fields attribute makes init panic at boot when it parses
'before':

  init: /etc/init.d/12_dbus.service: unknown field 'before', expected
  one of 'cmd', 'args', 'envs', 'inherit_envs', 'type' in 'service'

The 'before = [13_redbear-sessiond.service]' line was redundant
anyway: 13_redbear-sessiond.service already declares
requires_weak = ['12_dbus.service'], which orders it after dbus.

Fix both redbear-mini.toml and redbear-full.toml.
2026-06-28 16:20:32 +03:00
vasilito 8af119d1a9 Remove duplicate redbear-netctl-console recipe (nested inside redbear-netctl) 2026-06-28 00:01:47 +03:00
vasilito 129b08eff9 dbus: add explicit --address flag to dbus-daemon for deterministic socket binding
- Add --address=unix:path=/run/dbus/system_bus_socket to dbus-daemon args
- Add before = ["13_redbear-sessiond.service"] for strict ordering
- Fixes redbear-sessiond "failed to read from socket" errors
2026-06-21 00:23:30 +03:00
vasilito 6006d20178 redox-drm: add virtio-gpu detection (1AF4:1050/1052) and Intel ARC PCI IDs
greeter: fix Wayland socket timeout (45s wait, dual-path probe)
sessiond: add D-Bus socket candidate probing with better error logging
config: align greeter/sddm runtime dirs and DRM wait timeouts
2026-06-20 22:41:26 +03:00
vasilito c032c9a787 config: disable relibc-phase1-tests (linker errors, not critical for ISO) 2026-06-20 17:55:47 +03:00
vasilito 04b7641e85 config: add x11proto dependency for libxau and SDDM
- Add x11proto to redbear-full.toml package list
- libxau recipe updated with x11proto dependency and custom build script
- Fixes libxau build failure: 'Package xproto was not found'
2026-06-20 14:57:46 +03:00
vasilito 940e5f55c5 tlc: split filemanager/mod.rs into submodules + comment out mc in configs
- Split filemanager/mod.rs into dispatch.rs, render.rs, dialog_ops.rs,
  format_utils.rs (3567→~1200 lines in mod.rs)
- Comment out mc in redbear-mini.toml and redbear-full.toml per user request
- Enable tlc in redbear-full.toml (was temporarily disabled)
- 1022 tests pass, zero behavior changes
2026-06-19 17:30:28 +03:00
vasilito dc68054305 restore lost packages from 0.2.3 + fix overwritten 0.2.4 files
- Restore 29 recipe symlinks (libdrm, qtbase, dbus, sddm, pipewire, etc.)
- Restore 33 patches (KDE, libdrm, mesa, pipewire, sddm, wireplumber)
- Restore 20+ local/scripts (audit, lint, test, build helpers)
- Restore src/cook/scheduler.rs, status.rs, gnu-config/
- Restore scripts/patch-inclusion-gate.sh, run_mini1.sh, validate-collision-log.sh
- Recover TLC source from HEAD (was overwritten by 0.2.3 checkout)
- Recover 11 local/docs plans from HEAD (were overwritten)
- Recover qt6-wayland-smoke symlink from HEAD
- Fix MOTD: remove garbled ASCII art, use clean text
- Update version: 0.2.0 -> 0.2.4 in os-release, motd, config
- Reduce filesystem_size: 1536 -> 512 MiB
- Add ABSOLUTE RULE to AGENTS.md: never delete/ignore packages
- Reduce pcid scheme log verbosity: info -> debug
2026-06-19 12:39:14 +03:00
vasilito ffbe098ef8 config: add tlc to redbear-mini and redbear-full; create recipe symlink
TLC (Twilight Commander) was missing from both ISO configs. Added
tlc = {} to [packages] in redbear-mini.toml and redbear-full.toml.
Created missing symlink: recipes/tui/tlc -> ../../local/recipes/tui/tlc.
2026-06-19 11:47:25 +03:00
vasilito 06b316076f restore driver-manager + pcid service + lost configs from 0.2.3→0.2.4 sync
Root cause: the 0.2.4 upstream sync silently removed driver-manager (our
in-house PCI driver orchestrator) and never added a pcid init service,
leaving /scheme/pci uncreated and breaking all PCI device enumeration.

Changes:
- base-initfs/recipe.toml: restore driver-manager dep, binary copy,
  drivers.d/ config dir, set -eo pipefail
- redbear-device-services.toml: add driver-manager = {} to packages
- redbear-boot-stages.toml: restore from 0.2.3 (109 lines)
- protected-recipes.toml: restore from 0.2.3 (99 lines)
- redbear-mini.toml: add boot-stages to include chain
- driver-manager Cargo.toml: fix pcid path from symlink to physical
- base fork pointer: acdcb183 (adds 35_pcid.service to initfs)
- UPSTREAM-SYNC-PROCEDURE.md: document sync flaw, never-delete rule,
  driver-manager rationale
- PACKAGE-BUILD-QUIRKS.md: document pcid/pcid-spawner architecture,
  Redox flag values, kernel kcall on AcpiScheme

Verified: redbear-mini boots to login prompt in QEMU UEFI with working
PCI enumeration (6 devices), e1000d network driver, DHCP, driver-manager.
2026-06-19 11:39:24 +03:00
vasilito a223e2ff67 Fix redbear-mini build: syslog va_list, ps2d, fbcond, acpid, bootstrap, m4, bash
Core fixes to get redbear-mini building and booting via UEFI:

relibc: Use 'VaListImpl as va_list' in syslog so cbindgen outputs va_list
  instead of unknown VaListImpl type (matches stdio pattern). Fixes
  openssl3 and all C consumers of syslog.h.

base fork (f97da5b0): ps2d missing info! import, ps2d dead variable,
  fbcond drm-0.15 API fix, acpid 31 errors (ivrs/mcfg modules, duplicate
  methods, packed fields, dmar copy-paste bug), bootstrap abort_immediate
  removal (feature removed from nightly)

redox-driver-sys: Add PciQuirkFlags re-export for crate-root imports

bash: Regenerate P1-mksyntax-host-headers.patch with proper unified diff

m4: Fix getlocalename_l unsafe wrapper

config: Comment out mc (requires glib-2.0 chain, not needed for mini)

UEFI boot verified in QEMU — boots to RedBear login prompt.

Author: vasilito <adminpupkin@gmail.com>
2026-06-19 08:30:37 +03:00
vasilito 1a46659555 fix: noconfirm auto-selects first AUR match 2026-05-08 11:01:02 +01:00
vasilito 950edaa65f cub: full AUR package manager + Phase 1-5 native build tools
cub redesign (local/recipes/system/cub/):
- AUR RPC v5 client (serde_json) with search/info
- ~/.cub/ user-local recipe/source/repo storage
- Enhanced PKGBUILD parser: optdepends, .SRCINFO, split packages, 19 linuxism patterns
- Recipe generation: host: prefix on dev-deps, shallow_clone, cargopath, installs, optional-packages
- Dependency resolver: scans build errors for missing commands/headers/libs/pkgconfig, maps to packages
- Dependency installation: checks installed packages, fetches AUR deps, interactive prompt
- ~110 Arc→Redox dependency mappings
- ratatui TUI: search, info, install, build, query views
- 14 Arch-style CLI switches (-S/-Si/-Syu/-G/-R/-Q/-Qi/-Ql)
- 65 tests, 0 failures, clean build

Phase 1-5 native build tools (local/recipes/dev/):
- P1 Substrate: tar, m4, diffutils (gnulib bypass), mkfifo kernel patch (1085 lines)
- P2 Build Systems: bison, flex, meson (standalone wrapper), ninja-build, libtool
- P3 Native GCC: gcc-native, binutils-native (cross-compiled for redox host)
- P4 Native LLVM: llvm-native (clang + lld from monorepo)
- P5 Native Rust: rust-native (rustc + cargo)
- Groups: build-essential-native, dev-essential expanded

Config:
- redbear-mini: +7 tools (diffutils, tar, bison, flex, meson, ninja, m4)
- redbear-full: +4 native tools (gcc, binutils, llvm, rust)
- All recipes moved to local/ with symlinks for cookbook discovery (Red Bear policy)

Docs:
- BUILD-TOOLS-PORTING-PLAN.md: phased porting roadmap
- CUB-WORKFLOW-ASSESSMENT.md: gap analysis and integration assessment
2026-05-08 00:13:31 +01:00
vasilito a92bad74b9 fix: extend redbear-full DRM greeter wait 2026-05-07 20:51:05 +01:00
vasilito 56057856c0 fix: align kparts package name 2026-05-07 07:58:48 +01:00