From 8b3a6932de5fdae329c98c3a7938ab224809da8d Mon Sep 17 00:00:00 2001 From: Yun Peng Date: Thu, 4 Jul 2024 16:11:50 +0200 Subject: [PATCH] Fix vendoring immediatelly after a normal repo fetch Repo wasn't vendored as expected due to wrong SkyValue cache caused incorrect equals function. --- .../repository/RepositoryDirectoryValue.java | 3 ++- src/test/py/bazel/bzlmod/bazel_vendor_test.py | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java index 38a830c77a9d1c..c801b1448571a6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java +++ b/src/main/java/com/google/devtools/build/lib/rules/repository/RepositoryDirectoryValue.java @@ -124,7 +124,8 @@ public boolean equals(Object other) { return Objects.equal(path, otherValue.path) && Objects.equal(sourceDir, otherValue.sourceDir) && Arrays.equals(digest, otherValue.digest) - && Objects.equal(fileValues, otherValue.fileValues); + && Objects.equal(fileValues, otherValue.fileValues) + && Objects.equal(excludeFromVendoring, otherValue.excludeFromVendoring); } return false; } diff --git a/src/test/py/bazel/bzlmod/bazel_vendor_test.py b/src/test/py/bazel/bzlmod/bazel_vendor_test.py index a446aa87fb8c33..578c988ff722b4 100644 --- a/src/test/py/bazel/bzlmod/bazel_vendor_test.py +++ b/src/test/py/bazel/bzlmod/bazel_vendor_test.py @@ -143,6 +143,25 @@ def testVendorFailsWithNofetch(self): 'ERROR: You cannot run the vendor command with --nofetch', stderr ) + def testVendorAfterFetch(self): + self.main_registry.createCcModule('aaa', '1.0') + self.ScratchFile( + 'MODULE.bazel', + [ + 'bazel_dep(name = "aaa", version = "1.0")', + 'local_path_override(module_name="bazel_tools", path="tools_mock")', + 'local_path_override(module_name="local_config_platform", ', + 'path="platforms_mock")', + ], + ) + self.ScratchFile('BUILD') + + self.RunBazel(['fetch', '--repo=@@aaa~']) + self.RunBazel(['vendor', '--vendor_dir=vendor', '--repo=@@aaa~']) + + repos_vendored = os.listdir(self._test_cwd + '/vendor') + self.assertIn('aaa~', repos_vendored) + def testVendoringMultipleTimes(self): self.main_registry.createCcModule('aaa', '1.0') self.ScratchFile(