Created
May 20, 2016 15:53
-
-
Save lberki/8599ef20a5243e326dd3b784e93f7f81 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/main/java/com/google/devtools/build/lib/rules/Alias.java b/src/main/java/com/google/devtools/build/lib/rules/Alias.java | |
index a24c537..11abd0e 100644 | |
--- a/src/main/java/com/google/devtools/build/lib/rules/Alias.java | |
+++ b/src/main/java/com/google/devtools/build/lib/rules/Alias.java | |
@@ -38,6 +38,7 @@ public class Alias implements RuleConfiguredTargetFactory { | |
public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { | |
ConfiguredTarget actual = (ConfiguredTarget) ruleContext.getPrerequisite("actual", Mode.TARGET); | |
return new AliasConfiguredTarget( | |
+ ruleContext.getConfiguration(), | |
actual, | |
ImmutableMap.of( | |
AliasProvider.class, AliasProvider.fromAliasRule(ruleContext.getLabel(), actual), | |
diff --git a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java | |
index c7d2387..074832f 100644 | |
--- a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java | |
+++ b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java | |
@@ -38,13 +38,15 @@ import com.google.devtools.build.lib.syntax.SkylarkNestedSet; | |
*/ | |
@Immutable | |
public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObject { | |
- private final ConfiguredTarget configuredTarget; | |
+ private final BuildConfiguration configuration; | |
+ private final ConfiguredTarget actual; | |
private final ImmutableMap<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> | |
overrides; | |
- public AliasConfiguredTarget(ConfiguredTarget actual, | |
+ public AliasConfiguredTarget(BuildConfiguration configuration, ConfiguredTarget actual, | |
ImmutableMap<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider> overrides) { | |
- configuredTarget = actual; | |
+ this.configuration = configuration; | |
+ this.actual = actual; | |
this.overrides = overrides; | |
} | |
@@ -54,27 +56,29 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec | |
return provider.cast(overrides.get(provider)); | |
} | |
- return configuredTarget == null ? null : configuredTarget.getProvider(provider); | |
+ return actual == null ? null : actual.getProvider(provider); | |
} | |
@Override | |
public Label getLabel() { | |
- return configuredTarget.getLabel(); | |
+ return actual.getLabel(); | |
} | |
@Override | |
public Object get(String providerKey) { | |
- return configuredTarget == null ? null : configuredTarget.get(providerKey); | |
+ return actual == null ? null : actual.get(providerKey); | |
} | |
@Override | |
public Target getTarget() { | |
- return configuredTarget == null ? null : configuredTarget.getTarget(); | |
+ return actual == null ? null : actual.getTarget(); | |
} | |
@Override | |
public BuildConfiguration getConfiguration() { | |
- return configuredTarget.getConfiguration(); | |
+ // actual might be an input file, in which case its configuration is null and we don't want to | |
+ // have rules that have a null configuration | |
+ return configuration; | |
} | |
/* ClassObject methods */ | |
@@ -87,18 +91,18 @@ public final class AliasConfiguredTarget implements ConfiguredTarget, ClassObjec | |
// A shortcut for files to build in Skylark. FileConfiguredTarget and RunleConfiguredTarget | |
// always has FileProvider and Error- and PackageGroupConfiguredTarget-s shouldn't be | |
// accessible in Skylark. | |
- return SkylarkNestedSet.of(Artifact.class, configuredTarget == null | |
+ return SkylarkNestedSet.of(Artifact.class, actual == null | |
? NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER) | |
: getProvider(FileProvider.class).getFilesToBuild()); | |
} | |
- return configuredTarget == null ? null : configuredTarget.get(name); | |
+ return actual == null ? null : actual.get(name); | |
} | |
@Override | |
public ImmutableCollection<String> getKeys() { | |
ImmutableList.Builder<String> result = ImmutableList.<String>builder().add("label", "files"); | |
- if (configuredTarget != null) { | |
- result.addAll(configuredTarget.getProvider(SkylarkProviders.class).getKeys()); | |
+ if (actual != null) { | |
+ result.addAll(actual.getProvider(SkylarkProviders.class).getKeys()); | |
} | |
return result.build(); | |
} | |
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/Bind.java b/src/main/java/com/google/devtools/build/lib/rules/repository/Bind.java | |
index a832903..f042902 100644 | |
--- a/src/main/java/com/google/devtools/build/lib/rules/repository/Bind.java | |
+++ b/src/main/java/com/google/devtools/build/lib/rules/repository/Bind.java | |
@@ -37,7 +37,9 @@ public class Bind implements RuleConfiguredTargetFactory { | |
} | |
ConfiguredTarget actual = (ConfiguredTarget) ruleContext.getPrerequisite("actual", Mode.TARGET); | |
- return new AliasConfiguredTarget(actual, | |
+ return new AliasConfiguredTarget( | |
+ ruleContext.getConfiguration(), | |
+ actual, | |
ImmutableMap.<Class<? extends TransitiveInfoProvider>, TransitiveInfoProvider>of( | |
AliasProvider.class, AliasProvider.fromAliasRule(ruleContext.getLabel(), actual))); | |
} | |
diff --git a/src/test/shell/bazel/external_integration_test.sh b/src/test/shell/bazel/external_integration_test.sh | |
index 3350fc2..41138f3 100755 | |
--- a/src/test/shell/bazel/external_integration_test.sh | |
+++ b/src/test/shell/bazel/external_integration_test.sh | |
@@ -831,4 +831,15 @@ EOF | |
expect_log "//external:androidsdk" | |
} | |
+function test_build_with_aliased_input_file() { | |
+ mkdir -p a | |
+ cat > a/BUILD <<EOF | |
+exports_files(['f']) | |
+alias(name='a', actual=':f') | |
+EOF | |
+ | |
+ touch a/f | |
+ bazel build //a:a || fail "build failed" | |
+} | |
+ | |
run_suite "external tests" | |
diff --git a/tools/jdk/BUILD b/tools/jdk/BUILD | |
index 96581b0..fe373fc 100644 | |
--- a/tools/jdk/BUILD | |
+++ b/tools/jdk/BUILD | |
@@ -128,6 +128,7 @@ java_toolchain( | |
singlejar = ["//tools/jdk:SingleJar_deploy.jar"], | |
source_version = "8", | |
target_version = "8", | |
+ misc = ["-g:source,lines,vars"], | |
) | |
filegroup( |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment