Repository navigation
Bear 4.2.4 is a maintenance release. It fixes a hang when appending to a
truncated database, records MSVC environment flags correctly, builds for
Android without patches, and makes packaging easier. Building Bear now needs
Rust 1.89.
Features
LIBEXECDIRinstall variable -scripts/install.shcan now put Bear's
helpers somewhere other than$PREFIX/libexec, for distributions without
that directory. For example,PREFIX=/usr LIBEXECDIR=/usr/lib. Like
PREFIX, it is an on-system path andDESTDIRis prepended to it.
Bug Fixes
- Append no longer hangs on a broken database - appending to an empty or
truncatedcompile_commands.jsonhung forever and flooded stderr with
"failed to fill whole buffer". Bear now warns and goes on. - MSVC
CLand_CL_values keep their backslashes - they were split
with POSIX shell rules, soCL="/IC:\foo /W4"became/IC:foo. They now
use Windows command-line rules. - The compiler stays first in an entry - with
CL=/O2or
ARMCOMPILER6_CLANGOPT, the added flags landed before the compiler, so
arguments[0]was not the compiler. - Ada body files are recognized - a typo in the extension list matched
.abdinstead of.adb. - Drops from an unresolved directory are counted - with the canonical
directory format, an entry whose working directory could not be resolved
was dropped with a vague warning and left out of the summary. Bear now
warns once per file and counts these drops, so a run that drops every
entry this way gives the all-dropped error. - Wrapper mode rewrites only compiler program variables -
CARGO,
RUSTCandRUSTC_WRAPPERare no longer pointed at wrappers, so cargo
builds run untouched. CMake's language variables are added, so aCUDACXX
orOBJCcompiler is wrapped too. The make*FLAGSvariables are no longer
kept in the captured environment. If you read that environment from the
events file, note the change. - An empty compiler variable now logs a warning - as a whitespace-only
value already did. - Android builds without patches - the supervisor no longer needs
confstr. The preload library leavespopen,pcloseandsystemto
bionic, and keeps theexecfamily.posix_spawnandposix_spawnpare
intercepted on API 28 and later only. - Build probes check the target - cross builds used the answers from the
host libc. Symbol probes now link against the target libc, and a missing
execveshows the compiler's output. - The preload library build picks a linker that works - each linker is
tried with a small test link first. Therust-lldfrom rustup, which has no
zlib support, is skipped on hosts such as FreeBSD, and Bear reports the
downgrade. (#722) - The preload library installs as an executable - mode 0755, so RPM's
debuginfo and strip steps process it. openSUSE, Slackware and Fedora no
longer need their ownchmodor install step. - Removed the musl
__execvpewrapper. musl does not export that symbol, so
it could never run.
Internal Refactoring
- Rust 1.89 is now required and declared -
INSTALL.mdsaid 1.85, but
the code already needed more. An older toolchain now fails with a clear
message instead of a compile error. - Fewer dependencies -
tempfileleft the shipped binaries, and five
crates with it.crossbeam-channelwas replaced by std channels. - Moved to
serde-saphyr2.0. Updatedcc,instaandproptest. - Stricter lints: no
unwrapoutside test code, aSAFETYcomment on every
unsafeblock, and a reason on everyallow. - CI now runs the tests on Alpine (musl) and aarch64 Linux, cross-builds for
Android, and checks crates withcargo-deny, with advisories on a schedule. - Build warnings fixed for hosts without
setsid, and a test fixed for
hosts whereexecvpcannot be intercepted. (#720, #721)
Documentation
- The requirements and rationale were swept and trimmed, with one owner for
each fact.
Thanks
Thanks to @aokblast for the FreeBSD fixes in #720, #721 and #722. The linker
problem they found hit any host whose system objects use zlib-compressed debug
sections. Thanks to @Jugst3r for the Ada fix in #719.
Thanks to the downstream packagers who keep Bear available and current -
chronically invisible work that this project depends on. Everyone below
shipped 4.2.3:
- Alpine - @rtmongold
- Arch, Artix, Manjaro, and Parabola maintainers
- Homebrew
- MSYS2
- Nix maintainers
- openSUSE Tumbleweed
- Termux - @nguynkhn
New Contributors
Full Changelog: 4.2.3...4.2.4