From 4569195d9ca4c41595bed69d66b1ecb7771c11f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Po=C5=82awski?= Date: Fri, 31 Jan 2025 17:48:35 +0100 Subject: [PATCH] Update anaconda variables source Anaconda IsFinal property use to be processed out of ANACONDA_ISFINAL environmental variable. This commit changes this behaviour to use RELEASE_TYPE variable out of /etc/os-release instead. Related change in Fedora spec file: - https://src.fedoraproject.org/rpms/fedora-release/pull-request/347 Resolves: INSTALLER-4068 --- pyanaconda/core/product.py | 13 +++++++++++-- .../pyanaconda_tests/core/test_product.py | 12 +++++++++++- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/pyanaconda/core/product.py b/pyanaconda/core/product.py index 1e126438c56..cdd7d5f5f49 100644 --- a/pyanaconda/core/product.py +++ b/pyanaconda/core/product.py @@ -69,7 +69,7 @@ def get_product_values(): Order of precedence for the values is: 1) Buildstamp file specified by the PRODBUILDPATH environment variable 2) Buildstamp file /.buildstamp - 3) Environment variable ANACONDA_ISFINAL + 3) ANACONDA_ISFINAL based on /etc/os-release RELEASE_TYPE field 4) In absence of any data, fall back to "false" :return: Data about product @@ -80,7 +80,16 @@ def get_product_values(): # .buildstamp, environment, stupid last ditch hardcoded defaults. config = configparser.ConfigParser() config.add_section("Main") - config.set("Main", "IsFinal", os.environ.get("ANACONDA_ISFINAL", "false")) + + # Get IsFinal property from /etc/os-release file + with open('/etc/os-release') as file: + for line in file: + key, value = line.split('=') + value = value.strip() + if key == 'RELEASE_TYPE': + config.set("Main", "IsFinal", str(value in {'release', 'stable'})) + os.environ["ANACONDA_ISFINAL"] = str(value in {'release', 'stable'}) + config.set("Main", "Product", os.environ.get("ANACONDA_PRODUCTNAME", "anaconda")) config.set("Main", "Version", os.environ.get("ANACONDA_PRODUCTVERSION", "bluesky")) diff --git a/tests/unit_tests/pyanaconda_tests/core/test_product.py b/tests/unit_tests/pyanaconda_tests/core/test_product.py index f9b252c77bd..5d0595426b8 100644 --- a/tests/unit_tests/pyanaconda_tests/core/test_product.py +++ b/tests/unit_tests/pyanaconda_tests/core/test_product.py @@ -154,7 +154,17 @@ def test_buildstamp_multiple(self, mock_cfp_open): @patch("pyanaconda.core.product.configparser.open", side_effect=FileNotFoundError) def test_env(self, mock_cfp_open): """Test product values loaded from environment variables.""" - values = get_product_values() + # ANACONDA_ISFINAL variable is processed out of /etc/os-release host file + FAKE_OS_RELEASE = "" + FAKE_OS_RELEASE += 'NAME="Fedora Linux"\n' + FAKE_OS_RELEASE += 'VERSION="41 (Workstation Edition)"\n' + FAKE_OS_RELEASE += 'RELEASE_TYPE=stable\n' + FAKE_OS_RELEASE += 'ID=fedora\n' + + m = mock_open(read_data=FAKE_OS_RELEASE) + with patch("builtins.open", m): + values = get_product_values() + expected = ProductData(True, "TestProduct", "rawhide", "testproduct") assert values == expected