build: remove now-unneeded function from target_config_lib.lua

target_config.lua and target_config_check.lua don't pass a table of
callbacks anymore, so target_config_lib.lua can by simplified by moving
all the code that was in the returned function to the toplevel.
This commit is contained in:
Matthias Schiffer 2020-05-26 23:30:05 +02:00
parent 9e23534ec3
commit 3ce43329f5
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C
11 changed files with 161 additions and 160 deletions

View File

@ -1,4 +1,4 @@
local lib = dofile('scripts/target_config_lib.lua')() local lib = dofile('scripts/target_config_lib.lua')
for _, config in pairs(lib.configs) do for _, config in pairs(lib.configs) do
io.stdout:write(config:format(), '\n') io.stdout:write(config:format(), '\n')

View File

@ -24,7 +24,7 @@ local function check_config(config)
end end
local lib = dofile('scripts/target_config_lib.lua')() local lib = dofile('scripts/target_config_lib.lua')
for _, config in pairs(lib.configs) do for _, config in pairs(lib.configs) do
if config.required then if config.required then

View File

@ -1,3 +1,20 @@
local lib = dofile('scripts/target_lib.lua')
local env = lib.env
local target = env.GLUON_TARGET
assert(target)
assert(env.BOARD)
assert(env.SUBTARGET)
local openwrt_config_target
if env.SUBTARGET ~= '' then
openwrt_config_target = env.BOARD .. '_' .. env.SUBTARGET
else
openwrt_config_target = env.BOARD
end
-- Split a string into words -- Split a string into words
local function split(s) local function split(s)
local ret = {} local ret = {}
@ -40,52 +57,37 @@ local function compact_list(list, keep_neg)
return ret return ret
end end
return function()
local lib = dofile('scripts/target_lib.lua')
local env = lib.env
local target = env.GLUON_TARGET local function site_vars(var)
return lib.exec_capture_raw(string.format(
assert(target) [[
assert(env.BOARD) MAKEFLAGS= make print _GLUON_SITE_VARS_=%s --no-print-directory -s -f - <<'END_MAKE'
assert(env.SUBTARGET)
local openwrt_config_target
if env.SUBTARGET ~= '' then
openwrt_config_target = env.BOARD .. '_' .. env.SUBTARGET
else
openwrt_config_target = env.BOARD
end
local function site_vars(var)
return lib.exec_capture_raw(string.format([[
MAKEFLAGS= make print _GLUON_SITE_VARS_=%s --no-print-directory -s -f - <<'END_MAKE'
include $(GLUON_SITEDIR)/site.mk include $(GLUON_SITEDIR)/site.mk
print: print:
echo -n '$(_GLUON_SITE_VARS_)' echo -n '$(_GLUON_SITE_VARS_)'
END_MAKE END_MAKE
]], lib.escape(var))) ]],
end lib.escape(var)))
end
local function site_packages(image) local function site_packages(image)
return split(site_vars(string.format('$(GLUON_%s_SITE_PACKAGES)', image))) return split(site_vars(string.format('$(GLUON_%s_SITE_PACKAGES)', image)))
end end
-- TODO: Rewrite features.sh in Lua -- TODO: Rewrite features.sh in Lua
local function feature_packages(features) local function feature_packages(features)
-- Ugly hack: Lua doesn't give us the return code of a popened -- Ugly hack: Lua doesn't give us the return code of a popened
-- command, so we match on a special __ERROR__ marker -- command, so we match on a special __ERROR__ marker
local pkgs = lib.exec_capture({'scripts/features.sh', features}, '|| echo __ERROR__') local pkgs = lib.exec_capture({'scripts/features.sh', features}, '|| echo __ERROR__')
assert(string.find(pkgs, '__ERROR__') == nil, 'Error while evaluating features') assert(string.find(pkgs, '__ERROR__') == nil, 'Error while evaluating features')
return pkgs return pkgs
end end
-- This involves running lots of processes to evaluate site.mk, so we -- This involves running lots of processes to evaluate site.mk, so we
-- add a simple cache -- add a simple cache
local class_cache = {} local class_cache = {}
local function class_packages(class) local function class_packages(class)
if class_cache[class] then if class_cache[class] then
return class_cache[class] return class_cache[class]
end end
@ -100,26 +102,26 @@ END_MAKE
class_cache[class] = pkgs class_cache[class] = pkgs
return pkgs return pkgs
end end
local enabled_packages = {} local enabled_packages = {}
-- Arguments: package name and config value (true: y, nil: m, false: unset) -- Arguments: package name and config value (true: y, nil: m, false: unset)
-- Ensures precedence of y > m > unset -- Ensures precedence of y > m > unset
local function config_package(pkg, v) local function config_package(pkg, v)
if v == false then if v == false then
if not enabled_packages[pkg] then if not enabled_packages[pkg] then
lib.try_config('CONFIG_PACKAGE_' .. pkg, false) lib.try_config('PACKAGE_' .. pkg, false)
end end
return return
end end
if v == true or not enabled_packages[pkg] then if v == true or not enabled_packages[pkg] then
lib.config('CONFIG_PACKAGE_' .. pkg, v, string.format("unable to enable package '%s'", pkg)) lib.config('PACKAGE_' .. pkg, v, string.format("unable to enable package '%s'", pkg))
enabled_packages[pkg] = true enabled_packages[pkg] = true
end end
end end
local function handle_target_pkgs(pkgs) local function handle_target_pkgs(pkgs)
for _, pkg in ipairs(pkgs) do for _, pkg in ipairs(pkgs) do
if string.sub(pkg, 1, 1) == '-' then if string.sub(pkg, 1, 1) == '-' then
config_package(string.sub(pkg, 2), false) config_package(string.sub(pkg, 2), false)
@ -127,20 +129,20 @@ END_MAKE
config_package(pkg, true) config_package(pkg, true)
end end
end end
end end
lib.include('generic') lib.include('generic')
lib.include(target) lib.include(target)
lib.check_devices() lib.check_devices()
if not lib.opkg then if not lib.opkg then
lib.config('CONFIG_SIGNED_PACKAGES', false) lib.config('SIGNED_PACKAGES', false)
lib.config('CONFIG_CLEAN_IPKG', true) lib.config('CLEAN_IPKG', true)
lib.packages {'-opkg'} lib.packages {'-opkg'}
end end
if #lib.devices > 0 then if #lib.devices > 0 then
handle_target_pkgs(lib.target_packages) handle_target_pkgs(lib.target_packages)
for _, dev in ipairs(lib.devices) do for _, dev in ipairs(lib.devices) do
@ -161,17 +163,17 @@ END_MAKE
handle_pkgs(dev.options.packages or {}) handle_pkgs(dev.options.packages or {})
handle_pkgs(site_packages(dev.image)) handle_pkgs(site_packages(dev.image))
local profile_config = string.format('%s_DEVICE_%s', openwrt_config_target, profile)
lib.config( lib.config(
string.format('CONFIG_TARGET_DEVICE_%s_DEVICE_%s', openwrt_config_target, profile), 'TARGET_DEVICE_' .. profile_config, true,
true,
string.format("unable to enable device '%s'", profile) string.format("unable to enable device '%s'", profile)
) )
lib.config( lib.config(
string.format('CONFIG_TARGET_DEVICE_PACKAGES_%s_DEVICE_%s', openwrt_config_target, profile), 'TARGET_DEVICE_PACKAGES_' .. profile_config,
table.concat(device_pkgs, ' ') table.concat(device_pkgs, ' ')
) )
end end
else else
-- x86 fallback: no devices -- x86 fallback: no devices
local target_pkgs = {} local target_pkgs = {}
local function handle_pkgs(pkgs) local function handle_pkgs(pkgs)
@ -187,7 +189,6 @@ END_MAKE
handle_pkgs(class_packages('standard')) handle_pkgs(class_packages('standard'))
handle_target_pkgs(target_pkgs) handle_target_pkgs(target_pkgs)
end
return lib
end end
return lib

