dlc: Implement --mount-file-required argument
- build_dlc.py takes --mount-file-required argument.
- Generate the imageloader.json with mount-file-required field.
BUG=chromium:1051570
TEST=emerge-$B dummy-dlc # then check DLC meta json
TEST=./run_tests
TEST=cros deploy $IP dummy-dlc # then check DLC meta json in rootfs
Change-Id: If8fd4fb183dfeb37f54af17dbbccc0aff2addf23
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2268417
Tested-by: Jae Hoon Kim <kimjae@chromium.org>
Auto-Submit: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Andrew Lassalle <andrewlassalle@chromium.org>
Commit-Queue: Andrew Lassalle <andrewlassalle@chromium.org>
diff --git a/lib/dlc_lib.py b/lib/dlc_lib.py
index 20a779f..1f7e53c 100644
--- a/lib/dlc_lib.py
+++ b/lib/dlc_lib.py
@@ -95,12 +95,14 @@
name: (str) DLC name.
description: (str) DLC description.
preload: (bool) allow for preloading DLC.
+ mount_file_required: (bool) allow for mount file generation for DLC.
used_by: (str) The user of this DLC, e.g. "system" or "user"
fullnamerev: (str) The full package & version name.
"""
def __init__(self, dlc_id, dlc_package, fs_type, pre_allocated_blocks,
- version, name, description, preload, used_by, fullnamerev):
+ version, name, description, preload, used_by,
+ mount_file_required, fullnamerev):
self.dlc_id = dlc_id
self.dlc_package = dlc_package
self.fs_type = fs_type
@@ -110,6 +112,7 @@
self.description = description
self.preload = preload
self.used_by = used_by
+ self.mount_file_required = mount_file_required
self.fullnamerev = fullnamerev
def StoreDlcParameters(self, install_root_dir, sudo):
@@ -432,6 +435,7 @@
'version': self.ebuild_params.version,
'preload-allowed': self.ebuild_params.preload,
'used-by': self.ebuild_params.used_by,
+ 'mount-file-required': self.ebuild_params.mount_file_required,
}
def GenerateVerity(self):
diff --git a/lib/dlc_lib_unittest.py b/lib/dlc_lib_unittest.py
index 19c5edc..1478054 100644
--- a/lib/dlc_lib_unittest.py
+++ b/lib/dlc_lib_unittest.py
@@ -89,6 +89,7 @@
version=_VERSION,
preload=False,
used_by=dlc_lib.USED_BY_SYSTEM,
+ mount_file_required=False,
fullnamerev=_FULLNAME_REV):
"""Tests EbuildParams JSON values"""
self.assertDictEqual(ebuild_params,
@@ -101,6 +102,7 @@
'description': description,
'preload': preload,
'used_by': used_by,
+ 'mount_file_required': mount_file_required,
'fullnamerev': fullnamerev})
def GenerateParams(self,
@@ -114,6 +116,7 @@
version=_VERSION,
preload=False,
used_by=dlc_lib.USED_BY_SYSTEM,
+ mount_file_required=False,
fullnamerev=_FULLNAME_REV):
"""Creates and Stores DLC params at install_root_dir"""
params = dlc_lib.EbuildParams(
@@ -126,6 +129,7 @@
version=version,
preload=preload,
used_by=used_by,
+ mount_file_required=mount_file_required,
fullnamerev=fullnamerev)
return params.StoreDlcParameters(
install_root_dir=install_root_dir, sudo=False)
@@ -179,6 +183,7 @@
version=_VERSION,
preload=False,
used_by=dlc_lib.USED_BY_SYSTEM,
+ mount_file_required=False,
fullnamerev=_FULLNAME_REV)
return dlc_lib.DlcGenerator(
ebuild_params=params,
@@ -275,6 +280,7 @@
'version': _VERSION,
'is-removable': True,
'manifest-version': 1,
+ 'mount-file-required': False,
'preload-allowed': False,
'used-by': dlc_lib.USED_BY_SYSTEM,
})
diff --git a/scripts/build_dlc.py b/scripts/build_dlc.py
index 4b7598b..45a2a1c 100644
--- a/scripts/build_dlc.py
+++ b/scripts/build_dlc.py
@@ -94,6 +94,11 @@
'dlcservice does ref counting when DLC is installed/uninstalled. For '
'"system", there will be no such provisions.')
one_dlc.add_argument(
+ '--mount-file-required',
+ default=False,
+ action='store_true',
+ help='Allow indirect mount file generation for DLC.')
+ one_dlc.add_argument(
'--build-package',
default=False,
action='store_true',
@@ -160,6 +165,7 @@
pre_allocated_blocks=opts.pre_allocated_blocks,
version=opts.version,
preload=opts.preload,
+ mount_file_required=opts.mount_file_required,
used_by=opts.used_by,
fullnamerev=opts.fullnamerev)
params.StoreDlcParameters(install_root_dir=opts.install_root_dir, sudo=True)