From 0f81420d753c249c248f8842d7030ccba1dbefe9 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Thu, 21 Apr 2016 13:25:12 -0700 Subject: [PATCH 1/4] RPi.GPIO: add package --- .../addons/addon-depends/RPi.GPIO/package.mk | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 packages/addons/addon-depends/RPi.GPIO/package.mk diff --git a/packages/addons/addon-depends/RPi.GPIO/package.mk b/packages/addons/addon-depends/RPi.GPIO/package.mk new file mode 100644 index 0000000000..0ac7751247 --- /dev/null +++ b/packages/addons/addon-depends/RPi.GPIO/package.mk @@ -0,0 +1,45 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 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 . +################################################################################ + +PKG_NAME="RPi.GPIO" +PKG_VERSION="0.6.2" +PKG_REV="1" +PKG_ARCH="arm" +PKG_LICENSE="MIT" +PKG_SITE="http://sourceforge.net/p/raspberry-gpio-python/" +PKG_URL="https://pypi.python.org/packages/source/R/RPi.GPIO/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain Python distutilscross:host" +PKG_PRIORITY="optional" +PKG_SECTION="python" +PKG_SHORTDESC="A module to control Raspberry Pi GPIO channels" +PKG_LONGDESC="A module to control Raspberry Pi GPIO channels" +PKG_AUTORECONF="no" + +pre_configure_target() { + export PYTHONXCPREFIX="$SYSROOT_PREFIX/usr" + export LDSHARED="$CC -shared" + export CPPFLAGS="$TARGET_CPPFLAGS -I${SYSROOT_PREFIX}/usr/include/python2.7" +} + +make_target() { + python setup.py build +} + +makeinstall_target() { + : # nop +} From 933a6e2839b0baa384a84f937bf3b14a71207a21 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Thu, 21 Apr 2016 13:25:12 -0700 Subject: [PATCH 2/4] picamera: add package --- .../addons/addon-depends/picamera/package.mk | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 packages/addons/addon-depends/picamera/package.mk diff --git a/packages/addons/addon-depends/picamera/package.mk b/packages/addons/addon-depends/picamera/package.mk new file mode 100644 index 0000000000..82de4b6d58 --- /dev/null +++ b/packages/addons/addon-depends/picamera/package.mk @@ -0,0 +1,39 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 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 . +################################################################################ + +PKG_NAME="picamera" +PKG_VERSION="1.10" +PKG_REV="1" +PKG_ARCH="arm" +PKG_LICENSE="BSD" +PKG_SITE="https://github.com/waveform80/picamera" +PKG_URL="https://pypi.python.org/packages/source/p/picamera/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain Python distutilscross:host bcm2835-driver" +PKG_PRIORITY="optional" +PKG_SECTION="python" +PKG_SHORTDESC="A python and shell interface for the Raspberry Pi camera module" +PKG_LONGDESC="A python and shell interface for the Raspberry Pi camera module" +PKG_AUTORECONF="no" + +make_target() { + : # nop +} + +makeinstall_target() { + : # nop +} From 2ebbe4912e856723d208f718cee1144a6e1e6c21 Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Thu, 21 Apr 2016 13:25:12 -0700 Subject: [PATCH 3/4] gpiozero: add package --- .../addons/addon-depends/gpiozero/package.mk | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 packages/addons/addon-depends/gpiozero/package.mk diff --git a/packages/addons/addon-depends/gpiozero/package.mk b/packages/addons/addon-depends/gpiozero/package.mk new file mode 100644 index 0000000000..b16899feec --- /dev/null +++ b/packages/addons/addon-depends/gpiozero/package.mk @@ -0,0 +1,39 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 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 . +################################################################################ + +PKG_NAME="gpiozero" +PKG_VERSION="1.2.0" +PKG_REV="1" +PKG_ARCH="arm" +PKG_LICENSE="BSD" +PKG_SITE="https://github.com/RPi-Distro/python-gpiozero" +PKG_URL="https://pypi.python.org/packages/source/g/$PKG_NAME/$PKG_NAME-$PKG_VERSION.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_PRIORITY="optional" +PKG_SECTION="python" +PKG_SHORTDESC="A simple interface to everyday GPIO components used with Raspberry Pi" +PKG_LONGDESC="A simple interface to everyday GPIO components used with Raspberry Pi" +PKG_AUTORECONF="no" + +make_target() { + : # nop +} + +makeinstall_target() { + : # nop +} From 4b266077bded75e62a1db971b2e61dd069824dbd Mon Sep 17 00:00:00 2001 From: Lukas Rusak Date: Thu, 21 Apr 2016 13:25:12 -0700 Subject: [PATCH 4/4] rpi-tools: initial add-on --- packages/addons/tools/rpi-tools/changelog.txt | 2 + packages/addons/tools/rpi-tools/icon/icon.png | Bin 0 -> 34370 bytes packages/addons/tools/rpi-tools/package.mk | 54 ++++++++++++++++++ .../addons/tools/rpi-tools/source/default.py | 22 +++++++ 4 files changed, 78 insertions(+) create mode 100644 packages/addons/tools/rpi-tools/changelog.txt create mode 100644 packages/addons/tools/rpi-tools/icon/icon.png create mode 100644 packages/addons/tools/rpi-tools/package.mk create mode 100644 packages/addons/tools/rpi-tools/source/default.py diff --git a/packages/addons/tools/rpi-tools/changelog.txt b/packages/addons/tools/rpi-tools/changelog.txt new file mode 100644 index 0000000000..f6abfd1747 --- /dev/null +++ b/packages/addons/tools/rpi-tools/changelog.txt @@ -0,0 +1,2 @@ +8.0.100 +- Initial Release diff --git a/packages/addons/tools/rpi-tools/icon/icon.png b/packages/addons/tools/rpi-tools/icon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..5c2453be5d92c715e12a27e036d4d6a4ab97bae0 GIT binary patch literal 34370 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 KB`U;>gZ~dj?yZ*q literal 0 HcmV?d00001 diff --git a/packages/addons/tools/rpi-tools/package.mk b/packages/addons/tools/rpi-tools/package.mk new file mode 100644 index 0000000000..d55c7a6f33 --- /dev/null +++ b/packages/addons/tools/rpi-tools/package.mk @@ -0,0 +1,54 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 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 . +################################################################################ + +PKG_NAME="rpi-tools" +PKG_VERSION="" +PKG_REV="100" +PKG_ARCH="arm" +PKG_LICENSE="GPL" +PKG_SITE="" +PKG_URL="" +PKG_DEPENDS_TARGET="toolchain RPi.GPIO picamera gpiozero" +PKG_PRIORITY="optional" +PKG_SECTION="virtual" +PKG_SHORTDESC="A bundle of tools and programs for use on the Raspberry Pi" +PKG_LONGDESC="This bundle currently includes RPi.GPIO, picamera, and gpiozero python modules" +PKG_DISCAIMER="Raspberry Pi is a trademark of the Raspberry Pi Foundation http://www.raspberrypi.org" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="Raspberry Pi Tools" +PKG_ADDON_TYPE="xbmc.python.module" +PKG_ADDON_PROVIDES="" +PKG_ADDON_PROJECTS="RPi RPi2" +PKG_ADDON_REPOVERSION="8.0" + +PKG_AUTORECONF="no" + +addon() { + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib/RPi/ + cp -PR $(get_build_dir RPi.GPIO)/build/lib.linux-*/RPi/* $ADDON_BUILD/$PKG_ADDON_ID/lib/RPi + cp -PR $(get_build_dir picamera)/picamera $ADDON_BUILD/$PKG_ADDON_ID/lib/ + cp -PR $(get_build_dir gpiozero)/gpiozero $ADDON_BUILD/$PKG_ADDON_ID/lib/ + + BCM2835_DIR="$(get_build_dir bcm2835-driver)" + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin/ + cp -P $BCM2835_DIR/hardfp/opt/vc/bin/raspistill $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $BCM2835_DIR/hardfp/opt/vc/bin/raspiyuv $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $BCM2835_DIR/hardfp/opt/vc/bin/raspivid $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $BCM2835_DIR/hardfp/opt/vc/bin/raspividyuv $ADDON_BUILD/$PKG_ADDON_ID/bin +} diff --git a/packages/addons/tools/rpi-tools/source/default.py b/packages/addons/tools/rpi-tools/source/default.py new file mode 100644 index 0000000000..67e12970fe --- /dev/null +++ b/packages/addons/tools/rpi-tools/source/default.py @@ -0,0 +1,22 @@ +################################################################################ +# This file is part of LibreELEC - http://www.libreelec.tv +# Copyright (C) 2016 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 . +################################################################################ + +import xbmcgui + +dialog = xbmcgui.Dialog() +dialog.ok('', 'This is a console-only addon')