diff options
author | 2015-06-09 09:38:36 +0000 | |
---|---|---|
committer | 2015-06-09 09:57:29 +0000 | |
commit | f0cf38dd09ad9f00d5aab109ebf6a21d0fd2f0a3 (patch) | |
tree | c40aed37d4cd2e2074a4511436d8323eb89bfb0e /src/main/java/com/google/devtools/build/lib/packages | |
parent | 91e3a14e244b541913e9c1ee6a8fb4dd1aa7f681 (diff) |
Make it possible to put the Crosstool proto in BUILD files.
This is needed so that Bazel can access Android NDK if it's outside of the workspace. The current limitation is that we Bazel can pretend that there is a BUILD file there, but cannot do the same with a CROSSTOOL file. We could fix that limitation, but given that Crosstool is the only conceivable use case, let's fix it by changing the Blaze-Crosstool interface.
--
MOS_MIGRATED_REVID=95517408
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages')
3 files changed, 20 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageSerializer.java b/src/main/java/com/google/devtools/build/lib/packages/PackageSerializer.java index 75067b726d..16b318cb62 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/PackageSerializer.java +++ b/src/main/java/com/google/devtools/build/lib/packages/PackageSerializer.java @@ -19,6 +19,7 @@ import static com.google.devtools.build.lib.packages.Type.FILESET_ENTRY_LIST; import static com.google.devtools.build.lib.packages.Type.INTEGER; import static com.google.devtools.build.lib.packages.Type.INTEGER_LIST; import static com.google.devtools.build.lib.packages.Type.LABEL; +import static com.google.devtools.build.lib.packages.Type.LABEL_DICT_UNARY; import static com.google.devtools.build.lib.packages.Type.LABEL_LIST; import static com.google.devtools.build.lib.packages.Type.LABEL_LIST_DICT; import static com.google.devtools.build.lib.packages.Type.LICENSE; @@ -252,6 +253,17 @@ public class PackageSerializer { attrPb.addStringListDictValue(entry); } } + } else if (type == LABEL_DICT_UNARY) { + for (Object value : values) { + Map<String, Label> dict = (Map<String, Label>) value; + for (Map.Entry<String, Label> dictEntry : dict.entrySet()) { + Build.LabelDictUnaryEntry entry = Build.LabelDictUnaryEntry.newBuilder() + .setKey(dictEntry.getKey()) + .setValue(dictEntry.getValue().toString()) + .build(); + attrPb.addLabelDictUnaryValue(entry); + } + } } else if (type == LABEL_LIST_DICT) { for (Object value : values) { Map<String, List<Label>> dict = (Map<String, List<Label>>) value; diff --git a/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java b/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java index 7b6eaf1efa..653e283e84 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java +++ b/src/main/java/com/google/devtools/build/lib/packages/ProtoUtils.java @@ -20,6 +20,7 @@ import static com.google.devtools.build.lib.packages.Type.FILESET_ENTRY_LIST; import static com.google.devtools.build.lib.packages.Type.INTEGER; import static com.google.devtools.build.lib.packages.Type.INTEGER_LIST; import static com.google.devtools.build.lib.packages.Type.LABEL; +import static com.google.devtools.build.lib.packages.Type.LABEL_DICT_UNARY; import static com.google.devtools.build.lib.packages.Type.LABEL_LIST; import static com.google.devtools.build.lib.packages.Type.LABEL_LIST_DICT; import static com.google.devtools.build.lib.packages.Type.LICENSE; @@ -65,6 +66,7 @@ public class ProtoUtils { .put(LICENSE, Discriminator.LICENSE) .put(STRING_DICT, Discriminator.STRING_DICT) .put(FILESET_ENTRY_LIST, Discriminator.FILESET_ENTRY_LIST) + .put(LABEL_DICT_UNARY, Discriminator.LABEL_DICT_UNARY) .put(LABEL_LIST_DICT, Discriminator.LABEL_LIST_DICT) .put(STRING_LIST_DICT, Discriminator.STRING_LIST_DICT) .put(BOOLEAN, Discriminator.BOOLEAN) diff --git a/src/main/java/com/google/devtools/build/lib/packages/Type.java b/src/main/java/com/google/devtools/build/lib/packages/Type.java index b1ca03e8a0..96191626dc 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Type.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Type.java @@ -336,6 +336,11 @@ public abstract class Type<T> { DictType.create(STRING, LABEL_LIST); /** + * The type of a dictionary of {@linkplain #LABEL labels}. + */ + public static final DictType<String, Label> LABEL_DICT_UNARY = DictType.create(STRING, LABEL); + + /** * The type of a list of {@linkplain #FILESET_ENTRY FilesetEntries}. */ public static final ListType<FilesetEntry> FILESET_ENTRY_LIST = ListType.create(FILESET_ENTRY); @@ -1003,7 +1008,7 @@ public abstract class Type<T> { * Returns whether the specified type is a label type or not. */ public static boolean isLabelType(Type<?> type) { - return type == LABEL || type == LABEL_LIST + return type == LABEL || type == LABEL_LIST || type == LABEL_DICT_UNARY || type == NODEP_LABEL || type == NODEP_LABEL_LIST || type == LABEL_LIST_DICT || type == FILESET_ENTRY_LIST; } |