Commit Graph

809 Commits

Author SHA1 Message Date
vasilito 48021ef39c diffutils: add cookbook_make and cookbook_make_install steps
The diffutils recipe only ran cookbook_configure but never actually
compiled or installed anything, leaving stage.tmp empty (4K). This
caused redbear-mini to fail with a 4.0K INCOMPLETE stage and no
diff/diff3 binaries in the final image.

Add the missing make and make install steps, matching the pattern
used by other autotools recipes (bison, findutils, etc.).
2026-07-11 00:04:31 +03:00
vasilito 82869ff187 kde: remove kf6-kcrash OpenGL stub, restore setgroups, and re-enable KWin Sensors 2026-07-10 23:43:40 +03:00
vasilito 7c2ea9b5e3 amdgpu/linux-kpi: replace remaining stubs with real implementations
- Implement krealloc in linux-kpi memory.rs with GFP-aware tracker lookup,
  copying, and zeroing of grown regions; add krealloc declaration to slab.h
- Align __GFP_ZERO/__GFP_NOWARN and GFP_* values between linux-kpi/slab.h
  and redox_glue.h; make __GFP_ZERO a meaningful flag bit
- Add missing POSIX/errno base constants (EFBIG, EISDIR, ESPIPE, etc.) to
  linux-kpi linux/errno.h so firmware-size checks and other drivers compile
- Harden linux-kpi bug.h: BUG()/BUG_ON() abort, WARN_ON_ONCE only warns once,
  BUILD_BUG_ON uses _Static_assert
- Harden redox_glue.h: add PCI_COMMAND_* flags, CONFIG_HZ/HZ, jiffies
  conversion macros, once-only WARN_ON_ONCE, _Static_assert BUILD_BUG_ON
- Implement redox_pci_enable_device/redox_pci_set_master with real local state
  and command-bit updates; document pcid-spawner pre-enable
- Remove realloc-only krealloc from redox_stubs.c; it now links from linux-kpi
- Fix wait_for_completion_timeout to interpret timeout as jiffies and convert
  to milliseconds, and update msecs/usecs_to_jiffies to use HZ
- Stage previously completed firmware-loader path deps and constructor fix
- Stage base and relibc submodule pointer updates from prior work
2026-07-10 19:44:39 +03:00
vasilito 705d15ec1f kf6-kcmutils: update local fork to 6.27.0 and restore QML/Quick/kcmshell
The tracked source tree was stuck at KF6 6.10.0 with QML/Quick/kcmshell
stripped out and kcmoduleloader/kcmultidialog gutted by sed/python hacks.

Replace the local source with the upstream 6.27.0 tarball content, keeping
only the .clang-format and docs/ extras. This restores:
- add_subdirectory(qml) / (quick) / (kcmshell)
- kcmoduleqml.cpp/h, KF6KCMUtilsQuick, Qt6::Qml/Quick/QuickWidgets links
- kcmoduleloader.cpp and kcmultidialog.cpp QML code paths
- ECMQmlModule and KF6KIO find_package in top-level CMakeLists.txt
- Qt6Qml find_dependency in KF6KCMUtilsConfig.cmake.in

Shrink the recipe build script to use cookbook_apply_patches of the
external 01-initial-migration.patch and remove all sed/python hacks.
Shrink the migration patch to only disable ki18n_install(po) (translations
remain deferred until lupdate/lrelease is built for target).
2026-07-10 17:11:44 +03:00
vasilito 8ba00f2880 firmware-loader: use path dependencies for redox forks
Replace version-string deps on redox_syscall, redox-scheme, and
libredox with path dependencies pointing to local/sources/ forks.
This aligns with local/AGENTS.md local-fork-dependency rule and
eliminates the crates.io vs local fork ambiguity that causes
mismatched-type link errors.
2026-07-10 16:27:29 +03:00
vasilito 636b88878e redox-drm: advertise PRIME, accept atomic/universal-plane caps, virgl format bpp
- get_capability: advertise DRM_CAP_PRIME (capability 2) as supported
- DRM_IOCTL_SET_CLIENT_CAP: accept UNIVERSAL_PLANES (2) and ATOMIC (3)
- Track bytes-per-pixel per virgl resource handle for transfer stride
- Decode blob_mem lower bits from virgl_resource_create flags

These improve virtio-gpu / virgl Mesa compatibility for the
software-rendered desktop path.
2026-07-10 16:27:27 +03:00
vasilito 796c7ee85a wireplumber: remove redundant byteswap.h and sys/mman.h shims
relibc now provides the real <byteswap.h> header and Linux mmap
extension flags (MAP_LOCKED, MAP_HUGETLB, etc.) in <sys/mman.h>.
Drop the redox_compat/ shim files from the WirePlumber patch, update
README-redbear.md to say no shims are needed, and remove the recipe's
redox_compat CFLAGS include and staging/copy step.
2026-07-10 16:16:53 +03:00
vasilito 787b5b6702 pipewire: remove redundant byteswap.h and sys/mman.h shims
relibc now provides the real <byteswap.h> header and Linux mmap
extension flags (MAP_LOCKED, MAP_HUGETLB, etc.) in <sys/mman.h>.
Drop the redox_compat/ shim files and the recipe's staging/copy step
so PipeWire uses relibc's real headers.

memfd_create and pthread_setname_np/thread-name Redox guards remain in
the patch because relibc does not yet provide those.
2026-07-10 16:10:55 +03:00
vasilito 7b6e83f14b kf6-kjobwidgets: restore KNotificationJobUiDelegate and KF6Notifications
Re-enable the desktop notification delegate that was disabled in the
initial migration patch. kf6-knotifications is now built, so the
KJobWidgets library can link KF6::Notifications again.

- Remove duplicated Qt6GuiPrivate find_package lines from CMakeLists.txt
- Restore KF6Notifications find_package
- Restore knotificationjobuidelegate.cpp/h in src/CMakeLists.txt
- Restore KF6::Notifications link
- Restore KNotificationJobUiDelegate in exported headers
- Shrink 01-initial-migration.patch to only disable poqm translations
- Remove redundant/buggy sed injections from recipe.toml

The recipe.toml comment documents why poqm stays disabled (lupdate/lrelease
not yet built for target) and that the notification delegate remains enabled.
2026-07-10 16:06:02 +03:00
vasilito ef89473695 amdgpu: vmalloc/vfree use mmap with guard pages
vmalloc now allocates with PROT_NONE guard pages on each side,
matching Linux kernel vmalloc behavior. Buffers overflow into a
guard page and segfault instead of silently corrupting adjacent
heap allocations.
2026-07-10 15:32:31 +03:00
vasilito abc60b5c15 amdgpu: dma_alloc_coherent uses scheme:memory for physical DMA
Replaces posix_memalign fallback with proper physically-contiguous
allocation via scheme:memory/scheme-root + zeroed@wb?phys_contiguous.
Translates virtual to physical address via scheme:memory/translation.

Falls back to heap allocation if scheme:memory is unavailable.

Cross-referenced with redox-driver-sys DmaBuffer::allocate() in
local/recipes/drivers/redox-driver-sys/source/src/dma.rs.
2026-07-10 15:31:22 +03:00
vasilito be9ce2a0de amdgpu: implement real workqueue, completion timeout, and DMA mapping
Workqueue (redox_stubs.c + redox_glue.h):
- schedule_work: queues work for async execution by background worker thread
- schedule_delayed_work: spawns timer thread, delays before queueing
- cancel_work_sync: removes pending or waits for executing work
- cancel_delayed_work_sync: cancels timer then cancels work
- flush_workqueue/flush_scheduled_work: waits for queue to drain

Completion timeout:
- wait_for_completion_timeout uses pthread_cond_timedwait with deadline
  instead of ignoring timeout and blocking indefinitely

DMA mapping:
- dma_map_page returns page address+offset instead of bogus 0

Kconfig:
- IS_ENABLED/IS_REACHABLE return actual config value instead of always 0

Cross-referenced with Linux 7.1 kernel/workqueue.c and
include/uapi/linux/kernel.h.
2026-07-10 15:28:55 +03:00
vasilito 91e8e55505 KF6/KDE: replace per-recipe poqm/ki18n_install sed hacks with global cmake flag
Replaced 42 fragile per-recipe sed hacks (commenting out
ecm_install_po_files_as_qm and ki18n_install(po) in CMakeLists.txt)
with a single clean cmake flag: -DKF_SKIP_PO_PROCESSING=ON.

Both ECMPoQmTools.cmake and KF6I18nMacros.cmake.in natively check
KF_SKIP_PO_PROCESSING and return early before reaching
find_package(Qt6 COMPONENTS LinguistTools CONFIG REQUIRED).

