Commit Graph

123 Commits

Author SHA1 Message Date
Matthias Schiffer
4540217342
build: target_config_check: dedup error messages
Certain error message (for example invalid package names) were emitted
once for each device.
2020-05-11 00:09:13 +02:00
Matthias Schiffer
53690d83be
build: move package list generation to target_config_lib.lua, fix precedence
The precedence of different package lists was broken since #1876,
disallowing removal of GLUON_FEATURES packages via GLUON_SITE_PACKAGES.

Including all package selections, both implicit defaults and explicit
handling in Gluon, the order of precedence is now the following:

1.  OpenWrt defaults (including target-specific defaults)
2.  Device-specific packages from OpenWrt
3.  Generic default packages (from target/generic)
4.  Target default packages (target/$(GLUON_TARGET))
5.  Removal of opkg for tiny targets
6.  Packages derived from GLUON_FEATURES + GLUON_FEATURES_$(class)
7.  GLUON_SITE_PACKAGES
8.  GLUON_SITE_PACKAGES_$(class)
9.  Device-specific packages from target/$(GLUON_TARGET)
10. Device-specific packages from GLUON_$(device)_SITE_PACKAGES

This also contains various pieces of cleanup:

- No hardcoded order of device classes for target_config.lua arguments
  anymore (in fact, the Makefile doesn't know anything about device
  classes now)
- target_conifg_lib.lua only hardcodes the fallback class for x86, no
  other occurences of specific class names
- Feature -> package list mapping is moved from Makefile to the Lua code
  as well (still implemented in Shell though)
2020-05-03 22:05:20 +02:00
Matthias Schiffer
f9062bda0b
build: remove exec prefix from commands with a raw suffix
Allows to append additional commands, for example using `||`.
2020-05-03 18:24:32 +02:00
Matthias Schiffer
89efe55c7c
build: implement image site_packages using a generic site_var function 2020-05-03 18:00:35 +02:00
Martin Weinelt
b181803ac4 scripts: check_site: add need_number_range check 2020-04-30 01:54:35 +02:00
Matthias Schiffer
aefb0b8c35 scripts/copy_output.lua: delete images from OpenWrt dir after copying them
We don't move the images directly, as multiple images of the same device
may have the same source image (on x86), but only delete them after a
whole device has been handled (multiple devices using the same images
must be handled using aliases or manifest aliases instead).
2020-04-25 21:35:44 +02:00
Matthias Schiffer
e993f22233 scripts/target_lib.lua: reorganize images into per-device lists 2020-04-25 21:35:44 +02:00
Matthias Schiffer
584d215f56 build: allow overriding the base feed list 2020-04-09 14:30:44 +02:00
David Bauer
c9f90c3ef8 build: add class-packages for targets without devices
When adding device classes, targets without devices such as x86 were not
handled. As site and feature packages are included on such a per-device
decision, x86 images ended up without most packages.

Include a class setting for a target and include the class-packages
target-wide when this setting is configured.

