build_dlc: Add --used-by flag
This flag allows us to define the user of DLC and make proper actions to
whether ref-count the DLC or not.
BUG=chromium:1069162
TEST=CQ passes
TEST=build_dlc_unittest
Exempt-From-Owner-Approval: Owner already approved with minor nits.
Change-Id: I997efaa21e0979ebb9fbb54ee9834e4bb2022b76
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2148146
Commit-Queue: Amin Hassani <ahassani@chromium.org>
Tested-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Jae Hoon Kim <kimjae@chromium.org>
Reviewed-by: Andrew Lassalle <andrewlassalle@chromium.org>
diff --git a/scripts/build_dlc.py b/scripts/build_dlc.py
index c65413a..9e9ccf5 100644
--- a/scripts/build_dlc.py
+++ b/scripts/build_dlc.py
@@ -43,6 +43,9 @@
_SQUASHFS_TYPE = 'squashfs'
_EXT4_TYPE = 'ext4'
+_USED_BY_USER = 'user'
+_USED_BY_SYSTEM = 'system'
+
MAX_ID_NAME = 40
@@ -87,10 +90,11 @@
name: (str) DLC name.
description: (str) DLC description.
preload: (bool) allow for preloading DLC.
+ used_by: (str) The user of this DLC, e.g. "system" or "user"
"""
def __init__(self, dlc_id, dlc_package, fs_type, pre_allocated_blocks,
- version, name, description, preload):
+ version, name, description, preload, used_by):
self.dlc_id = dlc_id
self.dlc_package = dlc_package
self.fs_type = fs_type
@@ -99,6 +103,7 @@
self.name = name
self.description = description
self.preload = preload
+ self.used_by = used_by
def StoreDlcParameters(self, install_root_dir, sudo):
"""Store DLC parameters defined in the ebuild.
@@ -399,6 +404,7 @@
'table-sha256-hash': table_hash,
'version': self.ebuild_params.version,
'preload-allowed': self.ebuild_params.preload,
+ 'used-by': self.ebuild_params.used_by,
}
def GenerateVerity(self):
@@ -663,6 +669,13 @@
action='store_true',
help='Allow preloading of DLC.')
one_dlc.add_argument(
+ '--used-by', default=_USED_BY_SYSTEM,
+ choices=(_USED_BY_USER, _USED_BY_SYSTEM),
+ help='Defines how this DLC will be used so dlcservice can take proper '
+ 'actions based on the type of usage. For example, if "user" is passed, '
+ 'dlcservice does ref counting when DLC is installed/uninstalled. For '
+ '"system", there will be no such provisions.')
+ one_dlc.add_argument(
'--build-package',
default=False,
action='store_true',
@@ -759,7 +772,8 @@
description=opts.description,
pre_allocated_blocks=opts.pre_allocated_blocks,
version=opts.version,
- preload=opts.preload)
+ preload=opts.preload,
+ used_by=opts.used_by)
params.StoreDlcParameters(install_root_dir=opts.install_root_dir, sudo=True)
else: