build: add option "GLUON_BUILDTYPE" to support other firmwares-types

This change adds the option "GLUON_BUILDTYPE", to support building other types of firmware
with the framework. With the generalization some of the gluon specific setup can be disabled
and it  will become more easy to use the framework for other projects. These gluon-specific
settings include:
* setup of "CONFIG_TARGET_DEVICE_" in scripts/target_config_lib.lua
* setup of "CONFIG_TARGET_DEVICE_PACKAGES_" in scripts/target_config_lib.lua
* most of the settings in  targets/generic

The targets/generic file is split into targets/generic and targets/generic_gluon. The
CONFIG_TARGET_DEVICE_ options of scripts/target_config_lib.lua will only be setup when
GLUON_BUILDTYPE is set to "gluon". By default GLUON_BUILDTYPE is "gluon" and the framework
will do as before.
Setting GLUON_BUILDTYPE to something different via environment/commandline, e.g. "ffberlin",
will skip the gluon-section in scripts/target_config_lib.lua and include targets/generic_ffberlin
in place of targets/generic_gluon.
This commit is contained in:
Sven Roederer 2019-10-28 13:36:10 +01:00 committed by Sven Roederer
parent 163427649c
commit 7d9bab9a8d
5 changed files with 255 additions and 68 deletions

View File

@ -56,6 +56,7 @@ GLUON_MULTIDOMAIN ?= 0
GLUON_AUTOREMOVE ?= 0
GLUON_DEBUG ?= 0
GLUON_MINIFY ?= 1
GLUON_BUILDTYPE ?= gluon
# Can be overridden via environment/command line/... to use the Gluon
# build system for non-Gluon builds
@ -66,8 +67,8 @@ endef
GLUON_VARS = \
GLUON_RELEASE GLUON_REGION GLUON_MULTIDOMAIN GLUON_AUTOREMOVE GLUON_DEBUG GLUON_MINIFY GLUON_DEPRECATED \
GLUON_DEVICES GLUON_TARGETSDIR GLUON_PATCHESDIR GLUON_TMPDIR GLUON_IMAGEDIR GLUON_PACKAGEDIR GLUON_DEBUGDIR \
GLUON_SITEDIR GLUON_RELEASE GLUON_AUTOUPDATER_BRANCH GLUON_AUTOUPDATER_ENABLED GLUON_LANGS GLUON_BASE_FEEDS \
GLUON_TARGET BOARD SUBTARGET
GLUON_SITEDIR GLUON_BUILDTYPE GLUON_RELEASE GLUON_AUTOUPDATER_BRANCH GLUON_AUTOUPDATER_ENABLED GLUON_LANGS \
GLUON_BASE_FEEDS GLUON_TARGET BOARD SUBTARGET
unexport $(GLUON_VARS)
GLUON_ENV = $(foreach var,$(GLUON_VARS),$(var)=$(call escape,$($(var))))

View File

@ -147,6 +147,7 @@ local function handle_target_pkgs(pkgs)
end
lib.include('generic')
lib.include('generic_' .. env.GLUON_BUILDTYPE)
lib.include(target)
lib.check_devices()
@ -179,15 +180,17 @@ if #lib.devices > 0 then
handle_pkgs(dev.options.packages or {})
handle_pkgs(site_packages(dev.image))
local profile_config = string.format('%s_DEVICE_%s', openwrt_config_target, profile)
lib.config(
'TARGET_DEVICE_' .. profile_config, true,
string.format("unable to enable device '%s'", profile)
)
lib.config(
'TARGET_DEVICE_PACKAGES_' .. profile_config,
table.concat(device_pkgs, ' ')
)
if env.GLUON_BUILDTYPE == 'gluon' then
local profile_config = string.format('%s_DEVICE_%s', openwrt_config_target, profile)
lib.config(
'TARGET_DEVICE_' .. profile_config, true,
string.format("unable to enable device '%s'", profile)
)
lib.config(
'TARGET_DEVICE_PACKAGES_' .. profile_config,
table.concat(device_pkgs, ' ')
)
end
end
else
-- x86 fallback: no devices

View File

@ -1,24 +1,8 @@
assert(env.GLUON_LANGS)
config('GLUON_SITEDIR', env.GLUON_SITEDIR)
config('GLUON_RELEASE', env.GLUON_RELEASE)
try_config('GLUON_AUTOUPDATER_BRANCH', env.GLUON_AUTOUPDATER_BRANCH)
try_config('GLUON_AUTOUPDATER_ENABLED', istrue(env.GLUON_AUTOUPDATER_ENABLED))
for lang in string.gmatch(env.GLUON_LANGS, '%S+') do
try_config('GLUON_WEB_LANG_' .. lang, true)
end
config('TARGET_' .. env.BOARD, true)
if env.SUBTARGET ~= '' then
config(string.format('TARGET_%s_%s', env.BOARD, env.SUBTARGET), true)
end
-- Disable non-default feeds in distfeeds.conf
config('FEED_gluon_base', false)
local default_feeds = {}
for feed in string.gmatch(exec_capture_raw('. scripts/default_feeds.sh && echo "$DEFAULT_FEEDS"'), '%S+') do
default_feeds[feed] = true
@ -30,34 +14,6 @@ for feed in string.gmatch(exec_capture_raw('. scripts/modules.sh && echo -n "$FE
end
end
config('TARGET_ROOTFS_INITRAMFS', false)
config('DEVEL', true)
config('ALL_NONSHARED', true)
config('PACKAGE_usbip', false) -- fails to build
config('PACKAGE_kmod-jool', false) -- fails to build
config('BUSYBOX_CUSTOM', true)
config('BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS', false)
try_config('PACKAGE_ATH_DEBUG', true)
try_config('TARGET_SQUASHFS_BLOCK_SIZE', 256)
config('KERNEL_IP_MROUTE', false)
config('KERNEL_IPV6_MROUTE', false)
config('COLLECT_KERNEL_DEBUG', true)
try_config('TARGET_MULTI_PROFILE', true)
try_config('TARGET_PER_DEVICE_ROOTFS', true)
config('GLUON_MULTIDOMAIN', istrue(env.GLUON_MULTIDOMAIN))
config('AUTOREMOVE', istrue(env.GLUON_AUTOREMOVE))
if istrue(env.GLUON_DEBUG) then
config('DEBUG', true)
config('NO_STRIP', true)
@ -66,16 +22,3 @@ if istrue(env.GLUON_DEBUG) then
try_config('TARGET_ROOTFS_PARTSIZE', 500)
end
config('GLUON_MINIFY', istrue(env.GLUON_MINIFY))
packages {
'-kmod-ipt-offload',
'-odhcpd-ipv6only',
'-ppp',
'-ppp-mod-pppoe',
'-wpad-mini',
'-wpad-basic',
'gluon-core',
'ip6tables',
}

183
targets/generic_ffberlin Normal file
View File

@ -0,0 +1,183 @@
config('TARGET_ROOTFS_INITRAMFS', false)
config('TARGET_MULTI_PROFILE', true)
config('TARGET_ALL_PROFILES', true)
config('TARGET_PER_DEVICE_ROOTFS', true)
config('DEVEL', true)
config('TOOLCHAINOPTS', true)
config('ALFRED_NEEDS_lua', true)
--config('ATH_USER_REGD', true)
config('IB', true)
config('IMAGEOPT', true)
config('BUILD_LOG', true)
config('KERNEL_DEBUG_INFO', false)
config('KERNEL_DEBUG_KERNEL', false)
config('KERNEL_KALLSYMS', false)
--config('KMOD_BATMAN_ADV_DAT', true)
--config('KMOD_BATMAN_ADV_MCAST', true)
config('BUSYBOX_CUSTOM', true)
config('BUSYBOX_CONFIG_MKSWAP', false)
config('BUSYBOX_CONFIG_SWAPON', false)
config('BUSYBOX_CONFIG_SWAPOFF', false)
config('BUSYBOX_CONFIG_TELNET', true)
config('BUSYBOX_CONFIG_FEATURE_TELNET_TTYPE', true)
config('BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP', true)
config('PREINITOPT', true)
config('SDK', true)
config('STRIP_KERNEL_EXPORTS', true)
config('TARGET_PREINIT_IP="192.168.42.1"')
config('TARGET_PREINIT_NETMASK="255.255.255.0"')
config('TARGET_PREINIT_BROADCAST="192.168.42.255"')
config('VERSIONOPT', true)
config('VERSION_FILENAMES', true)
config('VERSION_CODE_FILENAMES', true)
config('VERSION_DIST="Freifunk Berlin"')
config('VERSION_HWREV=""')
config('VERSION_MANUFACTURER=""')
config('VERSION_NUMBER="Dev-daily-1907"')
config('VERSION_CODE=""')
config('VERSION_PRODUCT=""')
config('LUCI_SRCDIET', true)
--config('LUCI_LANG_de=m'
--config('LUCI_LANG_en=m'
--config('PACKAGE_kmod-batman-adv=m'
--config('PACKAGE_kmod-crypto-crc32c=m'
--config('PACKAGE_kmod-crypto-hash=m'
--config('PACKAGE_kmod-fs-cifs=m'
--config('PACKAGE_kmod-fs-ext4=m'
--config('PACKAGE_kmod-fs-vfat=m'
--config('PACKAGE_kmod-ifb=m'
--config('PACKAGE_kmod-ipip=m'
--config('PACKAGE_kmod-ipt-conntrack-extra=m'
--config('PACKAGE_kmod-ipt-filter=m'
--config('PACKAGE_kmod-ipt-ipopt=m'
--config('PACKAGE_kmod-iptunnel=m'
--config('PACKAGE_kmod-iptunnel4=m'
--config('PACKAGE_kmod-lib-crc-itu-t=m'
--config('PACKAGE_kmod-lib-crc16=m'
--config('PACKAGE_kmod-lib-crc32c=m'
--config('PACKAGE_kmod-lib-textsearch=m'
--config('PACKAGE_kmod-nf-nathelper-extra=m'
--config('PACKAGE_kmod-nls-utf8=m'
--config('PACKAGE_kmod-nls-iso8859-1=m'
--config('PACKAGE_kmod-nls-iso8859-15=m'
--config('PACKAGE_kmod-ppp=m'
--config('PACKAGE_kmod-rt2800-lib=m'
--config('PACKAGE_kmod-rt2800-usb=m'
--config('PACKAGE_kmod-rt2x00-lib=m'
--config('PACKAGE_kmod-rt2x00-usb=m'
--config('PACKAGE_kmod-sched-connmark=m'
--config('PACKAGE_kmod-sched-core=m'
--config('PACKAGE_kmod-sit=m'
--config('PACKAGE_kmod-tun=m'
--config('PACKAGE_kmod-usb-acm=m'
--config('PACKAGE_kmod-usb-net=m'
--config('PACKAGE_kmod-usb-net-cdc-ether=m'
--config('PACKAGE_kmod-usb-net-rndis=m'
--config('PACKAGE_kmod-usb-ohci=m'
--config('PACKAGE_kmod-usb-serial=m'
--config('PACKAGE_kmod-usb-serial-option=m'
--config('PACKAGE_kmod-usb-serial-wwan=m'
--config('PACKAGE_kmod-usb-storage=m'
--config('PACKAGE_kmod-usb-uhci=m'
--config('PACKAGE_kmod-veth=m'
--config('PACKAGE_ALFRED_BATHOSTS', true)
--config('PACKAGE_ALFRED_VIS', true)
--config('PACKAGE_ATH_DFS', true)
--config('PACKAGE_luci-mod-failsafe', true)
--config('PACKAGE_luci-theme-bootstrap', true)
--config('PACKAGE_uhttpd', true)
try_config('TARGET_MULTI_PROFILE', true)
try_config('TARGET_PER_DEVICE_ROOTFS', true)
packages {
'-hostapd-mini',
'-odhcpd-ipv6only',
'-ppp',
'-ppp-mod-pppoe',
'wpad-basic',
'freifunk-berlin-system-defaults',
'alfred',
'batctl-default',
'collectd',
'collectd-mod-conntrack',
'collectd-mod-cpu',
'collectd-mod-exec',
'collectd-mod-interface',
'collectd-mod-irq',
'collectd-mod-iwinfo',
'collectd-mod-load',
'collectd-mod-memory',
'collectd-mod-network',
'collectd-mod-olsrd',
'collectd-mod-ping',
'collectd-mod-routeros',
'collectd-mod-rrdtool',
'collectd-mod-snmp',
'collectd-mod-uptime',
'collectd-mod-wireless',
'collectd-snmp-templates',
'community-profiles',
'ethtool',
'freifunk-berlin-dhcp-defaults',
'freifunk-berlin-firewall-defaults',
'freifunk-berlin-freifunk-defaults',
'freifunk-berlin-lib-guard',
'freifunk-berlin-migration',
'freifunk-berlin-network-defaults',
'freifunk-berlin-olsrd-defaults',
'freifunk-berlin-system-defaults',
'freifunk-berlin-statistics-defaults',
'freifunk-berlin-tunneldigger',
'freifunk-berlin-uhttpd-defaults',
'freifunk-common',
'freifunk-firewall',
'freifunk-gwcheck',
'freifunk-policyrouting',
'horst',
'ipip',
'iptables-mod-conntrack-extra',
'iptables-mod-filter',
'iptables-mod-ipopt',
'iwinfo',
'libiwinfo-lua',
'libubus-lua',
'libuci-lua',
'libustream-mbedtls',
'luci-app-ffwizard-berlin',
'luci-app-firewall',
'luci-app-opkg',
'luci-app-olsr',
'luci-app-olsr-services',
'luci-app-olsr-viz',
'luci-app-owm',
'luci-app-owm-ant',
'luci-app-owm-cmd',
'luci-app-owm-gui',
'luci-app-statistics',
'luci-mod-admin-full',
'luci-proto-ipip',
'mtr',
'olsrd',
'olsrd-mod-arprefresh',
'olsrd-mod-dyn-gw',
'olsrd-mod-dyn-gw-plain',
'olsrd-mod-jsoninfo',
'olsrd-mod-nameservice',
'olsrd-mod-netjson',
'olsrd-mod-txtinfo',
'olsrd-mod-watchdog',
'om-watchdog',
'px5g-mbedtls',
'qos-scripts',
'rssileds',
'tc',
'terminfo',
'tmux',
'uhttpd-mod-ubus',
'vnstat',
}

57
targets/generic_gluon Normal file
View File

@ -0,0 +1,57 @@
assert(env.GLUON_LANGS)
config('GLUON_SITEDIR', env.GLUON_SITEDIR)
config('GLUON_RELEASE', env.GLUON_RELEASE)
try_config('GLUON_AUTOUPDATER_BRANCH', env.GLUON_AUTOUPDATER_BRANCH)
try_config('GLUON_AUTOUPDATER_ENABLED', istrue(env.GLUON_AUTOUPDATER_ENABLED))
for lang in string.gmatch(env.GLUON_LANGS, '%S+') do
try_config('GLUON_WEB_LANG_' .. lang, true)
end
-- Disable non-default feeds in distfeeds.conf
config('FEED_gluon_base', false)
config('TARGET_ROOTFS_INITRAMFS', false)
config('DEVEL', true)
config('ALL_NONSHARED', true)
config('PACKAGE_usbip', false) -- fails to build
config('PACKAGE_kmod-jool', false) -- fails to build
config('BUSYBOX_CUSTOM', true)
config('BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS', false)
try_config('PACKAGE_ATH_DEBUG', true)
try_config('TARGET_SQUASHFS_BLOCK_SIZE', 256)
config('KERNEL_IP_MROUTE', false)
config('KERNEL_IPV6_MROUTE', false)
config('COLLECT_KERNEL_DEBUG', true)
try_config('TARGET_MULTI_PROFILE', true)
try_config('TARGET_PER_DEVICE_ROOTFS', true)
config('GLUON_MULTIDOMAIN', istrue(env.GLUON_MULTIDOMAIN))
config('AUTOREMOVE', istrue(env.GLUON_AUTOREMOVE))
config('GLUON_MINIFY', istrue(env.GLUON_MINIFY))
packages {
'-kmod-ipt-offload',
'-odhcpd-ipv6only',
'-ppp',
'-ppp-mod-pppoe',
'-wpad-mini',
'-wpad-basic',
'gluon-core',
'ip6tables',
}