Merge "release_config: implement disallow_lunch_use" into main
diff --git a/cmd/release_config/release_config/main.go b/cmd/release_config/release_config/main.go
index d06b2b7..7013d6b 100644
--- a/cmd/release_config/release_config/main.go
+++ b/cmd/release_config/release_config/main.go
@@ -95,7 +95,7 @@
if allMake {
// Write one makefile per release config, using the canonical release name.
for _, c := range configs.GetSortedReleaseConfigs() {
- if c.Name != targetRelease {
+ if c.Name != targetRelease && !c.DisallowLunchUse {
makefilePath = filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.varmk", product, c.Name))
err = config.WriteMakefile(makefilePath, c.Name, configs)
if err != nil {
diff --git a/cmd/release_config/release_config_lib/release_config.go b/cmd/release_config/release_config_lib/release_config.go
index 719ddc0..873f2fc 100644
--- a/cmd/release_config/release_config_lib/release_config.go
+++ b/cmd/release_config/release_config_lib/release_config.go
@@ -67,6 +67,9 @@
// overrides. Build flag value overrides are an error.
AconfigFlagsOnly bool
+ // True if this release config is not allowed as TARGET_RELEASE.
+ DisallowLunchUse bool
+
// Unmarshalled flag artifacts
FlagArtifacts FlagArtifacts
@@ -93,6 +96,11 @@
// If true, this is a proper release config that can be used in "lunch".
func (config *ReleaseConfig) isConfigListable() bool {
+ // Do not list disallowed release configs.
+ if config.DisallowLunchUse {
+ return false
+ }
+ // Logic based on ReleaseConfigType.
switch config.ReleaseConfigType {
case rc_proto.ReleaseConfigType_RELEASE_CONFIG:
return true
@@ -405,6 +413,7 @@
ValueDirectories: valueDirectories,
PriorStages: SortedMapKeys(config.PriorStagesMap),
ReleaseConfigType: config.ReleaseConfigType.Enum(),
+ DisallowLunchUse: proto.Bool(config.DisallowLunchUse),
}
config.compileInProgress = false
@@ -481,6 +490,9 @@
}
// As it stands this list is not per-product, but conceptually it is, and will be.
data += fmt.Sprintf("ALL_RELEASE_CONFIGS_FOR_PRODUCT :=$= %s\n", strings.Join(configs.GetAllReleaseNames(), " "))
+ if config.DisallowLunchUse {
+ data += fmt.Sprintf("_disallow_lunch_use :=$= true\n")
+ }
data += fmt.Sprintf("_used_files := %s\n", strings.Join(config.GetSortedFileList(), " "))
data += fmt.Sprintf("_ALL_RELEASE_FLAGS :=$= %s\n", strings.Join(names, " "))
for _, pName := range pNames {
diff --git a/cmd/release_config/release_config_lib/release_configs.go b/cmd/release_config/release_config_lib/release_configs.go
index 4f621c7..b0f8cb7 100644
--- a/cmd/release_config/release_config_lib/release_configs.go
+++ b/cmd/release_config/release_config_lib/release_configs.go
@@ -378,6 +378,7 @@
return fmt.Errorf("%s mismatching ReleaseConfigType value %s", path, *releaseConfigType)
}
config.FilesUsedMap[path] = true
+ config.DisallowLunchUse = config.DisallowLunchUse || releaseConfigContribution.proto.GetDisallowLunchUse()
inheritNames := make(map[string]bool)
for _, inh := range config.InheritNames {
inheritNames[inh] = true