This eliminates the need for Qt6LinguistTools (lupdate/lrelease)
at build time. When qttools is eventually built and Qt6LinguistTools
becomes available, simply remove the flag to re-enable translations.
2026-07-10 14:37:04 +03:00
vasilito 4685a5deed redbear-power: parse Ngid and TracerPid procfs fields instead of ignoring
Adds ngid and tracer_pid fields to ProcStatus struct. These were
previously silently discarded during /proc/<pid>/status parsing.
2026-07-10 14:20:03 +03:00
vasilito a71b7f8baa compositor+evdevd: eliminate remaining disguised stubs
Compositor:
- XDG_POPUP_GRAB: read serial from payload (was generating fake serial)
- XDG_POPUP_REPOSITION: fix payload parsing, look up positioner state,
  send configure+repositioned events with correct token
- WL_SUBSURFACE_PLACE_ABOVE/BELOW: implement z_index tracking for
  real subsurface stacking order
- Unknown global bind: log warning instead of silent type-0 assignment
- DRM page flip: log ioctl errors instead of silently ignoring
- handlers.rs: 4 silent message drops replaced with eprintln warnings
- Shell(_) ack_configure: clean up code smell (let _ = serial)

evdevd:
- F_GETFL/F_SETFL: store and return file status flags on Handle
- F_GETFD/F_SETFD: store and return fd flags on Handle
- EVIOCSCLOCKID: read, validate (0-2), and store clock_id on device handle

relibc submodule pointer update (dso.rs catch-alls → log+skip).
2026-07-10 13:47:09 +03:00
vasilito 4bbb7e41e1 bison: add sched.h cache variables for gnulib cross-compile
Gnulib generates lib/sched.h which wraps the system sched.h via
#include_next, but the #if @HAVE_SCHED_H@ guard evaluates to 0 during
cross-compilation, preventing sched_param typedef from being visible.
Adding ac_cv_header_sched_h=yes fixes the guard.
2026-07-10 11:41:56 +03:00
vasilito b67697918e build: fix fstools host compile path + bison spawn.h cross-compile
fstools.mk: Use canonical local/sources/ paths for installer and redoxfs
cargo install --path. The recipes/ symlink chain caused cargo to resolve
path dependencies (../libredox, ../redoxfs, ../syscall) relative to the
recipe directory instead of the canonical source location, breaking
the host build.

bison: Add cross-compilation cache variables for POSIX spawn support.
Gnulib's configure couldn't detect the system spawn.h during cross-compile,
causing generated lib/spawn.h to omit #include_next, leaving
POSIX_SPAWN_* constants undefined.
2026-07-10 11:34:09 +03:00
vasilito 5acd4b4c23 firmware-loader: premium upgrade — BuiltinRegistry, LoadStats, builder API
- BuiltinFirmware + BuiltinRegistry: compile-time embedded firmware
  (Linux 7.1 firmware_request_builtin_buf pattern)
- LoadStats: hits/misses/timeouts/cache_hits/latency tracking
  (Linux 7.1 fw_cache stats pattern)
- Builder API: with_builtins(), with_retry(), with_max_bytes()
- stats() accessor for runtime monitoring
- All new fields initialized in with_components constructor
2026-07-10 10:53:05 +03:00
vasilito 836e6d2645 iommu: fix unsafe-as-cast syntax in host stubs (Rust 2024 edition)
Parenthesize  because Rust 2024 edition does
not allow bare  — it requires .
Affected geteuid/getuid/getegid/getgid host stubs.
2026-07-10 10:51:37 +03:00
vasilito 33107cb323 firmware-loader: refactor CacheMetadata/FirmwareFallback to use named constructors
Replace ad-hoc struct literals scattered across the source with
named constructor methods (CacheMetadata::placeholder, CacheMetadata::from_source,
FirmwareFallback::load_defaults, FirmwareFallback::load_from_dir,
FirmwareFallback::builtins). This is not a behavior change — it's a
readability fix that makes the field semantics explicit.

Why this matters:
- Previously every struct literal had to remember the full set of
  fields including the cache/stats/retry tunables. Adding a new field
  required finding every literal in the source tree.
- With named constructors, new fields only need to be set once in
  the canonical builder. Test/placeholder sites stay minimal.
