From 67f3925134202e03655d144b4f67bee871590aac Mon Sep 17 00:00:00 2001 From: David Zbarsky Date: Mon, 1 Jun 2026 09:45:57 -0400 Subject: [PATCH] Some ergonomics improvements --- MODULE.bazel | 24 ++++++ MODULE.bazel.lock | 81 +++++++++++++++++++++ windows/private/extensions/msvc_runtime.bzl | 14 +++- windows/private/extensions/windows_sdk.bzl | 14 +++- 4 files changed, 126 insertions(+), 7 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 1f179f4..dcadb8e 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -11,6 +11,30 @@ bazel_dep(name = "bazel_skylib", version = "1.9.0") bazel_dep(name = "package_metadata", version = "0.0.7") bazel_dep(name = "platforms", version = "1.0.0") +msvc_runtime = use_extension("//windows:extensions.bzl", "msvc_runtime") +msvc_runtime.configure( + msvc_version = "14.50.35717", + visual_studio_installer_manifest_integrity = "sha256-qOhU+p8/uurCfXME4pfxZg1xN0ATid61fPeYPzPBb+8=", + visual_studio_installer_manifest_url = "https://download.visualstudio.microsoft.com/download/pr/fdc37f6e-59f6-4054-838a-b476eeaa6ec3/1d82370739911457e0a2f6be15d8b5f569531b352b2eabb961429eea1e99e356/VisualStudio.vsman", +) +use_repo(msvc_runtime, "msvc_runtime") + +windows_sdk = use_extension("//windows:extensions.bzl", "windows_sdk") +windows_sdk.configure( + transformations = { + "**/*.h": "lowercase", + "**/*.lib": "lowercase", + "**/*.Lib": "lowercase", + }, + windows_sdk_integrity = { + "Microsoft.Windows.SDK.CPP": "sha256-/0VWYL7gcadEcVqWZWZvopwHaBV509gVlZqe7FpVZCQ=", + "Microsoft.Windows.SDK.CPP.x64": "sha256-rWzpD/lAEGmdKVSLPCseUsieuBFD4hmRVdmlw4ABtSs=", + "Microsoft.Windows.SDK.CPP.arm64": "sha256-A7wMA9Q5zvhQdLvNQl+dXTptO0Z5Z6zSHaO6bf7q+mc=", + }, + windows_sdk_version = "10.0.26100.7705", +) +use_repo(windows_sdk, "windows_sdk") + bazel_dep(name = "gazelle", version = "0.48.0", dev_dependency = True, repo_name = "bazel_gazelle") bazel_dep(name = "bazel_skylib_gazelle_plugin", version = "1.9.0", dev_dependency = True) bazel_dep(name = "bazel_lib", version = "3.2.2", dev_dependency = True) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 9c4d8fa..5ac611b 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -220,6 +220,76 @@ }, "selectedYankedVersions": {}, "moduleExtensions": { + "//windows:extensions.bzl%msvc_runtime": { + "general": { + "bzlTransitiveDigest": "XHMQotlVp9tDg9HNucZVhWZ/nXcGT7O6UOCahJpJe/Y=", + "usagesDigest": "oIQkiqNrV2CIFBHapOnG8LKQhVBRkZg3Ssd7whsl6L0=", + "recordedInputs": [ + "REPO_MAPPING:,bazel_tools bazel_tools" + ], + "generatedRepoSpecs": { + "msvc_runtime": { + "repoRuleId": "@@//windows/private/extensions:msvc_runtime.bzl%_msvc_runtime_repository", + "attributes": { + "msvc_version": "14.50.35717", + "architectures": [ + "x64", + "arm64" + ], + "installer_manifest_url": "https://download.visualstudio.microsoft.com/download/pr/fdc37f6e-59f6-4054-838a-b476eeaa6ec3/1d82370739911457e0a2f6be15d8b5f569531b352b2eabb961429eea1e99e356/VisualStudio.vsman", + "installer_manifest_integrity": "sha256-qOhU+p8/uurCfXME4pfxZg1xN0ATid61fPeYPzPBb+8=" + } + } + }, + "moduleExtensionMetadata": { + "explicitRootModuleDirectDeps": [ + "msvc_runtime" + ], + "explicitRootModuleDirectDevDeps": [], + "useAllRepos": "NO", + "reproducible": false + } + } + }, + "//windows:extensions.bzl%windows_sdk": { + "general": { + "bzlTransitiveDigest": "XHMQotlVp9tDg9HNucZVhWZ/nXcGT7O6UOCahJpJe/Y=", + "usagesDigest": "ETaN/K0rjOmNKkfDGfeItGQ/5mceR8aYfvGRSndKQ18=", + "recordedInputs": [ + "REPO_MAPPING:,bazel_tools bazel_tools" + ], + "generatedRepoSpecs": { + "windows_sdk": { + "repoRuleId": "@@//windows/private/extensions:windows_sdk.bzl%_windows_sdk_repository", + "attributes": { + "windows_sdk_version": "10.0.26100.7705", + "windows_sdk_integrity": { + "Microsoft.Windows.SDK.CPP": "sha256-/0VWYL7gcadEcVqWZWZvopwHaBV509gVlZqe7FpVZCQ=", + "Microsoft.Windows.SDK.CPP.x64": "sha256-rWzpD/lAEGmdKVSLPCseUsieuBFD4hmRVdmlw4ABtSs=", + "Microsoft.Windows.SDK.CPP.arm64": "sha256-A7wMA9Q5zvhQdLvNQl+dXTptO0Z5Z6zSHaO6bf7q+mc=" + }, + "transformations": { + "**/*.h": "lowercase", + "**/*.lib": "lowercase", + "**/*.Lib": "lowercase" + }, + "architectures": [ + "x64", + "arm64" + ] + } + } + }, + "moduleExtensionMetadata": { + "explicitRootModuleDirectDeps": [ + "windows_sdk" + ], + "explicitRootModuleDirectDevDeps": [], + "useAllRepos": "NO", + "reproducible": false + } + } + }, "@@pybind11_bazel+//:internal_configure.bzl%internal_configure_extension": { "general": { "bzlTransitiveDigest": "06cynZ1bCvvy8zHPrrDlXq+Z68xmjctHpfFxi+zEpJY=", @@ -499,6 +569,17 @@ } }, "facts": { + "//windows:extensions.bzl%msvc_runtime": { + "visual_studio_installer_manifest_v1": { + "integrity": "sha256-qOhU+p8/uurCfXME4pfxZg1xN0ATid61fPeYPzPBb+8=", + "request": { + "visual_studio_channel_url": "https://aka.ms/vs/stable/channel", + "visual_studio_installer_manifest_integrity": "sha256-qOhU+p8/uurCfXME4pfxZg1xN0ATid61fPeYPzPBb+8=", + "visual_studio_installer_manifest_url": "https://download.visualstudio.microsoft.com/download/pr/fdc37f6e-59f6-4054-838a-b476eeaa6ec3/1d82370739911457e0a2f6be15d8b5f569531b352b2eabb961429eea1e99e356/VisualStudio.vsman" + }, + "url": "https://download.visualstudio.microsoft.com/download/pr/fdc37f6e-59f6-4054-838a-b476eeaa6ec3/1d82370739911457e0a2f6be15d8b5f569531b352b2eabb961429eea1e99e356/VisualStudio.vsman" + } + }, "@@rules_go+//go:extensions.bzl%go_sdk": { "1.25.0": { "aix_ppc64": [ diff --git a/windows/private/extensions/msvc_runtime.bzl b/windows/private/extensions/msvc_runtime.bzl index bc6397e..19ad512 100644 --- a/windows/private/extensions/msvc_runtime.bzl +++ b/windows/private/extensions/msvc_runtime.bzl @@ -367,10 +367,18 @@ def _msvc_runtime_extension_impl(module_ctx): installer_manifest_integrity = installer_manifest["integrity"], ) + metadata_kwargs = { + "facts": {_INSTALLER_MANIFEST_FACTS_KEY: installer_manifest}, + } + if module_ctx.root_module_has_non_dev_dependency: + metadata_kwargs["root_module_direct_deps"] = [repository_name] + metadata_kwargs["root_module_direct_dev_deps"] = [] + else: + metadata_kwargs["root_module_direct_deps"] = [] + metadata_kwargs["root_module_direct_dev_deps"] = [repository_name] + return module_ctx.extension_metadata( - facts = {_INSTALLER_MANIFEST_FACTS_KEY: installer_manifest}, - root_module_direct_deps = [repository_name], - root_module_direct_dev_deps = [], + **metadata_kwargs ) msvc_runtime = module_extension( diff --git a/windows/private/extensions/windows_sdk.bzl b/windows/private/extensions/windows_sdk.bzl index 919bbf4..6c3091d 100644 --- a/windows/private/extensions/windows_sdk.bzl +++ b/windows/private/extensions/windows_sdk.bzl @@ -324,10 +324,16 @@ def _windows_sdk_extension_impl(module_ctx): architectures = config.architectures, ) - return module_ctx.extension_metadata( - root_module_direct_deps = [repository_name], - root_module_direct_dev_deps = [], - ) + if module_ctx.root_module_has_non_dev_dependency: + return module_ctx.extension_metadata( + root_module_direct_deps = [repository_name], + root_module_direct_dev_deps = [], + ) + else: + return module_ctx.extension_metadata( + root_module_direct_deps = [], + root_module_direct_dev_deps = [repository_name], + ) windows_sdk = module_extension( implementation = _windows_sdk_extension_impl,