Skip to content

feat: implement DUB module extension and support for library packages#181

Merged
dcarp merged 8 commits intobazel-contrib:mainfrom
dcarp:dub2
Apr 3, 2026
Merged

feat: implement DUB module extension and support for library packages#181
dcarp merged 8 commits intobazel-contrib:mainfrom
dcarp:dub2

Conversation

@dcarp
Copy link
Copy Markdown
Collaborator

@dcarp dcarp commented Mar 6, 2026

This PR adds first-class DUB dependency support to rules_d for both bzlmod and WORKSPACE users.

  • Adds DUB module extension support:

    • dub.from_dub_selections(...) reads dub.selections.lock.json
    • Registers DUB packages as an external repo (default @dub)
  • Adds WORKSPACE API:

    • d_register_dub_repository(...) in dub/repositories.bzl
  • Adds lockfile tooling:

    • dub_lock_dependencies(...) macro
    • dub/selections_lock/generate_selections_lock.d generator
  • Adds/adjusts D tool exposure needed by lock generation:

    • @rules_d//d:dub and related wiring
  • Refactors DUB internals:

    • Moves package fetch/build-file logic into dub/private
    • Moves curl/integrity helpers under dub/private
  • Adds e2e smoke coverage for DUB usage:

    • bzlmod setup in e2e/smoke/MODULE.bazel
    • WORKSPACE setup in e2e/smoke/WORKSPACE.bazel
    • test using @dub//semver

    Implements Add dub_package repository rule #1

@dcarp dcarp changed the title Implement DUB module extension and support for library packages feat: implement DUB module extension and support for library packages Mar 6, 2026
@dcarp dcarp closed this Apr 3, 2026
@dcarp dcarp reopened this Apr 3, 2026
@dcarp dcarp marked this pull request as ready for review April 3, 2026 18:55
@dcarp dcarp merged commit 0b91f65 into bazel-contrib:main Apr 3, 2026
14 checks passed
@dcarp dcarp deleted the dub2 branch May 10, 2026 08:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant