Commit Graph

28 Commits

Author SHA1 Message Date
vasilito 2e82bad86d recipes: update KDE/Qt/Wayland recipes — KF6 32/32, KWin build, compositor protocol fixes
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-06-11 10:56:21 +03:00
vasilito bade5b81f7 cub: TUI rewrite + AUR hardening + god-module split (v6.0 2026)
TUI rewrite (the visible half of the change):

- 8 views instead of 6: Home, Search, Info, Install, Build,
  Query, Remove, Updates — central VIEW_ORDER const in
  tui/views/mod.rs and cycle_view() / parent_view() helpers
  mean adding a 9th view is one line.
- Help overlay is now view-scoped: shows a Global section and
  an In this view section that only lists keybindings the
  current view actually honors.
- Esc goes back one view (parent_view map); q still quits.
- New ConfirmAction enum and full-screen confirm_banner
  widget: pressing i / b / r / U now sets pending_confirm
  and shows a banner; y confirms, n cancels.
- TUI build routed through the canonical fetch_aur_to_store
  + validate_git_target instead of an inline git clone. The
  6 swallowed errors are now surfaced in build_log and
  status_message.
- panic-catching wrapper around spawn_action so a panic in
  the worker thread becomes a visible ActionUpdate instead
  of a frozen spinner.
- TUI cancel architecture: Arc<Mutex<Option<Child>>> shared
  between parent and worker drainer, Arc<AtomicBool> cancel
  flag, c keypress in Install/Build views calls child.kill().
- Terminal too-small guard: < 14 rows or < 40 cols renders
  a Terminal too small overlay instead of broken layout.
- Sticky error coloring in the status bar: success uses
  theme.success, failure uses theme.error, neutral uses
  status_style.
- PgUp / PgDn global scroll bindings for Install/Build log
  views; scroll position tracked in install_log_scroll /
  build_log_scroll u16 fields; install_log_joined /
  build_log_joined pre-joined strings avoid repeated
  Vec<String>::join calls during render.
- CubApp::new() returns Result<Self, CubError>; HOME missing
  or store.init() failure is now a fatal error overlay
  instead of a silent /tmp/.cub fallback.

AUR hardening:

- AUR client (reqwest::blocking::Client) gets 5s connect +
  15s request timeouts.
- fetch_aur_to_store writes the recipe atomically: stage in
  store.tmp_dir()/recipe-staging-<name>-<nanos>, then
  fs::rename. TmpGuard drop cleans up the clone directory.
- validate_git_target rejects names with .., ://, leading -,
  empty, or NUL bytes (was previously only catching leading -).
- redox-pkg dependency pinned to rev
  52f7930f8e6dfbe85efd115b3848ea802e1a56f0 to match the
  resolved Cargo.lock.

God-module split (main.rs 2063 -> 1723 lines):

- constants.rs: 10 path / URL constants.
- bur_helpers.rs: search_cached_bur, ensure_bur_package_dir,
  sync_bur_repo, default_bur_repo_url, bur_repo_dir,
  aur_repo_url, BurMatch struct.
- fs_helpers.rs: find_stage_dir, directory_has_entries,
  copy_dir_recursive, remove_dir_if_exists,
  current_unix_timestamp, join_strings, join_package_names,
  empty_if_blank, yes_no.
- paths.rs: cub_temp_dir, validate_git_target.

Tests:

- 19 unit tests in main-side modules (was 5); 121 in the
  lib (unchanged). Total 140/140 pass.
- New CubError variant tests, validate_git_target
  happy-path + 4 attack vectors, cub_temp_dir unique-name
  under concurrent calls, bur_repo_dir / aur_repo_url
  composition, fs_helpers round-trips with tempfile
  scratch dirs.

Policy:

- local/AGENTS.md gains a TUI CONVENTION section: single
  binary, -i flag, no separate -tui crate, ratatui 0.30
  + termion 4.0.6, anti-pattern list. cub, redbear-info,
  and redbear-netctl-console are listed as already
  compliant.
- cubl (the cub lib-only consumer) recipe path updated
  from -p cub-cli to -p cub.

Verified: cargo build --workspace and --no-default-features
and --features full and --features tui all clean; cargo
test --workspace 140/140 pass; cub --version cub 0.2.3;
cub --help 21 subcommands.
2026-06-11 09:16:48 +03:00
vasilito 8030653cc0 cub: fix blake3/sha256 confusion, add DYNAMIC_INIT to custom_script, fix cubl recipe chmod (v6.0 2026) 2026-06-10 13:02:43 +03:00
vasilito 21419bacc8 submodule: ninja-build advance to 0.2.3 with Redox getloadavg re-declaration
Pick up the ninja-build fork's 0.2.3 branch HEAD (26f6155), which
adds an extern "C" declaration of getloadavg(double[], int)
guarded by __redox__ to util.cc. Redox's <cstdlib> wrapper pulls
in a stale toolchain stdlib.h that lacks getloadavg, so util.cc
fails to compile on Redox with an implicit-function-declaration
error even though relibc provides the implementation. Other
platforms are untouched.
2026-06-09 15:53:55 +03:00
vasilito 7686729069 drm: implement syncobj and fence for VIRGL/VirtIO driver
Extract protocol-agnostic FenceTimeline from Intel to shared
src/drivers/fence.rs — atomic-based fence tracking suitable
for Intel, VIRGL, and AMD drivers.

Extract protocol-agnostic SyncobjManager from Intel to shared
src/drivers/syncobj.rs — syncobj create/destroy/signal/reset/
wait/query and sync_file fd export/import.

Wire both into VirtioDriver:
- Add FenceTimeline + SyncobjManager fields
- Implement all 5 GpuDriver syncobj trait methods
  (create, destroy, wait, export_fd, import_fd)
- Track fence seqnos in virgl_submit_3d (allocate
  before submit, signal after completion)

Intel fence.rs and syncobj.rs converted to thin re-export
modules pointing at shared sources — no behavioral change
for Intel driver.

This gives Mesa VIRGL userspace the standard DRM syncobj
API for GPU/compositor synchronization.
2026-06-02 14:33:28 +03:00
vasilito 17a1f1aa0d base-initfs: set BUILD_TIMESTAMP from build host clock
Passes the current Unix timestamp as BUILD_TIMESTAMP env var
to cargo, so rtcd can use it as a fallback when the hardware
RTC is unavailable or returns invalid data.

bison: fix __fseterr stub injection using LIBS variable instead
of ar rcs to avoid static archive member ordering issues.
2026-06-02 11:30:30 +03:00
vasilito d5636ae1de intel: P0/P1 — LRC context state, MI commands, DDI sequences, pipe scaler
context.rs: proper LRC image population
  Removed context restore inhibit — GPU now saves/restores state on preempt
  Added PDP register initialization in LRC image (4 PDP entries)
  Added FAULT_AND_STREAM_CTL, BB_STATE initialization
  set_pdp_registers() for per-context PPGTT configuration

ring.rs: MI command emission helpers
  emit_bb_start/emit_bb_end: batch buffer chaining
  emit_load_register_imm: LRI for workaround application
  emit_store_data_imm: store-to-memory for fence signaling
  emit_arb_check: preemption point insertion
  emit_semaphore_wait: inter-engine synchronization
  emit_user_interrupt: explicit interrupt generation

display.rs: DDI pre-enable/post-disable sequences
  ddi_pre_enable: DP link retrain + DDI_BUF_CTL enable with pipe routing
  ddi_post_disable: DDI_BUF_CTL, PIPECONF, DSPCNTR disable + pipe update
  Pipe scaler PS_CTRL/PS_WIN_POS/PS_WIN_SIZE programming in set_mode

regs.rs + regs_gen9/gen12/xe2: scaler register trait methods
  ps_ctrl, ps_win_pos, ps_win_size at 0x68180/0x68170/0x68174 per pipe
2026-06-01 23:58:13 +03:00
vasilito 8b0cabaa47 fix: m4 builds successfully - complete gnulib cross-compilation recipe
Root cause chain discovered and fixed:
1. GCC built-in stddef.h shadowed by relibc's _STDDEF_H guard
   → fix_types.h with guarded typedefs for 15+ sys types
2. gnulib configure bakes raw typedefs into GL_CFLAG_GNULIB_WARNINGS
   → strip them from Makefiles after configure
3. __fseterr/__freadahead don't exist in relibc
   → compile C stubs and inject into link via Makefile patch

The recipe pattern is documented and reusable for other gnulib packages
(ninja-build, diffutils, etc.).

Also: bootloader recipe needs RUSTFLAGS=-Zunstable-options for
custom target support after redoxer toolchain restore.
2026-06-01 21:22:04 +03:00
vasilito 9088f5930a fix: complete m4 recipe - fix_types.h with all sys types, typedef stripping
Proven recipe pattern for gnulib cross-compilation on Redox:
1. fix_types.h with guarded typedefs for ALL sys/types.h types
2. Strip raw typedefs from GL_CFLAG_GNULIB_WARNINGS after configure
3. Set cache vars for functions gnulib can't detect

Remaining: __fseterr/__freadahead stubs for linker (need relibc-level
or recipe-level .o injection)
2026-06-01 21:03:27 +03:00
vasilito b1e83ae89a fix: m4 recipe - strip GL_CFLAG_GNULIB_WARNINGS typedefs + fix_types.h
Root cause: gnulib configure bakes raw typedef statements
(typedef long unsigned int size_t; etc.) into the generated
Makefile's GL_CFLAG_GNULIB_WARNINGS variable. These break
shell command parsing when expanded on recipe lines.

Fix:
1. Strip raw typedefs from all generated Makefiles after configure
2. Provide fix_types.h with guarded typedefs for size_t, ptrdiff_t,
   off_t, wchar_t, ssize_t, time_t
3. Force-include fix_types.h via CPPFLAGS to work around the
   cross-compiler's GCC built-in stddef.h ordering issue

