bazel and external repositories
play

Bazel and External Repositories Which version do you get? Klaus - PowerPoint PPT Presentation

Bazel External Repositories Bazel and External Repositories Which version do you get? Klaus Aehlig October 910, 2018 Bazel External Repositories Imagine. . . You freshly check out your project. Bazel External Repositories Imagine. . .


  1. Bazel External Repositories Bazel and External Repositories Which version do you get? Klaus Aehlig October 9–10, 2018

  2. Bazel External Repositories Imagine. . . • You freshly check out your project.

  3. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed.

  4. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. load("@bazel tools//tools/build defs/repo:git.bzl", "git repository") . . . git repository( name = "com google protobuf", remote = "https://github.com/google/protobuf", branch = "master", patch cmds = ["find . -name ’*.sh’ -exec . . . "], ) . . .

  5. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. load("@bazel tools//tools/build defs/repo:git.bzl", "git repository") . . . git repository( name = "com google protobuf", remote = "https://github.com/google/protobuf", branch = "master", patch cmds = ["find . -name ’*.sh’ -exec . . . "], ) . . . Fully abstract description! Only to be changed, when a new dependency is added.

  6. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed.

  7. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //...

  8. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... . . . and you build at the latest known-good snapshot!

  9. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //...

  10. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... for an older version of your project

  11. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... for an older version of your project . . . and you build against the snapshot used at that time!

  12. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //...

  13. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... • WORKSPACE file ignored

  14. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... • WORKSPACE file ignored • resolved.bzl read instead (generated, committed!)

  15. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... • WORKSPACE file ignored • resolved.bzl read instead (generated, committed!) • precise commit ids, instead of branches

  16. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... • WORKSPACE file ignored • resolved.bzl read instead (generated, committed!) • precise commit ids, instead of branches • hashes of the generated directory � definitely the same code, even with transformations!

  17. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... • WORKSPACE file ignored • resolved.bzl read instead (generated, committed!) • precise commit ids, instead of branches • hashes of the generated directory � definitely the same code, even with transformations! • actually, just a Starlark value

  18. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... • WORKSPACE file ignored • resolved.bzl read instead (generated, committed!) • precise commit ids, instead of branches • hashes of the generated directory � definitely the same code, even with transformations! • actually, just a Starlark value � build can use it load("//:resolved.bzl", "resolved) for wsentry in resolved: repo = wsentry["original attributes"]["name"] for actual in wsentry["repositories"]: . . .

  19. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... (correct snapshot)

  20. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... (correct snapshot) • update dependency snapshot: bazel sync

  21. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... (correct snapshot) • update dependency snapshot: bazel sync $ bazel sync . . . INFO: Repository rule ’com google protobuf’ returned: { "commit": "c27d6a56 . . . ", . . . } . . . $

  22. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... (correct snapshot) • update dependency snapshot: bazel sync $ bazel sync . . . INFO: Repository rule ’com google protobuf’ returned: { "commit": "c27d6a56 . . . ", . . . } . . . $ • WORKSPACE file fully executed, unconditionally.

  23. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... (correct snapshot) • update dependency snapshot: bazel sync $ bazel sync . . . INFO: Repository rule ’com google protobuf’ returned: { "commit": "c27d6a56 . . . ", . . . } . . . $ • WORKSPACE file fully executed, unconditionally. • versions (and hashes!) recorded in resolved.bzl

  24. Bazel External Repositories Imagine. . . • You freshly check out your project. • The WORKSPACE file describes the branches followed. • bazel build //... (correct snapshot) • update dependency snapshot: bazel sync $ bazel sync . . . INFO: Repository rule ’com google protobuf’ returned: { "commit": "c27d6a56 . . . ", . . . } . . . $ • WORKSPACE file fully executed, unconditionally. • versions (and hashes!) recorded in resolved.bzl • meaningful diff

  25. Bazel External Repositories This is reality! (as of Bazel 0.19; get the latest rc now)

  26. Bazel External Repositories This is reality! (as of Bazel 0.19; get the latest rc now) Added as an experimental opt-in, controlled by .bazelrc

  27. Bazel External Repositories This is reality! (as of Bazel 0.19; get the latest rc now) Added as an experimental opt-in, controlled by .bazelrc sync --experimental repository resolved file=resolved.bzl build --experimental resolved file instead of workspace=resolved.bzl build --experimental repository hash file=resolved.bzl build --experimental verify repository rules= . . .

  28. Bazel External Repositories The Future We have many ideas for the future. . . • more rules to return versions (besides git repository ) • meta-rules (“These packages and their dependencies”) • source-like vs configure-like rules • enable resolved.bzl by default • dependency discovery and install targets ( autotools -like) Probably can be done in Starlark right now. • . . . . . . but we need your input to decide what is important. Talk to us!

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend