diff options
author | 2017-11-24 07:26:00 -0800 | |
---|---|---|
committer | 2017-11-24 07:27:28 -0800 | |
commit | 967e910170fc497813f89a7aaa1d872540079ddf (patch) | |
tree | fb416c56db55804560d059c73ee8bb220aa5d249 /src/main/java/com/google/devtools | |
parent | a6ed4c01d374bcf98bf39c1efc12a0f4f20fe313 (diff) |
Remove useless abstractions in C++ rules after internal cleanup
RELNOTES:
PiperOrigin-RevId: 176844836
Diffstat (limited to 'src/main/java/com/google/devtools')
6 files changed, 22 insertions, 156 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java index 0751ec8826..b67e4ab043 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java @@ -14,8 +14,6 @@ package com.google.devtools.build.lib.bazel.rules.cpp; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -27,10 +25,8 @@ import com.google.devtools.build.lib.rules.cpp.CppCompileActionContext; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode; import com.google.devtools.build.lib.rules.cpp.CppSemantics; -import com.google.devtools.build.lib.rules.cpp.FeatureSpecification; import com.google.devtools.build.lib.rules.cpp.IncludeProcessing; import com.google.devtools.build.lib.rules.cpp.NoProcessing; -import com.google.devtools.build.lib.vfs.PathFragment; /** * C++ compilation semantics. @@ -45,25 +41,15 @@ public class BazelCppSemantics implements CppSemantics { } @Override - public PathFragment getEffectiveSourcePath(Artifact source) { - return source.getRootRelativePath(); - } - - @Override public void finalizeCompileActionBuilder( - RuleContext ruleContext, - CppCompileActionBuilder actionBuilder, - FeatureSpecification featureSpecification, - Predicate<String> coptsFilter, - ImmutableSet<String> features) { + RuleContext ruleContext, CppCompileActionBuilder actionBuilder) { actionBuilder .setCppConfiguration(ruleContext.getFragment(CppConfiguration.class)) .setActionContext(CppCompileActionContext.class) // Because Bazel does not support include scanning, we need the entire crosstool filegroup, // including header files, as opposed to just the "compile" filegroup. .addTransitiveMandatoryInputs(actionBuilder.getToolchain().getCrosstool()) - .setShouldScanIncludes(false) - .setCoptsFilter(coptsFilter); + .setShouldScanIncludes(false); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java index 87a04c9f7f..37db5839fe 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java @@ -1667,7 +1667,6 @@ public class CcToolchainFeatures implements Serializable { */ @Immutable public static class FeatureConfiguration { - private final FeatureSpecification featureSpecification; private final ImmutableSet<String> enabledFeatureNames; private final Iterable<Feature> enabledFeatures; private final ImmutableSet<String> enabledActionConfigActionNames; @@ -1694,7 +1693,6 @@ public class CcToolchainFeatures implements Serializable { Iterable<Feature> enabledFeatures, Iterable<ActionConfig> enabledActionConfigs, ImmutableMap<String, ActionConfig> actionConfigByActionName) { - this.featureSpecification = featureSpecification; this.enabledFeatures = enabledFeatures; this.actionConfigByActionName = actionConfigByActionName; @@ -1787,10 +1785,6 @@ public class CcToolchainFeatures implements Serializable { ActionConfig actionConfig = actionConfigByActionName.get(actionName); return actionConfig.getTool(enabledFeatureNames); } - - public FeatureSpecification getFeatureSpecification() { - return featureSpecification; - } } /** All artifact name patterns defined in this feature configuration. */ diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java index a28de87f26..ce582c3dde 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java @@ -424,8 +424,7 @@ public final class CppModel { */ public Artifact getHeaderModule(Artifact moduleMapArtifact) { PathFragment objectDir = CppHelper.getObjDirectory(ruleContext.getLabel()); - PathFragment outputName = objectDir.getRelative( - semantics.getEffectiveSourcePath(moduleMapArtifact)); + PathFragment outputName = objectDir.getRelative(moduleMapArtifact.getRootRelativePath()); return ruleContext.getRelatedArtifact(outputName, ".pcm"); } @@ -434,8 +433,7 @@ public final class CppModel { */ public Artifact getPicHeaderModule(Artifact moduleMapArtifact) { PathFragment objectDir = CppHelper.getObjDirectory(ruleContext.getLabel()); - PathFragment outputName = objectDir.getRelative( - semantics.getEffectiveSourcePath(moduleMapArtifact)); + PathFragment outputName = objectDir.getRelative(moduleMapArtifact.getRootRelativePath()); return ruleContext.getRelatedArtifact(outputName, ".pic.pcm"); } @@ -711,8 +709,8 @@ public final class CppModel { for (CppSource source : sourceFiles) { Artifact sourceArtifact = source.getSource(); Label sourceLabel = source.getLabel(); - String outputName = FileSystemUtils.removeExtension( - semantics.getEffectiveSourcePath(sourceArtifact)).getPathString(); + String outputName = + FileSystemUtils.removeExtension(sourceArtifact.getRootRelativePath()).getPathString(); CppCompileActionBuilder builder = initializeCompileAction(sourceArtifact); builder.setSemantics(semantics); @@ -805,12 +803,7 @@ public final class CppModel { /* ltoIndexingFile= */ null, builder.getContext().getCppModuleMap(), /* sourceSpecificBuildVariables= */ ImmutableMap.of()); - semantics.finalizeCompileActionBuilder( - ruleContext, - builder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, builder); CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext); env.registerAction(compileAction); Artifact tokenFile = compileAction.getOutputFile(); @@ -825,7 +818,7 @@ public final class CppModel { // If we find one, support needs to be added here. return; } - String outputName = semantics.getEffectiveSourcePath(module).getPathString(); + String outputName = module.getRootRelativePath().getPathString(); // TODO(djasper): Make this less hacky after refactoring how the PIC/noPIC actions are created. boolean pic = module.getFilename().contains(".pic."); @@ -835,7 +828,7 @@ public final class CppModel { builder.setPicMode(pic); builder.setOutputs( ruleContext, ArtifactCategory.OBJECT_FILE, outputName, isGenerateDotdFile(module)); - PathFragment ccRelativeName = semantics.getEffectiveSourcePath(module); + PathFragment ccRelativeName = module.getRootRelativePath(); String gcnoFileName = CppHelper.getArtifactNameForCategory( @@ -869,12 +862,7 @@ public final class CppModel { builder.setGcnoFile(gcnoFile); builder.setDwoFile(dwoFile); - semantics.finalizeCompileActionBuilder( - ruleContext, - builder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, builder); CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext); AnalysisEnvironment env = ruleContext.getAnalysisEnvironment(); env.registerAction(compileAction); @@ -899,8 +887,7 @@ public final class CppModel { // - it creates a header module (.pcm file). return createSourceAction( Label.parseAbsoluteUnchecked(cppModuleMap.getName()), - FileSystemUtils.removeExtension(semantics.getEffectiveSourcePath(moduleMapArtifact)) - .getPathString(), + FileSystemUtils.removeExtension(moduleMapArtifact.getRootRelativePath()).getPathString(), result, env, moduleMapArtifact, @@ -940,12 +927,7 @@ public final class CppModel { /* ltoIndexingFile= */ null, builder.getContext().getCppModuleMap(), /* sourceSpecificBuildVariables= */ ImmutableMap.of()); - semantics.finalizeCompileActionBuilder( - ruleContext, - builder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, builder); CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext); env.registerAction(compileAction); Artifact tokenFile = compileAction.getOutputFile(); @@ -968,7 +950,7 @@ public final class CppModel { Map<String, String> sourceSpecificBuildVariables) throws RuleErrorException { ImmutableList.Builder<Artifact> directOutputs = new ImmutableList.Builder<>(); - PathFragment ccRelativeName = semantics.getEffectiveSourcePath(sourceArtifact); + PathFragment ccRelativeName = sourceArtifact.getRootRelativePath(); if (CppHelper.isLipoOptimization(cppConfiguration, ccToolchain)) { // TODO(bazel-team): we shouldn't be needing this, merging context with the binary // is a superset of necessary information. @@ -1043,12 +1025,7 @@ public final class CppModel { picBuilder.setDwoFile(dwoFile); picBuilder.setLtoIndexingFile(ltoIndexingFile); - semantics.finalizeCompileActionBuilder( - ruleContext, - picBuilder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, picBuilder); CppCompileAction picAction = picBuilder.buildOrThrowRuleError(ruleContext); env.registerAction(picAction); directOutputs.add(picAction.getOutputFile()); @@ -1116,12 +1093,7 @@ public final class CppModel { builder.setDwoFile(noPicDwoFile); builder.setLtoIndexingFile(ltoIndexingFile); - semantics.finalizeCompileActionBuilder( - ruleContext, - builder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, builder); CppCompileAction compileAction = builder.buildOrThrowRuleError(ruleContext); env.registerAction(compileAction); Artifact objectFile = compileAction.getOutputFile(); @@ -1162,12 +1134,7 @@ public final class CppModel { /* ltoIndexingFile= */ null, builder.getContext().getCppModuleMap(), source.getBuildVariables()); - semantics.finalizeCompileActionBuilder( - ruleContext, - builder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, builder); // Make sure this builder doesn't reference ruleContext outside of analysis phase. CppCompileActionTemplate actionTemplate = new CppCompileActionTemplate( @@ -1225,12 +1192,7 @@ public final class CppModel { /* ltoIndexingFile= */ null, builder.getContext().getCppModuleMap(), /* sourceSpecificBuildVariables= */ ImmutableMap.of()); - semantics.finalizeCompileActionBuilder( - ruleContext, - builder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, builder); CppCompileAction action = builder.buildOrThrowRuleError(ruleContext); env.registerAction(action); if (addObject) { @@ -1557,6 +1519,7 @@ public final class CppModel { builder.setSourceFile(source); builder.setContext(context); builder.addEnvironment(ccToolchain.getEnvironment()); + builder.setCoptsFilter(coptsFilter); return builder; } @@ -1615,12 +1578,7 @@ public final class CppModel { /* ltoIndexingFile= */ null, builder.getContext().getCppModuleMap(), /* sourceSpecificBuildVariables= */ ImmutableMap.of()); - semantics.finalizeCompileActionBuilder( - ruleContext, - dBuilder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, dBuilder); CppCompileAction dAction = dBuilder.buildOrThrowRuleError(ruleContext); ruleContext.registerAction(dAction); @@ -1638,12 +1596,7 @@ public final class CppModel { /* ltoIndexingFile= */ null, builder.getContext().getCppModuleMap(), /* sourceSpecificBuildVariables= */ ImmutableMap.of()); - semantics.finalizeCompileActionBuilder( - ruleContext, - sdBuilder, - featureConfiguration.getFeatureSpecification(), - coptsFilter, - features); + semantics.finalizeCompileActionBuilder(ruleContext, sdBuilder); CppCompileAction sdAction = sdBuilder.buildOrThrowRuleError(ruleContext); ruleContext.registerAction(sdAction); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java index 3331cb1e0f..688f5f1ed1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java @@ -14,24 +14,15 @@ package com.google.devtools.build.lib.rules.cpp; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode; -import com.google.devtools.build.lib.vfs.PathFragment; /** * Pluggable C++ compilation semantics. */ public interface CppSemantics { - /** - * Returns the "effective source path" of a source file. - * - * <p>It is used, among other things, for computing the output path. - */ - PathFragment getEffectiveSourcePath(Artifact source); /** * Called before a C++ compile action is built. @@ -39,12 +30,7 @@ public interface CppSemantics { * <p>Gives the semantics implementation the opportunity to change compile actions at the last * minute. */ - void finalizeCompileActionBuilder( - RuleContext ruleContext, - CppCompileActionBuilder actionBuilder, - FeatureSpecification featureSpecification, - Predicate<String> coptsFilter, - ImmutableSet<String> features); + void finalizeCompileActionBuilder(RuleContext ruleContext, CppCompileActionBuilder actionBuilder); /** * Called before {@link CppCompilationContext}s are finalized. diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java index c26180792b..267bb5caab 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java @@ -18,7 +18,6 @@ import static com.google.devtools.build.lib.rules.objc.ObjcProvider.DYNAMIC_FRAM import static com.google.devtools.build.lib.rules.objc.ObjcProvider.HEADER; import static com.google.devtools.build.lib.rules.objc.ObjcProvider.STATIC_FRAMEWORK_FILE; -import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; @@ -32,7 +31,6 @@ import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode; import com.google.devtools.build.lib.rules.cpp.CppFileTypes; import com.google.devtools.build.lib.rules.cpp.CppSemantics; -import com.google.devtools.build.lib.rules.cpp.FeatureSpecification; import com.google.devtools.build.lib.rules.cpp.HeaderDiscovery.DotdPruningMode; import com.google.devtools.build.lib.rules.cpp.IncludeProcessing; import com.google.devtools.build.lib.util.FileTypeSet; @@ -90,17 +88,8 @@ public class ObjcCppSemantics implements CppSemantics { } @Override - public PathFragment getEffectiveSourcePath(Artifact source) { - return source.getRootRelativePath(); - } - - @Override public void finalizeCompileActionBuilder( - RuleContext ruleContext, - CppCompileActionBuilder actionBuilder, - FeatureSpecification featureSpecification, - Predicate<String> coptsFilter, - ImmutableSet<String> features) { + RuleContext ruleContext, CppCompileActionBuilder actionBuilder) { actionBuilder .setCppConfiguration(ruleContext.getFragment(CppConfiguration.class)) .setActionContext(CppCompileActionContext.class) @@ -108,7 +97,6 @@ public class ObjcCppSemantics implements CppSemantics { // including header files, as opposed to just the "compile" filegroup. .addTransitiveMandatoryInputs(actionBuilder.getToolchain().getCrosstool()) .setShouldScanIncludes(false) - .setCoptsFilter(coptsFilter) .addTransitiveMandatoryInputs(objcProvider.get(STATIC_FRAMEWORK_FILE)) .addTransitiveMandatoryInputs(objcProvider.get(DYNAMIC_FRAMEWORK_FILE)); diff --git a/src/main/java/com/google/devtools/build/lib/util/PatternWithEquality.java b/src/main/java/com/google/devtools/build/lib/util/PatternWithEquality.java deleted file mode 100644 index fa0cb2279c..0000000000 --- a/src/main/java/com/google/devtools/build/lib/util/PatternWithEquality.java +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015 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.util; - -import com.google.common.base.Preconditions; -import java.util.regex.Pattern; - -/** - * Shim to work around the issue that {@link Pattern} doesn't implement equality. Treats pattern as - * a {@link String} for equality-checking purposes. Thus, if two PatternWithEquality objects are - * equal, their internal Pattern objects are necessarily equal, although the converse does not hold. - */ -public final class PatternWithEquality { - public final Pattern pattern; - - public PatternWithEquality(Pattern pattern) { - this.pattern = Preconditions.checkNotNull(pattern); - } - - @Override - public int hashCode() { - return pattern.toString().hashCode(); - } - - @Override - public boolean equals(Object other) { - return (other instanceof PatternWithEquality) - && pattern.toString().equals(((PatternWithEquality) other).pattern.toString()); - } -} |