Skip to content

Implement no_linkage DSL to cover dependencies without linkage #19697

@p-linnane

Description

@p-linnane

Verification

Provide a detailed description of the proposed feature

We sometimes have formulae with runtime dependencies that do not have linkage. One example of this is awscli. For that specific formula, cryptography is required at runtime, but there is no linkage:

╰─ brew linkage awscli
System libraries:
  /System/Library/Frameworks/Security.framework/Versions/A/Security
  /usr/lib/libSystem.B.dylib
Homebrew libraries:
  /opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib (openssl@3)
Dependencies with no linkage:
  cryptography

Given how much work we've done on fixing indirect dependencies with linkage, I think it's time to look in the other direction. I'm envisioning something like:

depends_on "cryptography" => :no_linkage
╰─ brew linkage awscli
System libraries:
  /System/Library/Frameworks/Security.framework/Versions/A/Security
  /usr/lib/libSystem.B.dylib
Homebrew libraries:
  /opt/homebrew/opt/openssl@3/lib/libcrypto.3.dylib (openssl@3)
Homebrew dependencies not requiring linkage:
  cryptography

Naturally I'm proposing the concept here, rather than the exact wording and implementation. This would ensure that all dependencies that should be linked are, and that all dependencies that aren't linked are confirmed.

What is the motivation for the feature?

Tightening up our formulae, ensuring that every dependency declared is used correctly. We already are performing audits for indirect dependencies with linkage, so this would close the loop.

How will the feature be relevant to at least 90% of Homebrew users?

It wouldn't be. It would simply help us with maintaining formulae.

What alternatives to the feature have been considered?

Status quo

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedWe want help addressing this

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions