From 83406bc586a74e978faa91c2325c466f7273b505 Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Wed, 20 Dec 2023 12:59:24 +0100
Subject: [PATCH] build image-customization: create init routine

Create an init routine which loads the environment only once instead
every evaluation.

Signed-off-by: David Bauer <mail@david-bauer.net>
---
 scripts/image_customization_lib.lua | 16 ++++++++++------
 scripts/target_config_lib.lua       |  4 +++-
 scripts/target_lib.lua              | 10 ++++------
 3 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/scripts/image_customization_lib.lua b/scripts/image_customization_lib.lua
index 51ee70ae4..e978b934f 100644
--- a/scripts/image_customization_lib.lua
+++ b/scripts/image_customization_lib.lua
@@ -104,27 +104,31 @@ local function evaluate_device(env, dev)
 	}
 end
 
-function M.get_selections(env, dev)
+function M.get_selections(dev)
 	local return_object = {
 		features = {},
 		packages = {},
 	}
 
-	if not file_exists(get_customization_file_name(env)) then
+	if not file_exists(get_customization_file_name(M.env)) then
 		return return_object
 	end
 
-	local eval_result = evaluate_device(env, dev)
+	local eval_result = evaluate_device(M.env, dev)
 	return eval_result.selections
 end
 
-function M.device_overrides(env, dev)
-	if not file_exists(get_customization_file_name(env)) then
+function M.device_overrides(dev)
+	if not file_exists(get_customization_file_name(M.env)) then
 		return {}
 	end
 
-	local eval_result = evaluate_device(env, dev)
+	local eval_result = evaluate_device(M.env, dev)
 	return eval_result.device_overrides
 end
 
+function M.init(env)
+	M.env = env
+end
+
 return M
diff --git a/scripts/target_config_lib.lua b/scripts/target_config_lib.lua
index fc06f23e6..c20e64013 100644
--- a/scripts/target_config_lib.lua
+++ b/scripts/target_config_lib.lua
@@ -16,6 +16,8 @@ else
 	openwrt_config_target = env.BOARD
 end
 
+-- Initialize image-customization
+image_customization_lib.init(env)
 
 -- Split a string into words
 local function split(s)
@@ -93,7 +95,7 @@ local function site_specific_packages(dev_info)
 	local site_features
 
 	-- Get all enabled selections from image-customization.lua
-	site_selections = image_customization_lib.get_selections(env, dev_info)
+	site_selections = image_customization_lib.get_selections(dev_info)
 
 	-- First read enabled features from site
 	site_features = site_selections['features']
diff --git a/scripts/target_lib.lua b/scripts/target_lib.lua
index 5d8b645ad..c4e499d20 100644
--- a/scripts/target_lib.lua
+++ b/scripts/target_lib.lua
@@ -31,6 +31,8 @@ M.configs = {}
 M.devices = {}
 M.images = {}
 
+-- Initialize image-customization
+image_customization_lib.init(env)
 
 local default_options = {
 	factory = '-squashfs-factory',
@@ -57,10 +59,6 @@ function F.istrue(v)
 	return (tonumber(v) or 0) > 0
 end
 
-local function get_device_overrides(device_info)
-	return image_customization_lib.device_overrides(env, device_info)
-end
-
 local function device_broken(device_info, overrides)
 	if F.istrue(env.BROKEN) then
 		return false
@@ -76,7 +74,7 @@ local function device_broken(device_info, overrides)
 end
 
 local function want_device(device_info)
-	local overrides = get_device_overrides(device_info)
+	local overrides = image_customization_lib.device_overrides(device_info)
 
 	-- Check if device is disabled via image-customization.lua in site
 	if overrides['disabled'] then
@@ -240,7 +238,7 @@ local function disable_factory_image(device_info)
 		return true
 	end
 
-	local overrides = get_device_overrides(device_info)
+	local overrides = image_customization_lib.device_overrides(device_info)
 	if overrides["disable_factory"] then
 		return true
 	end
-- 
GitLab