Comments (18)
Yes, for tabs we don't store this stuff in the bottles - we store them in GitHub Packages manifest annotations instead.
from brew.
Except that the download location (and checksum) is not for the version indicated (20.13.1). Instead, it points to the location and checksum of 20.13.0. Which kinda makes sense, because you can't really write a file containing the checksum of the bottle inside the bottle. (Or I could just be very confused about what's going on here, which is also a possibility.)
This also should be removed at bottling time and restored at install time.
from brew.
CC @SMillerDev
from brew.
I'll have to find where this is ignored for tabs since we can't really make sure it's the same. I can probably fix the build date though
from brew.
I'll have to find where this is ignored for tabs since we can't really make sure it's the same.
Yup, they will indeed be different. It isn't ignored for tabs -- they're just not stored in the bottle, so they don't affect the bottle checksum.
from brew.
Yes, for tabs we don't store this stuff in the bottles - we store them in GitHub Packages manifest annotations instead.
We should do the same thing for SBOMs dates/times as we do for Tab runtime dependencies: update them after installation (based on the dates/times from the tab):
brew/Library/Homebrew/formula_installer.rb
Lines 825 to 830 in 1e4d119
from brew.
Not sure how to resolve this. We could not write the field if the compiler is the system one maybe? Or, which affects the usefulness iyam, we could drop the bottle inclusion of the file and only write it on install.
from brew.
I think in an ideal world we'd detect if the compiler was actually used somehow e.g. write a temporary file on first usage of one of the compiler shims.
In cases like this, it's pretty clear that the compiler isn't actually used or a dependency.
from brew.
If compiler information needs to be available in the bottle archive via brew fetch
(though this archive isn't necessarily representative of a complete install as it's pre-relocation): avoiding system compiler makes sense
If compiler information only needs to be available in the Cellar after brew install
: SBOM already fetches the compiler from the tab, so we can exclude it and attach it back again on install.
from brew.
If compiler information only needs to be available in the Cellar after
brew install
: SBOM already fetches the compiler from the tab, so we can exclude it and attach it back again on install.
Yes, this seems best for now.
from brew.
If compiler information only needs to be available in the Cellar after
brew install
: SBOM already fetches the compiler from the tab, so we can exclude it and attach it back again on install.Yes, this seems best for now.
This is fine, but it might not be enough. The sbom.spdx.json
files also reference bottle checksum of dependencies, which in general be different across OS versions even for existing :all
bottles. Unless this information is generated during brew fetch
?
from brew.
Confusingly, the SBOM also seems to contain this snippet:
{
"SPDXID": "SPDXRef-Bottle-node@20",
"name": "node@20",
"versionInfo": "20.13.1",
"filesAnalyzed": false,
"licenseDeclared": "NOASSERTION",
"builtDate": "2024-05-09 05:20:38 -0400",
"licenseConcluded": "MIT",
"downloadLocation": "https://ghcr.io/v2/homebrew/core/node/20/blobs/sha256:a865d16c32d50cdffe26e341fb6a8d52b7c3f95daf10e2a390fb988c4fba0ab3",
"copyrightText": "NOASSERTION",
"externalRefs": [
{
"referenceCategory": "PACKAGE-MANAGER",
"referenceLocator": "pkg:brew/homebrew/core/node@[email protected]",
"referenceType": "purl"
}
],
"checksums": [
{
"algorithm": "SHA256",
"checksumValue": "a865d16c32d50cdffe26e341fb6a8d52b7c3f95daf10e2a390fb988c4fba0ab3"
}
]
}
Except that the download location (and checksum) is not for the version indicated (20.13.1). Instead, it points to the location and checksum of 20.13.0. Which kinda makes sense, because you can't really write a file containing the checksum of the bottle inside the bottle. (Or I could just be very confused about what's going on here, which is also a possibility.)
from brew.
Confirmed rebottling in Homebrew/homebrew-core#171540 post #17284 fixes the bottles 🎉
from brew.
Thanks @MikeMcQuaid ❤️
from brew.
Related Issues (20)
- Add `test` tag support for `resource`s HOT 1
- docs.brew.sh/Manpage does not wrap text properly on mobile HOT 3
- `brew migrate` doesn't recognise migrations to API taps HOT 3
- Verbose option stopped working (`-v` shows version, `--verbose` unknown command) HOT 3
- Allow casks to opt-in to forcibly quit during `brew upgrade` HOT 9
- Imposible update using WIFI HOT 3
- don't write .keepme in `bin` and `sbin` if it isn't needed HOT 1
- brew update --greedy: Parameter 'message': Expected type String, got type OptionParser::InvalidOption with value #<OptionParser::InvalidOption: --greedy> HOT 1
- `HOMEBREW_GITHUB_API_TOKEN` doesn't apply for call to `https://api.github.com/repos/org/name/releases/latest` HOT 2
- Homebrew formula has linkage issue on Apple silicon setup for python application with selenium as dependency HOT 5
- Support user set BUNDLE_USER_CACHE HOT 14
- Consider getting superenv from `/etc/profile` and `/etc/environment` HOT 5
- Improve caveats handling for API installs HOT 8
- Migration to other tap broken HOT 11
- Replace PAT usage with GitHub App Tokens HOT 1
- Use `main` for Homebrew branches HOT 4
- Use Sorbet `typed: strict` in all (non-package) files in Homebrew organisation
- Attestation failure message emits secret HOT 1
- Spurious linkage errors to GCC on Linux HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from brew.