WORKSPACE
से Bzlmod पर माइग्रेट करने की प्रोसेस अक्सर मुश्किल होती है. इसलिए, हमारा सुझाव है कि आप माइग्रेशन स्क्रिप्ट का इस्तेमाल करें. यह हेल्पर टूल, बाहरी डिपेंडेंसी मैनेजमेंट सिस्टम को माइग्रेट करने से जुड़े कई चरणों को अपने-आप पूरा करता है.
ध्यान दें: अगर आपको एआई की मदद से Bzlmod माइग्रेशन की सुविधा आज़मानी है, तो Bzlmod माइग्रेशन एजेंट का सेटअप देखें.
मुख्य फ़ंक्शन
स्क्रिप्ट के मुख्य काम ये हैं:
- डिपेंडेंसी की जानकारी इकट्ठा करना: आपके प्रोजेक्ट की
WORKSPACE
फ़ाइल का विश्लेषण करके, यह पता लगाना कि तय किए गए बिल्ड टारगेट के लिए कौनसी बाहरी रिपॉज़िटरी इस्तेमाल की गई हैं. इसके लिए, Bazel के experimental_repository_resolved_file फ़्लैग का इस्तेमाल करके, हल की गई डिपेंडेंसी की फ़ाइल जनरेट की जाती है. इस फ़ाइल में यह जानकारी होती है. - सीधे तौर पर जुड़ी डिपेंडेंसी की पहचान करना:
bazel query
का इस्तेमाल करके यह पता लगाना कि बताई गई डिपेंडेंसी के लिए, कौनसी रिपॉज़िटरी सीधे तौर पर जुड़ी हुई हैं. - Bzlmod पर माइग्रेट करना: काम की
WORKSPACE
डिपेंडेंसी को Bzlmod के बराबर की डिपेंडेंसी में बदलना. यह दो चरणों वाली प्रोसेस है:- पहचान की गई सभी डायरेक्ट डिपेंडेंसी को
MODULE.bazel
फ़ाइल में जोड़ें. - Bzlmod चालू करके, तय किए गए टारगेट बनाएं. इसके बाद, पहचानी जा सकने वाली गड़बड़ियों की पहचान करें और उन्हें ठीक करें. इस चरण की ज़रूरत इसलिए है, क्योंकि हो सकता है कि पहले चरण में कुछ डिपेंडेंसी मौजूद न हों.
- पहचान की गई सभी डायरेक्ट डिपेंडेंसी को
- माइग्रेशन रिपोर्ट जनरेट करना: एक
migration_info.md
फ़ाइल बनाना, जिसमें माइग्रेशन की प्रोसेस के बारे में जानकारी दी गई हो. इस रिपोर्ट में, डायरेक्ट डिपेंडेंसी की सूची, जनरेट किए गए Bzlmod एलान, और माइग्रेशन पूरा करने के लिए ज़रूरी मैन्युअल चरणों की जानकारी शामिल होती है.
माइग्रेशन टूल इन सुविधाओं के साथ काम करता है:
- Bazel Central Registry में उपलब्ध डिपेंडेंसी
- उपयोगकर्ता की ओर से तय किए गए कस्टम रिपॉज़िटरी नियम
- पैकेज मैनेजर की डिपेंडेंसी
- Maven
- ऐप पर जाएं
- Python
अहम जानकारी:
- माइग्रेशन टूल, सबसे बेहतर कोशिशों के आधार पर काम करता है. हमेशा यह पक्का करें कि इसके सुझाव सही हों.
- Bazel 7 के साथ माइग्रेशन टूल का इस्तेमाल करें. यह Bazel 8 के साथ काम नहीं करता.
माइग्रेशन टूल का इस्तेमाल कैसे करें
शुरू करने से पहले:
- Bazel 7 के नए वर्शन पर अपग्रेड करें. यह WORKSPACE और Bzlmod, दोनों के लिए बेहतर तरीके से काम करता है.
पुष्टि करें कि आपके प्रोजेक्ट के मुख्य बिल्ड टारगेट के लिए, यह निर्देश सही तरीके से काम कर रहा है:
bazel build --nobuild --enable_workspace --noenable_bzlmod <targets>
स्क्रिप्ट चलाने का निर्देश
ज़रूरी शर्तें पूरी होने के बाद, माइग्रेशन टूल का इस्तेमाल करने के लिए, यहां दिए गए निर्देश चलाएं:
# Clone the Bazel Central Registry repository git clone https://github.com/bazelbuild/bazel-central-registry.git cd bazel-central-registry # Build the migration tool bazel build //tools:migrate_to_bzlmod # Create a convenient alias for the tool alias migrate2bzlmod=$(realpath ./bazel-bin/tools/migrate_to_bzlmod) # Navigate to your project's root directory and run the tool cdmigrate2bzlmod -t
इस स्क्रिप्ट से जनरेट की गई फ़ाइलें
MODULE.bazel
- यह Bzlmod के लिए सेंट्रल मेनिफ़ेस्ट फ़ाइल है. इसमें प्रोजेक्ट का मेटाडेटा और अन्य Bazel मॉड्यूल पर इसकी सीधी डिपेंडेंसी के बारे में बताया जाता है.migration_info.md
- यह एक ऐसी फ़ाइल है जिसमें माइग्रेशन टूल को इस्तेमाल करने के बारे में चरण-दर-चरण निर्देश दिए गए हैं. इसे इसलिए बनाया गया है, ताकि अगर ज़रूरी हो, तो माइग्रेशन की प्रोसेस को मैन्युअल तरीके से पूरा करने में मदद मिल सके.resolved_deps.py
- इसमें प्रोजेक्ट की बाहरी डिपेंडेंसी की पूरी सूची होती है. यह सूची, प्रोजेक्ट कीWORKSPACE
फ़ाइल का विश्लेषण करके जनरेट की जाती है. यह ट्रांज़िशन के दौरान रेफ़रंस के तौर पर काम करती है.query_direct_deps
- इसमें माइग्रेशन से जुड़ी जानकारी होती है. यह जानकारी, इस्तेमाल किए गए टारगेट के बारे में होती है. इसे प्रोजेक्ट कीWORKSPACE
फ़ाइल पर--output=build
के साथ Bazel को शुरू करके हासिल किया जाता है. इस फ़ाइल का इस्तेमाल मुख्य रूप से माइग्रेशन स्क्रिप्ट करती है.extension_for_XXX
- मॉड्यूल एक्सटेंशन की परिभाषा वाली फ़ाइल. माइग्रेशन टूल, इन फ़ाइलों को उन डिपेंडेंसी के लिए जनरेट करता है जो स्टैंडर्ड Bazel मॉड्यूल नहीं हैं. हालांकि, इन्हें Bzlmod के मॉड्यूल एक्सटेंशन का इस्तेमाल करके मैनेज किया जा सकता है.
झंडे
माइग्रेशन स्क्रिप्ट में ये फ़्लैग उपलब्ध हैं:
--t
/--target
: माइग्रेट करने के लिए टारगेट. इस फ़्लैग को दोहराया जा सकता है और टारगेट इकट्ठा किए जाते हैं.--i
/--initial
:MODULE.bazel
,resolved_deps.py
, औरmigration_info.md
फ़ाइलों को मिटा देता है और शुरू से काम करता है - सीधे तौर पर निर्भरता का पता लगाता है, उन्हें MODULE.bazel में शामिल करता है, और हल की गई निर्भरताओं को फिर से जनरेट करता है.
माइग्रेशन के बाद की सफ़ाई
migration_info.md
,resolved_deps.py
, औरquery_direct_deps
को मिटाएं.MODULE.bazel
फ़ाइल से उन टिप्पणियों को हटाएं जिनका इस्तेमाल माइग्रेशन के लिए किया गया था. जैसे,# -- bazel_dep definitions -- #
.
माइग्रेशन का उदाहरण
माइग्रेशन स्क्रिप्ट को काम करते हुए देखने के लिए, यहां दिया गया उदाहरण देखें. इसमें Python, Maven, और Go की डिपेंडेंसी को WORKSPACE
फ़ाइल में बताया गया है.
WORKSPACE
फ़ाइल देखने के लिए यहां क्लिक करें
workspace(name="example")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load(":my_custom_macro.bzl", "my_custom_macro")
http_archive(
name = "rules_cc",
sha256 = "b8b918a85f9144c01f6cfe0f45e4f2838c7413961a8ff23bc0c6cdf8bb07a3b6",
strip_prefix = "rules_cc-0.1.5",
urls = ["https://github.com/bazelbuild/rules_cc/releases/download/0.1.5/rules_cc-0.1.5.tar.gz"],
)
# Module dependency
# -------------------
http_archive(
name = "rules_shell",
sha256 = "3e114424a5c7e4fd43e0133cc6ecdfe54e45ae8affa14fadd839f29901424043",
strip_prefix = "rules_shell-0.4.0",
url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.4.0/rules_shell-v0.4.0.tar.gz",
)
# Repo rule
# -------------------
http_archive(
name = "com_github_cockroachdb_cockroach",
sha256 = "6c3568ef244ce6b874694eeeecb83ed4f5d5dff6cf037c952ecde76828a6c502",
strip_prefix = "cockroach-22.1.6",
url = "https://github.com/cockroachdb/cockroach/archive/v22.1.6.tar.gz",
)
# Module extension
# -------------------
# Macro which invokes repository_rule
my_custom_macro(
name = "my_custom_repo",
)
# Go dependencies
# -------------------
http_archive(
name = "io_bazel_rules_go",
integrity = "sha256-M6zErg9wUC20uJPJ/B3Xqb+ZjCPn/yxFF3QdQEmpdvg=",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
"https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
],
)
http_archive(
name = "bazel_gazelle",
integrity = "sha256-12v3pg/YsFBEQJDfooN6Tq+YKeEWVhjuNdzspcvfWNU=",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
"https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz",
],
)
load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")
load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository")
go_rules_dependencies()
go_register_toolchains(version = "1.23.1")
gazelle_dependencies()
go_repository(
name = "org_golang_x_net",
importpath = "golang.org/x/net",
sum = "h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=",
version = "v0.0.0-20190311183353-d8887717615a",
build_file_proto_mode = "disable",
build_naming_convention = "import",
)
# Python dependencies
# -------------------
http_archive(
name = "rules_python",
integrity = "sha256-qDdnnxOC8mlowe5vg5x9r5B5qlMSgGmh8oFd7KpjcwQ=",
strip_prefix = "rules_python-1.4.0",
url = "https://github.com/bazelbuild/rules_python/releases/download/1.4.0/rules_python-1.4.0.tar.gz",
)
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
load("@rules_python//python:pip.bzl", "pip_parse")
pip_parse(
name = "my_python_deps",
requirements_lock = "@example//:requirements_lock.txt",
)
load("@my_python_deps//:requirements.bzl", "install_deps")
install_deps()
load("@rules_python//python:repositories.bzl", "python_register_toolchains")
python_register_toolchains(
name = "python_3_11",
python_version = "3.11",
)
# Maven dependencies
# __________________
RULES_JVM_EXTERNAL_TAG = "4.5"
RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6"
http_archive(
name = "rules_jvm_external",
strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG,
sha256 = RULES_JVM_EXTERNAL_SHA,
url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG,
)
load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps")
rules_jvm_external_deps()
load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup")
rules_jvm_external_setup()
load("@rules_jvm_external//:defs.bzl", "maven_install")
maven_install(
name = "px_deps",
artifacts = [
"org.antlr:antlr4:4.11.1",
],
repositories = [
"https://repo1.maven.org/maven2",
],
)
इसके अलावा, मॉड्यूल एक्सटेंशन के इस्तेमाल को दिखाने के लिए, कस्टम मैक्रो को WORKSPACE
से शुरू किया जाता है और इसे my_custom_macro.bzl
में तय किया जाता है.
my_custom_macro.bzl
फ़ाइल देखने के लिए यहां क्लिक करें
"""Repo rule and macro used for testing"""
def _test_repo_rule_impl(repository_ctx):
repository_ctx.file(
"BUILD",
content = """
genrule(
name = "foo",
outs = ["rule_name.out"],
cmd = "touch $@",
visibility = ["//visibility:public"],
)
"""
)
_test_repo_rule = repository_rule(
implementation = _test_repo_rule_impl,
)
def my_custom_macro(name):
_test_repo_rule(name = name)
हमारा मुख्य मकसद, उपयोगकर्ता अनुभव पर असर डाले बिना MODULE.bazel
फ़ाइल को सेव करना और WORKSPACE
फ़ाइल को मिटाना है.
पहला चरण है, माइग्रेशन टूल इस्तेमाल करने का तरीका को फ़ॉलो करना. इसमें ज़्यादातर, Bazel वर्शन की जांच करना (यह Bazel 7 होना चाहिए) और माइग्रेशन स्क्रिप्ट में कोई उपनाम जोड़ना शामिल है.
इसके बाद, migrate2bzlmod -t=//...
को चलाने पर ये आउटपुट मिलते हैं:
bazel 7.6.1 Generating ./resolved_deps.py file - It might take a while... RESOLVED:rules_java
has been introduced as a Bazel module. RESOLVED:bazel_gazelle
has been introduced as a Bazel module. RESOLVED:io_bazel_rules_go
has been introduced as a Bazel module. RESOLVED:rules_python
has been introduced as a Bazel module. IMPORTANT: 3.11 is used as a default python version. If you need a different version, please change it manually and then rerun the migration tool. RESOLVED:my_python_deps
has been introduced as python extension. RESOLVED:org_golang_x_net
has been introduced as go extension. RESOLVED:rules_jvm_external
has been introduced as a Bazel module. RESOLVED:org.antlr
has been introduced as maven extension. RESOLVED:rules_shell
has been introduced as a Bazel module. Congratulations! All external repositories needed for building //... are available with Bzlmod! IMPORTANT: Fix potential build time issues by running the following command: bazel build --enable_bzlmod --noenable_workspace //... IMPORTANT:For details about the migration process, check `migration_info.md` file.
जिसमें यह ज़रूरी जानकारी दी गई है:
./resolved_deps.py
फ़ाइल जनरेट करता है. इसमें आपकीWORKSPACE
फ़ाइल का इस्तेमाल करके, डिक्लेयर की गई और लोड की गई सभी बाहरी रिपॉज़िटरी की जानकारी होती है.RESOLVED
कीवर्ड, उन सभी डिपेंडेंसी के बारे में बताता है जिन्हें टूल ठीक करता है औरMODULE.bazel
फ़ाइल में जोड़ता है.IMPORTANT
कीवर्ड, ऐसी अहम जानकारी के बारे में बताता है जिस पर समय बिताया जा सकता है.- इस उदाहरण में, सभी डिपेंडेंसी को हल कर दिया गया है. कम से कम
--nobuild
फ़्लैग के साथ. - पूरा बिल्ड (बताई गई कमांड) चलाना ज़रूरी है.साथ ही, संभावित गड़बड़ियों को मैन्युअल तरीके से ठीक करना भी ज़रूरी है. उदाहरण के लिए, टूलचेन सही तरीके से रजिस्टर नहीं किया गया है.
migration_info.md
फ़ाइल में माइग्रेशन के बारे में जानकारी होती है. जानकारी इस सेक्शन में देखें.
ट्रांसफ़ॉर्मेशन
इस सेक्शन में, WORKSPACE
फ़ाइल से MODULE.bazel
में कोड माइग्रेट करने के बारे में बताया गया है.
WORKSPACE - Bazel Module
http_archive( name = "rules_shell", sha256 = "3e114424a5c7e4fd43e0133cc6ecdfe54e45ae8affa14fadd839f29901424043", strip_prefix = "rules_shell-0.4.0", url = "https://github.com/bazelbuild/rules_shell/releases/download/v0.4.0/rules_shell-v0.4.0.tar.gz", )
MODULE.bazel - Bazel Module
bazel_dep(name = "rules_shell", version = "0.6.1")
WORKSPACE - Go Extension
http_archive( name = "io_bazel_rules_go", integrity = "sha256-M6zErg9wUC20uJPJ/B3Xqb+ZjCPn/yxFF3QdQEmpdvg=", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", "https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip", ], ) http_archive( name = "bazel_gazelle", integrity = "sha256-12v3pg/YsFBEQJDfooN6Tq+YKeEWVhjuNdzspcvfWNU=", urls = [ "https://mirror.bazel.build/github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz", "https://github.com/bazelbuild/bazel-gazelle/releases/download/v0.37.0/bazel-gazelle-v0.37.0.tar.gz", ], ) load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies", "go_repository") go_rules_dependencies() go_register_toolchains(version = "1.23.1") gazelle_dependencies() go_repository( name = "org_golang_x_net", importpath = "golang.org/x/net", sum = "h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=", version = "v0.0.0-20190311183353-d8887717615a", build_file_proto_mode = "disable", build_naming_convention = "import", )
MODULE.bazel - Go Extension
go_deps = use_extension("@bazel_gazelle//:extensions.bzl", "go_deps") go_sdk = use_extension("@io_bazel_rules_go//go:extensions.bzl", "go_sdk") go_deps.from_file(go_mod = "//:go.mod") use_repo(go_deps, "org_golang_x_net") go_sdk.from_file(go_mod = "//:go.mod") go_deps.gazelle_override( path = "golang.org/x/net", directives = [ "gazelle:proto disable", "gazelle:go_naming_convention import", ], )
WORKSPACE - Python Extension
http_archive( name = "rules_python", integrity = "sha256-qDdnnxOC8mlowe5vg5x9r5B5qlMSgGmh8oFd7KpjcwQ=", strip_prefix = "rules_python-1.4.0", url = "https://github.com/bazelbuild/rules_python/releases/download/1.4.0/rules_python-1.4.0.tar.gz", ) load("@rules_python//python:repositories.bzl", "py_repositories") py_repositories() load("@rules_python//python:pip.bzl", "pip_parse") pip_parse( name = "my_python_deps", requirements_lock = "@example//:requirements_lock.txt", ) load("@my_python_deps//:requirements.bzl", "install_deps") install_deps() load("@rules_python//python:repositories.bzl", "python_register_toolchains") python_register_toolchains( name = "python_3_11", python_version = "3.11", )
MODULE.bazel - Python Extension
pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip") pip.parse( hub_name = "my_python_deps", python_version = "3.11", requirements_lock = "//:requirements_lock.txt", ) use_repo(pip, "my_python_deps") python = use_extension("@rules_python//python/extensions:python.bzl", "python") python.defaults(python_version = "3.11") python.toolchain(python_version = "3.11")
WORKSPACE - Maven Extension
RULES_JVM_EXTERNAL_TAG = "4.5" RULES_JVM_EXTERNAL_SHA = "b17d7388feb9bfa7f2fa09031b32707df529f26c91ab9e5d909eb1676badd9a6" http_archive( name = "rules_jvm_external", strip_prefix = "rules_jvm_external-%s" % RULES_JVM_EXTERNAL_TAG, sha256 = RULES_JVM_EXTERNAL_SHA, url = "https://github.com/bazelbuild/rules_jvm_external/archive/%s.zip" % RULES_JVM_EXTERNAL_TAG, ) load("@rules_jvm_external//:repositories.bzl", "rules_jvm_external_deps") rules_jvm_external_deps() load("@rules_jvm_external//:setup.bzl", "rules_jvm_external_setup") rules_jvm_external_setup() load("@rules_jvm_external//:defs.bzl", "maven_install") maven_install( name = "px_deps", artifacts = [ "org.antlr:antlr4:4.11.1", ], repositories = [ "https://repo1.maven.org/maven2", ], )
MODULE.bazel - Maven Extension
bazel_dep(name = "rules_jvm_external", version = "6.8") maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") use_repo(maven, "px_deps") maven.artifact( name = "px_deps", group = "org.antlr", artifact = "antlr4", version = "4.11.1" )
WORKSPACE - Repo rule
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "com_github_cockroachdb_cockroach", sha256 = "6c3568ef244ce6b874694eeeecb83ed4f5d5dff6cf037c952ecde76828a6c502", strip_prefix = "cockroach-22.1.6", url = "https://github.com/cockroachdb/cockroach/archive/v22.1.6.tar.gz", )
MODULE.bazel - Repo rule
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") http_archive( name = "com_github_cockroachdb_cockroach", url = "https://github.com/cockroachdb/cockroach/archive/v22.1.6.tar.gz", sha256 = "6c3568ef244ce6b874694eeeecb83ed4f5d5dff6cf037c952ecde76828a6c502", strip_prefix = "cockroach-22.1.6", )
WORKSPACE - Module extension
load(":my_custom_macro.bzl", "my_custom_macro") my_custom_macro( name = "my_custom_repo", )
MODULE.bazel - Module extension
extension_for_my_custom_macro = use_extension("//:extension_for_my_custom_macro.bzl", "extension_for_my_custom_macro") use_repo(extension_for_my_custom_macro, "my_custom_repo")
extension_for_my_custom_macro.bzl
load("//:my_custom_macro.bzl", "my_custom_macro") def _extension_for_my_custom_macro_impl(ctx): my_custom_macro( name = "my_custom_repo", ) extension_for_my_custom_macro = module_extension(implementation = _extension_for_my_custom_macro_impl)
डीबग करने से जुड़ी सलाह
इस सेक्शन में, Bzlmod माइग्रेशन के दौरान आने वाली समस्याओं को डीबग करने में मदद करने वाली काम की कमांड और जानकारी दी गई है.
काम की सलाह
वर्शन को बदलें - ऐसा अक्सर होता है कि किसी डिपेंडेंसी के वर्शन को अपग्रेड करने से समस्याएं आती हैं. एमवीएस एल्गोरिदम की वजह से, Bzlmod डिपेंडेंसी का वर्शन बदल सकता है. WORKSPACE में इस्तेमाल किए गए वर्शन या उससे मिलते-जुलते वर्शन का इस्तेमाल करने के लिए, single_version_override का इस्तेमाल करके इसे बदलें. ध्यान दें कि यह सुविधा, WORKSPACE और Bzlmod के बीच के अंतर को डीबग करने के लिए काम की है. हालांकि, आपको लंबे समय तक इस सुविधा पर भरोसा नहीं करना चाहिए.
single_version_override(module_name = "{dep_name}", version = "{version}")
bazel mod कमांड का इस्तेमाल करें.
show_repo
कमांड की मदद से, किसी रिपॉज़िटरी का वर्शन देखें. उदाहरण के लिए:bazel mod show_repo @rules_python
show_extension
कमांड की मदद से, मॉड्यूल एक्सटेंशन के बारे में जानकारी देखें. उदाहरण के लिए:bazel mod show_extension @rules_python//python/extensions:pip.bzl%pip
अगर आपको किसी रेपो के सोर्स को मॉनिटर या कंट्रोल करना है, तो वेंडर मोड का इस्तेमाल करके, रेपो की स्थानीय कॉपी बनाएं. उदाहरण के लिए:
bazel vendor --enable_bzlmod --vendor_dir=vendor_src --repo=@protobuf
माइग्रेशन रिपोर्ट जनरेट करना
माइग्रेशन स्क्रिप्ट के हर रन के साथ यह फ़ाइल अपडेट होती है. अगर यह पहला रन है या --i
फ़्लैग का इस्तेमाल किया गया है, तो इसे नए सिरे से जनरेट किया जाता है. रिपोर्ट में यह जानकारी शामिल होती है:
- लोकल टेस्टिंग के लिए कमांड.
- सीधे तौर पर इस्तेमाल की जाने वाली डिपेंडेंसी की सूची. कम से कम वे डिपेंडेंसी जो प्रोजेक्ट में सीधे तौर पर इस्तेमाल की जाती हैं.
हर डिपेंडेंसी के लिए, एक ड्रॉप-डाउन मेन्यू होता है. इससे यह देखा जा सकता है कि
WORKSPACE
फ़ाइल में रिपॉज़िटरी कहां डिक्लेयर की गई थी. यह डीबग करने के लिए खास तौर पर उपयोगी होता है. इसे इस तरह देखा जा सकता है:> Click here to see where and how the repo was declared in the WORKSPACE file
हर डिपेंडेंसी के लिए,
MODULE.bazel
फ़ाइल में उसे कैसे लागू किया गया. पिछले माइग्रेशन के उदाहरण में, यह इस तरह दिखेगा:Bazel मॉड्यूल की डिपेंडेंसी -
Migration of rules_python
Found perfect name match in BCR: rules_python Found partially name matches in BCR: rules_python_gazelle_plugin It has been introduced as a Bazel module: `bazel_dep(name = "rules_python", version = "1.6.1")`
- अगर स्क्रिप्ट को
perfect name match
मिल जाता है, तो वह अपने-आप इसका इस्तेमाल करेगी. अगर कोई गड़बड़ी होती है, तो दोबारा जांच करें कि नाम सही तरीके से जोड़ा गया है या नहीं.
- अगर स्क्रिप्ट को
Python एक्सटेंशन -
Migration of my_python_deps
pip.parse( hub_name = "my_python_deps", requirements_lock = "//:requirements_lock.txt", python_version = "3.11", ) use_repo(pip, "my_python_deps")
Maven एक्सटेंशन -
Migration of org.antlr (px_deps):
maven.artifact( name = "px_deps", group = "org.antlr", artifact = "antlr4", version = "4.11.1" )
Go एक्सटेंशन -
Migration of org_golang_x_net
go_deps.from_file(go_mod = "//:go.mod") go_sdk.from_file(go_mod = "//:go.mod") go_deps.gazelle_override( path = "golang.org/x/net", directives = [ "gazelle:proto disable", "gazelle:go_naming_convention import", ], )
- इसे
go.mod
की मदद से, गो मॉड्यूल के तौर पर लॉन्च किया गया है. अगरgo.mod
औरgo.sum
उपलब्ध नहीं हैं, तो go मॉड्यूल को सीधेMODULE.bazel
फ़ाइल में जोड़ दिया जाता है. gazelle_override
का इस्तेमाल, खास निर्देश जोड़ने के लिए किया जाता है.
- इसे
काम के लिंक
- बाहरी एक्सटेंशन के आधिकारिक पेज
- कम्यूनिटी पोस्ट और वीडियो
सुझाव/राय दें या शिकायत करें
अगर आपको योगदान देना है, तो bazel-central-registry पर जाकर कोई समस्या या पीआर बनाएं.