generated from erix/meta
[BUG] Standalone kernel builds require unused components and lose manifest feature dependencies #49
Labels
No labels
bug
ci
docs
duplicate
enhancement
help wanted
invalid
performance
phase-6
question
refactor
security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
erix/integration#49
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The standalone dynamic kernel build path diverges from its declared component and Cargo feature graph. A kernel-only diagnostic first requires unrelated userspace service checkouts, then requires registry entries for unused image targets. Once those gates are corrected, a feature that works in ordinary Cargo builds loses its transitive runtime feature during dynamic compilation.
Reproduction
Use a manifest-coherent catalog containing Kernel, Bootloader, Boot Tool, native C memory support and their transitive dependencies, together with a registry containing only the kernel's dynamic dependency closure. Select
KERNEL_ROOTD_TEST=noneandROOTD_TEST_MODE=nonethroughscripts/build-kernel-fixture.sh.With the native lifetime diagnostic selected, the isolated wrapper under development invokes this same builder. The three failures below were observed in sequence as each earlier defect was corrected. The ordinary feature-selection test also reproduces the first defect with no lifetime feature enabled.
Expected and actual behavior
Expected: a standalone kernel requires its actual source and shared-library closure, with the feature implications declared by its selected original Cargo manifest. Full service images must continue to validate their full target set.
Observed failures, each with actual exit status 1:
error: memd component missing in config/workspace.erix-ipc-syscall-x86_64.so: shared-object registry entry is missing.rootd_smoke_markerwhen the lifetime fixture's transitive runtime feature is missing.Environment and identity
Integration base
47c27a1614c02323db7bbebfdbd0ca6b09bc9d45, with the isolated diagnostic adapter under development; Kernel213c4606b2bf94d7ed87f339bf4c7462cad90987, IPCde6892790de69f40f749c393d24078b287b36175and capability ABI984c9f7b0ca910488f8c5b035d2f0cb88f18d304. Linux x86_64 host, Rust 1.97.1, freestanding x86_64 release target. These failures occur before VM execution. The source/catalog selectors are full original Git commits; no branch replacement or additional guest authority is involved. A last known working minimal graph is not established.Evidence and prior checks
Current Integration
4b65755f1f2774798d4a909212db4e64c0349b86finishes with failed push CI 1603 and PR CI 1604. Each complete catalog reports 54 passes and 432 failures out of 486 scenarios. Six full terminal logs total 14,427,322 bytes, with no warning candidates. Both Rust and Markdown jobs pass. The later isolated native diagnostic, canonical images and terminal modes are not reached by these runs.Issue 50 tracks the observed shared-compiler regression: valid dependency-qualified Rootd selections are rejected as unknown local features. A minimal original-manifest check confirms the failure. The correction separates compiler cfg ownership and adds direct, transitive, malformed and real-compiler coverage; its full local checks are underway. Original failures remain retained, and these terminal runs are not being replayed unchanged. Earlier isolated native VM acceptance retains its separate exact source and artifact scope.
Signed Integration
4b65755f1f2774798d4a909212db4e64c0349b86adds the isolated native lifetime scenario and corrects standalone kernel service selection, target-scoped cache identity and original-manifest feature closure. The redundant feature implication table is removed and the shared resolver joins the builder fingerprint. The normal component catalog remains independently selected.The strict development/release default/all-feature Rust matrix passes 320/321 units, doctests, private rustdoc and freestanding builds; missing documentation remains denied. All 159 helper suites are accepted across the complete run and justified follow-ups: installed filesystem-tool routes and actual stage tracing, serialization after the real VM releases the global scenario lock, and declaration of the compiler fixture's selected feature. Original failures and actual statuses remain retained; assertions and production deadlines are unchanged.
The actual native VM passes both ordered unique markers, expected exit and forbidden-marker checks using signed Kernel
03e13a784bde08914864267a4e2a6324a22d05c7and Bootloadere7fa39357a38c21529cccfd16cf3446eb07e8aa5. The 2,142,208-byte image has SHA2564f021a40264739fef4979da2b0cd4647bde3f76b9dada6816aba6faa3594a797; QEMU stderr is empty. Complete preparation and execution takes 19.20 seconds under the unchanged 60/45-second VM limits, not a guest performance measurement. Kernel CI 528/529 and Bootloader CI 135/136 are green. Integration CI 1603/1604 is running; older suite and complete current-head acceptance remain pending. Realm adoption and both full guest build generations are unproved.The original kernel-only mode regression fails deterministically after the existing positive and refusal cases. The local correction keeps service modes zero for a standalone kernel. Cache tests preserve the selected target's identity while rejecting missing libraries whenever that target or the full image requires them. Dynamic compiler tests now resolve previously unknown feature names from the selected manifest and reject undeclared features. The duplicated feature map is removed, and the shared resolver is included in builder cache identity.
All three corrected checks pass, and the isolated dynamic kernel and its six shared objects build with warning-denied compilation and validated artifact metadata. Integration's development/release default and all-feature Rust checks pass. Full helper validation and native VM acceptance are still in progress; no guest-build or full-image success is claimed.
Validation checkpoint — 14 September 2026: Signed Integration
7cc0593e101b2e0ca42f24d4fa189dd96cb1455cpasses all 159 helper suites, the strict four-selection Rust matrix (320/321 units) and all 87 original Rootd feature selections from failed CI 1603/1604. Both final native VMs pass unchanged exit/marker rules with empty stderr. The lifetime image is 2,150,400 bytes, SHA2567d8b99684110d38dd77d2be297f1d896d7bb94a2f60dc5a3ee3dcab06cea2c76; the ordinary Rootd image is 27,934,720 bytes, SHA2563868790fac953843c62e3674ef149dc55e4502e5118212fcc95d1aef875cf1a0. Original compiler, runtime-import and entry-argument failures remain retained. Full CI 1605 and 1606 is running; no full-catalog pass is claimed.Tracking
Related: Integration audit, Integration PR 12, and native lifetime contract. Keep this issue open until the signed correction and relevant current-head CI are verified. Preserve all failed preparations and distinguish build-tool/environment mistakes from these implementation defects.
erikinkinen referenced this issue2026-09-14 11:38:14 +02:00