diff options
author | 2017-07-11 16:50:27 +0200 | |
---|---|---|
committer | 2017-07-11 18:26:15 +0200 | |
commit | 64a6c153fe3650d1c28b5f5b44dd41032f0c28cc (patch) | |
tree | 087f04461e1770e91e20125f89604b3afbd86e03 /src/main/java/com/google/devtools/build/lib/rules | |
parent | 2d05de2185920e9270edcfcc66e2e8b92668864d (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.java | 19 |
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) { |