-
Notifications
You must be signed in to change notification settings - Fork 94
Add support for bzlmod #703
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,113 @@ | ||
| """ | ||
| Defines all the external repositories and dependencies for rules_ios. | ||
| """ | ||
|
|
||
| # Defines the rules_ios bzlmod module. | ||
| # Version is updated during release to the registry. | ||
| module( | ||
| name = "rules_ios", | ||
| version = "0", | ||
| bazel_compatibility = [">=5.0.0"], | ||
| compatibility_level = 1, | ||
| repo_name = "build_bazel_rules_ios", | ||
| ) | ||
|
|
||
| # Declare the bzlmod dependencies needed by rules_ios and users of rules_ios | ||
| bazel_dep( | ||
| name = "apple_support", | ||
| version = "1.6.0", | ||
| repo_name = "build_bazel_apple_support", | ||
| ) | ||
| bazel_dep( | ||
| name = "rules_apple", | ||
| version = "2.3.0", | ||
| repo_name = "build_bazel_rules_apple", | ||
| ) | ||
| bazel_dep( | ||
| name = "rules_cc", | ||
| version = "0.0.6", | ||
| ) | ||
| bazel_dep( | ||
| name = "rules_python", | ||
| version = "0.24.0", | ||
| ) | ||
| bazel_dep( | ||
| name = "rules_swift", | ||
| version = "1.8.0", | ||
| repo_name = "build_bazel_rules_swift", | ||
| ) | ||
|
|
||
| # Declare the development dependencies needed for rules_ios development | ||
| bazel_dep( | ||
| name = "buildifier_prebuilt", | ||
| version = "6.1.0", | ||
| dev_dependency = True, | ||
| ) | ||
| bazel_dep( | ||
| name = "rules_pkg", | ||
| version = "0.9.1", | ||
| dev_dependency = True, | ||
| ) | ||
| bazel_dep( | ||
| name = "bazel_skylib", | ||
| version = "1.4.1", | ||
| dev_dependency = True, | ||
| ) | ||
|
|
||
| # Load non-bzlmod dependencies from rules_ios | ||
| non_module_deps = use_extension("//rules:module_extensions.bzl", "non_module_deps") | ||
| use_repo( | ||
| non_module_deps, | ||
| "com_github_yonaskolb_xcodegen", | ||
| ) | ||
|
|
||
| non_module_dev_deps = use_extension( | ||
| "//rules:module_extensions.bzl", | ||
| "non_module_dev_deps", | ||
| dev_dependency = True, | ||
| ) | ||
| use_repo( | ||
| non_module_dev_deps, | ||
| "GoogleMobileAdsSDK", | ||
| "TensorFlowLiteC", | ||
| "arm64-to-sim", | ||
| "com_github_apple_swiftcollections", | ||
| "tart", | ||
| ) | ||
|
|
||
| # Configure Xcode | ||
| xcode_configure = use_extension( | ||
| "//rules:module_extensions.bzl", | ||
| "xcode_configure", | ||
| dev_dependency = True, | ||
| ) | ||
| xcode_configure.configure( | ||
| remote_xcode_label = "", | ||
| xcode_locator_label = "//tools/toolchains/xcode_configure:xcode_locator.m", | ||
| ) | ||
|
|
||
| # Load non-bzlmod dependencies used in this repo from rules_swift | ||
| swift_non_module_deps = use_extension("@build_bazel_rules_swift//swift:extensions.bzl", "non_module_deps") | ||
| use_repo( | ||
| swift_non_module_deps, | ||
| "build_bazel_rules_swift_index_import", | ||
| "build_bazel_rules_swift_local_config", | ||
| ) | ||
|
|
||
| # Load non-bzlmod dependencies used in this repo from rules_apple | ||
| apple_non_module_deps = use_extension("@build_bazel_rules_apple//apple:extensions.bzl", "non_module_deps") | ||
| use_repo( | ||
| apple_non_module_deps, | ||
| "xctestrunner", | ||
| ) | ||
|
|
||
| # Register the Python toolchain | ||
| python = use_extension("@rules_python//python/extensions:python.bzl", "python") | ||
| python.toolchain( | ||
| is_default = True, | ||
| python_version = "3.9", | ||
| ) | ||
| use_repo( | ||
| python, | ||
| "python_versions", | ||
| ) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,27 @@ | ||
| # This file marks the root of the Bazel workspace. | ||
| # See MODULE.bazel for dependencies and setup. | ||
| # It is only used when bzlmod is enabled. | ||
| # This file will generally be kept empty in favor of using MODULE.bazel fully. | ||
|
|
||
| workspace(name = "build_bazel_rules_ios") | ||
|
|
||
| # TODO: stardoc doesn't currently support bzlmod: https://github.com/bazelbuild/stardoc/issues/117 | ||
| # Once that closes we should depend on it via the WORKSPACE file. | ||
| # In the meantime, this is a workaround to at least allow building. | ||
| # Note however that updating docs with bzlmod will not work until the above is resolved. | ||
| # Until then use: --noenable_bzlmod | ||
| load( | ||
| "@bazel_tools//tools/build_defs/repo:git.bzl", | ||
| "git_repository", | ||
| ) | ||
|
|
||
| git_repository( | ||
| name = "io_bazel_stardoc", | ||
| commit = "6f274e903009158504a9d9130d7f7d5f3e9421ed", | ||
| remote = "https://github.com/bazelbuild/stardoc.git", | ||
| shallow_since = "1667581897 -0400", | ||
| ) | ||
|
|
||
| load("@io_bazel_stardoc//:setup.bzl", "stardoc_repositories") | ||
|
|
||
| stardoc_repositories() |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| """Definitions for bzlmod module extensions.""" | ||
|
|
||
| load( | ||
| "//rules:repositories.bzl", | ||
| "rules_ios_dependencies", | ||
| "rules_ios_dev_dependencies", | ||
| ) | ||
| load( | ||
| "//tools/toolchains/xcode_configure:xcode_configure.bzl", | ||
| _xcode_configure = "xcode_configure", | ||
| ) | ||
|
|
||
| def _non_module_deps_impl(_): | ||
| rules_ios_dependencies( | ||
| load_bzlmod_dependencies = False, | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. FYI - This confused me, because I thought "load_bzlmod_dependencies" means "dependencies that bzlmod needs" rather than "dependencies that bzlmod has already supplied". Just putting this here in case anyone else stumbles across this, and as always, naming is hard.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I had to update it the other day and I felt the same way lol Happy to change this to something more clear |
||
| ) | ||
|
|
||
| non_module_deps = module_extension(implementation = _non_module_deps_impl) | ||
luispadron marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| def _non_module_dev_deps_impl(_): | ||
| rules_ios_dev_dependencies(load_bzlmod_dependencies = False) | ||
|
|
||
| non_module_dev_deps = module_extension(implementation = _non_module_dev_deps_impl) | ||
luispadron marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| def _xcode_configure_impl(module_ctx): | ||
| for mod in module_ctx.modules: | ||
| for xcode_configure_attr in mod.tags.configure: | ||
| _xcode_configure( | ||
| remote_xcode_label = xcode_configure_attr.remote_xcode_label, | ||
| xcode_locator_label = xcode_configure_attr.xcode_locator_label, | ||
| ) | ||
|
|
||
| xcode_configure = module_extension( | ||
| implementation = _xcode_configure_impl, | ||
| tag_classes = { | ||
| "configure": tag_class( | ||
| attrs = { | ||
| "remote_xcode_label": attr.string(mandatory = True), | ||
| "xcode_locator_label": attr.string(mandatory = True), | ||
| }, | ||
| ), | ||
| }, | ||
| ) | ||
Uh oh!
There was an error while loading. Please reload this page.