diff --git a/config/functions b/config/functions index e02b9be364..dea1198531 100644 --- a/config/functions +++ b/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 " +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+="resources/$(basename $f)\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() { diff --git a/packages/linux-drivers/RTL8188EU/package.mk b/packages/linux-drivers/RTL8188EU/package.mk index d9ecaad289..9652f95089 100644 --- a/packages/linux-drivers/RTL8188EU/package.mk +++ b/packages/linux-drivers/RTL8188EU/package.mk @@ -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 } diff --git a/packages/linux-drivers/RTL8192CU/package.mk b/packages/linux-drivers/RTL8192CU/package.mk index 7bdd26cf5e..8ba1a2122f 100644 --- a/packages/linux-drivers/RTL8192CU/package.mk +++ b/packages/linux-drivers/RTL8192CU/package.mk @@ -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 } diff --git a/packages/linux-drivers/RTL8192DU/package.mk b/packages/linux-drivers/RTL8192DU/package.mk index 09a54d1f50..a02f838171 100644 --- a/packages/linux-drivers/RTL8192DU/package.mk +++ b/packages/linux-drivers/RTL8192DU/package.mk @@ -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 } diff --git a/packages/linux-drivers/RTL8192EU/package.mk b/packages/linux-drivers/RTL8192EU/package.mk index 2958b076c8..615e4d869c 100644 --- a/packages/linux-drivers/RTL8192EU/package.mk +++ b/packages/linux-drivers/RTL8192EU/package.mk @@ -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 } diff --git a/packages/linux-drivers/RTL8812AU/package.mk b/packages/linux-drivers/RTL8812AU/package.mk index 4725b346e7..48c6ea2af8 100644 --- a/packages/linux-drivers/RTL8812AU/package.mk +++ b/packages/linux-drivers/RTL8812AU/package.mk @@ -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 } diff --git a/packages/linux-drivers/bcm_sta/package.mk b/packages/linux-drivers/bcm_sta/package.mk index ac55c6b9c6..3b34f6878b 100644 --- a/packages/linux-drivers/bcm_sta/package.mk +++ b/packages/linux-drivers/bcm_sta/package.mk @@ -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 } diff --git a/packages/linux-drivers/brcmap6xxx-aml/package.mk b/packages/linux-drivers/brcmap6xxx-aml/package.mk index f0af7b4104..5bf544220b 100644 --- a/packages/linux-drivers/brcmap6xxx-aml/package.mk +++ b/packages/linux-drivers/brcmap6xxx-aml/package.mk @@ -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 } diff --git a/packages/linux-drivers/dvbhdhomerun/package.mk b/packages/linux-drivers/dvbhdhomerun/package.mk index a1e94e9065..73d39b77eb 100644 --- a/packages/linux-drivers/dvbhdhomerun/package.mk +++ b/packages/linux-drivers/dvbhdhomerun/package.mk @@ -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 diff --git a/packages/linux-drivers/intel_nuc_led/package.mk b/packages/linux-drivers/intel_nuc_led/package.mk index ff302fe446..5512e0f47b 100644 --- a/packages/linux-drivers/intel_nuc_led/package.mk +++ b/packages/linux-drivers/intel_nuc_led/package.mk @@ -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 } diff --git a/packages/linux-drivers/media_build/package.mk b/packages/linux-drivers/media_build/package.mk index 01676fae91..02dc59ec31 100644 --- a/packages/linux-drivers/media_build/package.mk +++ b/packages/linux-drivers/media_build/package.mk @@ -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 \; } diff --git a/packages/linux-drivers/slice-drivers/package.mk b/packages/linux-drivers/slice-drivers/package.mk index 70e4ef38e3..c703ed9540 100644 --- a/packages/linux-drivers/slice-drivers/package.mk +++ b/packages/linux-drivers/slice-drivers/package.mk @@ -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 } diff --git a/packages/linux-drivers/wetekdvb/package.mk b/packages/linux-drivers/wetekdvb/package.mk index 18f0c001d5..c6d263a8ad 100644 --- a/packages/linux-drivers/wetekdvb/package.mk +++ b/packages/linux-drivers/wetekdvb/package.mk @@ -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) } diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk index c11f7b6fd5..c8511dee00 100644 --- a/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk +++ b/packages/linux-firmware/brcmfmac_sdio-firmware-rpi/package.mk @@ -36,7 +36,7 @@ make_target() { } makeinstall_target() { - DESTDIR=$INSTALL/usr ./install + DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install } post_makeinstall_target() { diff --git a/packages/linux-firmware/dvb-firmware/package.mk b/packages/linux-firmware/dvb-firmware/package.mk index 69f623f96e..5ace21de9a 100644 --- a/packages/linux-firmware/dvb-firmware/package.mk +++ b/packages/linux-firmware/dvb-firmware/package.mk @@ -35,5 +35,5 @@ make_target() { } makeinstall_target() { - DESTDIR=$INSTALL/usr ./install + DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install } diff --git a/packages/linux-firmware/firmware-imx/package.mk b/packages/linux-firmware/firmware-imx/package.mk index 6103ba8dcd..28c4226f19 100644 --- a/packages/linux-firmware/firmware-imx/package.mk +++ b/packages/linux-firmware/firmware-imx/package.mk @@ -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 } diff --git a/packages/linux-firmware/iwlwifi-firmware/package.mk b/packages/linux-firmware/iwlwifi-firmware/package.mk index da732181f4..26caafbefb 100644 --- a/packages/linux-firmware/iwlwifi-firmware/package.mk +++ b/packages/linux-firmware/iwlwifi-firmware/package.mk @@ -36,5 +36,5 @@ make_target() { } makeinstall_target() { - DESTDIR=$INSTALL/usr ./install + DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install } diff --git a/packages/linux-firmware/kernel-firmware/package.mk b/packages/linux-firmware/kernel-firmware/package.mk index 12867d06da..43ef8e8aac 100644 --- a/packages/linux-firmware/kernel-firmware/package.mk +++ b/packages/linux-firmware/kernel-firmware/package.mk @@ -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" diff --git a/packages/linux-firmware/misc-firmware/package.mk b/packages/linux-firmware/misc-firmware/package.mk index 5bb1b688a8..fc2519be76 100644 --- a/packages/linux-firmware/misc-firmware/package.mk +++ b/packages/linux-firmware/misc-firmware/package.mk @@ -36,5 +36,5 @@ make_target() { } makeinstall_target() { - DESTDIR=$INSTALL/usr ./install + DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install } diff --git a/packages/linux-firmware/wlan-firmware-aml/package.mk b/packages/linux-firmware/wlan-firmware-aml/package.mk index 8480ca7cca..eee765454c 100644 --- a/packages/linux-firmware/wlan-firmware-aml/package.mk +++ b/packages/linux-firmware/wlan-firmware-aml/package.mk @@ -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 } diff --git a/packages/linux-firmware/wlan-firmware/package.mk b/packages/linux-firmware/wlan-firmware/package.mk index 65e2b63f9b..87e8df52f4 100644 --- a/packages/linux-firmware/wlan-firmware/package.mk +++ b/packages/linux-firmware/wlan-firmware/package.mk @@ -36,5 +36,5 @@ make_target() { } makeinstall_target() { - DESTDIR=$INSTALL/usr ./install + DESTDIR=$INSTALL/$(get_kernel_overlay_dir) ./install } diff --git a/packages/linux/package.mk b/packages/linux/package.mk index 173afce9a0..9bc0e1d766 100644 --- a/packages/linux/package.mk +++ b/packages/linux/package.mk @@ -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 } diff --git a/packages/mediacenter/kodi-binary-addons/inputstream.adaptive/package.mk b/packages/mediacenter/kodi-binary-addons/inputstream.adaptive/package.mk index 358285b995..46f60affab 100644 --- a/packages/mediacenter/kodi-binary-addons/inputstream.adaptive/package.mk +++ b/packages/mediacenter/kodi-binary-addons/inputstream.adaptive/package.mk @@ -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 diff --git a/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk b/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk index 6ab26bf66a..9e66c7ab39 100644 --- a/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk +++ b/packages/mediacenter/kodi-binary-addons/screensavers.rsxs/package.mk @@ -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 diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index efa80c96ca..08692726a8 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -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 diff --git a/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-service-addons.patch b/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-service-addons.patch new file mode 100644 index 0000000000..84d2f12a01 --- /dev/null +++ b/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-service-addons.patch @@ -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: diff --git a/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-systemd-services.patch b/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-systemd-services.patch deleted file mode 100644 index 8b83bb8bca..0000000000 --- a/packages/mediacenter/kodi/patches/kodi-100.09-use-a-wrapper-to-setup-systemd-services.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 4abf9ef52d9f5cf625e196935683eb35f150e7e9 Mon Sep 17 00:00:00 2001 -From: MilhouseVH -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 - diff --git a/packages/mediacenter/kodi/scripts/service-addon-wrapper b/packages/mediacenter/kodi/scripts/service-addon-wrapper new file mode 100755 index 0000000000..83aca484fa --- /dev/null +++ b/packages/mediacenter/kodi/scripts/service-addon-wrapper @@ -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 . +################################################################################ + +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 diff --git a/packages/mediacenter/kodi/scripts/systemd-addon-wrapper b/packages/mediacenter/kodi/scripts/systemd-addon-wrapper deleted file mode 100755 index 32630c8ca0..0000000000 --- a/packages/mediacenter/kodi/scripts/systemd-addon-wrapper +++ /dev/null @@ -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 . -################################################################################ - -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 diff --git a/packages/sysutils/busybox/scripts/init b/packages/sysutils/busybox/scripts/init index 69170c6986..4f72249796 100755 --- a/packages/sysutils/busybox/scripts/init +++ b/packages/sysutils/busybox/scripts/init @@ -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," diff --git a/packages/sysutils/kmod/package.mk b/packages/sysutils/kmod/package.mk index cb430be3d4..b398646a48 100644 --- a/packages/sysutils/kmod/package.mk +++ b/packages/sysutils/kmod/package.mk @@ -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 diff --git a/packages/sysutils/systemd/package.mk b/packages/sysutils/systemd/package.mk index b57864f6e6..c08ac6e746 100644 --- a/packages/sysutils/systemd/package.mk +++ b/packages/sysutils/systemd/package.mk @@ -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 } diff --git a/packages/sysutils/systemd/scripts/kernel-overlays-setup b/packages/sysutils/systemd/scripts/kernel-overlays-setup new file mode 100755 index 0000000000..27326a46c7 --- /dev/null +++ b/packages/sysutils/systemd/scripts/kernel-overlays-setup @@ -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 . +################################################################################ + +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" diff --git a/packages/sysutils/systemd/system.d/kernel-overlays.service b/packages/sysutils/systemd/system.d/kernel-overlays.service new file mode 100644 index 0000000000..5d771ac3a0 --- /dev/null +++ b/packages/sysutils/systemd/system.d/kernel-overlays.service @@ -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 diff --git a/packages/x11/driver/xf86-video-nvidia-legacy/package.mk b/packages/x11/driver/xf86-video-nvidia-legacy/package.mk index 6b7512c1cb..00f772f630 100644 --- a/packages/x11/driver/xf86-video-nvidia-legacy/package.mk +++ b/packages/x11/driver/xf86-video-nvidia-legacy/package.mk @@ -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 diff --git a/packages/x11/driver/xf86-video-nvidia/package.mk b/packages/x11/driver/xf86-video-nvidia/package.mk index 2c222a7023..3085475158 100644 --- a/packages/x11/driver/xf86-video-nvidia/package.mk +++ b/packages/x11/driver/xf86-video-nvidia/package.mk @@ -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 diff --git a/scripts/create_addon b/scripts/create_addon index 777ad76c7a..89131d1e40 100755 --- a/scripts/create_addon +++ b/scripts/create_addon @@ -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 diff --git a/scripts/image b/scripts/image index e1674fbbd1..491f38dc72 100755 --- a/scripts/image +++ b/scripts/image @@ -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 diff --git a/scripts/install_addon b/scripts/install_addon index 746d753b27..6f23bad429 100755 --- a/scripts/install_addon +++ b/scripts/install_addon @@ -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 " -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+="resources/$(basename $f)\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"