Also: comprehensive upstream relibc comparison and import plan
2026-06-01 20:50:26 +03:00
vasilito 7cfef2633e fix: m4 recipe - fix_types.h for cross-compiler header ordering
The cross-compiler's GCC built-in stddef.h is blocked by relibc's
_STDDEF_H guard, causing size_t/off_t/ptrdiff_t to be undefined.
Add fix_types.h with guarded typedefs and force-include via CPPFLAGS.

Also: comprehensive upstream relibc comparison for systematic import.

Remaining: redoxer env overrides CC, injecting broken stdint typedefs
from its toolchain. This needs a redoxer-level fix to clean the
injected flags before passing to build commands.
2026-06-01 18:53:05 +03:00
vasilito a52632f69d fix: bits_pthread cbindgen needs stddef.h for size_t type
The generated bits/pthread.h uses size_t but had no includes.
Also added openat cache vars to m4 recipe for gnulib cross-compilation.
2026-06-01 17:00:53 +03:00
vasilito d0dfa2ba5e fix: add ac_cv_type_time_t=yes for gnulib cross-compilation
Without this cache variable, gnulib's configure incorrectly assumes
time_t is unavailable when cross-compiling for Redox, generating
broken fallback headers that fail with 'time_t undeclared' at
the compile-time integrality check.
2026-06-01 16:38:40 +03:00
vasilito 10aa80bb0b chore: AI slop cleanup — remove broken symlinks, .rej/.orig files, empty dirs, stale patch refs 2026-05-30 04:47:12 +03:00
vasilito af05babbb2 WIP: recipe patches, expat/libxml2/libmpfr autogen, kf6/qt cmake fixes, new relibc patches 2026-05-26 06:56:30 +03:00
vasilito 899dcb810c Merge master into 0.2.0 - 688 commits merged, restore 0.2.0 local dev recipes 2026-05-21 23:12:35 +03:00
vasilito 0c8be761eb Merge master into 0.2.0 (688 commits, theirs pref for conflicts) 2026-05-21 21:37:43 +03:00
vasilito cee25393d8 fix: boot process improvements — dependency cycle, INIT_NOTIFY, probing loop, and log spam fixes
- Fix P15-8-init-cycle-detection.patch: replace visiting+error with seen+silent-skip
  to eliminate 11 false-positive 'dependency cycle detected' errors on shared deps
- Fix P0-daemon-fix-init-notify-unwrap.patch: remove eprintln! for missing
  INIT_NOTIFY (expected for oneshot_async services, ~7 daemons affected)
- Fix driver-manager hotplug loop: add PERMANENTLY_SKIPPED static set shared
  between hotplug handler and DriverConfig::probe() to stop infinite re-probing
  of Fatal/NotSupported/deferred-exhausted device+driver pairs (e.g. ided)
- Fix driver-manager log_timeline: suppress repeated EPIPE/ENOENT errors with
  AtomicI32 dedup and AtomicBool one-shot guards for boot timeline JSON
- Add driver-manager SIGTERM handler, ACPI bus registration, --status mode,
  driver reap loop, graceful shutdown, and reduced deferred retries (30→3)
2026-05-17 12:34:02 +03:00
vasilito facf0c92e0 feat: track all source trees in git — full fork offline-first model
Red Bear OS is a full fork. All sources must be available from git clone
with zero network access. Removed gitignore rules that excluded fetched
source trees under recipes/*/source/, local/recipes/kde/*/source/,
local/recipes/qt/*/source/, and vendor source trees.

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

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

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

127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt
frameworks, mesa, wayland, DRM drivers, and every other recipe source.
2026-05-14 10:55:53 +01:00
vasilito 3622c7b8ec feat: yay-style dependency resolution (topological sort, providers, circular detection)
- depresolve.rs: resolve_build_order() with iterative topological sort
- Provider resolution for virtual packages
- Circular dependency detection and component extraction
- resolve_deps_recursive() for AUR→Redox recursive resolution
- 4 tests: linear, circular, providers, make deps
2026-05-08 11:17:07 +01:00
vasilito 8b5d9209c0 feat: yay-style dependency resolution (topological sort, providers, circular detection)
- depresolve.rs: resolve_build_order() with iterative topological sort
- Provider resolution for virtual packages
- Circular dependency detection and component extraction
- resolve_deps_recursive() for AUR→Redox recursive resolution
- 4 tests: linear, circular, providers, make deps
2026-05-08 11:17:07 +01:00
vasilito 153cca6132 fix: noconfirm auto-selects first AUR match 2026-05-08 11:01:02 +01:00
vasilito 1a46659555 fix: noconfirm auto-selects first AUR match 2026-05-08 11:01:02 +01:00
vasilito 44ed766291 fix: restore ratatui deps in cub-tui, add cubl host recipe 2026-05-08 00:41:13 +01:00
vasilito 8b45905b5b fix: restore ratatui deps in cub-tui, add cubl host recipe 2026-05-08 00:41:13 +01:00
vasilito 7706617e7f 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 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