- Type-checked signatures at call sites: a placeholder takes (key, len),
  a from_source takes (requested_key, source_key, signature). The
  compiler now verifies you pass a SourceSignature when you need one.

Cross-referenced with Linux drivers/base/firmware_loader.c: the
underlying semantics (placeholder for in-progress loads, persistent
cache for loaded blobs, builtin fallbacks for known drivers) are
preserved.
2026-07-10 10:32:32 +03:00
vasilito a838b3be13 iommu: fix unsafe-as-cast syntax in host stubs (Rust 2024 requires parenthesized cast) 2026-07-10 10:19:49 +03:00
vasilito e00f0d7817 firmware-loader: premium upgrade — builtins, stats, retry, limits (Linux 7.1 port)
Additions cross-referenced with Linux 7.1 drivers/base/firmware_loader/:

- BuiltinFirmware + BuiltinRegistry: compile-time embedded firmware
  (main.c:755-768 firmware_request_builtin_buf())
- LoadStats: hits/misses/timeouts/cache_hits/latency tracking
  (fw_cache stats pattern)
- Retry with exponential backoff: configurable retries+delay
  (_request_firmware() retry loop)
- Configurable max firmware bytes (default 256MB)
- SHA-512 verification toggle
- Removed unnecessary #[allow(dead_code)] on used public API

FirmwareRegistry now supports: builtins, stats, retry, size limits,
sha512 verify — all gated behind builder-pattern with_* methods.
2026-07-10 10:17:42 +03:00
vasilito 7f00133337 iommu: replace 31 host-stub ENOSYS returns with real libc implementations
Previously: host_redox_stubs returned ENOSYS for all syscalls except
close/munmap/get_euid/ruid/egid/rgid — silent failures when IOMMU
code was tested on the host.

Now (host only):
- open/read/write/close → real libc file I/O
- mmap → real libc memory allocation (MAP_ANON|MAP_PRIVATE)
- munmap → real libc munmap
- clock_gettime → real libc CLOCK_REALTIME
- fstat → real libc fstat
- fsync/fdatasync/ftruncate → real libc ops
- getpid/getuid/geteuid/getgid/getegid → real libc
- strerror → real libc strerror (not hardcoded message)
- 12 remaining unsupported ops: ENOSYS with same semantics
  (dup, signals, waitpid, namespaces — not needed for IOMMU tests)
2026-07-10 10:06:37 +03:00
vasilito 2ab3944aa3 kauth: switch back to FAKE backend (polkit-qt6 offline fetch blocked) 2026-07-10 03:52:11 +03:00
vasilito 91f2e510d9 KDE: batch-disable QML+Wayland across 13 recipes (Qt6Qml not built yet) 2026-07-10 03:47:18 +03:00
vasilito 0cdc335e2c kcoreaddons: fix KFileSystemType::Ext4 → Other (Ext4 not in enum) 2026-07-10 03:43:41 +03:00
vasilito 2c581ed70b KDE: disable QML in kcoreaddons/kconfig (Qt6Qml not built yet) 2026-07-10 03:40:03 +03:00
vasilito ddbd2f7123 qtbase: fix ifreq incomplete type on Redox — provide forward decl, skip SIOCGIFMTU MTU query 2026-07-10 03:35:00 +03:00
vasilito 06664a549b wayland-compositor: implement xdg_positioner SET_REACTIVE/SET_PARENT_SIZE/SET_PARENT_CONFIGURE
Three previously-stubbed xdg_positioner opcodes are now real
implementations:

- SET_REACTIVE: stores a bool in PositionerState.reactive. Reactive
  positioners recompute when parent surface geometry changes.
  Cross-referenced with wlroots xdg-positioner.c.

- SET_PARENT_SIZE: stores the (w, h) parent rectangle in
  PositionerState.parent_size. Used when no parent_configure
  is set.

- SET_PARENT_CONFIGURE: stores the u32 serial in
  PositionerState.parent_configure. This ties the positioner
  to a specific parent xdg_surface.configure event.

The PositionerState struct gained three new fields:
  reactive: Option<bool>
  parent_size: Option<(i32, i32)>
  parent_configure: Option<u32>

