Skip to content

Releases: jetm/bakar

v0.40.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 00:48
a9ea63c

[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 --detach nudge for foreground builds and triage or report after a finished run.
  • New terminal exit status 124 from bakar wait when --timeout elapses while the run is still starting or running.
  • docs/agents.md describes the lifecycle for agents and scripts.
  • bakar build --on HOST --detach exits 3 when the remote start cannot be confirmed within the 60 second poll (a remote build can also return 3 itself, so check bakar status <unit> --on HOST before 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_code on their terminal events, so bakar status reports them as unknown and bakar wait exits 3 until a new run exists.
  • bakar status --detail (with --json it adds a detail key, 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 running bakar status. A remote of a different bakar version is refused.
  • A build_paths run event records the build TMPDIR and sstate path, so --detail can measure the right filesystems. Runs from before this version have no sstate path and report it as null.
  • bakar stop records a stop request before it signals a live build, so a stopped run reads failed with failure step stopped instead of looking like an ordinary failure.
  • The failing step event records the first error line the build printed, so bakar status and bakar triage can 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, so bakar status and bakar triage name the check that refused a build instead of blocking failure.
  • bakar ps --on HOST lists the builds on a host, and bakar ps lists a detached or dispatched build that has not started bitbake yet as a unit row.
  • bakar log --on HOST follows a run's log on a build host, and bakar log --run ID outside a workspace finds a run a detached or dispatched unit registered.
  • bakar log --lines N and --no-follow print 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 --detach and bakar rebuild --detach start the command in a transient systemd unit and return a JSON handle. --detach is refused for the interactive devshell task.
  • bakar triage resolves a registered run from any directory, including a detached or dispatched run outside a BSP workspace, and bakar triage --on HOST triages a run on a build host.
  • bakar sync KAS_FILE for a meta-avocado kas file moves the clean, off-pin shared clones of the release workspace onto their pinned commits, and --on HOST does 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-run reports 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-run for 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 drift now 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 adds drifted and missing flags 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. --yes does not skip this check.
  • Reuse builds hold a shared lock for the whole run, so bakar sync can 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 wait in the background and to re-run it on exit 124.
  • bakar triage reports the same failure reason as bakar status, including stopped by bakar stop for 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 HOST without --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 log stops 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 --on stream 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_seconds instead of one that keeps growing.
  • bakar ps names the machine the build recorded and never generic.
  • 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-avocado directory whose origin names another repository is no longer taken for the meta-avocado workspace.
  • bakar triage --on HOST now forwards --preset and --release, and refuses --kas-yaml (a local path) with exit 2.
  • bakar status, wait and triage with --on HOST send the handle after --, so a handle beginning with - cannot become a flag on the remote.
  • bakar wait --on HOST no 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, wait and triage with --on HOST continue with a warning when the remote is the same bakar version with a different content hash, and no longer suggest a --yes flag they do not have. A different version still refuses.
  • bakar triage accepts 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 --scope no longer have ${VAR} and $$ in their command rewritten by systemd.
  • bakar triage prints 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-avocado clone keeps that checkout when an overlay declares meta-avocado itself, as kas/feature/tpm.yml and kas/feature/cve-check.yml do. 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 --json for a failed bitbake task now returns the last lines of the task log as recipe_log_tail, the host path of that log as recipe_log, and the suggestions matched against it, so an agent no longer reads log.do_* on the build host. fail_reason stays null for a task failure, as error does in bakar status.
  • bakar status and bakar wait without a handle read the newest detached unit when run outside a workspace, so --on HOST without a handle no longer prints nothing.
  • A repository under a directory named meta-avocado whose origin is another repository, such as meta-avocado-nonpublic, is no longer taken for meta-avocado, and a worktree of a bare meta-avocado.git is now recognised.
  • bakar status no longer reports an earlier release of a multi-release detached unit as finished while the unit is s...
Read more

v0.39.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 14:12
382ac66

[0.39.0] - 2026-10-19

Added

  • bakar clean, bakar clean --all, bakar build --clean (including the bbsetup flow) and bakar sync --clean now 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 --all now 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-parse now 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 prefetch and bakar shell -c CMD now 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 clean now 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 --full plans and confirmations now show the resolved target of symlinked ccache and sccache roots.
  • bakar doctor now 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 doctor now 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 suggesting local_tmpdir_base.
  • bakar clean-cache --full now 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 --json and drift --json now write the JSON document verbatim to stdout, with no line wrapping or markup, and keep stderr clean.
  • bakar hashserv start/stop/status and bakar prserv start/stop/status now print their answers on stdout. bakar settings get/list now 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 stop are 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 raising MarkupError. This affected bakar getvar variable names, vendors, presets and user config error messages, bakar settings values and invalid keys, bakar stop hosts and paths, and lock diagnostics. The text is now shown verbatim and the intended exit codes are preserved.
  • Fixed the [build] section name disappearing from bakar doctor messages and hints. doctor --json and diagnosis.txt no longer contain a stray backslash.
  • Fixed crashes in the lock gate when the lock marker or bitbake.lock contains 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 shell lock 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 clean and bakar stress-parse warning twice about an unattributable lock, and stress-parse refusal messages wrongly referring to removing the build directory.
  • Fixed bakar clean-cache --full following 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 --full leaving 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 docker and podman are accepted, and unusable records produce a warning.
  • Fixed bakar prefetch and bakar shell -c starting bitbake on a wedged cache mount instead of refusing like other launchers.

v0.38.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 14:34
03c31c0

[0.38.0] - 2026-10-16

Added

  • Added warnings for unrecognized keys in config.toml and 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 warn record in events.jsonl.

Changed

  • Changed bakar clean, bakar build --clean and the full clean-cache reset 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.sshCommand or RSYNC_RSH are 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 insights and bakar triage to search the same run directories, including qcom and preset fan-out layouts.
  • Changed bakar report and bakar insights to 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 monitor and the stop wait loop to read event logs incrementally, so refresh cost no longer grows with build length. kas.log is read through a bounded tail window.
  • Changed the --host and --mold-global help text to match their actual behavior.
  • Changed the uv_build build requirement to >=0.13.1,<0.14.

Fixed

  • Fixed --manifest with a vendor entry of family generic or bbsetup showing a raw traceback. It now exits with code 2 and a clear message.
  • Fixed global --host, --container, sccache, scope and mold flags being ignored by lock, shell, stress-parse, graph, inspect, prefetch, dump, getvar, diffsigs, layers, show, sync, clean, diff, doctor and monitor. 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 stop signalling invalid PIDs and unverified bitbake server PIDs.
  • Fixed bakar stop removing bitbake.lock after an incomplete or unconfirmed container stop.
  • Fixed bakar stop printing "stopped" before the outcome was verified.
  • Fixed a failed repo init or repo sync showing 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_layertool instead of repo_sync.
  • Fixed bakar report reporting successful qcom builds as failures, and runs ending in run_error having no duration.
  • Fixed bakar report counting dry-run steps as successes.
  • Fixed bakar triage treating 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 triage mixing log tails into stdout, so --json now emits a single parseable document.
  • Fixed bakar sched-triage --json crashing with a TypeError when 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 doctor and bakar hashserv status assuming the daemon listens on localhost. They now use the configured bind host. The recorded port is also validated.
  • Fixed BAKAR_BITBAKE_OVERRIDE only being disabled by 0. false, no and off now disable it, case-insensitively and ignoring surrounding whitespace.
  • Fixed an empty BAKAR_REPO_URL overriding lower-precedence repo URL settings. It is now treated as unset.
  • Fixed clean frozen shared repositories being misclassified as modified when git status was slow.
  • Fixed a markup-like or control-character file name in clean residue reports breaking or spoofing terminal output.
  • Fixed bakar build --clean for bbsetup raising on undeletable residue.
  • Fixed a full disk on console.log changing a build's exit status.
  • Fixed bakar monitor missing errors on very long kas.log lines.
  • Fixed run-id timestamp parsing during the repeated daylight-saving hour.
  • Fixed python -m bakar not running the CLI.

v0.37.1

Choose a tag to compare

@github-actions github-actions released this 16 Oct 17:04
be37d11

[0.37.1] - 2026-10-16

Fixed

  • bakar build --help described --on as 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

Choose a tag to compare

@github-actions github-actions released this 16 Oct 15:09
b2bba2a

[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 its openembedded-core pin (wrynose-avocado builds wrynose), through a kas dump that skips every repository step and uses a throwaway KAS_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 --on dispatch 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; only log, stop, show, monitor and triage fall back to the unrouted workspace with a note. An explicit -w that names a mapped workspace still defaults to the reuse repository 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 with url: 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 as machine.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 diverged bitbake or openembedded-core stops the build because a side checkout of either is not the one the build runs. BAKAR_REPO_POLICY=kas restores 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 example build-raspberrypi5-rpi5-lgpio-feed), set with [build] worktree_build_dir or BAKAR_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's avocado-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-free failure message now states its threshold, for example workspace@/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 a meta-avocado git 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 new refs/bakar/<name>/<commit12> ref without force and with automatic gc disabled, checks it out as a detached worktree at <worktree_root>/<name> carrying a bakar-delivered.json ownership marker, and builds there. Without a [workspaces] mapping for the release, --on for 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 additive rsync -a: a file removed locally lingers on the remote until removed by hand. The rsync --delete preview and its confirmation prompt are gone; dispatch prints a plan of additions and does not prompt. --yes now 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.md lists the commands. --on also refuses what would delete on the remote: --clean, a KAS_TASK other than build, a target whose task is a clean task such as do_cleanall, and the workspace mirror of a release workspace (a generated kas file, a kas file outside a meta-avocado checkout, --preset or 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 while bakar --version prints to stderr, so it never fired.
  • --on for a meta-avocado build now refuses a detached HEAD in a main checkout, and an explicit -w that 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 triage now 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.toml were not there, and --on mirrored every worktree in that directory. The workspace now resolves to the main checkout's parent, and the generated kas wrapper declares meta-avocado at the worktree's path so kas reads the worktree's configuration.
  • Fixed bakar run failing 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

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:34
8202d63

[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.property that GNU ld writes (rui314/mold#1725), so a program built with -mbranch-protection and linked by mold runs unprotected, with no build error. mold.bbclass scans 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 a bti c or paciasp instruction in code that has no matching property bit. It cannot tell which linker made a file, because packaging strips .comment. Set MOLD_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 reruns do_rootfs for images.

v0.36.2

Choose a tag to compare

@github-actions github-actions released this 07 Oct 16:50
c46dc05

[0.36.2] - 2026-10-07

Changed

  • The bundled mold-native recipe now builds the released mold 3.0.0, pinned to the commit the v3.0.0 tag points at (8de38c35a2df16a25f7ff87ac3ad07156a925beb), in a new mold_3.0.0.bb. It is selected by default on both scarthgap and wrynose. The previous mold_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 to mold-git-crates.inc, so bitbake -c update_crates now maintains the 3.0.0 list in mold-crates.inc only. 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-version and opts in to the not-yet-stable cold_path feature, plus debug_closure_helpers below 1.94.0, through RUSTC_BOOTSTRAP for this one native tool.
  • The mold-native recipe now installs what mold's own install-mold.sh installs: mold-wrapper.so (so mold -run works), the man pages and the libexec/mold/ld link. It also depends on zstd and inherits pkgconfig, which newer OE-Core needs because its cargo class makes zstd-sys link the system library. The recipe now follows the one proposed to meta-openembedded, differing only for scarthgap and wrynose.

Fixed

  • Fixed systemd failing do_configure on aarch64 under global mold with Linker does not support -static-pie. oe-core's systemd recipe adds -Wl,-z,gcs-report-dynamic=none there when openssl is 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.bbclass now removes the flags listed in the new MOLD_UNSUPPORTED_LDFLAGS (default -Wl,-z,gcs-report-dynamic=none) from LDFLAGS in the mold arm, so systemd no longer needs a mold_extra_excluded_pn entry.

v0.36.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 20:59
cd7e3f1

[0.36.1] - 2026-10-01

Fixed

  • Fixed the bundled mold-native recipe failing do_populate_lic on scarthgap with LIC_FILES_CHKSUM points to an invalid file: .../mold-2.42.1+git/LICENSE. Scarthgap's git fetcher unpacks to git/ by default while the recipe's S is ${WORKDIR}/${BP}, so LICENSE was never at the checksummed path; wrynose's BB_GIT_DEFAULT_DESTSUFFIX = "${BP}" hid it. The mold checkout now sets subdir=${BP} and lands in S on 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_compile then failed on scarthgap's rustc 1.92.0 with E0658 ... debug_closure_helpers (fmt::from_fn is stable only from 1.94.0), so the recipe's RUSTC_BOOTSTRAP feature list now adds debug_closure_helpers below 1.94.0 and leaves the 1.94.1 and 1.95+ command lines unchanged.

v0.36.0

Choose a tag to compare

@github-actions github-actions released this 01 Oct 00:56
c2aa0a2

[0.36.0] - 2026-09-30

Added

  • Added a native-rebuild-forecast doctor 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 build and bakar bitbake run, 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 with bakar 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 build ends with a one-line pointer to it when native or cross tasks executed.

Fixed

  • Fixed bakar diffsigs and the new --natives report dropping every cause from a Task dependencies changed list whose items contain ] (for example AR[export]); the old parser silently returned nothing for such lists.

v0.35.3

Choose a tag to compare

@github-actions github-actions released this 30 Sep 20:55
f28d348

[0.35.3] - 2026-09-30

Changed

  • The bundled mold recipe now builds only the Rust rewrite, pinned to upstream commit a9c709b8a437c1e1627b065b771e32ce331ba363. 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 with RUSTC_BOOTSTRAP for this one native tool; from 1.95.0 on it builds with the stock compiler, decided from the tree's RUSTVERSION.

Removed

  • Removed the mold-compiler doctor check. It probed the build compiler for C++20, which only the C++ mold build needed.