bottlerocket-os / bottlerocket-os/twoliter
broken Rust build caching across glibc updates
- Dominant language
- Rust
- Stars
- 34
- Forks
- 45
- Avg merge
- 11h 13m
- Merged PRs (30d)
- 16
Description
**Platform I'm building on:**
aarch64
**What I expected to happen:**
I checked out https://github.com/bottlerocket-os/bottlerocket/pull/3352 and tried to build `aws-dev` from the same checkout as https://github.com/bottlerocket-os/bottlerocket/pull/3355. I expected to be able to run the build with no issues.
**What actually happened:**
The build succeeded but failed at runtime with a `storewolf` error:
```
[ 2.901427] storewolf[989]: /usr/bin/storewolf: /aarch64-bottlerocket-linux-gnu/sys-root/usr/lib/libm.so.6: version `GLIBC_2.38' not found (required by /usr/bin/storewolf)
```
`storewolf` itself is reported as "fresh" at build time, meaning that the binary is not rebuilt despite the glibc change:
```
bottlerocket-os/bottlerocket#20 0.991 Fresh storewolf v0.1.0 (/home/builder/rpmbuild/BUILD/sources/api/storewolf)
```
**How to reproduce the problem:**
I'd expect the same failure mode after any sequence like this:
* build the variant with a newer glibc
* downgrade or revert back to an older glibc
* build the variant again
* attempt to run it
Contributor guide
Research direction
Start by reproducing the reported sequence for the aws-dev variant on aarch64: build with newer glibc, revert to an older glibc, rebuild, and run it. Inspect how Rust build caching determines whether storewolf is fresh and how glibc changes are tracked. Done means the affected binary is rebuilt when glibc changes and the resulting build runs without the reported GLIBC_2.38 error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100