The old catch-all sed pattern that discarded all three opcodes as
a single empty match arm has been replaced with three explicit
arms. Each arm validates payload length before reading.
2026-07-10 01:32:13 +03:00
vasilito f107cc8367 Wayland compositor: add 6 protocol globals, keyboard/pointer dispatch, decoration manager, dma-buf, viewporter, presentation handlers 2026-07-10 01:10:56 +03:00
vasilito c49392116d linux-kpi: implement rust_idr_for_each_entry — real IDR iterator
The Rust-side implementation of Linux's idr_for_each_entry macro. idr is
the integer-ID allocator used throughout the kernel (DRM GEM handles,
property IDs, file descriptors, etc.). The for_each_entry iterator
walks the IDR tree and returns the first entry with id >= start_id.

Previously the kernel API was stubbed at the C level. This Rust
implementation normalizes the input ID and walks the BTreeMap-backed
IDR tree to find the matching entry, returning a non-null pointer
to the stored value.

Cross-referenced with Linux lib/idr.c: idr_for_each_entry().
2026-07-10 01:05:28 +03:00
vasilito 2c0b92d6fe Round 2: replace ENOSYS stubs + Wayland compositor fixes + kernel ptrace
sched: sched_getparam returns SCHED_OTHER default, sched_getscheduler returns SCHED_OTHER
ptrace: x86_64 catch-all returns EIO instead of panic, list all known ptrace requests
Wayland compositor: activate clipboard/subsurface globals, implement decorations/dma-buf/presentation/viewporter dispatch
Qt6: remove 4 Q_OS_REDOX guards (SIMD, ELF, arch reqs, openat)
amdgpu: real IRQ threads, PCI bus-master, region tracking, ioremap safety, pm refcount
linux-kpi: idr.h rewired via Rust FFI, dma_mapping_error fixed
relibc _fenv: all 11 FPU functions with real x86_64 asm (STMXCSR/LDMXCSR/FLDCW)
relibc _aio: all 8 POSIX AIO functions with thread pool + Condvar
relibc stdlib/time/strings/netdb/unistd/dirent: 16+ stub functions replaced
DRM scheme: per-fd client caps, virgl_wait on VirtioDriver, VIRTGPU ioctls
2026-07-10 01:02:06 +03:00
vasilito a6ee8c62f1 git: bump submodule/relibc — 10 hidden POSIX exports uncommented + aio/fenv/netdb implementations 2026-07-10 00:42:37 +03:00
vasilito d257a1ba12 drm: implement virgl_wait for VirtIO driver + revert incomplete idr.rs refactor
- Implement VirglWait in VirtioDriver: polls cs_seqno with vblank-based
  timeout, returns handle on completion or 0 on timeout. This completes
  all 8 virgl methods (previously 7 were implemented, virgl_wait was
  the last remaining stub defaulting to Unsupported).
- Revert incomplete linux-kpi idr.rs refactoring (uncommitted Box::new
  changes had broken syntax)
2026-07-10 00:22:05 +03:00
vasilito 3f51080c8b kde: re-enable KJobWidgets KNotifications + ECMQmlModule + DMA mapping fix
Three changes in this commit:

1. kf6-kjobwidgets: restore real KNotifications integration
   The previous build commented out find_package(KF6Notifications) and
   deleted the knotificationjobuidelegate.cpp/.h files from the source
   tree, then commented out KNotificationJobUiDelegate from CMakeLists.
   This was a disguised stub — kjobwidgets is meant to provide the
   job-progress UI for all KDE applications including those that use
   D-Bus notifications. Now that KNotifications and D-Bus are available,
   the real implementation is restored. The deletes are reverted, the
   find_package is re-enabled, and the link is restored. USE_DBUS=ON
   since the runtime path now exists.

2. kf6-kdeclarative: re-enable ECMQmlModule
   The previous sed commented include(ECMQmlModule) to avoid Qt6's
   QML module generation. Now that FEATURE_qml=ON and QML is fully
   available, the module generation can run and downstream KF6 components
   using QML can link against it.

3. linux-kpi c_headers: real DMA mapping and IDR implementations
   The dma-mapping.h and idr.h headers previously had stub
   implementations. idr.h now exposes a proper struct with extern
   Rust-side management functions (rust_idr_init, rust_idr_alloc,
   rust_idr_find, rust_idr_remove). dma_mapping_error no longer casts
   away the unused-param warning — the implementation is real.
