C++: Remove providers CcRunfiles and CcDynamicLibrariesForRuntime. This has been dead code for a few weeks. RELNOTES:none PiperOrigin-RevId: 211623271
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java index e4f4b68..4f08bee 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -875,27 +875,9 @@ CcCompilationInfo.Builder ccCompilationInfoBuilder = CcCompilationInfo.Builder.create(); ccCompilationInfoBuilder.setCcCompilationContext(ccCompilationContext); - CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); - // TODO(b/111289526): Remove CcLinkingInfo provider from cc_binary as soon as the flag - // --noexperimental_enable_cc_dynlibs_for_runtime is flipped. An empty CcLinkParamsStore is not - // needed, but here we set it to avoid a null pointer exception in places where we're expecting - // it. In the future CcLinkParamsStore will be obligatory. - ccLinkingInfoBuilder - .setStaticModeParamsForDynamicLibrary(CcLinkParams.EMPTY) - .setStaticModeParamsForExecutable(CcLinkParams.EMPTY) - .setDynamicModeParamsForDynamicLibrary(CcLinkParams.EMPTY) - .setDynamicModeParamsForExecutable(CcLinkParams.EMPTY); - if (cppConfiguration.enableCcDynamicLibrariesForRuntime()) { - ccLinkingInfoBuilder.setCcDynamicLibrariesForRuntime( - new CcDynamicLibrariesForRuntime( - collectDynamicLibrariesForRuntimeArtifacts( - ruleContext, linkingOutputs.getDynamicLibrariesForRuntime()))); - } - builder .setFilesToBuild(filesToBuild) .addNativeDeclaredProvider(ccCompilationInfoBuilder.build()) - .addNativeDeclaredProvider(ccLinkingInfoBuilder.build()) .addProvider( CcNativeLibraryProvider.class, new CcNativeLibraryProvider( @@ -919,27 +901,6 @@ CppHelper.maybeAddStaticLinkMarkerProvider(builder, ruleContext); } - private static NestedSet<Artifact> collectDynamicLibrariesForRuntimeArtifacts( - RuleContext ruleContext, List<LibraryToLink> dynamicLibrariesForRuntime) { - Iterable<Artifact> artifacts = LinkerInputs.toLibraryArtifacts(dynamicLibrariesForRuntime); - if (!Iterables.isEmpty(artifacts)) { - return NestedSetBuilder.wrap(Order.STABLE_ORDER, artifacts); - } - - NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder(); - for (CcLinkingInfo ccLinkingInfo : - ruleContext.getPrerequisites("deps", Mode.TARGET, CcLinkingInfo.PROVIDER)) { - CcDynamicLibrariesForRuntime ccDynamicLibrariesForRuntime = - ccLinkingInfo.getCcDynamicLibrariesForRuntime(); - if (ccDynamicLibrariesForRuntime != null) { - builder.addTransitive( - ccDynamicLibrariesForRuntime.getDynamicLibrariesForRuntimeArtifacts()); - } - } - - return builder.build(); - } - private static NestedSet<LinkerInput> collectTransitiveCcNativeLibraries( RuleContext ruleContext, List<? extends LinkerInput> dynamicLibraries) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcDynamicLibrariesForRuntime.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcDynamicLibrariesForRuntime.java deleted file mode 100644 index 387640a..0000000 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcDynamicLibrariesForRuntime.java +++ /dev/null
@@ -1,49 +0,0 @@ -// Copyright 2014 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -package com.google.devtools.build.lib.rules.cpp; - -import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.collect.nestedset.NestedSet; -import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; -import com.google.devtools.build.lib.collect.nestedset.Order; -import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcDynamicLibrariesForRuntimeApi; - -/** An object that contains the dynamic libraries for runtime of a C++ rule. */ -@Immutable -@AutoCodec -public final class CcDynamicLibrariesForRuntime implements - CcDynamicLibrariesForRuntimeApi { - public static final CcDynamicLibrariesForRuntime EMPTY = - new CcDynamicLibrariesForRuntime(NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER)); - - private final NestedSet<Artifact> ccDynamicLibrariesForRuntime; - - public CcDynamicLibrariesForRuntime(NestedSet<Artifact> ccDynamicLibrariesForRuntime) { - this.ccDynamicLibrariesForRuntime = ccDynamicLibrariesForRuntime; - } - - /** - * Returns the dynamic libraries for runtime. - * - * <p>This normally returns the dynamic library created by the rule itself. However, if the rule - * does not create any dynamic libraries, then it returns the combined results of calling - * getDynamicLibrariesForRuntimeArtifacts on all the rule's deps. This behaviour is so that this - * method is useful for a cc_library with deps but no srcs. - */ - public NestedSet<Artifact> getDynamicLibrariesForRuntimeArtifacts() { - return ccDynamicLibrariesForRuntime; - } -}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java index b38b379..c5f7af8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java
@@ -531,12 +531,6 @@ providers.add(new CcNativeLibraryProvider(collectNativeCcLibraries(ccLinkingOutputs))); } - CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); - if (cppConfiguration.enableCcDynamicLibrariesForRuntime()) { - ccLinkingInfoBuilder.setCcDynamicLibrariesForRuntime( - collectDynamicLibrariesForRuntimeArtifacts( - ccLinkingOutputs.getDynamicLibrariesForRuntime())); - } final CcLinkingOutputs ccLinkingOutputsFinalized = ccLinkingOutputs; BiFunction<Boolean, Boolean, CcLinkParams> createParams = @@ -567,15 +561,16 @@ return builder.build(); }; - ccLinkingInfoBuilder - .setStaticModeParamsForDynamicLibrary( - createParams.apply(/* staticMode= */ true, /* forDynamicLibrary= */ true)) - .setStaticModeParamsForExecutable( - createParams.apply(/* staticMode= */ true, /* forDynamicLibrary= */ false)) - .setDynamicModeParamsForDynamicLibrary( - createParams.apply(/* staticMode= */ false, /* forDynamicLibrary= */ true)) - .setDynamicModeParamsForExecutable( - createParams.apply(/* staticMode= */ false, /* forDynamicLibrary= */ false)); + CcLinkingInfo.Builder ccLinkingInfoBuilder = + CcLinkingInfo.Builder.create() + .setStaticModeParamsForDynamicLibrary( + createParams.apply(/* staticMode= */ true, /* forDynamicLibrary= */ true)) + .setStaticModeParamsForExecutable( + createParams.apply(/* staticMode= */ true, /* forDynamicLibrary= */ false)) + .setDynamicModeParamsForDynamicLibrary( + createParams.apply(/* staticMode= */ false, /* forDynamicLibrary= */ true)) + .setDynamicModeParamsForExecutable( + createParams.apply(/* staticMode= */ false, /* forDynamicLibrary= */ false)); providers.put(ccLinkingInfoBuilder.build()); return new LinkingInfo( providers.build(), outputGroups, ccLinkingOutputs, originalLinkingOutputs); @@ -657,27 +652,6 @@ return result.build(); } - private CcDynamicLibrariesForRuntime collectDynamicLibrariesForRuntimeArtifacts( - List<LibraryToLink> dynamicLibrariesForRuntime) { - Iterable<Artifact> artifacts = LinkerInputs.toLibraryArtifacts(dynamicLibrariesForRuntime); - if (!Iterables.isEmpty(artifacts)) { - return new CcDynamicLibrariesForRuntime(NestedSetBuilder.wrap(Order.STABLE_ORDER, artifacts)); - } - - NestedSetBuilder<Artifact> builder = NestedSetBuilder.stableOrder(); - for (CcLinkingInfo dep : ccLinkingInfos) { - CcDynamicLibrariesForRuntime ccDynamicLibrariesForRuntime = - dep.getCcDynamicLibrariesForRuntime(); - if (ccDynamicLibrariesForRuntime != null) { - builder.addTransitive( - ccDynamicLibrariesForRuntime.getDynamicLibrariesForRuntimeArtifacts()); - } - } - return builder.isEmpty() - ? CcDynamicLibrariesForRuntime.EMPTY - : new CcDynamicLibrariesForRuntime(builder.build()); - } - /** * Constructs the C++ linker actions. It generally generates two actions, one for a static library * and one for a dynamic library. If PIC is required for shared libraries, but not for binaries,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java index f593a44..66a8a4e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingInfo.java
@@ -50,16 +50,14 @@ "static_mode_params_for_dynamic_library", "static_mode_params_for_executable", "dynamic_mode_params_for_dynamic_library", - "dynamic_mode_params_for_executable", - "cc_runfiles"), + "dynamic_mode_params_for_executable"), /* defaultValues= */ ImmutableList.of( - Runtime.NONE, Runtime.NONE, Runtime.NONE, Runtime.NONE, Runtime.NONE), + Runtime.NONE, Runtime.NONE, Runtime.NONE, Runtime.NONE), /* types= */ ImmutableList.of( SkylarkType.of(CcLinkParams.class), SkylarkType.of(CcLinkParams.class), SkylarkType.of(CcLinkParams.class), - SkylarkType.of(CcLinkParams.class), - SkylarkType.of(CcRunfiles.class))); + SkylarkType.of(CcLinkParams.class))); @Nullable private static Object nullIfNone(Object object) { @@ -86,7 +84,6 @@ CcLinkParams staticModeParamsForExecutable = (CcLinkParams) nullIfNone(args[i++]); CcLinkParams dynamicModeParamsForDynamicLibrary = (CcLinkParams) nullIfNone(args[i++]); CcLinkParams dynamicModeParamsForExecutable = (CcLinkParams) nullIfNone(args[i++]); - CcRunfiles ccRunfiles = (CcRunfiles) nullIfNone(args[i++]); CcLinkingInfo.Builder ccLinkingInfoBuilder = CcLinkingInfo.Builder.create(); if (staticModeParamsForDynamicLibrary == null || staticModeParamsForExecutable == null @@ -100,11 +97,6 @@ .setStaticModeParamsForExecutable(staticModeParamsForExecutable) .setDynamicModeParamsForDynamicLibrary(dynamicModeParamsForDynamicLibrary) .setDynamicModeParamsForExecutable(dynamicModeParamsForExecutable); - // TODO(plf): The CcDynamicLibrariesForRuntime provider can be removed perhaps. Do not - // add to the API until we know for sure. The CcRunfiles provider is already in the API - // at the time of this comment (cl/200184914). Perhaps it can be removed but Skylark rules - // using it will have to be migrated. - ccLinkingInfoBuilder.setCcRunfiles(ccRunfiles); return ccLinkingInfoBuilder.build(); } }; @@ -118,22 +110,12 @@ .build(); private final CcLinkParamsStore ccLinkParamsStore; - // TODO(b/111289526): These providers are not useful. All the information they provide can be - // obtained from CcLinkParams. CcRunfiles is already dead code and can be removed. - // CcDynamicLibrariesForRuntime is not dead code yet. - @Deprecated private final CcRunfiles ccRunfiles; - @Deprecated private final CcDynamicLibrariesForRuntime ccDynamicLibrariesForRuntime; @AutoCodec.Instantiator @VisibleForSerialization - CcLinkingInfo( - CcLinkParamsStore ccLinkParamsStore, - CcRunfiles ccRunfiles, - CcDynamicLibrariesForRuntime ccDynamicLibrariesForRuntime) { + CcLinkingInfo(CcLinkParamsStore ccLinkParamsStore) { super(PROVIDER); this.ccLinkParamsStore = ccLinkParamsStore; - this.ccRunfiles = ccRunfiles; - this.ccDynamicLibrariesForRuntime = ccDynamicLibrariesForRuntime; } public CcLinkParamsStore getCcLinkParamsStore() { @@ -183,15 +165,6 @@ .build(); } - @Override - public CcRunfiles getCcRunfiles() { - return ccRunfiles; - } - - public CcDynamicLibrariesForRuntime getCcDynamicLibrariesForRuntime() { - return ccDynamicLibrariesForRuntime; - } - public CcLinkParams getCcLinkParams(boolean staticMode, boolean forDynamicLibrary) { if (staticMode) { if (forDynamicLibrary) { @@ -214,26 +187,11 @@ CcLinkParams staticModeParamsForExecutable; CcLinkParams dynamicModeParamsForDynamicLibrary; CcLinkParams dynamicModeParamsForExecutable; - CcRunfiles ccRunfiles; - CcDynamicLibrariesForRuntime ccDynamicLibrariesForRuntime; public static CcLinkingInfo.Builder create() { return new CcLinkingInfo.Builder(); } - public Builder setCcRunfiles(CcRunfiles ccRunfiles) { - Preconditions.checkState(this.ccRunfiles == null); - this.ccRunfiles = ccRunfiles; - return this; - } - - public Builder setCcDynamicLibrariesForRuntime( - CcDynamicLibrariesForRuntime ccDynamicLibrariesForRuntime) { - Preconditions.checkState(this.ccDynamicLibrariesForRuntime == null); - this.ccDynamicLibrariesForRuntime = ccDynamicLibrariesForRuntime; - return this; - } - public Builder setStaticModeParamsForDynamicLibrary(CcLinkParams ccLinkParams) { Preconditions.checkState(this.staticModeParamsForDynamicLibrary == null); this.staticModeParamsForDynamicLibrary = ccLinkParams; @@ -269,7 +227,7 @@ staticModeParamsForExecutable, dynamicModeParamsForDynamicLibrary, dynamicModeParamsForExecutable); - return new CcLinkingInfo(ccLinkParamsStore, ccRunfiles, ccDynamicLibrariesForRuntime); + return new CcLinkingInfo(ccLinkParamsStore); } }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcRunfiles.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcRunfiles.java deleted file mode 100644 index cdebe1d..0000000 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcRunfiles.java +++ /dev/null
@@ -1,44 +0,0 @@ -// Copyright 2014 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.devtools.build.lib.rules.cpp; - -import com.google.devtools.build.lib.analysis.Runfiles; -import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcRunfilesApi; - -/** - * Runfiles for C++ targets. - * - * <p>Contains two {@link Runfiles} objects: one for the statically linked binary and one for the - * dynamically linked binary. Both contain dynamic libraries needed at runtime and data - * dependencies. - */ -// TODO(plf): Remove class once Skylark rules have been migrated off it. -@Immutable -@AutoCodec -public final class CcRunfiles implements CcRunfilesApi { - - @Override - public Runfiles getRunfilesForLinkingStatically() { - return Runfiles.EMPTY; - } - - @Override - public Runfiles getRunfilesForLinkingDynamically() { - return Runfiles.EMPTY; - } - -}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java index 16b80b2..a019a33 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java
@@ -1174,11 +1174,6 @@ return cppOptions.disableEmittingStaticLibgcc; } - /** Returns true if the deprecated CcDynamicLibrariesForRuntime class should be used */ - public boolean enableCcDynamicLibrariesForRuntime() { - return cppOptions.enableCcDynamicLibrariesForRuntime; - } - private void checkForToolchainSkylarkApiAvailability() throws EvalException { if (cppOptions.disableLegacyToolchainSkylarkApi || !cppOptions.enableLegacyToolchainSkylarkApi) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java index 23abe86..4c6d078 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppOptions.java
@@ -837,17 +837,6 @@ public boolean disableLegacyCrosstoolFields; @Option( - name = "experimental_enable_cc_dynlibs_for_runtime", - defaultValue = "true", - documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, - effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS, OptionEffectTag.EAGERNESS_TO_EXIT}, - metadataTags = {OptionMetadataTag.EXPERIMENTAL}, - help = - "If false, Blaze will not propagate runtime libs through CcDynamicLibrariesForRuntime " - + "field of CcLinkingInfo. See b/111289526.") - public boolean enableCcDynamicLibrariesForRuntime; - - @Option( name = "experimental_linkopts_in_user_link_flags", defaultValue = "false", documentationCategory = OptionDocumentationCategory.UNDOCUMENTED,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcDynamicLibrariesForRuntimeApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcDynamicLibrariesForRuntimeApi.java deleted file mode 100644 index 69f2840..0000000 --- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcDynamicLibrariesForRuntimeApi.java +++ /dev/null
@@ -1,27 +0,0 @@ -// Copyright 2018 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.devtools.build.lib.skylarkbuildapi.cpp; - -import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; -import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; - - /** An object that contains the dynamic libraries for runtime of a C++ rule. */ -@SkylarkModule( - name = "cc_dynamic_libraries_for_runtime", - documented = false, - category = SkylarkModuleCategory.PROVIDER, - doc = ".") -public interface CcDynamicLibrariesForRuntimeApi { -}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingInfoApi.java index 590d005..ab24cc0 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingInfoApi.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcLinkingInfoApi.java
@@ -31,13 +31,6 @@ public interface CcLinkingInfoApi extends StructApi { @SkylarkCallable( - name = "cc_runfiles", - documented = false, - allowReturnNones = true, - structField = true) - public CcRunfilesApi getCcRunfiles(); - - @SkylarkCallable( name = "static_mode_params_for_dynamic_library", documented = false, allowReturnNones = true,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcRunfilesApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcRunfilesApi.java deleted file mode 100644 index eb49e2e..0000000 --- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcRunfilesApi.java +++ /dev/null
@@ -1,38 +0,0 @@ -// Copyright 2018 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.devtools.build.lib.skylarkbuildapi.cpp; - -import com.google.devtools.build.lib.analysis.Runfiles; -import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; -import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; -import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; - -/** Interface for Runfiles of C++ targets. */ -@SkylarkModule( - name = "cc_runfiles", - category = SkylarkModuleCategory.NONE, - doc = - "CC runfiles. Separated into files needed for linking statically and files needed for " - + "linking dynamically.") -public interface CcRunfilesApi { - @SkylarkCallable(name = "runfiles_for_linking_statically", documented = false, structField = true) - Runfiles getRunfilesForLinkingStatically(); - - @SkylarkCallable( - name = "runfiles_for_linking_dynamically", - documented = false, - structField = true) - Runfiles getRunfilesForLinkingDynamically(); -}