Remove stale jerboa-coreutils dependency from Rust coreutils builds #79
Loading…
Add table
Add a link
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?
Problem
The shell is supposed to use the Rust/uutils based coreutils implementation (
rust-coreutils/libjsh_coreutils.a), but the build still vendors, stages, and embeds the Schemejerboa-coreutilstree in multiple paths. This leaves the project in a hybrid state where the Rust archive provides the native command engine, whilejerboa-coreutilsstill appears to provide Scheme modules, wrappers, and C shim glue.This is confusing and risky because a build may silently depend on the older Scheme
jerboa-coreutilsmodules even though the intended implementation is Rust coreutils.Evidence found
Root repo references:
Makefilestill definesCOREUTILS ?= $(VENDOR)/jerboa-coreutils/lib.Makefileincludes$(COREUTILS)inLIBDIRS_JSHandXC_LIBDIRS.Makefilestill includesjerboa-coreutilsinVENDOR_REPOSandLINUX_VENDOR_REPOS.build-jsh-macos.shsetsCOREUTILS_DIR="${COREUTILS_DIR:-$(dep jerboa-coreutils lib)}"while also building/exportingRUST_COREUTILS_LIB.build-jsh-freebsd.shsimilarly setsCOREUTILS_DIRfromjerboa-coreutilswhile also building Rust coreutils.build-jsh-macos.ssstagesjerboa-coreutilsmodules and also linkslibjsh_coreutils.a.build-jsh-freebsd.ssstagesjerboa-coreutilsmodules and also linkslibjsh_coreutils.a.build-jsh-musl.ssappears closer to the desired state: it explicitly saysjerboa-coreutilsis replaced by Rust uutils and does not compile Scheme coreutils modules.Extras/Android references observed in
vendor/jerboa-shell-extrasafter bootstrap:vendor/jerboa-shell-extras/Makefilestill definesCOREUTILS ?= $(VENDOR)/jerboa-coreutils/lib.vendor/jerboa-shell-extras/Makefilestill vendorsjerboa-coreutilsinVENDOR_REPOSandLINUX_VENDOR_REPOS.vendor/jerboa-shell-extras/build-jsh-android.shsetsCOREUTILS_DIR="${COREUTILS_DIR:-${VENDOR}/jerboa-coreutils/lib}".vendor/jerboa-shell-extras/build-jsh-android.shalso buildsrust-coreutils/target/release/libjsh_coreutils.a, so Android is definitely hybrid.vendor/jerboa-shell-extras/build-jsh-android.ssdefinescoreutils-diras${vendor-dir}/jerboa-coreutils/lib.vendor/jerboa-shell-extras/build-jsh-android.ssembeds a long list ofjerboa-coreutils/...Scheme modules into the Android boot image.vendor/jerboa-shell-extras/build-jsh-android.sscompilesvendor/jerboa-coreutils/support/libcoreutils.cintocoreutils-ffi.o.libjsh_coreutils.awith--whole-archive.Why this matters
jerboa-coreutils.jerboa-coreutilsmodules even though Rust coreutils is linked.jerboa-coreutilsto be present.Expected direction
If Rust coreutils is the intended implementation, the build should converge on:
rust-coreutils/libjsh_coreutils.aas the only command implementation.jsh/coreutilsandjsh/coreutils-shimwrappers only, if wrappers are still needed.jerboa-coreutilsentry in root or extras vendor dependency lists unless it is truly still required.$(VENDOR)/jerboa-coreutils/libin libdirs.jerboa-coreutils/...modules.vendor/jerboa-coreutils/support/libcoreutils.cif Rust FFI symbols cover the command surface.Suggested acceptance criteria
jerboa-coreutilsreference and classify it as required glue, obsolete wrapper, or stale dependency.vendor/jerboa-coreutils/libfor command dispatch.Related context
This surfaced while investigating Android/Termux all-features build issues. The Android builder was observed to both build/link
libjsh_coreutils.aand embed/compilejerboa-coreutilsScheme/C support, which contradicts the expectation that coreutils should come from Rust.