aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java32
1 files changed, 7 insertions, 25 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
index d878e90f63..21d0d307c5 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileAction.java
@@ -43,7 +43,6 @@ import com.google.devtools.build.lib.analysis.actions.ExecutionInfoSpecifier;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.PerLabelOptions;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.collect.CollectionUtils;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -329,15 +328,10 @@ public class CppCompileAction extends AbstractAction
continue;
}
- // One starting ../ is okay for getting to a sibling repository.
- PathFragment originalInclude = include;
- if (include.startsWith(new PathFragment(Label.EXTERNAL_PATH_PREFIX))) {
- include = include.relativeTo(Label.EXTERNAL_PATH_PREFIX);
- }
-
- if (include.isAbsolute() || !include.normalize().isNormalized()) {
- ruleContext.ruleError("The include path '" + originalInclude
- + "' references a path outside of the execution root.");
+ if (include.isAbsolute()
+ || !PathFragment.EMPTY_FRAGMENT.getRelative(include).normalize().isNormalized()) {
+ ruleContext.ruleError(
+ "The include path '" + include + "' references a path outside of the execution root.");
}
}
}
@@ -977,7 +971,6 @@ public class CppCompileAction extends AbstractAction
if (execPath.getBaseName().endsWith(".pcm")) {
continue;
}
- RepositoryName repositoryName = RepositoryName.MAIN;
PathFragment execPathFragment = execPath.asFragment();
if (execPathFragment.isAbsolute()) {
// Absolute includes from system paths are ignored.
@@ -990,25 +983,14 @@ public class CppCompileAction extends AbstractAction
// the build with an error.
if (execPath.startsWith(execRoot)) {
execPathFragment = execPath.relativeTo(execRoot); // funky but tolerable path
- } else if (execPath.startsWith(execRoot.getParentDirectory())) {
- // External repository.
- execPathFragment = execPath.relativeTo(execRoot.getParentDirectory());
- String workspace = execPathFragment.getSegment(0);
- execPathFragment = execPathFragment.relativeTo(workspace);
- try {
- repositoryName = RepositoryName.create("@" + workspace);
- } catch (LabelSyntaxException e) {
- throw new IllegalStateException(workspace + " is not a valid repository name");
- }
} else {
problems.add(execPathFragment.getPathString());
continue;
}
}
- Artifact artifact = allowedDerivedInputsMap.get(
- repositoryName.getPathUnderExecRoot().getRelative(execPathFragment));
+ Artifact artifact = allowedDerivedInputsMap.get(execPathFragment);
if (artifact == null) {
- artifact = artifactResolver.resolveSourceArtifact(execPathFragment, repositoryName);
+ artifact = artifactResolver.resolveSourceArtifact(execPathFragment, RepositoryName.MAIN);
}
if (artifact != null) {
inputs.add(artifact);
@@ -1021,7 +1003,7 @@ public class CppCompileAction extends AbstractAction
problems.add(execPathFragment.getPathString());
}
}
- //TODO(b/22551695): Remove in favor of separate implementations.
+ //TODO(b/22551695): Remove in favor of seperate implementations.
if (semantics == null || semantics.needsIncludeValidation()) {
problems.assertProblemFree(this, getSourceFile());
}