Repository navigation
Releases: jetm/bakar
Releases · jetm/bakar
Release list
v0.40.0
[0.40.0] - 2026-10-26
Added
bakar build --detach(also with--on HOST) starts the build in a user systemd unit and returns a handle, so a build survives the calling shell or tool call.bakar status [HANDLE] [--json] [--on HOST]reports one lifecycle state (starting,running,succeeded,failed,unknown) with task progress and the first failed recipe. Outcomes come only from a recorded exit status.bakar wait [HANDLE] [--timeout S] [--interval S] [--json] [--on HOST]polls a run until it ends and exits 0 (succeeded), 1 (failed), 3 (unknown), 124 (timeout) or 2 (handle does not resolve).- Next-step hints on stderr: wait, status and stop commands after a detached launch (always), and, with
CLAUDECODE=1, a--detachnudge for foreground builds and triage or report after a finished run. - New terminal exit status 124 from
bakar waitwhen--timeoutelapses while the run is still starting or running. docs/agents.mddescribes the lifecycle for agents and scripts.bakar build --on HOST --detachexits 3 when the remote start cannot be confirmed within the 60 second poll (a remote build can also return 3 itself, so checkbakar status <unit> --on HOSTbefore dispatching again), and exits 2 with "cannot create a user unit" when the host cannot detach, instead of running the build in the foreground there.- Runs recorded before this release have no
exit_codeon their terminal events, sobakar statusreports them asunknownandbakar waitexits 3 until a new run exists. bakar status --detail(with--jsonit adds adetailkey, also with--on HOST) reports running and failed tasks, the last log line, free disk for the build and sstate paths, available memory and pressure in one call. Host values are measured at query time on the host runningbakar status. A remote of a different bakar version is refused.- A
build_pathsrun event records the build TMPDIR and sstate path, so--detailcan measure the right filesystems. Runs from before this version have no sstate path and report it as null. bakar stoprecords a stop request before it signals a live build, so a stopped run readsfailedwith failure stepstoppedinstead of looking like an ordinary failure.- The failing step event records the first error line the build printed, so
bakar statusandbakar triagecan report why a run failed when no task is named. - The doctor step records the blocking checks, as
<check>: <message>joined by a semicolon and a space, on its failing step event, sobakar statusandbakar triagename the check that refused a build instead ofblocking failure. bakar ps --on HOSTlists the builds on a host, andbakar pslists a detached or dispatched build that has not started bitbake yet as aunitrow.bakar log --on HOSTfollows a run's log on a build host, andbakar log --run IDoutside a workspace finds a run a detached or dispatched unit registered.bakar log --lines Nand--no-followprint the last N lines of a log and exit, also with--on HOST. The read window grows up to 8 MiB and a stderr note says when that limit cut the output short. A host on an older bakar rejects both flags.bakar bitbake --detachandbakar rebuild --detachstart the command in a transient systemd unit and return a JSON handle.--detachis refused for the interactivedevshelltask.bakar triageresolves a registered run from any directory, including a detached or dispatched run outside a BSP workspace, andbakar triage --on HOSTtriages a run on a build host.bakar sync KAS_FILEfor a meta-avocado kas file moves the clean, off-pin shared clones of the release workspace onto their pinned commits, and--on HOSTdoes the same on a remote host without needing bakar installed there. Dirty clones are left alone, missing clones are left for kas to create,--dry-runreports without changing anything, and a running build refuses the whole run. The previous HEAD of each moved clone is written to a revert record.bakar sync --revert FILE(also with--on HOST) puts each clone back on its recorded HEAD and branch. It only accepts records under<workspace>/.bakar/sync-revert/.bakar build --on HOST --dry-runfor meta-avocado kas builds previews the dispatch without writing anything on the host or in the local checkout. It prints the plan and a pin state table, exits 1 with the refusal when a clone blocks the dispatch, and exits 0 otherwise.bakar driftnow works for meta-avocado kas files, comparing the pins in the merged kas configuration with the clones in the release workspace. A missing clone counts as drift, an unreachable pin reports an unknown distance, and the JSON output addsdriftedandmissingflags for this form. An unroutable release exits 2 with its message.- The remote dispatch plan names the workspace on the host and where its path came from.
- Remote dispatch of a meta-avocado build probes the host's shared clones before writing anything and refuses the dispatch when a clone is stale, dirty or cannot be probed, pointing at
bakar sync.--yesdoes not skip this check. - Reuse builds hold a shared lock for the whole run, so
bakar synccan no longer move a clone under a live build. A build that meets a running sync waits and says which lock it waits on.
Changed
- The detached-launch wait hint says to run
bakar waitin the background and to re-run it on exit 124. bakar triagereports the same failure reason asbakar status, includingstopped by bakar stopfor a stopped run.- The error for a failed release or pins dump names the overlays merged and the checkout's HEAD revision.
- Foreground
bakar build(including--on HOSTwithout--detach) under an agent now warns that a long build can outlive the tool call and points at--detach. - Warnings raised by bakar itself print as a single
bakar: warning:line without the source file and line. - The build and bitbake failure and success lines name the run ID.
- A build the reuse policy cannot serve now reports every blocking repository in one refusal, with each repository's HEAD, pin, clean state and pin availability and one repair command. Previously it stopped at the first blocker.
- The reuse policy refuses a commit pin that is not a hexadecimal id, and refuses a bitbake or openembedded-core side checkout it cannot pair. In host mode a diverged openembedded-core gets a side checkout with a bitbake link beside it when bitbake is frozen at its pin, and a build stops rather than replace a conflicting entry at the link location. In container mode a diverged openembedded-core is still refused.
- Reused side checkouts are now listed in the build output, not only newly created ones.
Fixed
bakar logstops following within about 3 s once its reader is gone, locally or on the host, instead of lingering until its next output.- The local side of a forwarded
--onstream ends its ssh child on every exit, including a closed local stdout. - A finished run reports a fixed
elapsed_seconds, ending at its terminal record, instead of one that keeps growing. - A run that is not live and has no timestamped record reports a null
elapsed_secondsinstead of one that keeps growing. bakar psnames the machine the build recorded and nevergeneric.- Container path translation works for meta-avocado builds and for nxp and ti runs found through a workspace, in the build UI and in
bakar triage. - Workspace detection applies the origin rule: a
meta-avocadodirectory whose origin names another repository is no longer taken for the meta-avocado workspace. bakar triage --on HOSTnow forwards--presetand--release, and refuses--kas-yaml(a local path) with exit 2.bakar status,waitandtriagewith--on HOSTsend the handle after--, so a handle beginning with-cannot become a flag on the remote.bakar wait --on HOSTno longer reports a crashed or non-JSON remote (a traceback exits 1) as a failed build. Without a parseable status record it exits 3 (unknown) with the reason on stderr.bakar status,waitandtriagewith--on HOSTcontinue with a warning when the remote is the same bakar version with a different content hash, and no longer suggest a--yesflag they do not have. A different version still refuses.bakar triageaccepts a detached unit name and resolves it to the unit's latest registered run, naming the pick on stderr.- Builds launched inside a
systemd-run --scopeno longer have${VAR}and$$in their command rewritten by systemd. bakar triageprints a recorded failure reason with its square-bracketed text, and no longer aborts on a reason that holds a closing tag with no opening tag.- A build whose checkout is not the workspace's own
meta-avocadoclone keeps that checkout when an overlay declaresmeta-avocadoitself, askas/feature/tpm.ymlandkas/feature/cve-check.ymldo. A routed or dispatched build used to fail with a missing machine file under a temporary directory, and a pinned worktree build could build the workspace's clone instead. bakar triage --jsonfor a failed bitbake task now returns the last lines of the task log asrecipe_log_tail, the host path of that log asrecipe_log, and the suggestions matched against it, so an agent no longer readslog.do_*on the build host.fail_reasonstays null for a task failure, aserrordoes inbakar status.bakar statusandbakar waitwithout a handle read the newest detached unit when run outside a workspace, so--on HOSTwithout a handle no longer prints nothing.- A repository under a directory named
meta-avocadowhoseoriginis another repository, such asmeta-avocado-nonpublic, is no longer taken for meta-avocado, and a worktree of a baremeta-avocado.gitis now recognised. bakar statusno longer reports an earlier release of a multi-release detached unit as finished while the unit is s...
v0.39.0
[0.39.0] - 2026-10-19
Added
bakar clean,bakar clean --all,bakar build --clean(including the bbsetup flow) andbakar sync --cleannow refuse to delete anything while a build is live on a peer node or on this host. An unattributable or unreadable lock only warns, because clean is the recovery path from that state.bakar clean --allnow checks for a live build before stopping the hashserv daemon, so a refused clean no longer takes down the running build's hash equivalence server.bakar stress-parsenow refuses to start while a live build holds the TOPDIR. It rechecks before every iteration so a build that starts mid-run does not have its parse caches wiped.bakar prefetchandbakar shell -c CMDnow take the bitbake lock marker and refuse to run when another node or a local build holds the build directory. Interactive shells and the devshell task are deliberately not gated.- The qcom build step now checks bitbake lock ownership before starting. It clears locks whose owner is gone, refuses when a live peer holds the directory, and records an ownership marker while bitbake runs.
- Lock refusals in
bakar stop,bakar doctor, builds, shell and prefetch now name the ownership marker file and tell the user how to clear it by hand when no build is running on any node. - Lock checks now treat a live launch record in any run directory as a build holder, including container builds whose lock pid is not visible on the host. When the container runtime does not answer, the refusal names the runtime.
bakar cleannow moves the build directory aside before deleting it. If the delete leaves residue or is interrupted, the trees are restored so a rerun sees the same state. Trash left by dead processes is swept at the start of each clean.bakar clean-cache --fullplans and confirmations now show the resolved target of symlinked ccache and sccache roots.bakar doctornow reports a warning instead of a pass when a path's filesystem cannot be determined, for example under an autofs trap or after a mount lookup timeout.
Changed
- Run ID timestamps are now in UTC on every host, and the remote dispatch start fence uses the UTC clock. Existing run directories keep their local-time names and still resolve by ID.
- Remote dispatch now picks the earliest run directory created at or after the dispatch start, so a later build in the same workspace is no longer reported as the dispatched one.
bakar doctornow blocks any workspace or build directory on NFS, regardless of where TMPDIR points. Shared sstate, downloads and ccache directories on NFS remain supported. The fix hint now tells users to move the workspace to a node-local filesystem rather than suggestinglocal_tmpdir_base.bakar clean-cache --fullnow runs every reset step even when one fails, reports each leftover, and exits with code 1 if anything remains. A clean run still exits 0.layers inspect --json,layers status --jsonanddrift --jsonnow write the JSON document verbatim to stdout, with no line wrapping or markup, and keep stderr clean.bakar hashserv start/stop/statusandbakar prserv start/stop/statusnow print their answers on stdout.bakar settings get/listnow prints its values on stdout. Errors and diagnostics stay on stderr.- Lock refusal messages no longer suggest deleting the marker by hand when the marker is not the cause (shared-inaction case).
- Lock refusal lines in
bakar stopare no longer hard-wrapped, so long marker paths can be copied intact.
Fixed
- Fixed bracketed text (such as
[bold]or[/x]) in user input being dropped or raisingMarkupError. This affectedbakar getvarvariable names, vendors, presets and user config error messages,bakar settingsvalues and invalid keys,bakar stophosts and paths, and lock diagnostics. The text is now shown verbatim and the intended exit codes are preserved. - Fixed the
[build]section name disappearing frombakar doctormessages and hints.doctor --jsonanddiagnosis.txtno longer contain a stray backslash. - Fixed crashes in the lock gate when the lock marker or
bitbake.lockcontains non-UTF-8 bytes, or when a pid is larger than the kernel supports. The lock is now reported as unattributable instead of raising a traceback. - Fixed a network filesystem reply lost while publishing the lock marker being reported as missing hard link support. The tool now checks whether the link landed, and otherwise names the marker and explains manual cleanup. Failures while removing the marker or temp file on exit no longer mask the build result.
- Fixed lock marker write, replace or remove failures and stale lock removal failures, such as permission errors, producing raw tracebacks. They are now reported as refusals naming the file and the errno, and the step is recorded as failed with exit code 1.
- Fixed
bakar shelllock refusals being recorded in the run log without an exit code. - Fixed the local build check missing running builds, such as a bitbake server that is still initialising, a client outside the server's process tree, or a container build. It now fails closed unless the cooker is provably idle.
- Fixed the stale-lock cleanup deleting locks, sockets and the marker out from under a live container build, or one still in the kas checkout phase.
- Fixed
bakar cleanandbakar stress-parsewarning twice about an unattributable lock, andstress-parserefusal messages wrongly referring to removing the build directory. - Fixed
bakar clean-cache --fullfollowing symlinks swapped in by peer nodes while emptying shared caches. It also no longer reports entries already removed by a peer as leftovers, no longer aborts the remaining reset steps when one root cannot be listed, and no longer prints terminal escape sequences from cache entry names. - Fixed
bakar clean-cache --fullleaving a symlinked ccache or sccache cache populated. It now empties the link's target and refuses targets such as/, the home directory, or an ancestor of the workspace or build directory. - Fixed malformed, truncated or tampered launch records crashing the lock scan or causing an arbitrary recorded runtime path to be executed. Only
dockerandpodmanare accepted, and unusable records produce a warning. - Fixed
bakar prefetchandbakar shell -cstarting bitbake on a wedged cache mount instead of refusing like other launchers.
v0.38.0
[0.38.0] - 2026-10-16
Added
- Added warnings for unrecognized keys in
config.tomland in workspace.bakar.toml, including unknown top-level sections and unknown families under[defaults]. The warning lists the recognized names. - Added step records for the post-build CVE report, SBOM filter and feed sync in the run's
events.jsonl, including skip and failure reasons. These steps still never change the build's exit status. - Added a message naming the marker path and the manual clear steps when a bitbake lock marker is unreadable and its owner cannot be identified.
- Added the underlying runtime error text to the incomplete-stop report when a container survives a stop attempt.
- Added a warning for post-build artifact, signature-ledger and native-revision capture failures. It appears on the console and as a
warnrecord inevents.jsonl.
Changed
- Changed
bakar clean,bakar build --cleanand the fullclean-cachereset to exit with status 1 and report the offending path and error when the build directory or TMPDIR cannot be fully removed. They print "removed" only when the tree is actually gone. - Changed remote dispatch to bound its ssh, rsync and git push calls with connect timeouts and keepalives, so a dead link to the build host fails instead of hanging. Long build-log streaming has no overall timeout.
- Changed remote dispatch to leave your own ssh configuration in control. The bounded defaults apply only when
GIT_SSH_COMMAND,GIT_SSH,core.sshCommandorRSYNC_RSHare not set. - Changed the remote delivery script to have a much longer timeout than probes. A delivery timeout is now reported as "the host answered and the script may still be running", not as an unreachable host.
- Changed the Ctrl-C message during remote dispatch. It no longer claims the remote build is still running or that nothing is left running. It tells you to verify with the status and stop commands on the host.
- Changed the remote run-id lookup to pick this dispatch's run. It now finds builds in distro-suffixed build directories such as the qcom layout, matches full run directory names, and reports ssh failures separately from "no run found".
- Changed
bakar report,bakar insightsandbakar triageto search the same run directories, including qcom and preset fan-out layouts. - Changed
bakar reportandbakar insightsto resolve their configuration from the selected run's own location, so preset fan-out runs use the correct layer, buildhistory and timing data. - Changed
bakar monitorand the stop wait loop to read event logs incrementally, so refresh cost no longer grows with build length.kas.logis read through a bounded tail window. - Changed the
--hostand--mold-globalhelp text to match their actual behavior. - Changed the
uv_buildbuild requirement to>=0.13.1,<0.14.
Fixed
- Fixed
--manifestwith a vendor entry of familygenericorbbsetupshowing a raw traceback. It now exits with code 2 and a clear message. - Fixed global
--host,--container, sccache, scope and mold flags being ignored bylock,shell,stress-parse,graph,inspect,prefetch,dump,getvar,diffsigs,layers,show,sync,clean,diff,doctorandmonitor. They are also now applied to each release in multi-release builds. - Fixed the bitbake lock marker being written non-atomically. Peers on NFS could see it empty or unreadable and overwrite it, so two nodes could start bitbake in the same TOPDIR.
- Fixed bakar overwriting an unreadable lock marker on network filesystems. It now refuses to launch instead.
- Fixed a node deleting a peer's live marker on exit. Only a marker that still names this host is removed.
- Fixed bakar creating lock markers on filesystems without hard-link support, such as CIFS without unix extensions and some FUSE mounts. It now refuses with a clear message instead.
- Fixed
bakar stopsignalling invalid PIDs and unverified bitbake server PIDs. - Fixed
bakar stopremovingbitbake.lockafter an incomplete or unconfirmed container stop. - Fixed
bakar stopprinting "stopped" before the outcome was verified. - Fixed a failed
repo initorrepo syncshowing a raw traceback. It now prints a single error line, exits non-zero, and records the failure in the run log. - Fixed skipped qcom syncs being labeled
ti_layertoolinstead ofrepo_sync. - Fixed
bakar reportreporting successful qcom builds as failures, and runs ending inrun_errorhaving no duration. - Fixed
bakar reportcounting dry-run steps as successes. - Fixed
bakar triagetreating failed post-build steps as build failures. - Fixed a failing CVE report being recorded as a build failure, which made triage pick a successful build as the failed one.
- Fixed
bakar triagemixing log tails into stdout, so--jsonnow emits a single parseable document. - Fixed
bakar sched-triage --jsoncrashing with aTypeErrorwhen any counter was populated. - Fixed corruption of the task timing baselines when a write was interrupted or the disk filled. Updates are now atomic and safe under concurrent writers.
- Fixed
bakar doctorandbakar hashserv statusassuming the daemon listens on localhost. They now use the configured bind host. The recorded port is also validated. - Fixed
BAKAR_BITBAKE_OVERRIDEonly being disabled by0.false,noandoffnow disable it, case-insensitively and ignoring surrounding whitespace. - Fixed an empty
BAKAR_REPO_URLoverriding lower-precedence repo URL settings. It is now treated as unset. - Fixed clean frozen shared repositories being misclassified as modified when
git statuswas slow. - Fixed a markup-like or control-character file name in clean residue reports breaking or spoofing terminal output.
- Fixed
bakar build --cleanfor bbsetup raising on undeletable residue. - Fixed a full disk on
console.logchanging a build's exit status. - Fixed
bakar monitormissing errors on very longkas.loglines. - Fixed run-id timestamp parsing during the repeated daylight-saving hour.
- Fixed
python -m bakarnot running the CLI.
v0.37.1
[0.37.1] - 2026-10-16
Fixed
bakar build --helpdescribed--onas mirroring the working tree with rsync. It now says a meta-avocado kas build is delivered to the host's release workspace, other builds are mirrored additively, and nothing is deleted on the host.
v0.37.0
[0.37.0] - 2026-10-16
Added
- Release workspace routing for meta-avocado kas builds. bakar reads the Yocto release a kas file builds from the
branch:of itsopenembedded-corepin (wrynose-avocadobuildswrynose), through akas dumpthat skips every repository step and uses a throwawayKAS_WORK_DIR, and maps it to a workspace with the new[workspaces] template(placeholder{release}) and[workspaces.releases]keys in~/.config/bakar/config.toml. When a mapping resolves, local builds and--ondispatch both use that workspace, wherever the kas file's checkout lives; a routed path that does not exist stops the build with exit 2. With no mapping, local builds resolve their workspace as before. A mapped workspace that is missing, or a release that cannot be probed, stops every command that runs kas with exit 2; onlylog,stop,show,monitorandtriagefall back to the unrouted workspace with a note. An explicit-wthat names a mapped workspace still defaults to thereuserepository policy. - A repository reuse policy for builds in a shared release workspace, on by default whenever routing resolves a workspace (
BAKAR_REPO_POLICY=reuse). A pinned repository at its pin and clean is frozen withurl: null, so kas never moves it; a missing one is cloned by kas; one on another commit or with local changes gets a side checkout at<workspace>/.bakar/pins/<repo>/<commit12>, so the shared clone is never moved. The overlay is written to<build dir>/avocado-reuse.yml. Classification covers the whole stack the build merges, including colon-joined overlays such asmachine.yml:kas/feature/clang.yml, and runs under one workspace lock together with the dump so two builds cannot both see a repository as missing; a divergedbitbakeoropenembedded-corestops the build because a side checkout of either is not the one the build runs.BAKAR_REPO_POLICY=kasrestores kas's own behaviour; any other value is refused. - A build from a linked meta-avocado worktree gets its own build directory,
build-{stem}-{worktree}by default (for examplebuild-raspberrypi5-rpi5-lgpio-feed), set with[build] worktree_build_dirorBAKAR_WORKTREE_BUILD_DIR.build-{stem}restores the shared per-machine directory. Builds of the same machine from two worktrees no longer serialize on one bitbake lock or overwrite each other'savocado-bakar.yml. [dispatch] worktree_root(default<workspace>/.bakar/worktrees) and[dispatch] snapshot_untracked_cap_mb(default 50) configure where meta-avocado dispatch places delivered worktrees and how much untracked content a snapshot may carry.- The doctor's
disk-freefailure message now states its threshold, for exampleworkspace@/path free=45.0G < 50G threshold, so a failing check shows how much space it wanted.
Changed
- BREAKING.
bakar build --on <host>never deletes anything on the remote. A meta-avocado kas build no longer mirrors the workspace at all: it checks that the remote release workspace exists, holds ameta-avocadogit clone and declares the release being built, then pushes the checkout's HEAD (or a snapshot commit of uncommitted work, built through a temporary index so your branch and index stay untouched) to a newrefs/bakar/<name>/<commit12>ref without force and with automatic gc disabled, checks it out as a detached worktree at<worktree_root>/<name>carrying abakar-delivered.jsonownership marker, and builds there. Without a[workspaces]mapping for the release,--onfor a meta-avocado build now refuses with exit 2 where it used to mirror. NXP, TI, bitbake-setup, qcom and other kas builds keep the same-path mirror, now as an additiversync -a: a file removed locally lingers on the remote until removed by hand. Thersync --deletepreview and its confirmation prompt are gone; dispatch prints a plan of additions and does not prompt.--yesnow only overrides a local/remote bakar version mismatch. Delivered worktrees,refs/bakar/*refs, side checkouts and per-worktree build directories accumulate on the remote and are cleaned up by hand;docs/build.mdlists the commands.--onalso refuses what would delete on the remote:--clean, aKAS_TASKother thanbuild, a target whose task is a clean task such asdo_cleanall, and the workspace mirror of a release workspace (a generated kas file, a kas file outside a meta-avocado checkout,--presetor no kas file), which would overwrite the host's shared clones. The remote build holds a shared lock on the delivered worktree for its whole run, so a later dispatch cannot move the worktree under it; an untracked file named like key material (private keys, keystores,.netrc,.git-credentials,.pgpass,.env) blocks a snapshot; the build guard refuses to build (exit 9) when it cannot take the lock; and a host whose bakar predates this dispatch is refused even with--yes. The bakar version-mismatch check now works: it read stdout whilebakar --versionprints to stderr, so it never fired. --onfor a meta-avocado build now refuses a detached HEAD in a main checkout, and an explicit-wthat differs from the routed workspace, instead of delivering under a shared name or ignoring the option.- A dispatch from a shallow meta-avocado checkout is now rejected when the host cannot accept the shallow push, before anything is placed on the remote. bakar prints the fetch to run on the host so the retry is one command.
bakar triagenow finds build directories through the same workspace routing and per-worktree build directory naming that builds use.
Fixed
- Fixed a build started from a linked meta-avocado worktree resolving its workspace to the directory that holds all the worktrees. The doctor then failed because the sibling layers and
.bakar.tomlwere not there, and--onmirrored every worktree in that directory. The workspace now resolves to the main checkout's parent, and the generated kas wrapper declaresmeta-avocadoat the worktree's path so kas reads the worktree's configuration. - Fixed
bakar runfailing with a traceback, or looking for the run script in the wrong directory, when the kas file is in a linked meta-avocado worktree. - Fixed the doctor's kas syntax check reporting files that exist only in a linked worktree as missing, or passing on the main checkout's content. It now validates through the same wrapper the build uses, and the check no longer moves clean clones in a shared release workspace.
- Fixed the local feed using scripts from the main checkout instead of the linked worktree being built. A worktree without scripts now fails with an error naming its path.
v0.36.3
[0.36.3] - 2026-10-07
Added
- aarch64 image builds that link with mold now report the BTI/PAC hardening mold drops. mold does not carry over the
.note.gnu.propertythat GNU ld writes (rui314/mold#1725), so a program built with-mbranch-protectionand linked by mold runs unprotected, with no build error.mold.bbclassscans the finished rootfs and warns with the number of affected binaries, a few example paths and a full list in${WORKDIR}/mold-aarch64-marking.txt. A per-recipe QA check would stay silent for every recipe restored from sstate, so the scan runs once per image. mold also drops.ARM.attributes, so the check recognises a lost marking by abti corpaciaspinstruction in code that has no matching property bit. It cannot tell which linker made a file, because packaging strips.comment. SetMOLD_MARKING_CHECK = "error"to fail the image build, or"off"to skip the scan. x86-64 and other architectures are unaffected. The first aarch64 build after upgrading rerunsdo_rootfsfor images.
v0.36.2
[0.36.2] - 2026-10-07
Changed
- The bundled
mold-nativerecipe now builds the released mold 3.0.0, pinned to the commit thev3.0.0tag points at (8de38c35a2df16a25f7ff87ac3ad07156a925beb), in a newmold_3.0.0.bb. It is selected by default on both scarthgap and wrynose. The previousmold_git.bb, which tracked an unreleased upstream commit, stays beside it as a reference for building an unreleased commit and is never selected by default (DEFAULT_PREFERENCE = "-1"); its crate list moved tomold-git-crates.inc, sobitbake -c update_cratesnow maintains the 3.0.0 list inmold-crates.inconly. mold 3.0.0 requires rustc 1.95, which neither release's toolchain provides (scarthgap has 1.92.0, wrynose 1.94.1), so below 1.95.0 the recipe passes--ignore-rust-versionand opts in to the not-yet-stablecold_pathfeature, plusdebug_closure_helpersbelow 1.94.0, throughRUSTC_BOOTSTRAPfor this one native tool. - The
mold-nativerecipe now installs what mold's owninstall-mold.shinstalls:mold-wrapper.so(somold -runworks), the man pages and thelibexec/mold/ldlink. It also depends onzstdand inheritspkgconfig, which newer OE-Core needs because its cargo class makeszstd-syslink the system library. The recipe now follows the one proposed to meta-openembedded, differing only for scarthgap and wrynose.
Fixed
- Fixed
systemdfailingdo_configureon aarch64 under global mold withLinker does not support -static-pie. oe-core's systemd recipe adds-Wl,-z,gcs-report-dynamic=nonethere whenopensslis enabled, mold has no-z gcs*options and only warns, and meson's link probes add-Wl,--fatal-warnings, which turns that warning into an error for every probe.mold.bbclassnow removes the flags listed in the newMOLD_UNSUPPORTED_LDFLAGS(default-Wl,-z,gcs-report-dynamic=none) fromLDFLAGSin the mold arm, sosystemdno longer needs amold_extra_excluded_pnentry.
v0.36.1
[0.36.1] - 2026-10-01
Fixed
- Fixed the bundled
mold-nativerecipe failingdo_populate_licon scarthgap withLIC_FILES_CHKSUM points to an invalid file: .../mold-2.42.1+git/LICENSE. Scarthgap's git fetcher unpacks togit/by default while the recipe'sSis${WORKDIR}/${BP}, soLICENSEwas never at the checksummed path; wrynose'sBB_GIT_DEFAULT_DESTSUFFIX = "${BP}"hid it. The mold checkout now setssubdir=${BP}and lands inSon both releases. The failure only showed on a cold workspace, because a mold-native already in sstate never reruns the task. With that fixed,do_compilethen failed on scarthgap's rustc 1.92.0 withE0658 ... debug_closure_helpers(fmt::from_fnis stable only from 1.94.0), so the recipe'sRUSTC_BOOTSTRAPfeature list now addsdebug_closure_helpersbelow 1.94.0 and leaves the 1.94.1 and 1.95+ command lines unchanged.
v0.36.0
[0.36.0] - 2026-09-30
Added
- Added a
native-rebuild-forecastdoctor check that compares the workspace's bitbake, oe-core and poky revisions and its layer revisions with the revision sets recorded by earlier builds. It warns before a build when a core repository moved or a checkout is dirty, and only informs when ordinary layers moved. It never blocks a build and does not forecast configuration changes. - After every
bakar buildandbakar bitbakerun, bakar now records the workspace's revision set and copies the signature files of the native and cross tasks that executed under<sstate_dir>/.bakar/, so a rebuild stays explainable after the build directory is gone. Both records expire withbakar clean-cache's age sweep and never change a build's exit code. - Added
bakar insights --natives, an opt-in report that groups the causes of native and cross rebuilds for a finished run using bitbake's own signature comparison and says plainly what it could not explain.bakar buildends with a one-line pointer to it when native or cross tasks executed.
Fixed
- Fixed
bakar diffsigsand the new--nativesreport dropping every cause from aTask dependencies changedlist whose items contain](for exampleAR[export]); the old parser silently returned nothing for such lists.
v0.35.3
[0.35.3] - 2026-09-30
Changed
- The bundled
moldrecipe now builds only the Rust rewrite, pinned to upstream commita9c709b8a437c1e1627b065b771e32ce331ba363. The C++ 2.42.1 recipe is gone. That commit needs rustc 1.95.0 or newer (checked: stock 1.95.0 compiles it, stock 1.94.1 fails on two unstable std APIs). Below 1.95.0 the recipe still opts in to them withRUSTC_BOOTSTRAPfor this one native tool; from 1.95.0 on it builds with the stock compiler, decided from the tree'sRUSTVERSION.
Removed
- Removed the
mold-compilerdoctor check. It probed the build compiler for C++20, which only the C++ mold build needed.