From 91964543ccc27269bfd73250ccceeb0168196227 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Tue, 14 Mar 2017 10:38:42 -0700 Subject: [PATCH 1/2] kodi: cleanup various xml files --- .../mediacenter/kodi/config/advancedsettings.xml | 13 ------------- projects/Generic/kodi/advancedsettings.xml | 14 ++++++++++++++ projects/Odroid_C2/kodi/advancedsettings.xml | 4 ++++ projects/RPi/kodi/advancedsettings.xml | 8 -------- projects/RPi2/kodi/advancedsettings.xml | 8 -------- projects/WeTek_Core/kodi/advancedsettings.xml | 9 ++------- projects/WeTek_Hub/kodi/advancedsettings.xml | 9 ++------- projects/WeTek_Play/kodi/advancedsettings.xml | 9 ++------- projects/WeTek_Play_2/kodi/advancedsettings.xml | 9 ++------- projects/imx6/kodi/advancedsettings.xml | 8 ++------ projects/imx6/kodi/guisettings.xml | 5 ----- 11 files changed, 28 insertions(+), 68 deletions(-) create mode 100644 projects/Generic/kodi/advancedsettings.xml create mode 100644 projects/Odroid_C2/kodi/advancedsettings.xml diff --git a/packages/mediacenter/kodi/config/advancedsettings.xml b/packages/mediacenter/kodi/config/advancedsettings.xml index ea5d611759..ac55598665 100644 --- a/packages/mediacenter/kodi/config/advancedsettings.xml +++ b/packages/mediacenter/kodi/config/advancedsettings.xml @@ -1,19 +1,6 @@ - false 1 - cputemp - gputemp - 30 diff --git a/projects/Generic/kodi/advancedsettings.xml b/projects/Generic/kodi/advancedsettings.xml new file mode 100644 index 0000000000..9bffe9c05b --- /dev/null +++ b/projects/Generic/kodi/advancedsettings.xml @@ -0,0 +1,14 @@ + + cputemp + gputemp + + diff --git a/projects/Odroid_C2/kodi/advancedsettings.xml b/projects/Odroid_C2/kodi/advancedsettings.xml new file mode 100644 index 0000000000..e37a965f54 --- /dev/null +++ b/projects/Odroid_C2/kodi/advancedsettings.xml @@ -0,0 +1,4 @@ + + cputemp + gputemp + diff --git a/projects/RPi/kodi/advancedsettings.xml b/projects/RPi/kodi/advancedsettings.xml index 00ed0dda87..34d27842b4 100644 --- a/projects/RPi/kodi/advancedsettings.xml +++ b/projects/RPi/kodi/advancedsettings.xml @@ -1,12 +1,4 @@ - - false - 1 - 720 540 - - - 30 - diff --git a/projects/RPi2/kodi/advancedsettings.xml b/projects/RPi2/kodi/advancedsettings.xml index 00ed0dda87..34d27842b4 100644 --- a/projects/RPi2/kodi/advancedsettings.xml +++ b/projects/RPi2/kodi/advancedsettings.xml @@ -1,12 +1,4 @@ - - false - 1 - 720 540 - - - 30 - diff --git a/projects/WeTek_Core/kodi/advancedsettings.xml b/projects/WeTek_Core/kodi/advancedsettings.xml index cd65434ad5..e37a965f54 100644 --- a/projects/WeTek_Core/kodi/advancedsettings.xml +++ b/projects/WeTek_Core/kodi/advancedsettings.xml @@ -1,9 +1,4 @@ - - false - 1 - - - 30 - + cputemp + gputemp diff --git a/projects/WeTek_Hub/kodi/advancedsettings.xml b/projects/WeTek_Hub/kodi/advancedsettings.xml index cd65434ad5..e37a965f54 100644 --- a/projects/WeTek_Hub/kodi/advancedsettings.xml +++ b/projects/WeTek_Hub/kodi/advancedsettings.xml @@ -1,9 +1,4 @@ - - false - 1 - - - 30 - + cputemp + gputemp diff --git a/projects/WeTek_Play/kodi/advancedsettings.xml b/projects/WeTek_Play/kodi/advancedsettings.xml index cd65434ad5..e37a965f54 100644 --- a/projects/WeTek_Play/kodi/advancedsettings.xml +++ b/projects/WeTek_Play/kodi/advancedsettings.xml @@ -1,9 +1,4 @@ - - false - 1 - - - 30 - + cputemp + gputemp diff --git a/projects/WeTek_Play_2/kodi/advancedsettings.xml b/projects/WeTek_Play_2/kodi/advancedsettings.xml index cd65434ad5..e37a965f54 100644 --- a/projects/WeTek_Play_2/kodi/advancedsettings.xml +++ b/projects/WeTek_Play_2/kodi/advancedsettings.xml @@ -1,9 +1,4 @@ - - false - 1 - - - 30 - + cputemp + gputemp diff --git a/projects/imx6/kodi/advancedsettings.xml b/projects/imx6/kodi/advancedsettings.xml index 2ef3dccb44..e37a965f54 100644 --- a/projects/imx6/kodi/advancedsettings.xml +++ b/projects/imx6/kodi/advancedsettings.xml @@ -1,8 +1,4 @@ - - false - 1 - - 30 - + cputemp + gputemp diff --git a/projects/imx6/kodi/guisettings.xml b/projects/imx6/kodi/guisettings.xml index 7e4ba03a97..7a123f8f11 100644 --- a/projects/imx6/kodi/guisettings.xml +++ b/projects/imx6/kodi/guisettings.xml @@ -8,9 +8,4 @@ ALSA:hdmi:CARD=imxhdmisoc,DEV=0 - From 8fd902f197bb9a2a22fa71ad1b28291c741e42c7 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Tue, 14 Mar 2017 10:38:42 -0700 Subject: [PATCH 2/2] kodi: add xml_merge.py script to process xml files during installation --- packages/mediacenter/kodi/package.mk | 52 +++++++------------ .../mediacenter/kodi/scripts/xml_merge.py | 51 ++++++++++++++++++ 2 files changed, 71 insertions(+), 32 deletions(-) create mode 100755 packages/mediacenter/kodi/scripts/xml_merge.py diff --git a/packages/mediacenter/kodi/package.mk b/packages/mediacenter/kodi/package.mk index 9a148f5532..27d05d2f37 100644 --- a/packages/mediacenter/kodi/package.mk +++ b/packages/mediacenter/kodi/package.mk @@ -292,39 +292,27 @@ post_makeinstall_target() { $SED "s|@ADDON_URL@|http://lrusak.libreelec.tv/addons/$ADDON_PATH|g" $INSTALL/usr/share/kodi/addons/repository.retroplayer.libreelec.tv/addon.xml mkdir -p $INSTALL/usr/share/kodi/config - cp $PKG_DIR/config/guisettings.xml $INSTALL/usr/share/kodi/config - cp $PKG_DIR/config/sources.xml $INSTALL/usr/share/kodi/config - -# install project specific configs - if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/guisettings.xml ]; then - cp -R $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/guisettings.xml $INSTALL/usr/share/kodi/config - elif [ -f $PROJECT_DIR/$PROJECT/kodi/guisettings.xml ]; then - cp -R $PROJECT_DIR/$PROJECT/kodi/guisettings.xml $INSTALL/usr/share/kodi/config - fi - - if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/sources.xml ]; then - cp -R $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/sources.xml $INSTALL/usr/share/kodi/config - elif [ -f $PROJECT_DIR/$PROJECT/kodi/sources.xml ]; then - cp -R $PROJECT_DIR/$PROJECT/kodi/sources.xml $INSTALL/usr/share/kodi/config - fi - - mkdir -p $INSTALL/usr/share/kodi/system/ - if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/advancedsettings.xml ]; then - cp $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/advancedsettings.xml $INSTALL/usr/share/kodi/system/ - elif [ -f $PROJECT_DIR/$PROJECT/kodi/advancedsettings.xml ]; then - cp $PROJECT_DIR/$PROJECT/kodi/advancedsettings.xml $INSTALL/usr/share/kodi/system/ - else - cp $PKG_DIR/config/advancedsettings.xml $INSTALL/usr/share/kodi/system/ - fi - mkdir -p $INSTALL/usr/share/kodi/system/settings - if [ -n "$DEVICE" -a -f $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/appliance.xml ]; then - cp $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/appliance.xml $INSTALL/usr/share/kodi/system/settings - elif [ -f $PROJECT_DIR/$PROJECT/kodi/appliance.xml ]; then - cp $PROJECT_DIR/$PROJECT/kodi/appliance.xml $INSTALL/usr/share/kodi/system/settings - else - cp $PKG_DIR/config/appliance.xml $INSTALL/usr/share/kodi/system/settings - fi + + $PKG_DIR/scripts/xml_merge.py $PKG_DIR/config/guisettings.xml \ + $PROJECT_DIR/$PROJECT/kodi/guisettings.xml + $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/guisettings.xml \ + > $INSTALL/usr/share/kodi/config/guisettings.xml + + $PKG_DIR/scripts/xml_merge.py $PKG_DIR/config/sources.xml \ + $PROJECT_DIR/$PROJECT/kodi/sources.xml + $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/sources.xml \ + > $INSTALL/usr/share/kodi/config/sources.xml + + $PKG_DIR/scripts/xml_merge.py $PKG_DIR/config/advancedsettings.xml \ + $PROJECT_DIR/$PROJECT/kodi/advancedsettings.xml + $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/advancedsettings.xml \ + > $INSTALL/usr/share/kodi/system/advancedsettings.xml + + $PKG_DIR/scripts/xml_merge.py $PKG_DIR/config/appliance.xml \ + $PROJECT_DIR/$PROJECT/kodi/appliance.xml + $PROJECT_DIR/$PROJECT/devices/$DEVICE/kodi/appliance.xml \ + > $INSTALL/usr/share/kodi/system/settings/appliance.xml # update addon manifest ADDON_MANIFEST=$INSTALL/usr/share/kodi/system/addon-manifest.xml diff --git a/packages/mediacenter/kodi/scripts/xml_merge.py b/packages/mediacenter/kodi/scripts/xml_merge.py new file mode 100755 index 0000000000..f5ccaaca82 --- /dev/null +++ b/packages/mediacenter/kodi/scripts/xml_merge.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python2 + +# taken from http://stackoverflow.com/a/14879370 with minor modifications + +import os +import sys +import xml.dom.minidom +from xml.etree import ElementTree as et + +class XMLCombiner(object): + def __init__(self, filenames): + assert len(filenames) > 0, 'No filenames!' + self.roots = [et.parse(f).getroot() for f in filenames] + + def prettyPrint(self, etree_xml): + minidom = xml.dom.minidom.parseString(et.tostring(etree_xml)) + return "\n".join([line for line in minidom.toprettyxml(indent=" ", encoding="utf-8").split('\n') if line.strip() != ""]) + + def combine(self): + for r in self.roots[1:]: + self.combine_element(self.roots[0], r) + return self.prettyPrint(self.roots[0]) + + def combine_element(self, one, other): + mapping = {el.tag: el for el in one} + for el in other: + if len(el) == 0: + try: + mapping[el.tag].text = el.text + except KeyError: + mapping[el.tag] = el + one.append(el) + else: + try: + self.combine_element(mapping[el.tag], el) + except KeyError: + mapping[el.tag] = el + one.append(el) + +if __name__ == '__main__': + try: + r = XMLCombiner([sys.argv[1], sys.argv[2], sys.argv[3]]).combine() + except IOError: + try: + r = XMLCombiner([sys.argv[1], sys.argv[2]]).combine() + except IOError: + try: + r = XMLCombiner([sys.argv[1], sys.argv[3]]).combine() + except IOError: + r = XMLCombiner([sys.argv[1]]).combine() + print(r)