More efficient, slightly more functional.
Can be a space delimited list of architectures.
Architectures to be excluded can be specified with !ARCH.
Allows "any !arm" to be interpreted as "any arch, but not arm".
Blank/undefined is equivalent to "any".
Core Kernel modules are now installed to
/usr/lib/kernel-overlays/base/lib/modules instead of /usr/lib/modules
Firmware files are installed to
/usr/lib/kernel-overlays/base/lib/firmware instead of /usr/lib/firmware
Packages can choose to install their modules and/or firmwareinto a
different overlay directory than base so they are not automatically enabled.
A new systemd service kernel-overlays, which is run before any modules
are loaded, adds overlays enabled via /storage/.cache/kernel-overlays/*.conf
These conf files must either contain the name of a system overlay,
which will then be searched for in /usr/lib/kernel-overlays/, or an
absolute path starting with '/'.
Overlaying is implemented by symlinking files from the overlays
to /usr/lib/modules and /usr/lib/firmware as not all platforms
support overlayfs.
This overlaying system can also be used by addons to provide optional
kernel modules and/or firmware by storing the absolute path to the addon
directory in the conf file and shipping kernel modules in
<addondir>/lib/modules/<KERNELVER>.
To save space only symlinks for modules matching the currently
running kernel version are created as addons may want to ship
modules for older kernel versions as well to be backward-compatible
to older LibreELEC versions.
Changes since v1:
- fixup kernel-overlays-service: add before kmod-static-nodes.service
Fix static device nodes for module autoloading not being created.
- fixup kernel-overlays-service: fail if /usr/lib/modules exists
- squash kernel overlays: use get_kernel_overlay_dir in linux/package.mk
- Add support for firmware files via kernel overlays
- config/functions: include kernel overlays in addon installation
Signed-off-by: Matthias Reichl <hias@horus.com>
This is intended to disable automatic appending of PKG_REV
in case the full version number, including PKG_REV, has already
been setup in addon.xml by the package build script.
Signed-off-by: Matthias Reichl <hias@horus.com>
Usage of PKG_NAME was a bug carried over from the original code
during refactoring. Since none of the addons set PKG_SECTION, and
therefore PKG_NAME and PKG_ADDON_ID were identical, this wasn't
noticed before.
Drop using PKG_NAME and only use PKG_ADDON_ID to fix this,
install_binary_addon can then also be used for addons which set
PKG_SECTION.
Signed-off-by: Matthias Reichl <hias@horus.com>
Each time scripts/extract is called it sources config/options which is an
expensive operation.
We call scripts/extract 8 times for each possible tarball pattern, and for
7 of those 8 calls scripts/extract does nothing but source config/options
and then exit.
This change is more efficient, while functionally equivalent.
A download might succeed from, say, github, but have an invalid checksum. In this
case it would not attempt the alternative download from the mirror (which might
have the correct checksum), but instead it would repeatedly download from github
until the download limit is exceeded, and then fail completely.