Coder Social home page Coder Social logo

Comments (18)

Bo98 avatar Bo98 commented on June 16, 2024 2

Yes, for tabs we don't store this stuff in the bottles - we store them in GitHub Packages manifest annotations instead.

from brew.

MikeMcQuaid avatar MikeMcQuaid commented on June 16, 2024 1

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.

carlocab avatar carlocab commented on June 16, 2024

CC @SMillerDev

from brew.

SMillerDev avatar SMillerDev commented on June 16, 2024

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.

carlocab avatar carlocab commented on June 16, 2024

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.

MikeMcQuaid avatar MikeMcQuaid commented on June 16, 2024

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):

# Update tab with actual runtime dependencies
tab = keg.tab
Tab.clear_cache
f_runtime_deps = formula.runtime_dependencies(read_from_tab: false)
tab.runtime_dependencies = Tab.runtime_deps_hash(formula, f_runtime_deps)
tab.write

from brew.

SMillerDev avatar SMillerDev commented on June 16, 2024

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.

MikeMcQuaid avatar MikeMcQuaid commented on June 16, 2024

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.

Bo98 avatar Bo98 commented on June 16, 2024

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.

MikeMcQuaid avatar MikeMcQuaid commented on June 16, 2024

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.

carlocab avatar carlocab commented on June 16, 2024

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.

carlocab avatar carlocab commented on June 16, 2024

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.

MikeMcQuaid avatar MikeMcQuaid commented on June 16, 2024

Confirmed rebottling in Homebrew/homebrew-core#171540 post #17284 fixes the bottles 🎉

from brew.

carlocab avatar carlocab commented on June 16, 2024

Thanks @MikeMcQuaid ❤️

from brew.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.