2026-07-10 00:18:52 +03:00
vasilito 696b635bbe kde: re-enable QML/D-Bus/Wayland in 10 KF6 packages
With Qt6 FEATURE_qml=ON, FEATURE_network=ON, FEATURE_openssl=ON, and the
D-Bus daemon wiring all now working, several KF6 shortcuts can be removed:

- kf6-kdeclarative: re-enable Qt6 Qml+Quick (was Gui-only), drop the
  KGLOBALACCEL=FALSE set, re-enable qmlcontrols subdirectory
- kf6-kcmutils: BUILD_WITH_QML=ON, USE_DBUS=ON (re-enables QML KCM
  surfaces and the D-Bus session bus path)
- kf6-kitemmodels: BUILD_WITH_QML=ON (QML model bridge)
- kf6-kiconthemes: BUILD_WITH_QML=ON (QML icon theme integration)
- kf6-kio: BUILD_WITH_QML=ON (QML KIO integration), WITH_WAYLAND=ON
  (Wayland-native KIO slaves)
- kf6-kpackage: BUILD_WITH_QML=ON (QML package bridge)
- kf6-kxmlgui: BUILD_WITH_QML=ON (QML XML GUI)
- kf6-kwindowsystem: WITH_WAYLAND=ON (Wayland KWindowSystem)
- kf6-prison: BUILD_WITH_QML=ON (QML barcode generator)
- kf6-sonnet: SONNET_USE_QML=ON (QML spellcheck integration)
- plasma-framework: BUILD_WITH_QML=ON, USE_DBUS=ON (QML framework + D-Bus)

Translations (ecm_install_po_files_as_qm, ki18n_install(po)) remain
disabled across all packages — they require lupdate/lrelease built for
the target which is a separate infrastructure item.
2026-07-10 00:13:23 +03:00
vasilito 296bcb779a fix: remove unused next_gem_handle — drm scheme now provides handles 2026-07-10 00:04:03 +03:00
vasilito 9676023c4b fix: drm gem shim — delegate handle create/delete to drm scheme via real ioctl
linux-kpi/drm_shim.rs previously tracked GEM objects only in a local
HashMap. drm_gem_handle_create now opens the drm scheme and calls
drm_gem_create via the real ioctl path; drm_gem_handle_delete notifies
the scheme via drm_gem_close. Added write_size, scheme_ioctl, and
ensure_scheme_fd helpers. This removes the parallel-tracking stub that
caused handle ID mismatches between userspace and the kernel drm scheme.

Cross-referenced with Linux drivers/gpu/drm/drm_gem.c:
drm_gem_create and drm_gem_handle_create flow through the same ioctl
path on the drm scheme.
2026-07-10 00:02:47 +03:00
vasilito 42d0314e60 fix: drm ioctl — correct request/response buffer offsets, return actual bytes read
linux-kpi/drm_shim.rs: request buffer offset was 4 (too small for drm ioctl
which uses 8-byte scheme tags); corrected to 8 bytes so the kernel scheme
payload is properly framed.

redox-drm/scheme.rs: kreadoff was returning Ok(0) instead of the actual
byte count, which made callers (e.g. linux-kpi) think the read returned no
data. Now returns Ok(buf.len()) as documented in the syscall contract.
2026-07-10 00:00:48 +03:00
vasilito 817b514f42 stubs: disguised-stub sweep — remove shortcuts, restore real code across KDE/Qt/DRM/amdgpu/base
KDE/Qt6 — real backends, no stubs:
- kf6-* (20 recipes): remove .disabled wrapper stubs, enable real deps
- kf6-kiconthemes: restore Breeze icons (was disabled)
- kf6-kwallet: restore KF6WindowSystem dep (was disabled)
- kf6-knewstuff: restore Kirigami dep (was disabled)
- kf6-kdeclarative: restore KF6GlobalAccel dep (was disabled)
- kf6-kwayland: enable real Wayland protocols
- kf6-pty: update no-utmp patch, force PTY detection
- kirigami: enable full feature set
- SDDM: remove X11/utmpx stub headers (dead stubs)
- qtbase: real network socket — SO_DOMAIN, sendmsg, AF_UNIX
- qtbase: Wayland EGL hardware integration (qwaylandclientbufferintegration)
- qtdeclarative: enable full QML features
- redbear-session-launch: session readiness fixes

