v0.8.4
- Networking picks the better DHCP client when available. The default
S10networkrunsdhcpcdif it's onPATH(IPv6 SLAAC, DHCPv6, IPv4LL
fallback) and falls back to busyboxudhcpcotherwise — so an image that
shipsdhcpcdgets the modern client without changing the init script. - File conflicts in image builds now fail loudly. Units can declare
replaces = ["pkg", ...]to opt into shadowing another package's files (e.g.
util-linuxover busybox's/bin/dmesg); apk honors that at install time and
rejects any conflict that wasn't declared. Image assembly no longer passes
--force-overwrite, so a new shadow becomes a real error instead of a buried
warning. - Unit edits no longer get masked by stale cache hits. Editing a unit's
description, license, runtime deps, replaces, conffiles, build environment,
scope, image partitions, image excludes, or install-step files now invalidates
the cache as it should — previously these silently kept the old apk. A new
test ininternal/resolvefails if a future Unit field is added without being
incorporated into the cache key. ipworks again ondev-image. iproute2 no longer pulls in libelf at
link time, so/sbin/ipruns without "Error relocating /sbin/ip: elf_getdata:
symbol not found" on images that don't ship elfutils.- Boot no longer hangs when DHCP fails. The default network init script
waits briefly for the link to come up before starting udhcpc, runs udhcpc in
the background, and limits its retries — sodev-imagereaches a login shell
even when no DHCP server is reachable, instead of looping on "Network is
down". - Image rootfs is assembled by upstream
apk add. yoe no longer loops
tar xzfover each apk; image builds runapk addagainst the project's
local repo, getting real dependency resolution, file-conflict detection, and
an installed-package database in/lib/apk/dbfor free. On-target you can now
apk info,apk verify, and (once apk-tools ships as a unit)apk addand
apk upgradeagainst the same repo. - Service symlinks ship inside the apk. A unit's
services = [...]
declaration is materialized as real/etc/init.d/SXX<name>symlinks inside
the package's data tar at build time. On-targetapk add <pkg>produces the
same rootfs as image-time assembly — yoe never patches the rootfs after
install. - Repo layout switched to Alpine-native —
repo/<project>/<arch>/<pkg>-<ver>-r<N>.apkplus a per-arch
APKINDEX.tar.gz..apkfilenames no longer carry a scope suffix. Existing
repo/directories are obsolete; the next build repopulates the new layout. - Yoe-built apks install with upstream Alpine apk-tools.
.apkfiles and
APKINDEXproduced by yoe now round-trip through stock
apk add --allow-untrusted: no checksum errors, no format warnings, and
package metadata (name, version, arch, deps, origin, commit, install size)
matches whatapk indexitself would emit. - Nine new units in
dev-image—e2fsprogs(mkfs.ext4 / fsck.ext4 /
tune2fs on the target),eudev(full udev for dynamic /dev),iproute2(full
ip/tc),dhcpcd(a DHCP client beyond busybox udhcpc),bash,less,
file,procps-ng(realps/top/free/vmstat), andhtopare now
built and included indev-imageso they're available out of the box on a
booted dev system.gperfis also added as a build-time dependency for eudev. - Updated units roadmap —
util-linux,kmod, andca-certificatesare
marked done;dropbearis dropped (the project standardizes onopenssh);
remaining work is nownftables(blocked on libmnl/libnftnl/gmp deps) and
dbus. - Documented when NOT to use
provides—docs/naming-and-resolution.md
now spells out thatprovidesis for leaf artifacts only (kernel, base-files,
init, bootloader). Using it for build-time libraries or runtime alternatives
forks every transitive consumer into a per-machine apk. Runtime alternatives
likemdevvseudevshould ship side-by-side and be selected at boot from
init scripts. - Image rootfs assembly now warns on path collisions — when two packages
install to the same path (e.g., busybox's/sbin/ipsymlink vs iproute2's
full binary), the later package silently overwrote the earlier one with no
trace. Image assembly now emits awarning:line per collision naming the
surviving package and the shadowed ones, plus a total count. The warnings
appear in the image'sbuild.log(and on terminal whenyoe build -vis
used). Existing dev-image builds surface 27 expected shadows of busybox
applets by full alternatives — no behavior change, just visibility.
To update, run: yoe update
Or download the binary for your architecture and place it in your PATH.
Note: Yoe-NG is in heavy development. We recommend cleaning your build directory and re-creating projects (yoe init) with each new release.