mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 22:26:42 +00:00
Merge pull request #1835 from HiassofT/le9-module-overlays
add support for optional kernel modules in image and from addons
This commit is contained in:
commit
cda34c50c3
117
config/functions
117
config/functions
@ -143,7 +143,24 @@ kernel_version() {
|
||||
|
||||
# get kernel module dir
|
||||
get_module_dir() {
|
||||
basename $(ls -d $(get_build_dir linux)/.install_pkg/usr/lib/modules/*)
|
||||
basename $(ls -d $(get_build_dir linux)/.install_pkg/usr/lib/kernel-overlays/base/lib/modules/*)
|
||||
}
|
||||
|
||||
# get base path to kernel modules and firmware
|
||||
get_kernel_overlay_dir() {
|
||||
echo "/usr/lib/kernel-overlays/${1:-base}"
|
||||
}
|
||||
|
||||
# get full path to kernel module dir
|
||||
# optional parameter specifies overlay level (default is base)
|
||||
get_full_module_dir() {
|
||||
echo "$(get_kernel_overlay_dir $1)/lib/modules/$(get_module_dir)"
|
||||
}
|
||||
|
||||
# get full path to firmware dir
|
||||
# optional parameter specifies overlay level (default is base)
|
||||
get_full_firmware_dir() {
|
||||
echo "$(get_kernel_overlay_dir $1)/lib/firmware"
|
||||
}
|
||||
|
||||
# get package's build dir
|
||||
@ -172,16 +189,106 @@ get_pkg_variable() {
|
||||
}
|
||||
|
||||
install_binary_addon() {
|
||||
local addon_name="$1" addon_id="$2" addon_so
|
||||
local addon_id="$1" addon_so
|
||||
|
||||
mkdir -p $ADDON_BUILD/$addon_id/
|
||||
cp -R $PKG_BUILD/.install_pkg/usr/share/$MEDIACENTER/addons/$addon_name/* $ADDON_BUILD/$addon_id/
|
||||
cp -R $PKG_BUILD/.install_pkg/usr/share/$MEDIACENTER/addons/$addon_id/* $ADDON_BUILD/$addon_id/
|
||||
|
||||
addon_so=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$addon_id/addon.xml)
|
||||
addon_so=$(xmlstarlet sel -t -v "/addon/extension/@library_linux" $ADDON_BUILD/$addon_id/addon.xml || :)
|
||||
if [ -n "$addon_so" ]; then
|
||||
cp -L $PKG_BUILD/.install_pkg/usr/lib/$MEDIACENTER/addons/$addon_name/$addon_so $ADDON_BUILD/$addon_id/
|
||||
cp -L $PKG_BUILD/.install_pkg/usr/lib/$MEDIACENTER/addons/$addon_id/$addon_so $ADDON_BUILD/$addon_id/
|
||||
chmod +x $ADDON_BUILD/$addon_id/$addon_so
|
||||
fi
|
||||
|
||||
if [ -d $PKG_BUILD/.install_pkg/usr/lib/kernel-overlays/$addon_id ] ; then
|
||||
mkdir -p $ADDON_BUILD/$addon_id/kernel-overlay
|
||||
cp -PR $PKG_BUILD/.install_pkg/usr/lib/kernel-overlays/$addon_id/* $ADDON_BUILD/$addon_id/kernel-overlay
|
||||
fi
|
||||
}
|
||||
|
||||
install_addon_source() {
|
||||
if [ -d $PKG_DIR/source ]; then
|
||||
cp -R $PKG_DIR/source/* "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
install_addon_images() {
|
||||
local dest_dir="$1"
|
||||
|
||||
if [ -f "$PKG_DIR/icon/icon.png" ]; then
|
||||
mkdir -p "$dest_dir/resources"
|
||||
cp "$PKG_DIR/icon/icon.png" "$dest_dir/resources"
|
||||
fi
|
||||
|
||||
if [ -f "$DISTRO_DIR/$DISTRO/addons/fanart.png" ]; then
|
||||
mkdir -p "$dest_dir/resources"
|
||||
cp "$DISTRO_DIR/$DISTRO/addons/fanart.png" "$dest_dir/resources"
|
||||
fi
|
||||
}
|
||||
|
||||
create_addon_xml() {
|
||||
local addon_xml addon_version addon_name provider_name requires requires_addonname requires_addonversion screenshots
|
||||
|
||||
addon_xml="$1/addon.xml"
|
||||
|
||||
IFS=" "
|
||||
for i in $PKG_ADDON_REQUIRES; do
|
||||
requires_addonname=`echo $i | cut -f1 -d ":"`
|
||||
requires_addonversion=`echo $i | cut -f2 -d ":"`
|
||||
requires="$requires\n <import addon=\"$requires_addonname\" version=\"$requires_addonversion\" />"
|
||||
done
|
||||
unset IFS
|
||||
|
||||
if [ ! -f "$addon_xml" ] ; then
|
||||
cp $ROOT/config/addon/${PKG_ADDON_TYPE}.xml "$addon_xml"
|
||||
addon_version=${PKG_ADDON_VERSION:-${ADDON_VERSION}.${PKG_REV}}
|
||||
else
|
||||
if [ ! $(which xmlstarlet) ]; then
|
||||
echo "*** ERROR: $ADDON has addon.xml shipped, you need 'xmlstarlet' ***"
|
||||
exit 255
|
||||
fi
|
||||
addon_version="${PKG_ADDON_VERSION:-$(xmlstarlet sel -t -v "/addon/@version" "$addon_xml").$PKG_REV}"
|
||||
xmlstarlet ed --inplace -u "/addon[@version]/@version" -v "$addon_version" "$addon_xml"
|
||||
fi
|
||||
|
||||
if [ -f $PKG_DIR/changelog.txt ]; then
|
||||
sed -e "/@PKG_ADDON_NEWS@/ \
|
||||
{
|
||||
r $PKG_DIR/changelog.txt
|
||||
d
|
||||
}" -i "$addon_xml"
|
||||
else
|
||||
sed -e "s|@PKG_ADDON_NEWS@||g" -i "$addon_xml"
|
||||
fi
|
||||
|
||||
provider_name=${PKG_MAINTAINER:-"Team LibreELEC"}
|
||||
addon_name=${PKG_ADDON_NAME:-"$PKG_NAME"}
|
||||
|
||||
for f in $PKG_DIR/source/resources/screenshot-*.{jpg,png}; do
|
||||
if [ -f "$f" ]; then
|
||||
screenshots+="<screenshot>resources/$(basename $f)</screenshot>\n"
|
||||
fi
|
||||
done
|
||||
|
||||
$SED -e "s|@PKG_ADDON_ID@|$PKG_ADDON_ID|g" \
|
||||
-e "s|@ADDON_NAME@|$addon_name|g" \
|
||||
-e "s|@ADDON_VERSION@|$addon_version|g" \
|
||||
-e "s|@REQUIRES@|$requires|g" \
|
||||
-e "s|@PKG_SHORTDESC@|$PKG_SHORTDESC|g" \
|
||||
-e "s|@OS_VERSION@|$OS_VERSION|g" \
|
||||
-e "s|@PKG_LONGDESC@|$PKG_LONGDESC|g" \
|
||||
-e "s|@PKG_DISCLAIMER@|$PKG_DISCLAIMER|g" \
|
||||
-e "s|@PROVIDER_NAME@|$provider_name|g" \
|
||||
-e "s|@PKG_ADDON_PROVIDES@|$PKG_ADDON_PROVIDES|g" \
|
||||
-e "s|@PKG_ADDON_SCREENSHOT@|$screenshots|g" \
|
||||
-e "s|@PKG_ADDON_BROKEN@|$PKG_ADDON_BROKEN|g" \
|
||||
-i "$addon_xml"
|
||||
}
|
||||
|
||||
install_addon_files() {
|
||||
install_addon_source "$1"
|
||||
install_addon_images "$1"
|
||||
create_addon_xml "$1"
|
||||
}
|
||||
|
||||
tolower() {
|
||||
|
@ -48,6 +48,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -47,6 +47,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -47,6 +47,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -48,6 +48,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -46,6 +46,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -42,6 +42,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/bcm_sta
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/bcm_sta
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -42,9 +42,9 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/bcmdhd
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/bcmdhd
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/bcmdhd
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/bcmdhd
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/firmware/brcm
|
||||
cp $PKG_DIR/config/config.txt $INSTALL/usr/lib/firmware/brcm
|
||||
mkdir -p $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
cp $PKG_DIR/config/config.txt $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
}
|
||||
|
@ -58,8 +58,8 @@ pre_configure_target() {
|
||||
|
||||
makeinstall_target() {
|
||||
cd $PKG_BUILD
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/hdhomerun
|
||||
cp kernel/*.ko $INSTALL/usr/lib/modules/$(get_module_dir)/hdhomerun/
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/hdhomerun
|
||||
cp kernel/*.ko $INSTALL/$(get_full_module_dir)/hdhomerun/
|
||||
|
||||
mkdir -p $INSTALL/usr/bin
|
||||
cp -PR .$TARGET_NAME/userhdhomerun $INSTALL/usr/bin
|
||||
|
@ -42,6 +42,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -57,6 +57,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$KERNEL_VER/updates
|
||||
find $PKG_BUILD/v4l/ -name \*.ko -exec cp {} $INSTALL/usr/lib/modules/$KERNEL_VER/updates \;
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/updates
|
||||
find $PKG_BUILD/v4l/ -name \*.ko -exec cp {} $INSTALL/$(get_full_module_dir)/updates \;
|
||||
}
|
||||
|
@ -42,6 +42,6 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
cp *.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
}
|
||||
|
@ -38,13 +38,13 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
if [ $PROJECT = "WeTek_Play_2" ]; then
|
||||
cp driver/wetekdvb_play2.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME/wetekdvb.ko
|
||||
cp driver/wetekdvb_play2.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME/wetekdvb.ko
|
||||
else
|
||||
cp driver/wetekdvb.ko $INSTALL/usr/lib/modules/$(get_module_dir)/$PKG_NAME
|
||||
cp driver/wetekdvb.ko $INSTALL/$(get_full_module_dir)/$PKG_NAME
|
||||
fi
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/firmware
|
||||
cp firmware/* $INSTALL/usr/lib/firmware
|
||||
mkdir -p $INSTALL/$(get_full_firmware_dir)
|
||||
cp firmware/* $INSTALL/$(get_full_firmware_dir)
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
DESTDIR=$INSTALL/usr ./install
|
||||
DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
|
@ -35,5 +35,5 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
DESTDIR=$INSTALL/usr ./install
|
||||
DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/firmware/vpu
|
||||
cp -P firmware/vpu/vpu_fw_imx6d.bin $INSTALL/usr/lib/firmware/vpu
|
||||
cp -P firmware/vpu/vpu_fw_imx6q.bin $INSTALL/usr/lib/firmware/vpu
|
||||
mkdir -p $INSTALL/$(get_full_firmware_dir)/vpu
|
||||
cp -P firmware/vpu/vpu_fw_imx6d.bin $INSTALL/$(get_full_firmware_dir)/vpu
|
||||
cp -P firmware/vpu/vpu_fw_imx6q.bin $INSTALL/$(get_full_firmware_dir)/vpu
|
||||
}
|
||||
|
@ -36,5 +36,5 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
DESTDIR=$INSTALL/usr ./install
|
||||
DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ make_target() {
|
||||
|
||||
# Install additional miscellaneous drivers
|
||||
makeinstall_target() {
|
||||
FW_TARGET_DIR=$INSTALL/usr/lib/firmware
|
||||
FW_TARGET_DIR=$INSTALL/$(get_full_firmware_dir)
|
||||
|
||||
FW_LISTS="${PKG_DIR}/firmwares/any.dat ${PKG_DIR}/firmwares/${TARGET_ARCH}.dat"
|
||||
FW_LISTS+=" ${PROJECT_DIR}/${PROJECT}/${PKG_NAME}/firmwares/any.dat"
|
||||
|
@ -36,5 +36,5 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
DESTDIR=$INSTALL/usr ./install
|
||||
DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install
|
||||
}
|
||||
|
@ -36,20 +36,20 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
mkdir -p $INSTALL/usr/lib/firmware/brcm
|
||||
mkdir -p $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
|
||||
# AP6255
|
||||
cp -PR bcm_ampak/config/6255/fw_bcm43455c0_*.bin $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/6255/nvram.txt $INSTALL/usr/lib/firmware/brcm/nvram_ap6255.txt
|
||||
cp -P bcm_ampak/config/6255/BT/BCM4345C0.hcd $INSTALL/usr/lib/firmware/brcm/bcm4345c0.hcd
|
||||
cp -PR bcm_ampak/config/6255/fw_bcm43455c0_*.bin $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
cp -P bcm_ampak/config/6255/nvram.txt $INSTALL/$(get_full_firmware_dir)/brcm/nvram_ap6255.txt
|
||||
cp -P bcm_ampak/config/6255/BT/BCM4345C0.hcd $INSTALL/$(get_full_firmware_dir)/brcm/bcm4345c0.hcd
|
||||
|
||||
# AP6330
|
||||
cp -PR bcm_ampak/config/AP6330/Wi-Fi/fw_bcm40183b2*.bin $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/AP6330/Wi-Fi/nvram_ap6330.txt $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/AP6330/BT/bcm40183b2.hcd $INSTALL/usr/lib/firmware/brcm
|
||||
cp -PR bcm_ampak/config/AP6330/Wi-Fi/fw_bcm40183b2*.bin $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
cp -P bcm_ampak/config/AP6330/Wi-Fi/nvram_ap6330.txt $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
cp -P bcm_ampak/config/AP6330/BT/bcm40183b2.hcd $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
|
||||
# AP6335
|
||||
cp -PR bcm_ampak/config/6335/fw_bcm4339a0_*.bin $INSTALL/usr/lib/firmware/brcm
|
||||
cp -P bcm_ampak/config/6335/nvram.txt $INSTALL/usr/lib/firmware/brcm/nvram_ap6335.txt
|
||||
cp -P bcm_ampak/config/6335/BT/bcm4335c0.hcd $INSTALL/usr/lib/firmware/brcm
|
||||
cp -PR bcm_ampak/config/6335/fw_bcm4339a0_*.bin $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
cp -P bcm_ampak/config/6335/nvram.txt $INSTALL/$(get_full_firmware_dir)/brcm/nvram_ap6335.txt
|
||||
cp -P bcm_ampak/config/6335/BT/bcm4335c0.hcd $INSTALL/$(get_full_firmware_dir)/brcm
|
||||
}
|
||||
|
@ -36,5 +36,5 @@ make_target() {
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
DESTDIR=$INSTALL/usr ./install
|
||||
DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install
|
||||
}
|
||||
|
@ -194,9 +194,9 @@ pre_make_target() {
|
||||
|
||||
make_target() {
|
||||
LDFLAGS="" make modules
|
||||
LDFLAGS="" make INSTALL_MOD_PATH=$INSTALL/usr DEPMOD="$TOOLCHAIN/bin/depmod" modules_install
|
||||
rm -f $INSTALL/usr/lib/modules/*/build
|
||||
rm -f $INSTALL/usr/lib/modules/*/source
|
||||
LDFLAGS="" make INSTALL_MOD_PATH=$INSTALL/$(get_kernel_overlay_dir) DEPMOD="$TOOLCHAIN/bin/depmod" modules_install
|
||||
rm -f $INSTALL/$(get_kernel_overlay_dir)/lib/modules/*/build
|
||||
rm -f $INSTALL/$(get_kernel_overlay_dir)/lib/modules/*/source
|
||||
|
||||
( cd $ROOT
|
||||
rm -rf $BUILD/initramfs
|
||||
@ -247,7 +247,7 @@ makeinstall_init() {
|
||||
mkdir -p $INSTALL/usr/lib/modules
|
||||
|
||||
for i in $INITRAMFS_MODULES; do
|
||||
module=`find .install_pkg/usr/lib/modules/$(get_module_dir)/kernel -name $i.ko`
|
||||
module=`find .install_pkg/$(get_full_module_dir)/kernel -name $i.ko`
|
||||
if [ -n "$module" ]; then
|
||||
echo $i >> $INSTALL/etc/modules
|
||||
cp $module $INSTALL/usr/lib/modules/`basename $module`
|
||||
@ -257,15 +257,15 @@ makeinstall_init() {
|
||||
|
||||
if [ "$UVESAFB_SUPPORT" = yes ]; then
|
||||
mkdir -p $INSTALL/usr/lib/modules
|
||||
uvesafb=`find .install_pkg/usr/lib/modules/$(get_module_dir)/kernel -name uvesafb.ko`
|
||||
uvesafb=`find .install_pkg/$(get_full_module_dir)/kernel -name uvesafb.ko`
|
||||
cp $uvesafb $INSTALL/usr/lib/modules/`basename $uvesafb`
|
||||
fi
|
||||
}
|
||||
|
||||
post_install() {
|
||||
mkdir -p $INSTALL/usr/lib/firmware/
|
||||
ln -sf /storage/.config/firmware/ $INSTALL/usr/lib/firmware/updates
|
||||
mkdir -p $INSTALL/$(get_full_firmware_dir)/
|
||||
ln -sf /storage/.config/firmware/ $INSTALL/$(get_full_firmware_dir)/updates
|
||||
|
||||
# bluez looks in /etc/firmware/
|
||||
ln -sf /usr/lib/firmware/ $INSTALL/etc/firmware
|
||||
ln -sf /$(get_full_firmware_dir)/ $INSTALL/etc/firmware
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ PKG_LONGDESC="inputstream.adaptive"
|
||||
PKG_IS_ADDON="yes"
|
||||
|
||||
addon() {
|
||||
install_binary_addon $PKG_NAME $PKG_ADDON_ID
|
||||
install_binary_addon $PKG_ADDON_ID
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/wvdecrypter/libssd_wv.so $ADDON_BUILD/$PKG_ADDON_ID
|
||||
|
@ -41,7 +41,7 @@ addon() {
|
||||
for _ADDON in $PKG_BUILD/.install_pkg/usr/share/$MEDIACENTER/addons/* ; do
|
||||
_ADDON_ID=$(basename $_ADDON)
|
||||
|
||||
install_binary_addon $_ADDON_ID $_ADDON_ID
|
||||
install_binary_addon $_ADDON_ID
|
||||
|
||||
MULTI_ADDONS="$MULTI_ADDONS $_ADDON_ID"
|
||||
done
|
||||
|
@ -271,8 +271,8 @@ post_makeinstall_target() {
|
||||
cp $PKG_DIR/scripts/kodi-config $INSTALL/usr/lib/kodi
|
||||
cp $PKG_DIR/scripts/kodi.sh $INSTALL/usr/lib/kodi
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/libreelec
|
||||
cp $PKG_DIR/scripts/systemd-addon-wrapper $INSTALL/usr/lib/libreelec
|
||||
mkdir -p $INSTALL/usr/sbin
|
||||
cp $PKG_DIR/scripts/service-addon-wrapper $INSTALL/usr/sbin
|
||||
|
||||
mkdir -p $INSTALL/usr/bin
|
||||
cp $PKG_DIR/scripts/cputemp $INSTALL/usr/bin
|
||||
|
@ -0,0 +1,89 @@
|
||||
diff --git a/xbmc/addons/Addon.cpp b/xbmc/addons/Addon.cpp
|
||||
index 45f42ad2e3..ce10080469 100644
|
||||
--- a/xbmc/addons/Addon.cpp
|
||||
+++ b/xbmc/addons/Addon.cpp
|
||||
@@ -397,13 +397,48 @@ AddonVersion CAddon::GetDependencyVersion(const std::string &dependencyID) const
|
||||
return AddonVersion("0.0.0");
|
||||
}
|
||||
|
||||
+void LEAddonHook(const AddonPtr& addon, const LE_ADDON_CONTEXT context) {
|
||||
+
|
||||
+ if (addon->Type() == ADDON_SERVICE) {
|
||||
+ std::string contextStr;
|
||||
+ char cmd[255];
|
||||
+
|
||||
+ switch (context) {
|
||||
+ case LE_ADDON_ENABLED:
|
||||
+ contextStr = "enable";
|
||||
+ break;
|
||||
+ case LE_ADDON_DISABLED:
|
||||
+ contextStr = "disable";
|
||||
+ break;
|
||||
+ case LE_ADDON_POST_INSTALL:
|
||||
+ contextStr = "post-install";
|
||||
+ break;
|
||||
+ case LE_ADDON_PRE_UNINSTALL:
|
||||
+ contextStr = "pre-uninstall";
|
||||
+ break;
|
||||
+ default:
|
||||
+ contextStr = StringUtils::Format("unknown(%d)", context);
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ snprintf(cmd, sizeof(cmd), "/usr/sbin/service-addon-wrapper %s %s %s",
|
||||
+ contextStr.c_str(), addon->ID().c_str(), addon->Path().c_str());
|
||||
+
|
||||
+ system(cmd);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
void OnEnabled(const AddonPtr& addon)
|
||||
{
|
||||
+ LEAddonHook(addon, LE_ADDON_ENABLED);
|
||||
+
|
||||
addon->OnEnabled();
|
||||
}
|
||||
|
||||
void OnDisabled(const AddonPtr& addon)
|
||||
{
|
||||
+ LEAddonHook(addon, LE_ADDON_DISABLED);
|
||||
+
|
||||
addon->OnDisabled();
|
||||
}
|
||||
|
||||
@@ -438,11 +476,15 @@ void OnPostInstall(const AddonPtr& addon, bool update, bool modal)
|
||||
}
|
||||
// OE
|
||||
|
||||
+ LEAddonHook(addon, LE_ADDON_POST_INSTALL);
|
||||
+
|
||||
addon->OnPostInstall(update, modal);
|
||||
}
|
||||
|
||||
void OnPreUnInstall(const AddonPtr& addon)
|
||||
{
|
||||
+ LEAddonHook(addon, LE_ADDON_PRE_UNINSTALL);
|
||||
+
|
||||
addon->OnPreUnInstall();
|
||||
}
|
||||
|
||||
diff --git a/xbmc/addons/Addon.h b/xbmc/addons/Addon.h
|
||||
index 95f3f23437..23ad39116a 100644
|
||||
--- a/xbmc/addons/Addon.h
|
||||
+++ b/xbmc/addons/Addon.h
|
||||
@@ -43,6 +43,15 @@ void OnPostInstall(const AddonPtr& addon, bool update, bool modal);
|
||||
void OnPreUnInstall(const AddonPtr& addon);
|
||||
void OnPostUnInstall(const AddonPtr& addon);
|
||||
|
||||
+typedef enum {
|
||||
+ LE_ADDON_ENABLED,
|
||||
+ LE_ADDON_DISABLED,
|
||||
+ LE_ADDON_POST_INSTALL,
|
||||
+ LE_ADDON_PRE_UNINSTALL,
|
||||
+} LE_ADDON_CONTEXT;
|
||||
+
|
||||
+void LEAddonHook(const AddonPtr& addon, const LE_ADDON_CONTEXT context);
|
||||
+
|
||||
class CAddon : public IAddon
|
||||
{
|
||||
public:
|
@ -1,94 +0,0 @@
|
||||
From 4abf9ef52d9f5cf625e196935683eb35f150e7e9 Mon Sep 17 00:00:00 2001
|
||||
From: MilhouseVH <milhouseVH.github@nmacleod.com>
|
||||
Date: Tue, 11 Jul 2017 17:46:48 +0100
|
||||
Subject: [PATCH] use a wrapper to setup systemd services
|
||||
|
||||
---
|
||||
xbmc/addons/Addon.cpp | 38 ++++++++++++++++++++++++++++++++++++++
|
||||
xbmc/addons/Addon.h | 2 ++
|
||||
2 files changed, 40 insertions(+)
|
||||
|
||||
diff --git a/xbmc/addons/Addon.cpp b/xbmc/addons/Addon.cpp
|
||||
index 45f42ad..5870328 100644
|
||||
--- a/xbmc/addons/Addon.cpp
|
||||
+++ b/xbmc/addons/Addon.cpp
|
||||
@@ -397,13 +397,34 @@ AddonVersion CAddon::GetDependencyVersion(const std::string &dependencyID) const
|
||||
return AddonVersion("0.0.0");
|
||||
}
|
||||
|
||||
+void CallOEWrapper(const std::string& ID, bool disable)
|
||||
+{
|
||||
+ char cmd[255];
|
||||
+ snprintf(cmd, sizeof(cmd), "/usr/lib/libreelec/systemd-addon-wrapper %s %d", ID.c_str(), disable);
|
||||
+ system(cmd);
|
||||
+}
|
||||
+
|
||||
void OnEnabled(const AddonPtr& addon)
|
||||
{
|
||||
+ AddonPtr localAddon;
|
||||
+
|
||||
+ // OE: systemctl enable & start on addon enable
|
||||
+ if (CServiceBroker::GetAddonMgr().GetAddon(addon->ID(), localAddon, ADDON_SERVICE))
|
||||
+ CallOEWrapper(addon->ID(), false);
|
||||
+ // OE
|
||||
+
|
||||
addon->OnEnabled();
|
||||
}
|
||||
|
||||
void OnDisabled(const AddonPtr& addon)
|
||||
{
|
||||
+ AddonPtr localAddon;
|
||||
+
|
||||
+ // OE: systemctl stop & disable on addon disable
|
||||
+ if (CServiceBroker::GetAddonMgr().GetAddon(addon->ID(), localAddon, ADDON_SERVICE, false))
|
||||
+ CallOEWrapper(addon->ID(), true);
|
||||
+ // OE
|
||||
+
|
||||
addon->OnDisabled();
|
||||
}
|
||||
|
||||
@@ -438,11 +459,28 @@ void OnPostInstall(const AddonPtr& addon, bool update, bool modal)
|
||||
}
|
||||
// OE
|
||||
|
||||
+ AddonPtr localAddon;
|
||||
+
|
||||
+ // OE: systemctl stop & disable / enable & start on addon upgrade
|
||||
+ if (CServiceBroker::GetAddonMgr().GetAddon(addon->ID(), localAddon, ADDON_SERVICE))
|
||||
+ {
|
||||
+ CallOEWrapper(addon->ID(), true);
|
||||
+ CallOEWrapper(addon->ID(), false);
|
||||
+ }
|
||||
+ // OE
|
||||
+
|
||||
addon->OnPostInstall(update, modal);
|
||||
}
|
||||
|
||||
void OnPreUnInstall(const AddonPtr& addon)
|
||||
{
|
||||
+ AddonPtr localAddon;
|
||||
+
|
||||
+ // OE: systemctl stop & disable on addon uninstall
|
||||
+ if (CServiceBroker::GetAddonMgr().GetAddon(addon->ID(), localAddon, ADDON_SERVICE))
|
||||
+ CallOEWrapper(addon->ID(), true);
|
||||
+ // OE
|
||||
+
|
||||
addon->OnPreUnInstall();
|
||||
}
|
||||
|
||||
diff --git a/xbmc/addons/Addon.h b/xbmc/addons/Addon.h
|
||||
index 95f3f23..5f2223c 100644
|
||||
--- a/xbmc/addons/Addon.h
|
||||
+++ b/xbmc/addons/Addon.h
|
||||
@@ -77,6 +77,8 @@ public:
|
||||
const InfoMap& ExtraInfo() const override { return m_addonInfo.ExtraInfo(); }
|
||||
const ADDONDEPS& GetDeps() const override { return m_addonInfo.GetDeps(); }
|
||||
|
||||
+ void CallOEWrapper(const std::string& ID, bool disable);
|
||||
+
|
||||
std::string FanArt() const override
|
||||
{
|
||||
auto it = m_addonInfo.Art().find("fanart");
|
||||
--
|
||||
2.7.4
|
||||
|
111
packages/mediacenter/kodi/scripts/service-addon-wrapper
Executable file
111
packages/mediacenter/kodi/scripts/service-addon-wrapper
Executable file
@ -0,0 +1,111 @@
|
||||
#!/bin/sh
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://www.libreelec.tv
|
||||
# Copyright (C) 2017-present Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
if [ $# -ne 3 ] ; then
|
||||
echo "$0 usage: context addon-id addon-path"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
CONTEXT="$1"
|
||||
ADDON_ID="$2"
|
||||
ADDON_PATH="$3"
|
||||
|
||||
if [ ! -d /storage/.config/system.d ] ; then
|
||||
mkdir -p /storage/.config/system.d
|
||||
fi
|
||||
|
||||
SERVICE_FILE="${ADDON_PATH}/system.d/${ADDON_ID}.service"
|
||||
|
||||
if [ -f "${SERVICE_FILE}" ] ; then
|
||||
case "${CONTEXT}" in
|
||||
enable)
|
||||
systemctl enable "${SERVICE_FILE}"
|
||||
chmod +x "${ADDON_PATH}/bin"/*
|
||||
systemctl start "${ADDON_ID}.service"
|
||||
;;
|
||||
disable | pre-uninstall)
|
||||
systemctl stop "${ADDON_ID}.service"
|
||||
systemctl disable "${ADDON_ID}.service"
|
||||
;;
|
||||
post-install)
|
||||
# post-install is triggered on update as well,
|
||||
# make sure to stop and re-install service
|
||||
systemctl stop "${ADDON_ID}.service"
|
||||
systemctl disable "${ADDON_ID}.service"
|
||||
systemctl enable "${SERVICE_FILE}"
|
||||
chmod +x "${ADDON_PATH}/bin"/*
|
||||
systemctl start "${ADDON_ID}.service"
|
||||
;;
|
||||
restart)
|
||||
systemctl restart "${ADDON_ID}.service"
|
||||
;;
|
||||
reload)
|
||||
systemctl reload "${ADDON_ID}.service"
|
||||
;;
|
||||
*)
|
||||
echo "$0: unknown service context $CONTEXT"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
if [ ! -d /storage/.cache/kernel-overlays ] ; then
|
||||
mkdir -p /storage/.cache/kernel-overlays
|
||||
fi
|
||||
|
||||
# kernel-overlay addons built into the image have their
|
||||
# files installed in the default /usr/lib/kernel-overlays
|
||||
# location, not inside the kodi addon dir
|
||||
|
||||
case "${ADDON_PATH}" in
|
||||
/usr/share/kodi/addons/*)
|
||||
OVERLAY_PATH="/usr/lib/kernel-overlays/${ADDON_ID}"
|
||||
;;
|
||||
*)
|
||||
OVERLAY_PATH="${ADDON_PATH}/kernel-overlay"
|
||||
;;
|
||||
esac
|
||||
|
||||
create_overlay_conf() {
|
||||
rm -f "${OVERLAY_CONF}"
|
||||
echo "${OVERLAY_PATH}" > "${OVERLAY_CONF}"
|
||||
}
|
||||
|
||||
if [ -d "${OVERLAY_PATH}" ] ; then
|
||||
OVERLAY_CONF="/storage/.cache/kernel-overlays/50-${ADDON_ID}.conf"
|
||||
|
||||
case "${CONTEXT}" in
|
||||
enable | post-install )
|
||||
create_overlay_conf
|
||||
;;
|
||||
disable | pre-uninstall )
|
||||
rm -f "${OVERLAY_CONF}"
|
||||
;;
|
||||
update )
|
||||
if [ -e "${OVERLAY_CONF}" ] ; then
|
||||
create_overlay_conf
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo "$0: unknown overlay context $CONTEXT"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
fi
|
@ -1,35 +0,0 @@
|
||||
#!/bin/sh
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
if [ ! -d /storage/.config/system.d ] ; then
|
||||
mkdir -p /storage/.config/system.d
|
||||
fi
|
||||
|
||||
if [ -f "/storage/.kodi/addons/$1/system.d/$1.service" ] ; then
|
||||
if [ "_$2" = "_1" ] ; then
|
||||
# disable = true: cleanup
|
||||
systemctl stop "$1.service"
|
||||
systemctl disable "$1.service"
|
||||
else
|
||||
# disable = false: setup
|
||||
systemctl enable "/storage/.kodi/addons/$1/system.d/$1.service"
|
||||
chmod +x "/storage/.kodi/addons/$1/bin"/*
|
||||
systemctl start "$1.service"
|
||||
fi
|
||||
fi
|
@ -1011,7 +1011,7 @@
|
||||
mount --move /flash /sysroot/flash
|
||||
mount --move /storage /sysroot/storage
|
||||
|
||||
if [ ! -d "/sysroot/usr/lib/modules/$(uname -r)/" -a -f "/sysroot/usr/lib/systemd/systemd" ]; then
|
||||
if [ ! -d "/sysroot/usr/lib/kernel-overlays/base/lib/modules/$(uname -r)/" -a -f "/sysroot/usr/lib/systemd/systemd" ]; then
|
||||
echo ""
|
||||
echo "NEVER TOUCH boot= in extlinux.conf / cmdline.txt!"
|
||||
echo "If you don't know what you are doing,"
|
||||
|
@ -66,6 +66,7 @@ post_makeinstall_target() {
|
||||
ln -sf /usr/bin/kmod $INSTALL/usr/sbin/rmmod
|
||||
ln -sf /usr/bin/kmod $INSTALL/usr/sbin/modinfo
|
||||
ln -sf /usr/bin/kmod $INSTALL/usr/sbin/modprobe
|
||||
ln -sf /usr/bin/kmod $INSTALL/usr/sbin/depmod
|
||||
|
||||
mkdir -p $INSTALL/etc
|
||||
ln -sf /storage/.config/modprobe.d $INSTALL/etc/modprobe.d
|
||||
|
@ -205,8 +205,10 @@ post_makeinstall_target() {
|
||||
cp $PKG_DIR/scripts/systemd-machine-id-setup $INSTALL/usr/bin
|
||||
cp $PKG_DIR/scripts/userconfig-setup $INSTALL/usr/bin
|
||||
|
||||
# provide 'halt', 'shutdown', 'reboot' & co.
|
||||
mkdir -p $INSTALL/usr/sbin
|
||||
cp $PKG_DIR/scripts/kernel-overlays-setup $INSTALL/usr/sbin
|
||||
|
||||
# provide 'halt', 'shutdown', 'reboot' & co.
|
||||
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/halt
|
||||
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/poweroff
|
||||
ln -sf /usr/bin/systemctl $INSTALL/usr/sbin/reboot
|
||||
@ -255,5 +257,6 @@ post_install() {
|
||||
enable_service machine-id.service
|
||||
enable_service debugconfig.service
|
||||
enable_service userconfig.service
|
||||
enable_service kernel-overlays.service
|
||||
enable_service hwdb.service
|
||||
}
|
||||
|
90
packages/sysutils/systemd/scripts/kernel-overlays-setup
Executable file
90
packages/sysutils/systemd/scripts/kernel-overlays-setup
Executable file
@ -0,0 +1,90 @@
|
||||
#!/bin/sh
|
||||
################################################################################
|
||||
# This file is part of LibreELEC - https://libreelec.tv
|
||||
# Copyright (C) 2017-present Team LibreELEC
|
||||
#
|
||||
# LibreELEC is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# LibreELEC is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with LibreELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
SYSTEM_OVERLAYS_DIR=/usr/lib/kernel-overlays
|
||||
OVERLAY_CONFIG_DIR=/storage/.cache/kernel-overlays
|
||||
KVER=$(uname -r)
|
||||
MODULES_DIR="/var/lib/modules/${KVER}"
|
||||
FIRMWARE_DIR="/var/lib/firmware"
|
||||
|
||||
mkdir -p "${MODULES_DIR}"
|
||||
mkdir -p "${FIRMWARE_DIR}"
|
||||
mkdir -p "${OVERLAY_CONFIG_DIR}"
|
||||
|
||||
log() {
|
||||
echo "kernel-overlays-setup: $@" > /dev/kmsg
|
||||
}
|
||||
|
||||
apply_overlay() {
|
||||
case "$1" in
|
||||
/*)
|
||||
modules_overlay_dir="${1}/lib/modules/${KVER}"
|
||||
firmware_overlay_dir="${1}/lib/firmware"
|
||||
;;
|
||||
*)
|
||||
modules_overlay_dir="${SYSTEM_OVERLAYS_DIR}/${1}/lib/modules/${KVER}"
|
||||
firmware_overlay_dir="${SYSTEM_OVERLAYS_DIR}/${1}/lib/firmware"
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ -d "${modules_overlay_dir}" ] ; then
|
||||
GOT_MODULE_OVERLAY="yes"
|
||||
|
||||
if cp -rfs "${modules_overlay_dir}"/* "${MODULES_DIR}" ; then
|
||||
log "added modules from $modules_overlay_dir"
|
||||
else
|
||||
log "failed to add modules from $modules_overlay_dir"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -d "${firmware_overlay_dir}" ] ; then
|
||||
if cp -rfs "${firmware_overlay_dir}"/* "${FIRMWARE_DIR}" ; then
|
||||
log "added firmware from $firmware_overlay_dir"
|
||||
else
|
||||
log "failed to add firmware from $firmware_overlay_dir"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# setup system base modules
|
||||
|
||||
log "setup base modules"
|
||||
apply_overlay base
|
||||
|
||||
# apply user-configured module overlays
|
||||
|
||||
if [ -d "${OVERLAY_CONFIG_DIR}" ] ; then
|
||||
log "adding overlays from ${OVERLAY_CONFIG_DIR}"
|
||||
GOT_MODULE_OVERLAY="no"
|
||||
|
||||
for conf in "${OVERLAY_CONFIG_DIR}/"*.conf ; do
|
||||
if [ -e "$conf" ] ; then
|
||||
log "processing conf $conf"
|
||||
overlay=$(cat "$conf")
|
||||
[ -n "$overlay" ] && apply_overlay "$overlay"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "yes" = "$GOT_MODULE_OVERLAY" ] ; then
|
||||
log "running depmod"
|
||||
/usr/sbin/depmod -a
|
||||
fi
|
||||
fi
|
||||
|
||||
log "done"
|
12
packages/sysutils/systemd/system.d/kernel-overlays.service
Normal file
12
packages/sysutils/systemd/system.d/kernel-overlays.service
Normal file
@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Create kernel modules tree from overlays
|
||||
DefaultDependencies=no
|
||||
After=var.mount
|
||||
Before=systemd-udevd.service systemd-udev-trigger.service systemd-modules-load.service systemd-remount-fs.service swap.service machine-id.service kmod-static-nodes.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/usr/sbin/kernel-overlays-setup
|
||||
|
||||
[Install]
|
||||
WantedBy=local-fs.target
|
@ -67,8 +67,8 @@ makeinstall_target() {
|
||||
# rename to not conflicting with Mesa libGL.so
|
||||
cp -P libGL.so* $INSTALL/usr/lib/libGL_nvidia-legacy.so.1
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/nvidia
|
||||
ln -sf /var/lib/nvidia.ko $INSTALL/usr/lib/modules/$(get_module_dir)/nvidia/nvidia.ko
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/nvidia
|
||||
ln -sf /var/lib/nvidia.ko $INSTALL/$(get_full_module_dir)/nvidia/nvidia.ko
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/nvidia-legacy
|
||||
cp kernel/nvidia.ko $INSTALL/usr/lib/nvidia-legacy
|
||||
|
@ -70,10 +70,10 @@ makeinstall_target() {
|
||||
# rename to not conflicting with Mesa libGL.so
|
||||
cp -P libGL.so.$PKG_VERSION $INSTALL/usr/lib/libGL_nvidia.so.1
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/modules/$(get_module_dir)/nvidia
|
||||
ln -sf /var/lib/nvidia.ko $INSTALL/usr/lib/modules/$(get_module_dir)/nvidia/nvidia.ko
|
||||
cp -P kernel/nvidia-uvm.ko $INSTALL/usr/lib/modules/$(get_module_dir)/nvidia
|
||||
cp -P kernel/nvidia-modeset.ko $INSTALL/usr/lib/modules/$(get_module_dir)/nvidia
|
||||
mkdir -p $INSTALL/$(get_full_module_dir)/nvidia
|
||||
ln -sf /var/lib/nvidia.ko $INSTALL/$(get_full_module_dir)/nvidia/nvidia.ko
|
||||
cp -P kernel/nvidia-uvm.ko $INSTALL/$(get_full_module_dir)/nvidia
|
||||
cp -P kernel/nvidia-modeset.ko $INSTALL/$(get_full_module_dir)/nvidia
|
||||
|
||||
mkdir -p $INSTALL/usr/lib/nvidia
|
||||
cp -P kernel/nvidia.ko $INSTALL/usr/lib/nvidia
|
||||
|
@ -101,7 +101,7 @@ if [ "$PKG_IS_ADDON" = "yes" ] ; then
|
||||
if [ "$(type -t addon)" = "function" ]; then
|
||||
addon
|
||||
else
|
||||
install_binary_addon $PKG_NAME $PKG_ADDON_ID
|
||||
install_binary_addon $PKG_ADDON_ID
|
||||
fi
|
||||
|
||||
# HACK for packages that provide multiple addons like screensavers.rsxs
|
||||
|
@ -215,20 +215,27 @@ if [ -n "$DEVICE" -a -d "$PROJECT_DIR/$PROJECT/devices/$DEVICE/filesystem" ]; th
|
||||
done
|
||||
fi
|
||||
|
||||
# run depmod
|
||||
MODVER=$(basename $(ls -d $INSTALL/usr/lib/modules/*))
|
||||
find $INSTALL/usr/lib/modules/$MODVER/ -name *.ko | \
|
||||
sed -e "s,$INSTALL/usr/lib/modules/$MODVER/,," > $INSTALL/usr/lib/modules/$MODVER/modules.order
|
||||
$TOOLCHAIN/bin/depmod -b $INSTALL/usr -a -e -F "$BUILD/linux-$(kernel_version)/System.map" $MODVER
|
||||
# run depmod for base overlay modules
|
||||
MODVER=$(basename $(ls -d $INSTALL/usr/lib/kernel-overlays/base/lib/modules/*))
|
||||
find $INSTALL/usr/lib/kernel-overlays/base/lib/modules/$MODVER/ -name *.ko | \
|
||||
sed -e "s,$INSTALL/usr/lib/kernel-overlays/base/lib/modules/$MODVER/,," \
|
||||
> $INSTALL/usr/lib/kernel-overlays/base/lib/modules/$MODVER/modules.order
|
||||
$TOOLCHAIN/bin/depmod -b $INSTALL/usr/lib/kernel-overlays/base -a -e -F "$BUILD/linux-$(kernel_version)/System.map" $MODVER
|
||||
|
||||
# strip kernel modules
|
||||
if [ "$TARGET_KERNEL_ARCH" = "arm64" -a "$TARGET_ARCH" = "arm" ]; then
|
||||
STRIP=$TOOLCHAIN/lib/gcc-linaro-aarch64-elf/bin/aarch64-elf-strip
|
||||
fi
|
||||
for MOD in `find $INSTALL/usr/lib/modules/ -type f -name *.ko`; do
|
||||
for MOD in `find $INSTALL/usr/lib/kernel-overlays/ -type f -name *.ko`; do
|
||||
$STRIP --strip-debug $MOD
|
||||
done
|
||||
|
||||
# symlink overlayed modules to /usr/lib/modules
|
||||
ln -sT /var/lib/modules $INSTALL/usr/lib/modules
|
||||
|
||||
# symlink overlayed firmware to /usr/lib/firmware
|
||||
ln -sT /var/lib/firmware $INSTALL/usr/lib/firmware
|
||||
|
||||
# make target dir
|
||||
mkdir -p $TARGET_IMG
|
||||
rm -rf $TARGET_IMG/$IMAGE_NAME.kernel
|
||||
|
@ -22,81 +22,10 @@
|
||||
|
||||
[ -n "$2" ] && PKG_ADDON_ID=$2
|
||||
|
||||
IFS=" "
|
||||
for i in $PKG_ADDON_REQUIRES; do
|
||||
REQUIRES_ADDONNAME=`echo $i | cut -f1 -d ":"`
|
||||
REQUIRES_ADDONVERSION=`echo $i | cut -f2 -d ":"`
|
||||
REQUIRES="$REQUIRES\n <import addon=\"$REQUIRES_ADDONNAME\" version=\"$REQUIRES_ADDONVERSION\" />"
|
||||
done
|
||||
ADDON_DIRECTORY="$ADDON_BUILD/$PKG_ADDON_ID"
|
||||
|
||||
unset IFS
|
||||
mkdir -p "$ADDON_DIRECTORY"
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
|
||||
install_addon_files "$ADDON_DIRECTORY"
|
||||
|
||||
if [ ! -f $ADDON_BUILD/$PKG_ADDON_ID/addon.xml ]; then
|
||||
cp config/addon/${PKG_ADDON_TYPE}.xml $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
||||
ADDONVER=$ADDON_VERSION.$PKG_REV
|
||||
else
|
||||
if [ ! $(which xmlstarlet) ]; then
|
||||
echo "*** ERROR: $ADDON has addon.xml shipped, you need 'xmlstarlet' ***"
|
||||
exit 255
|
||||
fi
|
||||
ADDONVER="$(xmlstarlet sel -t -v "/addon/@version" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml).$PKG_REV"
|
||||
xmlstarlet ed --inplace -u "/addon[@version]/@version" -v "$ADDONVER" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
||||
fi
|
||||
|
||||
if [ -d $PKG_DIR/source ]; then
|
||||
cp -R $PKG_DIR/source/* $ADDON_BUILD/$PKG_ADDON_ID
|
||||
fi
|
||||
|
||||
if [ -f $PKG_DIR/icon/icon.png ]; then
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/resources
|
||||
cp $PKG_DIR/icon/icon.png $ADDON_BUILD/$PKG_ADDON_ID/resources
|
||||
fi
|
||||
|
||||
if [ -f $DISTRO_DIR/$DISTRO/addons/fanart.png ]; then
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/resources
|
||||
cp $DISTRO_DIR/$DISTRO/addons/fanart.png $ADDON_BUILD/$PKG_ADDON_ID/resources
|
||||
fi
|
||||
|
||||
for f in $PKG_DIR/source/resources/screenshot-*.{jpg,png}; do
|
||||
if [ -f "$f" ]; then
|
||||
PKG_ADDON_SCREENSHOT+="<screenshot>resources/$(basename $f)</screenshot>\n"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -f $PKG_DIR/changelog.txt ]; then
|
||||
sed -e "/@PKG_ADDON_NEWS@/ \
|
||||
{
|
||||
r $PKG_DIR/changelog.txt
|
||||
d
|
||||
}" -i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
||||
else
|
||||
sed -e "s|@PKG_ADDON_NEWS@||g" -i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
||||
fi
|
||||
|
||||
PROVIDER_NAME="Team LibreELEC"
|
||||
if [ ! -z "$PKG_MAINTAINER" ] ; then
|
||||
PROVIDER_NAME="$PKG_MAINTAINER"
|
||||
fi
|
||||
|
||||
ADDON_NAME="$PKG_NAME"
|
||||
if [ ! -z "$PKG_ADDON_NAME" ] ; then
|
||||
ADDON_NAME="$PKG_ADDON_NAME"
|
||||
fi
|
||||
|
||||
$SED -e "s|@PKG_ADDON_ID@|$PKG_ADDON_ID|g" \
|
||||
-e "s|@ADDON_NAME@|$ADDON_NAME|g" \
|
||||
-e "s|@ADDON_VERSION@|$ADDON_VERSION.$PKG_REV|g" \
|
||||
-e "s|@REQUIRES@|$REQUIRES|g" \
|
||||
-e "s|@PKG_SHORTDESC@|$PKG_SHORTDESC|g" \
|
||||
-e "s|@OS_VERSION@|$OS_VERSION|g" \
|
||||
-e "s|@PKG_LONGDESC@|$PKG_LONGDESC|g" \
|
||||
-e "s|@PKG_DISCLAIMER@|$PKG_DISCLAIMER|g" \
|
||||
-e "s|@PROVIDER_NAME@|$PROVIDER_NAME|g" \
|
||||
-e "s|@PKG_ADDON_PROVIDES@|$PKG_ADDON_PROVIDES|g" \
|
||||
-e "s|@PKG_ADDON_SCREENSHOT@|$PKG_ADDON_SCREENSHOT|g" \
|
||||
-e "s|@PKG_ADDON_BROKEN@|$PKG_ADDON_BROKEN|g" \
|
||||
-i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
|
||||
|
||||
debug_strip $ADDON_BUILD/$PKG_ADDON_ID
|
||||
debug_strip "$ADDON_DIRECTORY"
|
||||
|
Loading…
x
Reference in New Issue
Block a user