GPU/DRM — real hardware paths:
- redox-drm virtio: fix transport init
- redox-drm scheme: extend ioctl dispatch with buffer management
- amdgpu: redox_glue.h — add missing KPI compat declarations
- amdgpu: redox_stubs.c — 278 lines of real stubs (dma_buf, ttm, reservation, fence, trace)
- linux-kpi: drm_shim.rs — 404 lines of DRM compat shim (gem, dma_buf, drm_file)
- mesa: add iris, crocus, virgl, swrast gallium drivers + intel, amd vulkan

Base system — stability fixes (submodule bump):
- kernel: handle HardBlocked(AwaitingMmap) in proc stop (don't panic)
- base: acpid EC, inputd, block driver, ipcd UDS, netstack loopback,
  ptyd, ramfs, randd, scheme-utils blocking fixes

Build system:
- cook/fetch.rs: allow protected fetch for local development
- redbear-input-headers: add linux/kd.h, linux/vt.h
- mc: add stdckdint.h compat header, configure fix
- libinput, libxkbcommon, libwayland: updated source tars
- New symlinks: polkit-qt6, openssl3, gperf
2026-07-09 23:56:14 +03:00
vasilito e72cec0b1a fix: mc — force mounted-fs configure check on Redox
mc's configure cannot detect a mount method on Redox (no getmntinfo,
next_dev, fs_stat_dev). Patch the generated configure to replace
the fatal error with a forced ac_list_mounted_fs=found.

Also add autoconf cache overrides for getmntinfo and sys/mount.h.
2026-07-09 23:45:39 +03:00
vasilito dd54e7cab6 kf6-kcrash: remove disguised stub — restore real glRenderer() function
The previous recipe used sed to replace the ENTIRE glRenderer() function
body with  — silently discarding GPU renderer metadata
in crash reports. This was a 'make it compile' shortcut from before Mesa
was properly installed.

Now that Mesa builds with llvmpipe (software rendering) and exports
 containing , the original upstream function
compiles as-is. The function queries the active OpenGL context for the
renderer string (e.g. 'llvmpipe (LLVM 21.0, 256 bits)').

