project-lakitu: change cos-package-info.json interface
Changed "version" to use BUILD_ID
Added "ebuild_version" which represents
<package-version>-r<revision-number>
BUG=b/182949109
TEST=presubmit
RELEASE_NOTE=None
Change-Id: Ie5cdc2d17e6959fda65a98efeda05bf7d60eac4c
Reviewed-on: https://cos-review.googlesource.com/c/cos/overlays/board-overlays/+/14671
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
Reviewed-by: Anil Altinay <aaltinay@google.com>
diff --git a/project-lakitu/scripts/board_specific_setup.sh b/project-lakitu/scripts/board_specific_setup.sh
index 707a57f..9e47a82 100644
--- a/project-lakitu/scripts/board_specific_setup.sh
+++ b/project-lakitu/scripts/board_specific_setup.sh
@@ -142,7 +142,8 @@
local -r script_root="$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")"
sudo "${script_root}/create_pkg_info.py" \
--input="installedPackages:${runtime_pkg_file},buildTimePackages:${buildtime_pkg_file}" \
- --output="${root_fs_dir}"/etc/cos-package-info.json
+ --output="${root_fs_dir}"/etc/cos-package-info.json \
+ --build-id="${CHROMEOS_VERSION_STRING}"
cleanup_temp_package_dir
trap - EXIT
diff --git a/project-lakitu/scripts/create_pkg_info.py b/project-lakitu/scripts/create_pkg_info.py
index 0bdf253..d1ad2dd 100755
--- a/project-lakitu/scripts/create_pkg_info.py
+++ b/project-lakitu/scripts/create_pkg_info.py
@@ -45,7 +45,8 @@
def PrintHelp():
print('usage: create_pkg_list.py --input=<comma separated list '
- 'of pkg_type:pkg_info_file > --output=<output file>')
+ 'of pkg_type:pkg_info_file> --build-id=<build id> '
+ '--output=<output file>')
def CreateList(input_lines):
@@ -58,7 +59,7 @@
return package_list
-def WriteJson(pkg_info, output_file):
+def WriteJson(pkg_info, build_id, output_file):
result = {}
for pkg_type, pkg_list in pkg_info.items():
packages = []
@@ -66,11 +67,12 @@
package_info = collections.OrderedDict(
[('category', p['category']),
('name', p['package']),
- ('version', p['version_no_rev'])
+ ('version', build_id),
+ ('ebuild_version', p['version_no_rev'])
]
)
if 'revision' in p and p['revision'] is not None:
- package_info['revision'] = p['revision']
+ package_info['ebuild_version'] += '-r' + p['revision']
packages.append(package_info)
@@ -83,9 +85,10 @@
def main(argv):
input_fn = ''
output_fn = ''
+ build_id = ''
try:
- opts, args_left = getopt.getopt(argv, '', ['help', 'input=', 'output='])
+ opts, args_left = getopt.getopt(argv, '', ['help', 'input=', 'output=', 'build-id='])
except getopt.GetoptError:
PrintHelp()
return -1
@@ -100,6 +103,8 @@
input_fn = arg
elif opt == '--output':
output_fn = arg
+ elif opt == '--build-id':
+ build_id = arg
if input_fn == '' or output_fn == '':
PrintHelp()
@@ -130,7 +135,7 @@
try:
with open(output_fn, 'w') as output_file:
- ret = WriteJson(pkg_info, output_file)
+ ret = WriteJson(pkg_info, build_id, output_file)
if ret != 0:
print('error: Failed to write package info')
return ret
diff --git a/project-lakitu/scripts/create_pkg_info_unittest.py b/project-lakitu/scripts/create_pkg_info_unittest.py
index 5907871..c91bab1 100755
--- a/project-lakitu/scripts/create_pkg_info_unittest.py
+++ b/project-lakitu/scripts/create_pkg_info_unittest.py
@@ -114,155 +114,165 @@
{
"category": "app-arch",
"name": "gzip",
- "version": "1.9"
+ "version": "123.0.1",
+ "ebuild_version": "1.9"
},
{
"category": "dev-libs",
"name": "popt",
- "version": "1.16",
- "revision": "2"
+ "version": "123.0.1",
+ "ebuild_version": "1.16-r2"
},
{
"category": "app-emulation",
"name": "docker-credential-helpers",
- "version": "0.6.3",
- "revision": "1"
+ "version": "123.0.1",
+ "ebuild_version": "0.6.3-r1"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package1",
- "version": "12.34.56.78"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package2",
- "version": "12.34.56.78",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package3",
- "version": "12.34.56.78_rc3"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78_rc3"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package4",
- "version": "12.34.56.78_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78_rc3-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package5",
- "version": "12.34.56.78_pre2_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78_pre2_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package1",
- "version": "12.34.56.78q"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package2",
- "version": "12.34.56.78q",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package3",
- "version": "12.34.56.78q_rc3"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q_rc3"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package4",
- "version": "12.34.56.78q_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package5",
- "version": "12.34.56.78q_pre2_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q_pre2_rc3-r26"
}
],
"buildTimePackages": [
{
"category": "virtual",
"name": "pkgconfig",
- "version": "0",
- "revision": "1"
+ "version": "123.0.1",
+ "ebuild_version": "0-r1"
},
{
"category": "dev-go",
"name": "protobuf",
- "version": "1.3.2",
- "revision": "1"
+ "version": "123.0.1",
+ "ebuild_version": "1.3.2-r1"
},
{
"category": "app-emulation",
"name": "docker-credential-helpers",
- "version": "0.6.3",
- "revision": "1"
+ "version": "123.0.1",
+ "ebuild_version": "0.6.3-r1"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package1",
- "version": "12.34.56.78"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package2",
- "version": "12.34.56.78",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package3",
- "version": "12.34.56.78_rc3"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78_rc3"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package4",
- "version": "12.34.56.78_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78_rc3-r26"
},
{
"category": "_not.real-category1+",
"name": "_not-real_package5",
- "version": "12.34.56.78_pre2_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78_pre2_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package1",
- "version": "12.34.56.78q"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package2",
- "version": "12.34.56.78q",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package3",
- "version": "12.34.56.78q_rc3"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q_rc3"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package4",
- "version": "12.34.56.78q_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q_rc3-r26"
},
{
"category": "_not.real-category2+",
"name": "_not-real_package5",
- "version": "12.34.56.78q_pre2_rc3",
- "revision": "26"
+ "version": "123.0.1",
+ "ebuild_version": "12.34.56.78q_pre2_rc3-r26"
}
]
}"""
+
def __init__(self, *args, **kwargs):
unittest.TestCase.__init__(self, *args, **kwargs)
self.maxDiff = None
@@ -281,7 +291,8 @@
'installedPackages': self.INSTALLED_PKG_EXPECTED_LIST,
'buildTimePackages': self.BUILDTIME_PKG_EXPECTED_LIST,
}
- create_pkg_info.WriteJson(pkg_info, mock_file)
+ create_pkg_info.WriteJson(pkg_info, '123.0.1', mock_file)
+ print(mock_file.getvalue())
self.assertEqual(mock_file.getvalue(), self.EXPECTED_JSON)
mock_file.close()