cros_generate_os_release: fill several generic os-release fields
With this change the script will add the following fields in the
/etc/os-release: NAME, ID, HOME_URL, VERSION, VERSION_ID, BUILD_ID.
All of them are only added if they are not already set during
image build.
BUG=b:27841076
TEST=cros_generate_os_release_unittest
Change-Id: I23af1fa83c8ffd09dbf58d0ed19e4c2b2c0ae9db
Reviewed-on: https://chromium-review.googlesource.com/342485
Commit-Ready: Andrey Ulanov <andreyu@google.com>
Tested-by: Andrey Ulanov <andreyu@google.com>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/cros_generate_os_release.py b/scripts/cros_generate_os_release.py
index 0214666..8ab6697 100644
--- a/scripts/cros_generate_os_release.py
+++ b/scripts/cros_generate_os_release.py
@@ -13,11 +13,13 @@
from chromite.lib import osutils
-def GenerateOsRelease(root):
+def GenerateOsRelease(root, default_params=None):
"""Adds contents of /etc/os-release.d into /etc/os-release
Args:
root: path to the root directory where os-release should be genereated.
+ default_params: a dict of os-release parameters that should be added
+ if not already set.
"""
os_release_path = os.path.join(root, 'etc', 'os-release')
os_released_path = os.path.join(root, 'etc', 'os-release.d')
@@ -48,16 +50,34 @@
mapping[key] = osutils.ReadFile(os.path.join(os_released_path,
filepath)).strip('\n')
+ if default_params:
+ for key, value in default_params.iteritems():
+ mapping.setdefault(key, value)
+
osrelease_content = '\n'.join([k + '=' + mapping[k] for k in mapping])
osrelease_content += '\n'
osutils.WriteFile(os_release_path, osrelease_content)
-
def main(argv):
parser = commandline.ArgumentParser(description=__doc__)
parser.add_argument('--root', type='path', required=True,
help='sysroot of the board')
+ parser.add_argument('--version', help='The image version string.')
+ parser.add_argument('--build_id', help='The image build ID string.')
options = parser.parse_args(argv)
options.Freeze()
- GenerateOsRelease(options.root)
+ default_params = {
+ 'NAME': 'Chromium OS',
+ 'ID': 'chromiumos',
+ 'HOME_URL': 'https://www.chromium.org/chromium-os',
+ 'BUG_REPORT_URL': 'https://crbug.com/new',
+ }
+
+ if options.version:
+ default_params['VERSION'] = options.version
+ default_params['VERSION_ID'] = options.version
+ if options.build_id:
+ default_params['BUILD_ID'] = options.build_id
+
+ GenerateOsRelease(options.root, default_params)