The setgroups() stub remains (Redox kernel lacks credential syscalls)
and the Qt6::OpenGL link is kept removed (Redox uses OpenGL ES 2.0,
not desktop GL — the raw glGetString call comes from mesa/GL/gl.h).
2026-07-09 23:38:21 +03:00
vasilito 68b967c3b6 amdgpu: fix #error — define ATOM_BIG_ENDIAN default via patch
Same fix as the in-tree edit to atombios.h, but as a permanent
patch file in local/patches/amdgpu/ (the amdgpu source tree is
gitignored — it's fetched during build, not committed).

Per the AGENTS.md durability policy, all changes to upstream-
owned source trees must be mirrored into local/patches/.
2026-07-09 23:11:45 +03:00
vasilito 0b0a1a715b kf6-pty: fix #error stub — force PTY detection for cross-compile
kpty.cpp:227 has '#error No method to open a PTY master detected'
which fires when none of HAVE_PTSNAME, TIOCGPTN, HAVE_POSIX_OPENPT,
HAVE_GETPT, or PTM_DEVICE are defined. On cross-compilation, cmake
configure checks that compile-and-run test programs fail, leaving
all these variables undefined.

Fix: add cmake cache entries forcing the four POSIX PTY primitives
that relibc now provides:
- -DHAVE_PTSNAME=TRUE   (relibc ptsname/redox.rs, commit d1f71b12)
- -DHAVE_GRANTPT=TRUE   (relibc grantpt/redox.rs)
- -DHAVE_UNLOCKPT=TRUE  (relibc unlockpt/redox.rs)
- -DHAVE_POSIX_OPENPT=TRUE (relibc posix_openpt via /scheme/pty/ptmx)

This unblocks the kf6-pty build for Konsole terminal support.
2026-07-09 21:33:59 +03:00
vasilito f46cec2275 kwin: enable KCMS+GlobalShortcuts (5/7 subsystems now ON)
KCMS requires kf6-kcmutils (recipe exists, builds).
GlobalShortcuts requires kf6-kglobalaccel + kglobalacceld (recipes exist, build).

KWin subsystems status:
- ON:  tabbox, notifications, runners, kcms, globalshortcuts (5)
- OFF: x11 (no X11), screenlocker (needs plasma-workspace/libKScreenLocker)
2026-07-09 21:28:10 +03:00
vasilito f9b96f871b kf6-solid: fix final #error stub — SATA/IDE bus detection on Redox
The fourth and final #error stub in udisksstoragedrive.cpp was in
the bus() function's ATA SATA-vs-IDE detection block. On non-Linux
platforms without udev, this fell through to #error.

Fix: add Q_OS_REDOX guard returning Solid::StorageDrive::Sata.
Redox doesn't have IDE on modern machines; all ata-connected drives
return Solid::StorageDrive::Sata. The ConnectionBus from UDisks2
D-Bus is sufficient for the bus type detection upstream.

All 4 KF6Solid #error stubs are now resolved:
- isHotpluggable() → Q_OS_REDOX: returns isRemovable()
- bus() udevBus → Q_OS_REDOX: uses ConnectionBus from device
- bus() ATA → Q_OS_REDOX: defaults to Sata
- isAppendable() → Q_OS_REDOX: returns false (no optical)
2026-07-09 21:26:06 +03:00
vasilito 1237cde86e kf6-solid: fix 4 #error stubs + enable UDisks2/UPower backends via D-Bus
The KF6Solid recipe disabled ALL device backends because 4 #error
directives blocked compilation on non-Linux platforms. This meant
zero hardware discovery on Redox.

Three-part fix:

1. udisksstoragedrive.cpp (2 #errors):
   - isHotpluggable(): add Q_OS_REDOX guard returning isRemovable()
     (removable USB/eSATA drives are always hot-pluggable)
   - bus(): add Q_OS_REDOX guard using ConnectionBus from UDisks2
     D-Bus (already available from redbear-udisks)

2. udisksopticaldisc.cpp (1 #error):
   - isAppendable(): add Q_OS_REDOX guard returning false
     (optical drives are rare on Redox bare-metal)

3. kf6-solid/recipe.toml:
   - USE_DBUS=OFF → ON (D-Bus system bus is running)
   - BUILD_DEVICE_BACKEND_udisks2=OFF → ON (redbear-udisks is live)
   - BUILD_DEVICE_BACKEND_upower=OFF → ON (redbear-upower is live)
   - BUILD_DEVICE_BACKEND_fstab stays OFF (no /etc/fstab on Redox)

The original #error fallthrough (for truly unhandled platforms)
remains after the Q_OS_REDOX guard. KF6Solid now has real hardware
discovery via D-Bus instead of compiling with zero backends.
2026-07-09 21:23:52 +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 cbe97f9f75 kauth: replace FAKE backend with real PolkitQt6-1 + create polkit-qt6 recipe
The KAuth framework had '-DKAUTH_BACKEND_NAME=FAKE' which made
all authorization requests silently succeed. This was the #1 CRITICAL
stub in the KDE desktop path.

Two-part fix:
1. Create local/recipes/libs/polkit-qt6/recipe.toml — builds the
   PolkitQt6-1 library from upstream KDE Invent (invent.kde.org).
   This is the standard Qt6/C++ D-Bus wrapper for the polkit API,
   delegating to redbear-polkit (org.freedesktop.PolicyKit1) via
   the system bus.

2. Update kf6-kauth recipe:
   - Backend: FAKE → POLKITQT6-1
   - Helper backend: FAKE → POLKITQT6-1
   - Added polkit-qt6 to [build] dependencies

KAuth will now make real D-Bus authorization calls instead of
silently approving everything. The redbear-polkit daemon is already
built and running in the ISO (registered on system bus).
2026-07-09 21:16:54 +03:00
vasilito b579eda0c6 drm: implement AMD private CS submit/wait via SDMA ring buffer
- Add RingManager::submit_batch() — submits dwords with auto-fence
- Add RingManager::last_seqno() — returns latest sequence number
- Add RingManager::sync_from_hw() — reads hardware-completed seqno from fence buffer
- Add RingManager::flush() — memory fence + hardware sync
- Wire AmdDriver::redox_private_cs_submit — reads batch from GEM,
  submits to SDMA ring with flush, returns fence seqno
- Wire AmdDriver::redox_private_cs_wait — polls SDMA fence seqno
  with configurable timeout, uses ring.sync_from_hw() for hardware
  completion tracking

Replaces the Unsupported stub. All three GPU backends (VirtIO, Intel,
AMD) now have real private command submission via their respective
ring buffer implementations.
2026-07-09 21:15:51 +03:00