Restrict absl_source_set visibility in favor of the component.
Since the absl component build has landed, this CL restricts access
to the absl source_sets in favor of a direct dependency on the
component target.
For now there is an allowlist but based on the outcome of
https://groups.google.com/a/chromium.org/forum/#!topic/cxx/cNZPHgfhNP4
it might be lifted.
Bug: 1046390
Change-Id: I171ff8352e10241ca5dd3703d15e189a5ff534b7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2260532
Commit-Queue: Mirko Bonadei <mbonadei@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#782940}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 50f3c4a3086a0f62e002a869d9bbc845097a08ec
diff --git a/BUILD.gn b/BUILD.gn
index b96d354..4a090e0 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -8,6 +8,7 @@
import("//build/toolchain/toolchain.gni")
import("//testing/test.gni")
+import("//third_party/abseil-cpp/absl.gni")
config("absl_component_build") {
defines = [ "ABSL_CONSUME_DLL" ]
@@ -62,6 +63,14 @@
"//third_party/abseil-cpp/absl/types:optional",
"//third_party/abseil-cpp/absl/types:variant",
]
+
+ # Usage of Abseil in Chromium is guarded by an explicit opt-in list, before
+ # adding projects to this list please reach out to cxx@chromium.org and CC:
+ # - https://cs.chromium.org/chromium/src/third_party/abseil-cpp/OWNERS
+ #
+ # More information can be found at:
+ # https://docs.google.com/document/d/1DgS1-A3rzboTLjpf4m1sqkJgWjnY_Ru2dokk1X1vBDU
+ visibility = absl_visibility
}
group("default") {
diff --git a/absl.gni b/absl.gni
index b2cf17d..a68823c 100644
--- a/absl.gni
+++ b/absl.gni
@@ -30,25 +30,24 @@
# https://docs.google.com/document/d/1DgS1-A3rzboTLjpf4m1sqkJgWjnY_Ru2dokk1X1vBDU
declare_args() {
# Additional targets that can depend on absl.
- # ** DISCLAIMER **
- #
- # Using "additional_absl_clients" is highly discouraged because it will break
- # the component build since Abseil doesn't have export annotations and WebRTC
- # is already depending on it. Any CL that use "additional_absl_clients" will
- # have a really high probability of being reverted.
additional_absl_clients = []
}
-assert(!is_component_build || additional_absl_clients == [])
_chromium_absl_clients = [
"//libassistant/*",
- "//third_party/webrtc/*",
- "//third_party/abseil-cpp/*",
+ "//third_party/blink/renderer/modules/peerconnection",
+ "//third_party/blink/renderer/platform",
"//third_party/googletest:gtest",
- "//third_party/shell-encryption/*",
+ "//third_party/openscreen/src/third_party/abseil/*",
"//third_party/private_membership/*",
+ "//third_party/shell-encryption/*",
+ "//third_party/webrtc/*",
]
+# When adding a new package to `absl_visibility`, please check that all the
+# Abseil dependencies that are required are listed in the dependencies of
+# //third_party/abseil-cpp:absl. If not, please add them and run:
+# //third_party/abseil-cpp/generate_def_file.py.
absl_visibility = _chromium_absl_clients + additional_absl_clients
template("absl_source_set") {
@@ -73,15 +72,22 @@
}
public_configs += [ "//third_party/abseil-cpp:absl_include_config" ]
- # Usage of Abseil in Chromium is guarded by an explicit opt-in list, before
- # adding projects to this list please reach out to cxx@chromium.org and CC:
- # - https://cs.chromium.org/chromium/src/third_party/abseil-cpp/OWNERS
- #
- # More information can be found at:
- # https://docs.google.com/document/d/1DgS1-A3rzboTLjpf4m1sqkJgWjnY_Ru2dokk1X1vBDU
if (!defined(visibility)) {
if (build_with_chromium) {
- visibility = absl_visibility
+ visibility = [
+ "//third_party/abseil-cpp/*",
+
+ # WebRTC binary to run PSNR and SSIM video quality analysis. It
+ # statically links absl and it is used by "browser_tests" when
+ # is_component_build=false but it cannot depend on the absl
+ # component because it uses absl/flags.
+ "//third_party/webrtc/rtc_tools:frame_analyzer",
+ # WebRTC binaries used by //:chromium_builder_asan, they both
+ # statically link absl (because they depend on absl/flags) and are
+ # used by Chromium only when is_component_build=false.
+ "//third_party/webrtc/rtc_tools:rtp_generator",
+ "//third_party/webrtc/rtc_tools:video_replay",
+ ]
} else {
visibility = [ "*" ]
}
diff --git a/absl/base/BUILD.gn b/absl/base/BUILD.gn
index 8b19d23..c1b9ac5 100644
--- a/absl/base/BUILD.gn
+++ b/absl/base/BUILD.gn
@@ -10,15 +10,13 @@
":config",
":core_headers",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("errno_saver") {
public = [ "internal/errno_saver.h" ]
deps = [ ":config" ]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("log_severity") {
@@ -39,8 +37,7 @@
":core_headers",
":log_severity",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("spinlock_wait") {
@@ -57,8 +54,7 @@
":core_headers",
":errno_saver",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/base:*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/base:*" ]
}
absl_source_set("config") {
@@ -75,7 +71,6 @@
# Abseil's dynamic annotations are only visible inside Abseil because
# their usage is deprecated in Chromium (see README.chromium for more info).
- visibility = []
visibility = [ "//third_party/abseil-cpp/absl/*" ]
deps = [ ":config" ]
}
@@ -120,8 +115,7 @@
":config",
"//third_party/abseil-cpp/absl/meta:type_traits",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("base") {
@@ -168,22 +162,19 @@
":config",
":raw_logging_internal",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("exception_testing") {
testonly = true
public = [ "internal/exception_testing.h" ]
deps = [ ":config" ]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("pretty_function") {
public = [ "internal/pretty_function.h" ]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
# TODO(mbonadei): This target throws by design. We should probably
@@ -242,8 +233,7 @@
":config",
":core_headers",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("exponential_biased") {
@@ -253,8 +243,7 @@
":config",
":core_headers",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("periodic_sampler") {
@@ -274,8 +263,7 @@
":config",
":raw_logging_internal",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("strerror") {
@@ -286,15 +274,13 @@
":core_headers",
":errno_saver",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("fast_type_id") {
public = [ "internal/fast_type_id.h" ]
deps = [ ":config" ]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("config_test") {
diff --git a/absl/container/BUILD.gn b/absl/container/BUILD.gn
index f66f029..87574de 100644
--- a/absl/container/BUILD.gn
+++ b/absl/container/BUILD.gn
@@ -47,8 +47,7 @@
testonly = true
public = [ "internal/counting_allocator.h" ]
deps = [ "//third_party/abseil-cpp/absl/base:config" ]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("test_instance_tracker") {
@@ -56,8 +55,7 @@
sources = [ "internal/test_instance_tracker.cc" ]
public = [ "internal/test_instance_tracker.h" ]
deps = [ "//third_party/abseil-cpp/absl/types:compare" ]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("flat_hash_map") {
@@ -196,8 +194,7 @@
absl_source_set("have_sse") {
public = [ "internal/have_sse.h" ]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("common") {
diff --git a/absl/debugging/BUILD.gn b/absl/debugging/BUILD.gn
index 05b400e..048a872 100644
--- a/absl/debugging/BUILD.gn
+++ b/absl/debugging/BUILD.gn
@@ -58,8 +58,7 @@
absl_source_set("examine_stack") {
sources = [ "internal/examine_stack.cc" ]
public = [ "internal/examine_stack.h" ]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
deps = [
":stacktrace",
":symbolize",
@@ -137,8 +136,7 @@
testonly = true
sources = [ "leak_check.cc" ]
public = [ "leak_check.h" ]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
deps = [ "//third_party/abseil-cpp/absl/base:config" ]
}
} else {
@@ -146,8 +144,7 @@
testonly = true
sources = [ "leak_check.cc" ]
public = [ "leak_check.h" ]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
deps = [ "//third_party/abseil-cpp/absl/base:config" ]
}
}
@@ -161,6 +158,5 @@
"//third_party/abseil-cpp/absl/base:core_headers",
"//third_party/abseil-cpp/absl/base:raw_logging_internal",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
diff --git a/absl/flags/BUILD.gn b/absl/flags/BUILD.gn
index 7318b6d..969d89e 100644
--- a/absl/flags/BUILD.gn
+++ b/absl/flags/BUILD.gn
@@ -16,8 +16,7 @@
"//third_party/abseil-cpp/absl/base:config",
"//third_party/abseil-cpp/absl/strings",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("program_name") {
@@ -31,8 +30,7 @@
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/synchronization",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("config") {
@@ -72,8 +70,7 @@
"//third_party/abseil-cpp/absl/base:config",
"//third_party/abseil-cpp/absl/base:fast_type_id",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("commandlineflag") {
@@ -99,8 +96,7 @@
"//third_party/abseil-cpp/absl/base:config",
"//third_party/abseil-cpp/absl/strings",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("reflection") {
@@ -141,8 +137,7 @@
"//third_party/abseil-cpp/absl/synchronization",
"//third_party/abseil-cpp/absl/utility",
]
- visibility = []
- visibility += [
+ visibility = [
":*",
"//third_party/abseil-cpp/absl/base/*",
]
@@ -183,8 +178,7 @@
"//third_party/abseil-cpp/absl/base:core_headers",
"//third_party/abseil-cpp/absl/strings",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("usage") {
diff --git a/absl/hash/BUILD.gn b/absl/hash/BUILD.gn
index d546eb9..ca4a05b 100644
--- a/absl/hash/BUILD.gn
+++ b/absl/hash/BUILD.gn
@@ -5,19 +5,6 @@
import("//build_overrides/build.gni")
import("//third_party/abseil-cpp/absl.gni")
-# Usage of Abseil in Chromium is guarded by an explicit opt-in list, before
-# adding projects to this list please reach out to cxx@chromium.org and CC:
-# - https://cs.chromium.org/chromium/src/third_party/abseil-cpp/OWNERS
-#
-# More information can be found at:
-# https://docs.google.com/document/d/1DgS1-A3rzboTLjpf4m1sqkJgWjnY_Ru2dokk1X1vBDU
-if (build_with_chromium) {
- default_visibility = absl_visibility
- default_visibility += [ "//third_party/openscreen/*" ]
-} else {
- default_visibility = [ "*" ]
-}
-
absl_source_set("hash") {
sources = [
"internal/hash.cc",
@@ -36,7 +23,6 @@
"//third_party/abseil-cpp/absl/types:variant",
"//third_party/abseil-cpp/absl/utility",
]
- visibility = default_visibility
}
absl_source_set("hash_testing") {
@@ -59,8 +45,7 @@
"//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/strings:str_format",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("city") {
diff --git a/absl/strings/BUILD.gn b/absl/strings/BUILD.gn
index ab20189..e392ec1 100644
--- a/absl/strings/BUILD.gn
+++ b/absl/strings/BUILD.gn
@@ -5,19 +5,6 @@
import("//build_overrides/build.gni")
import("//third_party/abseil-cpp/absl.gni")
-# Usage of Abseil in Chromium is guarded by an explicit opt-in list, before
-# adding projects to this list please reach out to cxx@chromium.org and CC:
-# - https://cs.chromium.org/chromium/src/third_party/abseil-cpp/OWNERS
-#
-# More information can be found at:
-# https://docs.google.com/document/d/1DgS1-A3rzboTLjpf4m1sqkJgWjnY_Ru2dokk1X1vBDU
-if (build_with_chromium) {
- default_visibility = absl_visibility
- default_visibility += [ "//third_party/openscreen/*" ]
-} else {
- default_visibility = [ "*" ]
-}
-
absl_source_set("strings") {
sources = [
"ascii.cc",
@@ -67,7 +54,6 @@
"//third_party/abseil-cpp/absl/meta:type_traits",
"//third_party/abseil-cpp/absl/numeric:int128",
]
- visibility = default_visibility
}
absl_source_set("internal") {
@@ -115,8 +101,7 @@
"internal/str_format/output.h",
"internal/str_format/parser.h",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
deps = [
":strings",
"//third_party/abseil-cpp/absl/base:bits",
@@ -132,8 +117,7 @@
absl_source_set("cord_internal") {
public = [ "internal/cord_internal.h" ]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
deps = [
":strings",
"//third_party/abseil-cpp/absl/meta:type_traits",
@@ -171,8 +155,7 @@
testonly = true
sources = [ "internal/pow10_helper.cc" ]
public = [ "internal/pow10_helper.h" ]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
deps = [ "//third_party/abseil-cpp/absl/base:config" ]
}
diff --git a/absl/synchronization/BUILD.gn b/absl/synchronization/BUILD.gn
index 0cfcebf..7ff4b93 100644
--- a/absl/synchronization/BUILD.gn
+++ b/absl/synchronization/BUILD.gn
@@ -15,8 +15,7 @@
"//third_party/abseil-cpp/absl/base:malloc_internal",
"//third_party/abseil-cpp/absl/base:raw_logging_internal",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("kernel_timeout_internal") {
@@ -26,8 +25,7 @@
"//third_party/abseil-cpp/absl/base:raw_logging_internal",
"//third_party/abseil-cpp/absl/time",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("synchronization") {
@@ -74,8 +72,7 @@
":synchronization",
"//third_party/abseil-cpp/absl/base:core_headers",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/*" ]
}
absl_source_set("per_thread_sem_test_common") {
diff --git a/absl/time/BUILD.gn b/absl/time/BUILD.gn
index 7196dd6..dbe5193 100644
--- a/absl/time/BUILD.gn
+++ b/absl/time/BUILD.gn
@@ -44,6 +44,5 @@
"//third_party/googletest:gtest",
"//third_party/googletest:gmock",
]
- visibility = []
- visibility += [ "//third_party/abseil-cpp/absl/time:*" ]
+ visibility = [ "//third_party/abseil-cpp/absl/time:*" ]
}
diff --git a/absl/types/BUILD.gn b/absl/types/BUILD.gn
index 42faa90..751d8b8 100644
--- a/absl/types/BUILD.gn
+++ b/absl/types/BUILD.gn
@@ -5,23 +5,6 @@
import("//build_overrides/build.gni")
import("//third_party/abseil-cpp/absl.gni")
-# Usage of Abseil in Chromium is guarded by an explicit opt-in list, before
-# adding projects to this list please reach out to cxx@chromium.org and CC:
-# - https://cs.chromium.org/chromium/src/third_party/abseil-cpp/OWNERS
-#
-# More information can be found at:
-# https://docs.google.com/document/d/1DgS1-A3rzboTLjpf4m1sqkJgWjnY_Ru2dokk1X1vBDU
-if (build_with_chromium) {
- default_visibility = absl_visibility
- default_visibility += [
- "//third_party/blink/renderer/platform:platform",
- "//third_party/blink/renderer/modules/peerconnection:peerconnection",
- "//third_party/openscreen/*",
- ]
-} else {
- default_visibility = [ "*" ]
-}
-
absl_source_set("any") {
public = [ "any.h" ]
deps = [
@@ -49,8 +32,7 @@
"//third_party/abseil-cpp/absl/base:config",
"//third_party/abseil-cpp/absl/base:raw_logging_internal",
]
- visibility = []
- visibility += [ ":*" ]
+ visibility = [ ":*" ]
}
absl_source_set("span") {
@@ -76,7 +58,6 @@
"//third_party/abseil-cpp/absl/meta:type_traits",
"//third_party/abseil-cpp/absl/utility",
]
- visibility = default_visibility
}
absl_source_set("bad_optional_access") {
@@ -108,7 +89,6 @@
"//third_party/abseil-cpp/absl/meta:type_traits",
"//third_party/abseil-cpp/absl/utility",
]
- visibility = default_visibility
}
absl_source_set("compare") {