aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2017-07-11 16:50:27 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-11 18:26:15 +0200
commit64a6c153fe3650d1c28b5f5b44dd41032f0c28cc (patch)
tree087f04461e1770e91e20125f89604b3afbd86e03 /src/main/java/com/google/devtools/build/lib/rules
parent2d05de2185920e9270edcfcc66e2e8b92668864d (diff)
Add register_toolchains function to the WORKSPACE for registering toolchains to use.
Part of #2219. Change-Id: Id6dfe6ec102f609bb19461242a098bf977be29ae PiperOrigin-RevId: 161527986
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/ExternalPackageUtil.java19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/ExternalPackageUtil.java b/src/main/java/com/google/devtools/build/lib/rules/ExternalPackageUtil.java
index 4a73d05cdb..3a68b46903 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/ExternalPackageUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/ExternalPackageUtil.java
@@ -26,6 +26,7 @@ import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.Package;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.skyframe.PackageLookupValue;
+import com.google.devtools.build.lib.skyframe.PackageValue;
import com.google.devtools.build.lib.skyframe.WorkspaceFileValue;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.util.Preconditions;
@@ -171,6 +172,24 @@ public class ExternalPackageUtil {
return rule;
}
+ /**
+ * Loads the external package and then returns the registered toolchain labels.
+ *
+ * @param env the environment to use for lookups
+ */
+ @Nullable
+ public static List<Label> getRegisteredToolchainLabels(Environment env)
+ throws ExternalPackageException, InterruptedException {
+ PackageValue externalPackageValue =
+ (PackageValue) env.getValue(PackageValue.key(Label.EXTERNAL_PACKAGE_IDENTIFIER));
+ if (externalPackageValue == null) {
+ return null;
+ }
+
+ Package externalPackage = externalPackageValue.getPackage();
+ return externalPackage.getRegisteredToolchainLabels();
+ }
+
/** Exception thrown when something goes wrong accessing a rule. */
public static class ExternalPackageException extends SkyFunctionException {
public ExternalPackageException(NoSuchPackageException cause, Transience transience) {