diff --git a/scripts/image_customization_lib.lua b/scripts/image_customization_lib.lua index 26d99db2cef6b0fd4ab274b83938a4bb1c37834c..1c06702050d9cc3370a4d3da0da910b76d5cb494 100644 --- a/scripts/image_customization_lib.lua +++ b/scripts/image_customization_lib.lua @@ -22,16 +22,17 @@ local function get_customization_file_name(env) end local function evaluate_device(env, dev) - local selections = {} + local selections = { + feature = {}, + package = {}, + } local funcs = {} local device_overrides = {} local function add_elements(element_type, element_list) + -- We depend on the fact both feature and package + -- are already initialized as empty tables for _, element in ipairs(element_list) do - if not selections[element_type] then - selections[element_type] = {} - end - selections[element_type][element] = true end end @@ -111,13 +112,23 @@ local function evaluate_device(env, dev) } end -function M.get_selection(selection_type, env, dev) +function M.get_selections(env, dev) + local return_object = { + features = {}, + packages = {}, + } + if not file_exists(get_customization_file_name(env)) then - return {} + return return_object end local eval_result = evaluate_device(env, dev) - return collect_keys(eval_result.selections[selection_type] or {}) + return_object = { + features = collect_keys(eval_result.selections['feature']), + packages = collect_keys(eval_result.selections['package']), + } + + return return_object end function M.device_overrides(env, dev) diff --git a/scripts/target_config_lib.lua b/scripts/target_config_lib.lua index becfd7a89621b3ec1560268d5d139b59b7295775..f83d1bcc7ad8207f06e2ef1fa3efed6bba385fbd 100644 --- a/scripts/target_config_lib.lua +++ b/scripts/target_config_lib.lua @@ -87,19 +87,23 @@ local function feature_packages(features) end local function site_specific_packages(dev_info) + local site_selections local site_packages local feature_inherited_pkgs local site_features + -- Get all enabled selections from image-customization + site_selections = image_customization_lib.get_selections(env, dev_info) + -- First read enabled features from site - site_features = image_customization_lib.get_selection('feature', env, dev_info) + site_features = site_selections['features'] site_features = compact_list(site_features, false) -- Create List from packages inherited from features feature_inherited_pkgs = feature_packages(site_features) -- Read list of packages from site - site_packages = image_customization_lib.get_selection('package', env, dev_info) + site_packages = site_selections['packages'] -- Concat feature-packages with site-packages local pkgs = concat_list(feature_inherited_pkgs, site_packages)