Fixes 9c52365077 ("build: introduce device classes")
2020-03-27 23:35:24 +01:00
David Bauer
9c52365077 build: introduce device classes
This commit allows to define a device-class flag in the target
definitions. This way, it is possible to distinguish between groups
of devices in the build-process in terms of package or feature
selection.
2020-03-25 02:05:18 +01:00
Matthias Schiffer
d7e724ada9
target_lib: replace envtrue with more intuitive istrue helper
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
2020-03-14 16:51:43 +01:00
Jan-Tarek Butt
a2ced263ab
build: add make targets lint, lint-sh, lint-lua
[Matthias Schiffer: minor script improvements]
2019-12-29 15:18:50 +01:00
Jan-Tarek Butt
dd76e0898d
treewide: solve shellcheck warnings 2019-12-14 18:35:11 +01:00
Matthias Schiffer
78054cddbf
scripts: target_config_lib: fix inclusion of device-specific packages from site.mk
Fixes: 071cf7b20f ("Switch to Lua for target definitions")
2019-09-14 13:46:56 +02:00
Christof Schulze
afa3e89890 scripts/update.sh: add verbose error message when commit cannot be found (#1794)
This displays the branch, repo and commitID that was attempted to update to but
failed. Users then can compare this output to the configuration they meant to
activate in modules and hopefully better find their typos.
2019-08-21 23:48:06 +02:00
Matthias Schiffer
09a09d634a
scripts: avoid global variables in target handler scripts 2019-06-18 01:34:45 +02:00
Matthias Schiffer
c9f1fdf6ee
scripts: check_site: use setfenv to keep global environment clean
This is now much nicer to luacheck.
2019-06-17 20:36:35 +02:00
bobcanthelpyou
4249d65af7 treewide: fix luacheck warnings 2019-06-16 22:51:53 +02:00
Matthias Schiffer
912490c026
Add GLUON_DEPRECATED flag
This new build flag is mandatory for now (it may default to 0 in a future
Gluon version). It may be set to the following values:

* 0 - Do not build any images for deprecated devices.
* upgrade - Only build sysupgrade images for deprecated devices.
* full - Build both sysupgrade and factory images for deprecated devices.

"Other" images are handled like factory images, as they are also used for
the initial installation of Gluon on a device.
2019-06-15 23:34:07 +02:00
Matthias Schiffer
071cf7b20f
Switch to Lua for target definitions
The old bash-based parsing code was way too complex. Replace it with Lua.
2019-06-15 23:34:07 +02:00
Matthias Schiffer
16a78b4e9e
scripts/check_site.lua: use new format() function to simplify var_error() 2019-04-28 19:17:47 +02:00
Matthias Schiffer
5abddd2976
scripts/check_site.lua: fix array_to_string with non-string/number array elements
Fixes need_one_of() with boolean elements.
2019-04-28 19:16:28 +02:00
Martin Weinelt
423aafbd29 gluon-core: improve channel and add chanlist validation 2019-04-28 18:17:40 +02:00
bobcanthelpyou
fe521db441 build: add site check for obsolete settings (#1702) 2019-04-28 14:38:08 +02:00
Petr Štetiar
9dc1ac7f58
build: replace hardcoded paths with overridable variables
Signed-off-by: Petr Štetiar <ynezz@true.cz>
2019-04-22 22:00:45 +02:00
bobcanthelpyou
2c4f022994 build: rename DEVICES to GLUON_DEVICES (#1686) 2019-04-12 01:05:04 +02:00
David Bauer
c1b9ea2d9c gluon-scheduled-domain-switch: add package (#1555)
This package allows to automatically switch to another domain, either
at a given point in time or after the node was offline long enough.
2019-02-12 11:00:29 +01:00
David Bauer
6e48dedeb8 scripts: include binaries in patch
This commit allows for binary content in patches created via 'make
update-patches'.

Binary patches are needed for BDFs required for al boards on the new
ipq40xx target. Before this commit, binaries were omitted from the
generated patch which resulted in the patch not able to apply.

Patches without binary content do not differ in case they are created
with the '--binary' flag.
2018-07-16 01:39:36 +02:00
Matthias Schiffer
7460431faa
scripts/copy_output.sh: add support for "extra" images
The new extra_image command allows to copy additional images that don't
fall into the sysupgrade or factory categories to the output directory.
These images will be placed in the "other" subdirectory.

The extra_image command takes 3 arguments: in_suffix (suffix in OpenWrt
bin directory), out_suffix (suffix in Gluon output directory) and ext (file
extension). Example:

  extra_image '-tftp' '-tftp' '.bin'

The ext argument can be omitted to control the whole filename suffix
including the extension from in_suffix and out_suffix. Multiple extra_image
commands can be used for a single device; aliases work as usual.

Based-on-patch-by: David Bauer <mail@david-bauer.net>
2018-07-14 18:33:37 +02:00
Matthias Schiffer
e8cb34bae2
scripts/copy_output.sh: refactor 2018-07-14 18:17:36 +02:00
Matthias Schiffer
63c16c01a0
scripts: move DEFAULT_FEEDS definition to a separate file
modules.sh can't depend on openwrt/feeds.conf.default, otherwise the
initial update will fail.
2018-07-11 21:47:50 +02:00
Matthias Schiffer
210d97c53e
Switch to OpenWrt 18.06 branch 2018-07-10 22:57:40 +02:00
Matthias Schiffer
a49cf395bd
cripts/check_site.lua: print paths separated by '.' rather than '/'
Using slashs instead of dots is a bit unexpected, and as long as we're not
going for full-blown JSONPath, neither is more correct than the other.
2018-06-29 20:47:59 +02:00
Matthias Schiffer
aeae9df001
check_site: improve error message for unset values 2018-04-27 17:48:36 +02:00
Matthias Schiffer
ad7d154c5a
scripts/check_site.lua: show type of incorrect values in error messages 2018-04-01 23:21:18 +02:00
Matthias Schiffer
b7be32d9f4
scripts/check_site.lua: print proper error message for non-string keys in need_alphanumeric_key() 2018-04-01 23:18:53 +02:00
Martin Weinelt
85c0bd6f57
scripts/check_site.lua: add table_keys() helper 2018-03-20 17:23:48 +01:00
Matthias Schiffer
1a7d93a2b9
scripts/check_site.lua: add support for alternative checks 2018-03-20 17:15:55 +01:00
Matthias Schiffer
6ae067cb37
gluon-core: add domain aliases and pretty name
Based-on-patch-by: lemoer <git@irrelefant.net>
2018-01-26 12:32:47 +01:00
Matthias Schiffer
8cb0388416
scripts/check_site.lua: enable in_site()/in_domain() checks 2018-01-26 12:32:47 +01:00
Matthias Schiffer
51c0ceeb55
scripts/check_site.lua: merge site and domains for validation
Each domain is validated separately, preferring domain values to site
values.

Based-on-patch-by: lemoer <git@irrelefant.net>
2018-01-26 12:32:46 +01:00
Matthias Schiffer
24a085a542
gluon-site: add default domain and check for it
This does not do anything yet, as this_domain() is not implemented yet.

Based-on-patch-by: lemoer <git@irrelefant.net>
2018-01-26 12:32:46 +01:00
Matthias Schiffer
8b44d09963
scripts/generate_manifest.sh: fix filesize for symlinks
scripts/filesize.sh doesn't follow symlinks.

Fixes #1316
2018-01-24 09:49:21 +01:00
Matthias Schiffer
775028475b
check_site: move site loading logic to check_site_lib (which is renamed to check_site.lua) 2018-01-19 12:33:52 +01:00
Matthias Schiffer
43628c1679
scripts/check_site_lib.lua: improve display of invalid values 2018-01-19 11:02:33 +01:00
Matthias Schiffer
7ccdacd294
treewide: rework check_site_lib.lua
In addition to significant internal differences in check_site_lib.lua (in
particular unifying error handling to a single place for the upcoming
multi-domain support), this changes the way fields are addressed in site
check scripts: rather than providing a string like 'next_node.ip6', the
path is passed as an array {'next_node', 'ip6'}.

Other changes in site check scripts:
* need_array and need_table now pass the full path to the sub fields to the
subcheck instead of the key and value
* Any check referring to a field inside a table implies that all higher
levels must be tables if they exist: a check for {'next_node', 'ip6'} adds
an implicit (optional) check for {'next_node'}, which allows to remove many
explicit checks for such tables
2018-01-19 10:12:43 +01:00
Matthias Schiffer
020afc856f
gluon-site: install domain configs
The domain configs are not checked yet, and not used for anything.

Based-on-patch-by: lemoer <git@irrelefant.net>
2018-01-19 05:44:25 +01:00
Matthias Schiffer
8d8d4fa0c3
scripts/check_site_lib.lua: introduce in_site() and in_domain() helpers
These helpers are no-ops for now, until the actual multi-domain support is
added.
2018-01-19 03:30:50 +01:00
Matthias Schiffer
21b3dd3259
build: add file size field to manifest lines
We would like to check the file size instead of downloading indefinitely.
The file size is added in another copy of the manifest lines, which is
ignored by older autoupdater implementations.
2017-12-28 22:57:37 +01:00
Matthias Schiffer
87c741b45e
scripts: run feeds.sh with bash like the other scripts handling modules
Fixes #1262
2017-11-23 17:44:46 +01:00