WORKSPACE से Bzlmod पर माइग्रेट करने की प्रोसेस अक्सर जटिल होती है. इसलिए, हमारा सुझाव है कि आप माइग्रेशन स्क्रिप्ट का इस्तेमाल करें.
यह स्क्रिप्ट, बाहरी डिपेंडेंसी मैनेजमेंट सिस्टम को माइग्रेट करने की प्रोसेस के कई चरणों को ऑटोमेट करती है.
ध्यान दें: अगर आपको एआई की मदद से Bzlmod पर माइग्रेट करने की सुविधा आज़मानी है, तो Bzlmod माइग्रेशन एजेंट का सेटअप देखें.
मुख्य फ़ंक्शन
स्क्रिप्ट के मुख्य फ़ंक्शन ये हैं:
- डिपेंडेंसी की जानकारी इकट्ठा करना: आपके प्रोजेक्ट की
WORKSPACEफ़ाइल का विश्लेषण करके, तय किए गए बिल्ड टारगेट के लिए इस्तेमाल किए जाने वाले बाहरी डेटाबेस की पहचान करना. इसके लिए, Bazel के experimental_repository_resolved_file फ़्लैग का इस्तेमाल करके, हल की गई डिपेंडेंसी की फ़ाइल जनरेट करना. इस फ़ाइल में यह जानकारी शामिल होती है. - सीधी डिपेंडेंसी की पहचान करना:
bazel queryका इस्तेमाल करके यह पता लगाना कि तय किए गए टारगेट के लिए, कौनसे डेटाबेस सीधी डिपेंडेंसी हैं. - Bzlmod पर माइग्रेट करना: काम की
WORKSPACEडिपेंडेंसी को, Bzlmod के बराबर की डिपेंडेंसी में बदलना. यह दो चरणों वाली प्रोसेस है:- पहचान की गई सभी सीधी डिपेंडेंसी को
MODULE.bazelफ़ाइल में शामिल करना. - Bzlmod को चालू करके, तय किए गए टारगेट बनाना. इसके बाद, पहचान की जा सकने वाली गड़बड़ियों की पहचान करना और उन्हें ठीक करना. यह चरण ज़रूरी है, क्योंकि हो सकता है कि पहले चरण में कुछ डिपेंडेंसी छूट गई हों.
- पहचान की गई सभी सीधी डिपेंडेंसी को
- माइग्रेशन की रिपोर्ट जनरेट करना:
migration_info.mdफ़ाइल बनाना. इस फ़ाइल में, माइग्रेशन की प्रोसेस की जानकारी होती है. इस रिपोर्ट में, सीधी डिपेंडेंसी की सूची, जनरेट की गई Bzlmod की घोषणाएं, और माइग्रेशन पूरा करने के लिए ज़रूरी मैन्युअल चरण शामिल होते हैं.
माइग्रेशन टूल इन चीज़ों के साथ काम करता है:
- Bazel के सेंट्रल रजिस्ट्री में उपलब्ध डिपेंडेंसी
- उपयोगकर्ता की ओर से तय किए गए, डेटाबेस के कस्टम नियम
- पैकेज मैनेजर डिपेंडेंसी
- Maven
- Go
- 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 cd <your project root> migrate2bzlmod -t <targets>
इस स्क्रिप्ट से जनरेट की गई फ़ाइलें
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 -- #.
माइग्रेशन का उदाहरण
माइग्रेशन स्क्रिप्ट को काम करते हुए देखने के लिए, यह उदाहरण देखें. इसमें WORKSPACE फ़ाइल में Python, Maven, और Go की डिपेंडेंसी की जानकारी दी गई है.
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 फ़ाइल को मिटाना है. साथ ही, यह भी पक्का करना है कि इससे उपयोगकर्ता अनुभव पर कोई असर न पड़े.
इसके बाद, migrate2bzlmod -t=//... चलाने पर, यह आउटपुट मिलता है:
bazel 7.6.1 Generating ./resolved_deps.py file - It might take a while... RESOLVED:rules_javahas been introduced as a Bazel module. RESOLVED:bazel_gazellehas been introduced as a Bazel module. RESOLVED:io_bazel_rules_gohas been introduced as a Bazel module. RESOLVED:rules_pythonhas 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_depshas been introduced as python extension. RESOLVED:org_golang_x_nethas been introduced as go extension. RESOLVED:rules_jvm_externalhas been introduced as a Bazel module. RESOLVED:org.antlrhas been introduced as maven extension. RESOLVED:rules_shellhas 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 मॉड्यूल
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 मॉड्यूल
bazel_dep(name = "rules_shell", version = "0.6.1")
WORKSPACE - Go एक्सटेंशन
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 एक्सटेंशन
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 एक्सटेंशन
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 एक्सटेंशन
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 एक्सटेंशन
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 एक्सटेंशन
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 नियम
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 नियम
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 - मॉड्यूल एक्सटेंशन
load(":my_custom_macro.bzl", "my_custom_macro") my_custom_macro( name = "my_custom_repo", )
MODULE.bazel - मॉड्यूल एक्सटेंशन
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_pythonshow_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_pythonFound 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_depspip.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_netgo_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 मॉड्यूल के तौर पर शामिल किया गया है. अगरgo.modऔरgo.sumउपलब्ध नहीं हैं, तो Go मॉड्यूल को सीधेMODULE.bazelफ़ाइल में जोड़ा जाता है. - खास निर्देश जोड़ने के लिए,
gazelle_overrideका इस्तेमाल किया जाता है.
- इसे
कुछ लिंक जिनसे मदद मिल सकती है
- बाहरी एक्सटेंशन के लिए आधिकारिक पेज
- कम्यूनिटी पोस्ट और वीडियो
सुझाव/राय दें या शिकायत करें
अगर आपको योगदान देना है, तो bazel-central-registry पर कोई समस्या या पीआर बनाकर ऐसा करें.