diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java index e4e907329095ad..2216d683fcd3cc 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java @@ -1050,6 +1050,19 @@ public LinkedHashMap getNormalizedCommandLineBuildVariables() { return flagValueByName; } + // Normalizes list of map entries by keeping only the last entry for each key. + private static List> normalizeEntries( + List> entries) { + LinkedHashMap normalizedEntries = new LinkedHashMap<>(); + for (Map.Entry entry : entries) { + normalizedEntries.put(entry.getKey(), entry.getValue()); + } + if (normalizedEntries.size() == entries.size()) { + return entries; + } + return normalizedEntries.entrySet().stream().map(SimpleEntry::new).collect(toImmutableList()); + } + /// Normalizes --features flags by sorting the values and having disables win over enables. private static List getNormalizedFeatures(List features) { // Parse out the features into a Map, where the boolean represents whether @@ -1104,6 +1117,11 @@ public CoreOptions getNormalized() { // Normalize features. result.defaultFeatures = getNormalizedFeatures(defaultFeatures); + result.actionEnvironment = normalizeEntries(actionEnvironment); + result.hostActionEnvironment = normalizeEntries(hostActionEnvironment); + result.testEnvironment = normalizeEntries(testEnvironment); + result.commandLineFlagAliases = normalizeEntries(commandLineFlagAliases); + return result; } }