View File

@ -164,7 +164,7 @@ local function format_config(k, v)
else else
format = '%s=%d' format = '%s=%d'
end end
return string.format(format, k, v) return string.format(format, 'CONFIG_' .. k, v)
end end
local config_mt = { local config_mt = {

View File

@ -1,5 +1,5 @@
config('CONFIG_GLUON_SPECIALIZE_KERNEL', true) config('GLUON_SPECIALIZE_KERNEL', true)
config('CONFIG_TARGET_SQUASHFS_BLOCK_SIZE', 64) config('TARGET_SQUASHFS_BLOCK_SIZE', 64)
local ATH10K_PACKAGES = { local ATH10K_PACKAGES = {
'kmod-ath10k', 'kmod-ath10k',

View File

@ -1,4 +1,4 @@
config('CONFIG_GLUON_SPECIALIZE_KERNEL', true) config('GLUON_SPECIALIZE_KERNEL', true)
defaults { defaults {
factory = false, factory = false,

View File

@ -1,4 +1,4 @@
config('CONFIG_GLUON_SPECIALIZE_KERNEL', true) config('GLUON_SPECIALIZE_KERNEL', true)
local ATH10K_PACKAGES = {'kmod-ath10k', '-kmod-ath10k-ct', 'ath10k-firmware-qca988x', '-ath10k-firmware-qca988x-ct'} local ATH10K_PACKAGES = {'kmod-ath10k', '-kmod-ath10k-ct', 'ath10k-firmware-qca988x', '-ath10k-firmware-qca988x-ct'}

View File

@ -1,4 +1,4 @@
config('CONFIG_GLUON_SPECIALIZE_KERNEL', true) config('GLUON_SPECIALIZE_KERNEL', true)
no_opkg() no_opkg()

View File

@ -1,21 +1,21 @@
assert(env.GLUON_LANGS) assert(env.GLUON_LANGS)
config('CONFIG_GLUON_SITEDIR', env.GLUON_SITEDIR) config('GLUON_SITEDIR', env.GLUON_SITEDIR)
config('CONFIG_GLUON_RELEASE', env.GLUON_RELEASE) config('GLUON_RELEASE', env.GLUON_RELEASE)
try_config('CONFIG_GLUON_BRANCH', env.GLUON_BRANCH or '') try_config('GLUON_BRANCH', env.GLUON_BRANCH or '')
for lang in string.gmatch(env.GLUON_LANGS, '%S+') do for lang in string.gmatch(env.GLUON_LANGS, '%S+') do
try_config('CONFIG_GLUON_WEB_LANG_' .. lang, true) try_config('GLUON_WEB_LANG_' .. lang, true)
end end
config('CONFIG_TARGET_' .. env.BOARD, true) config('TARGET_' .. env.BOARD, true)
if env.SUBTARGET ~= '' then if env.SUBTARGET ~= '' then
config(string.format('CONFIG_TARGET_%s_%s', env.BOARD, env.SUBTARGET), true) config(string.format('TARGET_%s_%s', env.BOARD, env.SUBTARGET), true)
end end
-- Disable non-default feeds in distfeeds.conf -- Disable non-default feeds in distfeeds.conf
config('CONFIG_FEED_gluon_base', false) config('FEED_gluon_base', false)
local default_feeds = {} local default_feeds = {}
for feed in string.gmatch(exec_capture_raw('. scripts/default_feeds.sh && echo "$DEFAULT_FEEDS"'), '%S+') do for feed in string.gmatch(exec_capture_raw('. scripts/default_feeds.sh && echo "$DEFAULT_FEEDS"'), '%S+') do
@ -24,46 +24,46 @@ end
for feed in string.gmatch(exec_capture_raw('. scripts/modules.sh && echo -n "$FEEDS"'), '%S+') do for feed in string.gmatch(exec_capture_raw('. scripts/modules.sh && echo -n "$FEEDS"'), '%S+') do
if not default_feeds[feed] then if not default_feeds[feed] then
config('CONFIG_FEED_' .. feed, false) config('FEED_' .. feed, false)
end end
end end
config('CONFIG_TARGET_ROOTFS_INITRAMFS', false) config('TARGET_ROOTFS_INITRAMFS', false)
config('CONFIG_DEVEL', true) config('DEVEL', true)
config('CONFIG_ALL_NONSHARED', true) config('ALL_NONSHARED', true)
config('CONFIG_PACKAGE_usbip', false) -- fails to build config('PACKAGE_usbip', false) -- fails to build
config('CONFIG_PACKAGE_kmod-jool', false) -- fails to build config('PACKAGE_kmod-jool', false) -- fails to build
config('CONFIG_BUSYBOX_CUSTOM', true) config('BUSYBOX_CUSTOM', true)
config('CONFIG_BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS', false) config('BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS', false)
config('CONFIG_PACKAGE_ATH_DEBUG', true) config('PACKAGE_ATH_DEBUG', true)
try_config('CONFIG_TARGET_SQUASHFS_BLOCK_SIZE', 256) try_config('TARGET_SQUASHFS_BLOCK_SIZE', 256)
config('CONFIG_KERNEL_IP_MROUTE', false) config('KERNEL_IP_MROUTE', false)
config('CONFIG_KERNEL_IPV6_MROUTE', false) config('KERNEL_IPV6_MROUTE', false)
try_config('CONFIG_TARGET_MULTI_PROFILE', true) try_config('TARGET_MULTI_PROFILE', true)
try_config('CONFIG_TARGET_PER_DEVICE_ROOTFS', true) try_config('TARGET_PER_DEVICE_ROOTFS', true)
config('CONFIG_GLUON_MULTIDOMAIN', istrue(env.GLUON_MULTIDOMAIN)) config('GLUON_MULTIDOMAIN', istrue(env.GLUON_MULTIDOMAIN))
config('CONFIG_AUTOREMOVE', istrue(env.GLUON_AUTOREMOVE)) config('AUTOREMOVE', istrue(env.GLUON_AUTOREMOVE))
if istrue(env.GLUON_DEBUG) then if istrue(env.GLUON_DEBUG) then
config('CONFIG_DEBUG', true) config('DEBUG', true)
config('CONFIG_NO_STRIP', true) config('NO_STRIP', true)
config('CONFIG_USE_STRIP', false) config('USE_STRIP', false)
config('CONFIG_USE_SSTRIP', false) config('USE_SSTRIP', false)
try_config('CONFIG_TARGET_ROOTFS_PARTSIZE', 500) try_config('TARGET_ROOTFS_PARTSIZE', 500)
end end
config('CONFIG_GLUON_MINIFY', istrue(env.GLUON_MINIFY)) config('GLUON_MINIFY', istrue(env.GLUON_MINIFY))
packages { packages {
'-kmod-ipt-offload', '-kmod-ipt-offload',

View File

@ -1,5 +1,5 @@
config('CONFIG_KERNEL_KALLSYMS', false) config('KERNEL_KALLSYMS', false)
config('CONFIG_GLUON_SPECIALIZE_KERNEL', true) config('GLUON_SPECIALIZE_KERNEL', true)
no_opkg() no_opkg()

View File

@ -1,5 +1,5 @@
config('CONFIG_VDI_IMAGES', true) config('VDI_IMAGES', true)
config('CONFIG_VMDK_IMAGES', true) config('VMDK_IMAGES', true)
packages { packages {
'kmod-3c59x', 'kmod-3c59x',