From 53f3057037b50e9cd4895152bf657b5213b6b633 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Thu, 30 May 2024 15:39:44 -0700 Subject: [PATCH] Add list_releases command Bug: 340648588 Test: list_releases Change-Id: Ibce4704c64620b74c24952f16c2be902d8483f02 --- bin/list_releases | 45 +++++++++++++++++++ .../release_config_lib/release_configs.go | 4 +- 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100755 bin/list_releases diff --git a/bin/list_releases b/bin/list_releases new file mode 100755 index 000000000..ca1811037 --- /dev/null +++ b/bin/list_releases @@ -0,0 +1,45 @@ +#!/bin/bash + +# Copyright (C) 2024 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +if [[ $# -eq 1 ]]; then + # Override anything that's already set + export TARGET_PRODUCT=$1 +elif [[ -z $TARGET_PRODUCT ]]; then + echo "Usage: list_releases [PRODUCT]" 1>&2 + echo "" 1>&2 + echo "If the optional PRODUCT parameter is bit provided, then TARGET_PRODUCT" 1>&2 + echo "must have been set, for example by lunch or banchan." 1>&2 + exit 1 +fi + + + +# Common script utilities +source $(cd $(dirname $BASH_SOURCE) &> /dev/null && pwd)/../../make/shell_utils.sh + +require_top + +# In almost call cases including get_build_var, TARGET_RELEASE is required, +# but the list of available products is not dependent on the release config +# (but note that the list of available release configs is dependent on the +# product). So for list_products, we'll just set it to trunk_staging, which +# exists everwhere, so we don't trigger the unspecified TARGET_RELEASE error. + +# We also unset TARGET_BUILD_APPS, so it doesn't interfere. + +TARGET_RELEASE=trunk_staging TARGET_BUILD_APPS= $TOP/build/soong/soong_ui.bash --dumpvar-mode ALL_RELEASE_CONFIGS_FOR_PRODUCT | sed 's/ /\n/g' + +exit $? diff --git a/cmd/release_config/release_config_lib/release_configs.go b/cmd/release_config/release_config_lib/release_configs.go index c62a78e76..a5b0d76b2 100644 --- a/cmd/release_config/release_config_lib/release_configs.go +++ b/cmd/release_config/release_config_lib/release_configs.go @@ -378,8 +378,8 @@ func (configs *ReleaseConfigs) WriteMakefile(outFile, targetRelease string) erro if targetRelease != config.Name { data += fmt.Sprintf("# User specified TARGET_RELEASE=%s\n", targetRelease) } - // The variable _all_release_configs will get deleted during processing, so do not mark it read-only. - data += fmt.Sprintf("_all_release_configs := %s\n", strings.Join(configs.GetAllReleaseNames(), " ")) + // 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(), " ")) 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 {