Compare commits
104 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f8a8d878a5 | ||
|
|
d60a579dfc | ||
|
|
0d3512d492 | ||
|
|
c34104feed | ||
|
|
3585439653 | ||
|
|
926ed98ad4 | ||
|
|
243886e415 | ||
|
|
8744b4876c | ||
|
|
1b99a105fc | ||
|
|
6d192350c3 | ||
|
|
094be53b37 | ||
|
|
48cb2b7581 | ||
|
|
86f796d618 | ||
|
|
62ede1ba96 | ||
|
|
5703acd71f | ||
|
|
b147dc33ab | ||
|
|
a1047be164 | ||
|
|
ff9b487fe9 | ||
|
|
b4a494f231 | ||
|
|
885cb9c2f2 | ||
|
|
1ba716ff1a | ||
|
|
2b45337f3b | ||
|
|
0dfe65f0b2 | ||
|
|
313060e13e | ||
|
|
f4eb2af766 | ||
|
|
93987c3c2e | ||
|
|
1af41effbc | ||
|
|
1fecfa9bcb | ||
|
|
3cbed0708e | ||
|
|
83163d7603 | ||
|
|
94b5be6fc3 | ||
|
|
8dc105dc43 | ||
|
|
32d9edfa4e | ||
|
|
f7e1f6702d | ||
|
|
f98750943c | ||
|
|
3a164d0a84 | ||
|
|
ad1e4fb8fe | ||
|
|
04600bf444 | ||
|
|
89aabaaf9f | ||
|
|
f0187ecbfe | ||
|
|
2d2557f31b | ||
|
|
815f2e7547 | ||
|
|
752cfd01f0 | ||
|
|
d282b30f4e | ||
|
|
917501c9b7 | ||
|
|
c1b70632ba | ||
|
|
54db1b3339 | ||
|
|
8e2b320b99 | ||
|
|
cc9335d6e5 | ||
|
|
4145cfe956 | ||
|
|
4a3bd93539 | ||
|
|
f107fee66f | ||
|
|
aa9b78065d | ||
|
|
aaa2c58989 | ||
|
|
d37c22d61f | ||
|
|
0f820b3068 | ||
|
|
b0482f422b | ||
|
|
792a28b64b | ||
|
|
cb4f28a577 | ||
|
|
7a30bdab0d | ||
|
|
8cc3a30690 | ||
|
|
8e4c355a16 | ||
|
|
a3cc43c4ef | ||
|
|
d90ad6a0af | ||
|
|
3a844a56af | ||
|
|
4e8086843a | ||
|
|
7f8f2e09c3 | ||
|
|
81e511484d | ||
|
|
28493a0ecb | ||
|
|
0f1e2130e6 | ||
|
|
8fe7fb4eaf | ||
|
|
1a3380a66f | ||
|
|
cc49129ea6 | ||
|
|
dbe59534c6 | ||
|
|
171e9da663 | ||
|
|
273585c995 | ||
|
|
9ef4973efa | ||
|
|
9999a2a864 | ||
|
|
7e4ab7250f | ||
|
|
e92c0b39d6 | ||
|
|
e423e70267 | ||
|
|
261b9f041b | ||
|
|
ed84d28cb3 | ||
|
|
e152b81ec6 | ||
|
|
233710a48f | ||
|
|
0908a504c9 | ||
|
|
769122992d | ||
|
|
2ba5ddac6c | ||
|
|
0fca33726d | ||
|
|
adfcd74f37 | ||
|
|
6408e17a5d | ||
|
|
3b96de2f8a | ||
|
|
091ae119ad | ||
|
|
dd83d899f5 | ||
|
|
6690b7360e | ||
|
|
b52a555a22 | ||
|
|
76f4e6db01 | ||
|
|
e0dc3d7e9e | ||
|
|
4fcc3ce6d9 | ||
|
|
443b4fd6a6 | ||
|
|
8e45336ea0 | ||
|
|
3bffa1bf6c | ||
|
|
07407b98f3 | ||
|
|
f3b9188ac1 |
@@ -35,12 +35,6 @@ Feature requests are great, but they usually end up lying around the issue
|
||||
tracker indefinitely. Sending a pull request is a much better way of getting a
|
||||
particular feature into OpenELEC.
|
||||
|
||||
Please dont ask us to add 3rdparty drivers unless you are the maintainer/developer of the driver,
|
||||
we have no manpower to support a non-mainlined kernel driver for your hardware.
|
||||
However, OpenELEC comes with minimal set of kernel drivers enabled, if you are sure that your hardware
|
||||
is supported in mainline kernel, feel free to send us a Pull Request to enable it in our
|
||||
kernel defconfigs. We are always happy to support known-working hardware.
|
||||
|
||||
### Reporting build failures
|
||||
|
||||
As buildsystem / core packages (toolchain) / random libraries change from time to time, it is required
|
||||
|
||||
6
Makefile
@@ -11,12 +11,12 @@ release:
|
||||
image:
|
||||
./scripts/image mkimage
|
||||
|
||||
image-efi:
|
||||
./scripts/image mkimage efi
|
||||
|
||||
noobs:
|
||||
./scripts/image noobs
|
||||
|
||||
amlpkg:
|
||||
./scripts/image amlpkg
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIRS)/* $(BUILD_DIRS)/.stamps
|
||||
|
||||
|
||||
20
README.md
@@ -2,8 +2,8 @@
|
||||
|
||||
# OpenELEC - Open Embedded Linux Entertainment Center
|
||||
|
||||
OpenELEC runs [Kodi](http://kodi.tv), an award-winning free and open source (GPL) software media
|
||||
player and entertainment hub for digital media. For more info see http://kodi.tv .
|
||||
OpenELEC runs [XBMC](http://xbmc.org), an award-winning free and open source (GPL) software media
|
||||
player and entertainment hub for digital media. For more info see http://xbmc.org .
|
||||
The base system has been designed and built from the ground up to be as
|
||||
efficient as possible – consuming only tiny disk and memory footprints and
|
||||
providing cutting edge hardware support to deliver a set-top box experience.
|
||||
@@ -16,6 +16,10 @@ providing cutting edge hardware support to deliver a set-top box experience.
|
||||
|
||||
* Please read the instructions in our wiki (http://wiki.openelec.tv/index.php?title=Installation) on how to install.
|
||||
|
||||
**Known issues**
|
||||
|
||||
* Testing snapshot
|
||||
|
||||
**License**
|
||||
|
||||
* OpenELEC is released under [GPLv2](http://www.gnu.org/licenses/gpl-2.0.html). Please refer to the "licenses" folder and
|
||||
@@ -40,15 +44,16 @@ providing cutting edge hardware support to deliver a set-top box experience.
|
||||
|
||||
**Features**
|
||||
|
||||
* System size ~ 90 - 170MB
|
||||
* System size ~ 90 - 130MB
|
||||
* Minimal hardware requirements
|
||||
* Ultra fast boot
|
||||
* Simple configuration via Kodi itself
|
||||
* Optimized builds for platforms such as ION, Intel, Fusion
|
||||
* Simple configuration via XBMC itself
|
||||
* Plug and Play external storage
|
||||
|
||||
**Software**
|
||||
|
||||
* Kodi HTPC software – View/Manage all your media.
|
||||
* XBMC HTPC software – View/Manage all your media.
|
||||
* Samba server – File transfer from any PC client
|
||||
* SSH server – Remote console access for debugging
|
||||
* IR/Bluetooth Remote Control
|
||||
@@ -63,12 +68,13 @@ providing cutting edge hardware support to deliver a set-top box experience.
|
||||
All data transfered to the machine will go here, the rest of the system is
|
||||
read-only with the exception of /var (containing runtime configuration data).
|
||||
* Manual update/downgrade procedure is as follows:
|
||||
Copy the snapshot (.tar) to the 'Update' network share (or /storage/.update) on
|
||||
Extract the snapshot and navigate to the 'target' directory.
|
||||
Copy KERNEL and SYSTEM along with KERNEL.md5 and SYSTEM.md5 to the 'Update' network share (or /storage/.update) on
|
||||
your openelec machine. Your system will automatically upgrade during the
|
||||
next reboot.
|
||||
* Automatic mounting of filesystems is supported. Devices such as USB Flash
|
||||
sticks can be plugged into a running machine and will be mounted to /media,
|
||||
showing up in Kodi’s GUI.
|
||||
showing up in xbmc’s GUI.
|
||||
* Comments and questions are more than welcome, help is even better and patches
|
||||
are absolutely perfect!!
|
||||
|
||||
|
||||
8
TODO
Normal file
@@ -0,0 +1,8 @@
|
||||
ncurses-5.8/5.9:
|
||||
- segfaults in nano and dialog -> using ncurses-5.7
|
||||
|
||||
irserver:
|
||||
- rework irserver/init.d for systemd
|
||||
|
||||
settings addon:
|
||||
- remove ps3 sleep? should be fixed in bluez 5.13/5.14
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@ADDON_NAME@"
|
||||
name="@PKG_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
@@ -8,9 +8,11 @@
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="xbmc.python.script" library="default.py" />
|
||||
<extension point="xbmc.python.module" library="lib/">
|
||||
<extension point="@PKG_ADDON_TYPE@"
|
||||
library="default.py">
|
||||
<provides>executable</provides>
|
||||
</extension>
|
||||
@EXTENSIONS@
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@ADDON_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
<import addon="os.openelec.tv" version="@OS_VERSION@"/>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="xbmc.python.script" library="default.py">
|
||||
<provides>@PKG_ADDON_PROVIDES@</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
@PKG_LONGDESC@
|
||||
</description>
|
||||
<disclaimer>
|
||||
@PKG_DISCLAIMER@
|
||||
</disclaimer>
|
||||
<platform>all</platform>
|
||||
</extension>
|
||||
</addon>
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="@PKG_ADDON_ID@"
|
||||
name="@ADDON_NAME@"
|
||||
version="@ADDON_VERSION@"
|
||||
provider-name="@PROVIDER_NAME@">
|
||||
<requires>
|
||||
<import addon="os.openelec.tv" version="@OS_VERSION@"/>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
@REQUIRES@
|
||||
</requires>
|
||||
<extension point="xbmc.service" library="default.py">
|
||||
<provides>@PKG_ADDON_PROVIDES@</provides>
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>@PKG_SHORTDESC@</summary>
|
||||
<description>
|
||||
@PKG_LONGDESC@
|
||||
</description>
|
||||
<disclaimer>
|
||||
@PKG_DISCLAIMER@
|
||||
</disclaimer>
|
||||
<platform>all</platform>
|
||||
</extension>
|
||||
</addon>
|
||||
@@ -32,9 +32,12 @@
|
||||
SIMD_SUPPORT="no"
|
||||
;;
|
||||
cortex-a7|cortex-a15)
|
||||
TARGET_SUBARCH=armv7ve
|
||||
TARGET_SUBARCH=armv7-a
|
||||
TARGET_ABI=eabi
|
||||
TARGET_EXTRA_FLAGS="-mcpu=$TARGET_CPU"
|
||||
# It's not currently possible to specify the exact architecture variant (-mcpu)
|
||||
# that A7/A15 supports in the command line so use -mtune here.
|
||||
# see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57907
|
||||
TARGET_EXTRA_FLAGS="-mtune=$TARGET_CPU"
|
||||
TARGET_FPU_FLAGS="-mfloat-abi=$TARGET_FLOAT -mfpu=$TARGET_FPU"
|
||||
SIMD_SUPPORT="yes"
|
||||
;;
|
||||
|
||||
14
config/arch.i386
Normal file
@@ -0,0 +1,14 @@
|
||||
# determines TARGET_CPU, if not forced by user
|
||||
if [ -z "$TARGET_CPU" ]; then
|
||||
TARGET_CPU=i686
|
||||
fi
|
||||
|
||||
# determine architecture's family
|
||||
TARGET_SUBARCH=i686
|
||||
|
||||
# setup ARCH specific *FLAGS
|
||||
TARGET_CFLAGS="-march=$TARGET_CPU -m32"
|
||||
TARGET_LDFLAGS="-march=$TARGET_CPU -m32"
|
||||
|
||||
# build with SIMD support ( yes / no )
|
||||
SIMD_SUPPORT="yes"
|
||||
@@ -224,13 +224,11 @@ enable_service () {
|
||||
local target_dir=$INSTALL
|
||||
|
||||
[ -f "$target_dir/$unit_dir/$unit" ] || exit 1
|
||||
if [ -z "$target" ] ; then
|
||||
for target in `grep '^WantedBy' $target_dir/$unit_dir/$unit | cut -f2 -d=` ; do
|
||||
if [ -n "$target" ]; then
|
||||
mkdir -p ${target_dir}/$unit_dir/${target}.wants
|
||||
ln -sf ../${unit} ${target_dir}/$unit_dir/${target}.wants/
|
||||
fi
|
||||
done
|
||||
[ -z "$target" ] && target=`grep '^WantedBy' $target_dir/$unit_dir/$unit | cut -f2 -d=`
|
||||
|
||||
if [ -n "$target" ]; then
|
||||
mkdir -p ${target_dir}/$unit_dir/${target}.wants
|
||||
ln -sf ../${unit} ${target_dir}/$unit_dir/${target}.wants/
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -284,7 +282,7 @@ show_config() {
|
||||
|
||||
dashes="==========================="
|
||||
config_message="$config_message\n $dashes$dashes$dashes"
|
||||
config_message="$config_message\n Configuration for $DISTRONAME ($([ "$OFFICIAL" = "yes" ] && echo "official" || echo "community"))"
|
||||
config_message="$config_message\n Configuration for $DISTRONAME ($([ "$OFFICIAL" = "yes" ] && echo "official" || echo "unofficial"))"
|
||||
config_message="$config_message\n $dashes$dashes$dashes"
|
||||
|
||||
# Build options
|
||||
@@ -309,13 +307,14 @@ show_config() {
|
||||
config_message="$config_message\n\n Graphic configuration:"
|
||||
config_message="$config_message\n $dashes$dashes"
|
||||
|
||||
if [ "$DISPLAYSERVER" = "x11" ] ; then
|
||||
config_message="$config_message\n - Xorg Graphic Drivers:\t\t $GRAPHIC_DRIVERS"
|
||||
config_message="$config_message\n - XORG Composite support:\t\t $COMPOSITE_SUPPORT"
|
||||
config_message="$config_message\n - WindowManager:\t\t\t $WINDOWMANAGER"
|
||||
fi
|
||||
config_message="$config_message\n - XORG support:\t\t\t $XORG_SUPPORT"
|
||||
config_message="$config_message\n - XORG Composite support:\t\t $COMPOSITE_SUPPORT"
|
||||
config_message="$config_message\n - XORG Xinerama support:\t\t $XINERAMA_SUPPORT"
|
||||
config_message="$config_message\n - SDL support:\t\t\t\t $SDL_SUPPORT"
|
||||
config_message="$config_message\n - OpenGL (GLX) support (provider):\t $OPENGL_SUPPORT ($OPENGL)"
|
||||
config_message="$config_message\n - OpenGLES support (provider):\t\t $OPENGLES_SUPPORT ($OPENGLES)"
|
||||
config_message="$config_message\n - WindowManager:\t\t\t $WINDOWMANAGER"
|
||||
config_message="$config_message\n - Xorg Graphic Drivers:\t\t $GRAPHIC_DRIVERS"
|
||||
config_message="$config_message\n - uvesafb support:\t\t\t $UVESAFB_SUPPORT"
|
||||
|
||||
# Hardware decoder support
|
||||
@@ -326,7 +325,6 @@ show_config() {
|
||||
config_message="$config_message\n - Kodi Player driver:\t\t\t $KODIPLAYER_DRIVER"
|
||||
config_message="$config_message\n - VAAPI Support:\t\t\t $VAAPI_SUPPORT"
|
||||
config_message="$config_message\n - VDPAU Support:\t\t\t $VDPAU_SUPPORT"
|
||||
config_message="$config_message\n - DCA decoder Support:\t\t\t $DCADEC_SUPPORT"
|
||||
|
||||
# Input device configuration
|
||||
|
||||
@@ -347,6 +345,7 @@ show_config() {
|
||||
config_message="$config_message\n - ALSA support:\t\t\t $ALSA_SUPPORT"
|
||||
config_message="$config_message\n - Pulseaudio support:\t\t\t $PULSEAUDIO_SUPPORT"
|
||||
config_message="$config_message\n - Bluetooth support:\t\t\t $BLUETOOTH_SUPPORT"
|
||||
config_message="$config_message\n - Hardware Sensors support:\t\t $SENSOR_SUPPORT"
|
||||
config_message="$config_message\n - LCD drivers:\t\t\t\t $LCD_DRIVER"
|
||||
|
||||
for config_driver in $ADDITIONAL_DRIVERS; do
|
||||
@@ -371,6 +370,8 @@ show_config() {
|
||||
config_message="$config_message\n - SAMBA mounting support:\t\t $SAMBA_SUPPORT"
|
||||
config_message="$config_message\n - SAMBA server support:\t\t $SAMBA_SERVER"
|
||||
config_message="$config_message\n - SFTP server support:\t\t\t $SFTP_SERVER"
|
||||
config_message="$config_message\n - PPTP support:\t\t\t $PPTP_SUPPORT"
|
||||
config_message="$config_message\n - OpenVPN support:\t\t\t $OPENVPN_SUPPORT"
|
||||
|
||||
# OS configuration
|
||||
|
||||
@@ -380,10 +381,10 @@ show_config() {
|
||||
config_message="$config_message\n - OEM Support:\t\t\t\t $OEM_SUPPORT"
|
||||
config_message="$config_message\n - Default ROOT Password:\t\t $ROOT_PASSWORD"
|
||||
config_message="$config_message\n - Bootloader:\t\t\t\t $BOOTLOADER"
|
||||
if [ "$BOOTLOADER" = "u-boot" ]; then
|
||||
config_message="$config_message\n - U-Boot configuration:\t\t $UBOOT_CONFIG"
|
||||
config_message="$config_message\n - U-Boot config file:\t\t $UBOOT_CONFIGFILE"
|
||||
fi
|
||||
if [ "$BOOTLOADER" = "u-boot" ]; then
|
||||
config_message="$config_message\n - U-Boot configuration:\t\t $UBOOT_CONFIG"
|
||||
config_message="$config_message\n - U-Boot config file:\t\t\t $UBOOT_CONFIGFILE"
|
||||
fi
|
||||
config_message="$config_message\n - UDevil support:\t\t\t $UDEVIL"
|
||||
config_message="$config_message\n - Installer support:\t\t\t $INSTALLER_SUPPORT"
|
||||
|
||||
@@ -393,9 +394,9 @@ show_config() {
|
||||
config_message="$config_message\n $dashes$dashes"
|
||||
|
||||
config_message="$config_message\n - Swap Support:\t\t\t $SWAP_SUPPORT"
|
||||
if [ "$SWAP_SUPPORT" = "yes" ]; then
|
||||
config_message="$config_message\n - Swapfile default size:\t\t $SWAPFILESIZE"
|
||||
fi
|
||||
if [ "$SWAP_SUPPORT" = "yes" ]; then
|
||||
config_message="$config_message\n - Swapfile default size:\t\t $SWAPFILESIZE"
|
||||
fi
|
||||
config_message="$config_message\n - exFAT Support (via Fuse):\t\t $EXFAT"
|
||||
config_message="$config_message\n - NTFS Support (via Fuse):\t\t $NTFS3G"
|
||||
config_message="$config_message\n - Install HFS Tools:\t\t\t $HFSTOOLS"
|
||||
@@ -408,13 +409,12 @@ show_config() {
|
||||
config_message="$config_message\n - Kodi version:\t\t\t $MEDIACENTER"
|
||||
config_message="$config_message\n - Kodi nonfree support:\t\t $KODI_NONFREE_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Blu-Ray support:\t\t $KODI_BLURAY_SUPPORT"
|
||||
if [ "$KODI_BLURAY_SUPPORT" = "yes" ] ; then
|
||||
config_message="$config_message\n - Bluray BD+ support:\t\t $BLURAY_BDPLUS_SUPPORT"
|
||||
config_message="$config_message\n - Bluray AACS support:\t\t $BLURAY_AACS_SUPPORT"
|
||||
fi
|
||||
config_message="$config_message\n - Bluray BD+ support:\t\t\t $BLURAY_BDPLUS_SUPPORT"
|
||||
config_message="$config_message\n - Bluray AACS support:\t\t\t $BLURAY_AACS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi DVDCSS support:\t\t\t $KODI_DVDCSS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Airplay support:\t\t $KODI_AIRPLAY_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Airtunes support:\t\t $KODI_AIRTUNES_SUPPORT"
|
||||
config_message="$config_message\n - Kodi AFP support:\t\t\t $KODI_AFP_SUPPORT"
|
||||
config_message="$config_message\n - Kodi NFS support:\t\t\t $KODI_NFS_SUPPORT"
|
||||
config_message="$config_message\n - Kodi MySQL support:\t\t\t $KODI_MYSQL_SUPPORT"
|
||||
config_message="$config_message\n - Kodi Optical Drive support:\t\t $KODI_OPTICAL_SUPPORT"
|
||||
@@ -430,6 +430,9 @@ show_config() {
|
||||
|
||||
config_message="$config_message\n - Default Skin:\t\t\t $SKIN_DEFAULT"
|
||||
config_message="$config_message\n - Include extra fonts:\t\t\t $KODI_EXTRA_FONTS"
|
||||
config_message="$config_message\n - Include RSXS Screensaver:\t\t $KODI_SCR_RSXS"
|
||||
config_message="$config_message\n - Include ProjectM Visualization:\t $KODI_VIS_PROJECTM"
|
||||
config_message="$config_message\n - Include Goom Visualization:\t\t $KODI_VIS_GOOM"
|
||||
|
||||
config_message="$config_message\n"
|
||||
config_message="$config_message\n $dashes$dashes$dashes"
|
||||
@@ -437,5 +440,5 @@ show_config() {
|
||||
config_message="$config_message\n $dashes$dashes$dashes"
|
||||
config_message="$config_message\n\n\n"
|
||||
|
||||
echo -e "$config_message"
|
||||
echo -e $config_message
|
||||
}
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
if [ "$DISPLAYSERVER" = "x11" ]; then
|
||||
SDL_SUPPORT="yes"
|
||||
else
|
||||
SDL_SUPPORT="no"
|
||||
fi
|
||||
|
||||
if [ "$OPENGL" = no ]; then
|
||||
OPENGL_SUPPORT="no"
|
||||
else
|
||||
@@ -10,12 +16,26 @@ else
|
||||
OPENGLES_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$SDL_SUPPORT" = no ]; then
|
||||
JOYSTICK_SUPPORT="no"
|
||||
fi
|
||||
|
||||
if [ "$OPENGL_SUPPORT" = no ]; then
|
||||
KODI_SCR_RSXS="no"
|
||||
KODI_VIS_PROJECTM="no"
|
||||
KODI_VIS_GOOM="no"
|
||||
fi
|
||||
|
||||
get_graphicdrivers() {
|
||||
if [ "$GRAPHIC_DRIVERS" = "all" ]; then
|
||||
GRAPHIC_DRIVERS="i915 i965 r200 r300 r600 nvidia"
|
||||
fi
|
||||
|
||||
for drv in $GRAPHIC_DRIVERS; do
|
||||
if [ "$drv" = "dove" ]; then
|
||||
XORG_DRIVERS="$XORG_DRIVERS dove"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "i915" ]; then
|
||||
DRI_DRIVERS="$DRI_DRIVERS,i915"
|
||||
XORG_DRIVERS="$XORG_DRIVERS intel"
|
||||
@@ -30,6 +50,16 @@ get_graphicdrivers() {
|
||||
VAAPI_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "nouveau" ]; then
|
||||
# DRI_DRIVERS are only used for NV04 - NV20 (which we dont want to support anymore)
|
||||
DRI_DRIVERS="$DRI_DRIVERS"
|
||||
# GALLIUM_DRIVERS are used for all cards from NV30 to nvc0
|
||||
# see also http://nouveau.freedesktop.org/wiki/MesaDrivers/
|
||||
GALLIUM_DRIVERS="$GALLIUM_DRIVERS,nouveau"
|
||||
XORG_DRIVERS="$XORG_DRIVERS nouveau"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
fi
|
||||
|
||||
if [ "$drv" = "nvidia" ]; then
|
||||
XORG_DRIVERS="$XORG_DRIVERS nvidia"
|
||||
VDPAU_SUPPORT="yes"
|
||||
|
||||
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 19 KiB |
@@ -1,10 +1,7 @@
|
||||
{
|
||||
"name": "@DISTRONAME@_@PROJECT@",
|
||||
"name": "@DISTRONAME@",
|
||||
"version": "@OPENELEC_VERSION@",
|
||||
"release_date": "@RELEASE_DATE@",
|
||||
"kernel": "@KERNEL_VERSION@",
|
||||
"description": "@DESCRIPTION@",
|
||||
"username": "root",
|
||||
"password": "@ROOT_PASSWORD@",
|
||||
"supported_hex_revisions": "@NOOBS_HEX@"
|
||||
"description": "@DESCRIPTION@"
|
||||
}
|
||||
|
||||
@@ -1,20 +1,22 @@
|
||||
#!/bin/sh -x
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2013 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# This Program 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.
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# This Program 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
|
||||
# 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/>.
|
||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
MOUNTPOINT="/tmp/OpenELEC-System"
|
||||
@@ -38,7 +40,7 @@ md5sumCheck() {
|
||||
)
|
||||
}
|
||||
|
||||
if [ -z $part1 -o -z $part2 -o -z $id1 -o -z $id2 ]; then
|
||||
if [ -z $part1 -o -z $part2 -o -z $id1 -o -z $id2]; then
|
||||
echo "error: part1, part2, id1 or id2 not specified"
|
||||
echo "actual values:"
|
||||
echo "part1:" $part1
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"partitions": [
|
||||
{
|
||||
"label": "@DISTRONAME@_@PROJECT@_System",
|
||||
"label": "System",
|
||||
"filesystem_type": "FAT",
|
||||
"partition_size_nominal": 512,
|
||||
"partition_size_nominal": 160,
|
||||
"want_maximised": false,
|
||||
"uncompressed_tarball_size": 120,
|
||||
"mkfs_options": ""
|
||||
},
|
||||
{
|
||||
"label": "@DISTRONAME@_@PROJECT@_Storage",
|
||||
"label": "Storage",
|
||||
"filesystem_type": "ext4",
|
||||
"partition_size_nominal": 512,
|
||||
"partition_size_nominal": 864,
|
||||
"want_maximised": true,
|
||||
"uncompressed_tarball_size": 10,
|
||||
"mkfs_options": ""
|
||||
|
||||
BIN
config/noobs/slides/A.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
config/noobs/slides/B.png
Normal file
|
After Width: | Height: | Size: 53 KiB |
BIN
config/noobs/slides/C.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
config/noobs/slides/D.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
config/noobs/slides/E.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
config/noobs/slides_vga/A.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
config/noobs/slides_vga/B.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
config/noobs/slides_vga/C.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
config/noobs/slides_vga/D.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
config/noobs/slides_vga/E.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
@@ -17,10 +17,10 @@ else
|
||||
PROJECT="$PROJECT"
|
||||
fi
|
||||
|
||||
# determines TARGET_ARCH, if not forced by user (x86_64 / arm)
|
||||
# default is x86_64
|
||||
# determines TARGET_ARCH, if not forced by user (i386 / x86_64 / arm)
|
||||
# default is i386
|
||||
if [ -z "$ARCH" ]; then
|
||||
TARGET_ARCH="x86_64"
|
||||
TARGET_ARCH="i386"
|
||||
else
|
||||
TARGET_ARCH="$ARCH"
|
||||
fi
|
||||
@@ -52,11 +52,6 @@ LINUX_DEPENDS="$PROJECT_DIR/$PROJECT/linux/linux.$TARGET_ARCH.conf $ROOT/package
|
||||
# If you have ccache installed, take care that LOCAL_CC don't point to it
|
||||
LOCAL_CC=`which gcc`
|
||||
|
||||
if [ -z "$LOCAL_CC" ] ; then
|
||||
echo "***** Please install gcc *****"
|
||||
exit 127
|
||||
fi
|
||||
|
||||
# Need to point to your actual g++
|
||||
# If you have ccache installed, take care that LOCAL_CXX don't point to it
|
||||
LOCAL_CXX=`which g++`
|
||||
@@ -70,9 +65,7 @@ fi
|
||||
# Concurrency make level (-j option)
|
||||
# Try value 1 (default) to 4 on single CPU computer, or more on
|
||||
# multi-processor computer (like hyperthreading SMP CPU)
|
||||
if test -z "${CONCURRENCY_MAKE_LEVEL}"; then
|
||||
CONCURRENCY_MAKE_LEVEL=`cat /proc/cpuinfo | grep -c '^processor[[:cntrl:]]*:'`
|
||||
fi
|
||||
CONCURRENCY_MAKE_LEVEL=`cat /proc/cpuinfo | grep -c '^processor[[:cntrl:]]*:'`
|
||||
|
||||
# cache size for ccache
|
||||
# Set the maximum size of the files stored in the cache. You can specify a
|
||||
@@ -81,6 +74,9 @@ fi
|
||||
# the nearest multiple of 16 kilobytes.
|
||||
CCACHE_CACHE_SIZE="30G"
|
||||
|
||||
# forcing install of all packages (yes/no)
|
||||
FORCE_INSTALL="no"
|
||||
|
||||
# install devtools on development builds
|
||||
if [ "$OPENELEC_VERSION" = "devel" ]; then
|
||||
DEVTOOLS=yes
|
||||
@@ -90,8 +86,8 @@ fi
|
||||
if [ -f "$HOME/.openelec/options" ]; then
|
||||
. $HOME/.openelec/options
|
||||
fi
|
||||
if [ -f "$HOME/.openelec/projects/$PROJECT/options" ]; then
|
||||
. $HOME/.openelec/projects/$PROJECT/options
|
||||
if [ -f "$HOME/.openelec/$PROJECT/options" ]; then
|
||||
. $HOME/.openelec/$PROJECT/options
|
||||
fi
|
||||
|
||||
# read distro options from $HOME if available
|
||||
@@ -99,10 +95,5 @@ fi
|
||||
. $HOME/.openelec/options.$DISTRO
|
||||
fi
|
||||
|
||||
# overwrite OEM_SUPPORT via commandline
|
||||
if [ "$OEM" = yes -o "$OEM" = no ]; then
|
||||
OEM_SUPPORT=$OEM
|
||||
fi
|
||||
|
||||
. config/graphic
|
||||
. config/path $1
|
||||
|
||||
48
config/path
@@ -20,14 +20,6 @@ HOST_NAME=`$LOCAL_CC -dumpmachine`
|
||||
TARGET_NAME=$(echo $TARGET_SUBARCH | sed -e "s,-,,")-openelec-linux-gnu${TARGET_ABI}
|
||||
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$OPENELEC_VERSION
|
||||
if [ "$OPENELEC_VERSION" = "devel" ] ; then
|
||||
BUILD=$BUILD_BASE.$DISTRONAME-$PROJECT.$TARGET_ARCH-$OS_VERSION-$OPENELEC_VERSION
|
||||
fi
|
||||
|
||||
if [ -n "$BUILD_SUFFIX" ]; then
|
||||
BUILD=$BUILD-$BUILD_SUFFIX
|
||||
fi
|
||||
|
||||
TARGET_IMG=$ROOT/$TARGET
|
||||
TARGET_ADDONS="$TARGET_IMG/$ADDONS/$ADDON_PATH"
|
||||
ADDON_BUILD="$BUILD/$ADDONS/$1"
|
||||
@@ -40,7 +32,7 @@ SYSROOT_PREFIX=$ROOT/$TOOLCHAIN/$TARGET_NAME/sysroot
|
||||
LIB_PREFIX=$SYSROOT_PREFIX/usr
|
||||
TARGET_PREFIX=$ROOT/$TOOLCHAIN/bin/$TARGET_NAME-
|
||||
|
||||
FAKEROOT_SCRIPT=$ROOT/.fakeroot.$BUILD
|
||||
FAKEROOT_SCRIPT=$ROOT/.fakeroot.$PROJECT.$TARGET_ARCH
|
||||
|
||||
if [ -z "$INSTALL" ]; then
|
||||
INSTALL=$BUILD/image/system
|
||||
@@ -77,41 +69,7 @@ SED="sed -i"
|
||||
_FOUND=0
|
||||
PKG_DIR=""
|
||||
|
||||
# check project folder for a package in home dir
|
||||
for DIR in $(find $HOME/.openelec/projects/$PROJECT/packages -type d -name $_PKG_ROOT_NAME 2>/dev/null); do
|
||||
if [ -r "$DIR/package.mk" ]; then
|
||||
# found first, set $PKG_DIR
|
||||
PKG_DIR="$DIR"
|
||||
# keep track of dirs with package.mk for detecting multiple folders
|
||||
_ALL_DIRS="${_ALL_DIRS}${DIR}\\n"
|
||||
_FOUND=$((_FOUND+1))
|
||||
if [ $_FOUND -gt 1 ]; then
|
||||
# _FOUND more ? fail
|
||||
echo "Error - multiple package folders:"
|
||||
echo -e "$_ALL_DIRS"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# check for a package in home dir if not found already
|
||||
for DIR in $(find $HOME/.openelec/packages -type d -name $_PKG_ROOT_NAME 2>/dev/null); do
|
||||
if [ -r "$DIR/package.mk" ]; then
|
||||
# found first, set $PKG_DIR
|
||||
PKG_DIR="$DIR"
|
||||
# keep track of dirs with package.mk for detecting multiple folders
|
||||
_ALL_DIRS="${_ALL_DIRS}${DIR}\\n"
|
||||
_FOUND=$((_FOUND+1))
|
||||
if [ $_FOUND -gt 1 ]; then
|
||||
# _FOUND more ? fail
|
||||
echo "Error - multiple package folders:"
|
||||
echo -e "$_ALL_DIRS"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# check project folder for a package if not found already
|
||||
# first check project folder for a package
|
||||
for DIR in $(find $ROOT/projects/$PROJECT/packages -type d -name $_PKG_ROOT_NAME 2>/dev/null); do
|
||||
if [ -r "$DIR/package.mk" ]; then
|
||||
# found first, set $PKG_DIR
|
||||
@@ -165,7 +123,7 @@ XORG_PATH_RGB=/usr/lib/X11/rgb
|
||||
XORG_PATH_MODULES=/usr/lib/xorg/modules
|
||||
XORG_PATH_DRIVERS=/usr/lib/xorg/modules/drivers
|
||||
|
||||
SSL_CERTIFICATES="/etc/ssl"
|
||||
SSL_CERTIFICATES="/etc/pki/tls"
|
||||
|
||||
TOOLCHAIN_LANGUAGES=c
|
||||
[ "$TOOLCHAIN_CXX" = yes ] && TOOLCHAIN_LANGUAGES=${TOOLCHAIN_LANGUAGES},c++
|
||||
|
||||
2
config/release/Autorun.inf
Normal file
@@ -0,0 +1,2 @@
|
||||
[autorun]
|
||||
icon=openelec.ico
|
||||
BIN
config/release/openelec.ico
Normal file
|
After Width: | Height: | Size: 32 KiB |
@@ -1,9 +1,9 @@
|
||||
# VERSION: set full version, use "devel" for development version
|
||||
OPENELEC_VERSION="6.0.2"
|
||||
OPENELEC_VERSION="4.95.2"
|
||||
|
||||
# OS_VERSION: OS Version
|
||||
OS_VERSION="6.0"
|
||||
OS_VERSION="5.0"
|
||||
|
||||
# ADDON_VERSION: Addon version
|
||||
ADDON_VERSION="6.0"
|
||||
ADDON_VERSION="4.3"
|
||||
|
||||
|
||||
@@ -2,21 +2,18 @@
|
||||
DISTRONAME="OpenELEC"
|
||||
|
||||
# short project description
|
||||
DESCRIPTION="OpenELEC is a fast and user-friendly Kodi Entertainment Center distribution."
|
||||
DESCRIPTION="OpenELEC is a fast and userfriendly Kodi Entertainment Center distribution."
|
||||
|
||||
# Welcome Message for e.g. SSH Server (up to 5 Lines)
|
||||
GREETING0="##############################################"
|
||||
GREETING1="# OpenELEC #"
|
||||
GREETING2="# http://openelec.tv #"
|
||||
GREETING1="# OpenELEC - The living room PC for everyone #"
|
||||
GREETING2="# ...... visit http://www.openelec.tv ...... #"
|
||||
GREETING3="##############################################"
|
||||
GREETING4=""
|
||||
|
||||
# Root password to integrate in the target system
|
||||
ROOT_PASSWORD="openelec"
|
||||
|
||||
# Install glibc locales to the build (yes / no)
|
||||
GLIBC_LOCALES="yes"
|
||||
|
||||
# Mediacenter to use (kodi / no)
|
||||
MEDIACENTER="kodi"
|
||||
|
||||
@@ -31,6 +28,25 @@
|
||||
# install extra subtitle Fonts for KODI (yes / no)
|
||||
KODI_EXTRA_FONTS="yes"
|
||||
|
||||
# build and install 'RSXS' Screensaver (yes / no)
|
||||
KODI_SCR_RSXS="yes"
|
||||
|
||||
# build and install 'ProjectM' Visualization (yes / no)
|
||||
KODI_VIS_PROJECTM="yes"
|
||||
|
||||
# build and install 'GOOM' Visualization (yes / no)
|
||||
KODI_VIS_GOOM="yes"
|
||||
|
||||
# build and install 'Waveform' Visualization (yes / no)
|
||||
KODI_VIS_WAVEFORM="yes"
|
||||
|
||||
# build and install 'Spectrum' Visualization (yes / no)
|
||||
KODI_VIS_SPECTRUM="yes"
|
||||
|
||||
# build and install 'FishBMC' Visualization (yes / no)
|
||||
# does not work on RPi
|
||||
KODI_VIS_FISHBMC="yes"
|
||||
|
||||
# build and install PulseAudio support (yes / no)
|
||||
PULSEAUDIO_SUPPORT="no"
|
||||
|
||||
@@ -60,7 +76,7 @@
|
||||
# for a list of additinoal drivers see packages/linux-drivers
|
||||
# Space separated list is supported,
|
||||
# e.g. ADDITIONAL_DRIVERS="DRIVER1 DRIVER2"
|
||||
ADDITIONAL_DRIVERS="RTL8192CU RTL8192DU RTL8192EU RTL8188EU RTL8812AU dvbhdhomerun"
|
||||
ADDITIONAL_DRIVERS="RTL8192CU RTL8192DU RTL8188EU RTL8812AU dvbhdhomerun"
|
||||
|
||||
# build and install bluetooth support (yes / no)
|
||||
BLUETOOTH_SUPPORT="yes"
|
||||
@@ -83,6 +99,11 @@
|
||||
# build xbmc with optical drive support (yes / no)
|
||||
KODI_OPTICAL_SUPPORT="yes"
|
||||
|
||||
# KODI Audio encoders for usage with optical drive support
|
||||
# Space separated list is supported,
|
||||
# e.g. KODI_AUDIOENCODER_ADDONS="ENCODER1 ENCODER2"
|
||||
KODI_AUDIOENCODER_ADDONS="flac lame vorbis wav"
|
||||
|
||||
# build with AirPlay support (stream videos from iDevices to KODI) (yes / no)
|
||||
KODI_AIRPLAY_SUPPORT="yes"
|
||||
|
||||
@@ -92,6 +113,9 @@
|
||||
# build with libnfs support (mounting nfs shares with KODI) (yes / no)
|
||||
KODI_NFS_SUPPORT="yes"
|
||||
|
||||
# build with afpfs-ng support (mounting AFP shares with KODI) (yes / no)
|
||||
KODI_AFP_SUPPORT="no"
|
||||
|
||||
# build with Samba Client support (mounting SAMBA shares with KODI) (yes / no)
|
||||
KODI_SAMBA_SUPPORT="yes"
|
||||
|
||||
@@ -107,6 +131,12 @@
|
||||
# build and install SFTP Server (yes / no)
|
||||
SFTP_SERVER="yes"
|
||||
|
||||
# build and install PPP support (yes / no)
|
||||
PPTP_SUPPORT="yes"
|
||||
|
||||
# build and install OpenVPN support (yes / no)
|
||||
OPENVPN_SUPPORT="yes"
|
||||
|
||||
# build and install diskmounter support (udevil)
|
||||
# this service provide auto mounting support for external drives in the
|
||||
# mediacenter also automount internally drives at boottime via udev (yes / no)
|
||||
@@ -124,10 +154,16 @@
|
||||
# Windowmanager to use (ratpoison / fluxbox / none)
|
||||
WINDOWMANAGER="fluxbox"
|
||||
|
||||
# Xorg Graphic drivers to use (all / i915,i965,r200,r300,r600,nvidia)
|
||||
# Xorg Graphic drivers to use (all / i915,i965,r200,r300,r600,nvidia,nouveau)
|
||||
# Space separated list is supported,
|
||||
# e.g. GRAPHIC_DRIVERS="i915 i965 r300 r600 radeonsi nvidia"
|
||||
GRAPHIC_DRIVERS="r300 r600 radeonsi i915 i965 nvidia"
|
||||
# e.g. GRAPHIC_DRIVERS="i915 i965 r300 r600 radeonsi nvidia nouveau"
|
||||
if [ "$TARGET_ARCH" = "i386" ]; then
|
||||
# TODO: create Legacy build with OpenELEC-4.2
|
||||
# install legacy drivers to i386 ARCH
|
||||
GRAPHIC_DRIVERS="r200 r300 r600 i915 i965 nvidia-legacy"
|
||||
elif [ "$TARGET_ARCH" = "x86_64" ]; then
|
||||
GRAPHIC_DRIVERS="r300 r600 radeonsi i915 i965 nvidia"
|
||||
fi
|
||||
|
||||
# build and install remote support (yes / no)
|
||||
REMOTE_SUPPORT="yes"
|
||||
@@ -149,7 +185,7 @@
|
||||
|
||||
# LCD driver to Use - Possible drivers are ( Comma seperated:
|
||||
# bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,dm140,
|
||||
# ea65,EyeboxOne,g15,glcd,glcdlib,glk,hd44780,i2500vfd,
|
||||
# ea65,EyeboxOne,g15,glcdlib,glk,hd44780,i2500vfd,
|
||||
# icp_a106,imon,imonlcd,IOWarrior,irman,irtrans,
|
||||
# joy,lb216,lcdm001,lcterm,lirc,lis,MD8800,mdm166a,
|
||||
# ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,
|
||||
@@ -164,6 +200,11 @@
|
||||
# This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage
|
||||
INITRAMFS_PARTED_SUPPORT="no"
|
||||
|
||||
# additional Firmware to use (dvb-firmware, misc-firmware, wlan-firmware)
|
||||
# Space separated list is supported,
|
||||
# e.g. FIRMWARE="dvb-firmware misc-firmware wlan-firmware"
|
||||
FIRMWARE="misc-firmware wlan-firmware dvb-firmware"
|
||||
|
||||
# build with swap support (yes / no)
|
||||
SWAP_SUPPORT="no"
|
||||
|
||||
@@ -188,6 +229,9 @@
|
||||
# cron support (yes / no)
|
||||
CRON_SUPPORT="yes"
|
||||
|
||||
# Perf support in development builds (yes / no)
|
||||
PERF_SUPPORT="yes"
|
||||
|
||||
# Distribution Specific source location
|
||||
DISTRO_MIRROR="http://sources.openelec.tv/mirror"
|
||||
DISTRO_SRC="http://sources.openelec.tv/$OPENELEC_VERSION"
|
||||
|
||||
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 439 KiB |
7
packages/3rdparty/lib/cxxtools/package.mk
vendored
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@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
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="cxxtools"
|
||||
PKG_VERSION="2.2.1"
|
||||
PKG_VERSION="2.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL-2"
|
||||
@@ -48,7 +48,6 @@ post_makeinstall_host() {
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
$SED "s:\(['= ]\)/usr:\\1$SYSROOT_PREFIX/usr:g" $SYSROOT_PREFIX/usr/bin/cxxtools-config
|
||||
|
||||
rm -rf $SYSROOT_PREFIX/usr/bin/cxxtools-config
|
||||
rm -rf $INSTALL/usr/bin
|
||||
}
|
||||
|
||||
2
packages/3rdparty/lib/libzip/package.mk
vendored
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@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
|
||||
|
||||
6
packages/3rdparty/web/tntnet/package.mk
vendored
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@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
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="tntnet"
|
||||
PKG_VERSION="2.2.1"
|
||||
PKG_VERSION="2.2"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL-2"
|
||||
@@ -51,8 +51,6 @@ PKG_CONFIGURE_OPTS_TARGET="--disable-unittest \
|
||||
--with-stressjob=no"
|
||||
|
||||
post_makeinstall_target() {
|
||||
$SED "s:\(['= ]\)/usr:\\1$SYSROOT_PREFIX/usr:g" $SYSROOT_PREFIX/usr/bin/tntnet-config
|
||||
|
||||
rm -rf $INSTALL/usr/bin
|
||||
rm -rf $INSTALL/usr/share
|
||||
}
|
||||
|
||||
@@ -1,517 +0,0 @@
|
||||
diff -Naur tntnet-2.2.1/configure tntnet-2.2.1.patch/configure
|
||||
--- tntnet-2.2.1/configure 2014-01-17 20:11:49.000000000 +0100
|
||||
+++ tntnet-2.2.1.patch/configure 2016-01-07 06:34:42.002634975 +0100
|
||||
@@ -16495,7 +16546,7 @@
|
||||
ac_config_files="$ac_config_files tntnet-config"
|
||||
|
||||
|
||||
-ac_config_files="$ac_config_files Makefile framework/common/Makefile framework/runtime/Makefile framework/defcomp/Makefile sdk/tools/common/Makefile sdk/tools/ecppc/Makefile sdk/tools/ecppl/Makefile sdk/tools/ecppll/Makefile sdk/demos/Makefile sdk/demos/backgroundjob/Makefile sdk/demos/calc/Makefile sdk/demos/calcajax/Makefile sdk/demos/calcapp/Makefile sdk/demos/calcmvc/Makefile sdk/demos/calci18n/Makefile sdk/demos/chat/Makefile sdk/demos/comp/Makefile sdk/demos/config/Makefile sdk/demos/controls/Makefile sdk/demos/cookie/Makefile sdk/demos/hello/Makefile sdk/demos/savepoint/Makefile sdk/demos/session/Makefile sdk/demos/sprintf/Makefile sdk/demos/strings/Makefile sdk/demos/rajax-jquery/Makefile sdk/demos/upload/Makefile utest/Makefile doc/man/Makefile etc/Makefile"
|
||||
+ac_config_files="$ac_config_files Makefile framework/common/Makefile framework/runtime/Makefile framework/defcomp/Makefile pkgconfig/tntnet.pc pkgconfig/tntnet_sdk.pc sdk/tools/common/Makefile sdk/tools/ecppc/Makefile sdk/tools/ecppl/Makefile sdk/tools/ecppll/Makefile sdk/demos/Makefile sdk/demos/backgroundjob/Makefile sdk/demos/calc/Makefile sdk/demos/calcajax/Makefile sdk/demos/calcapp/Makefile sdk/demos/calcmvc/Makefile sdk/demos/calci18n/Makefile sdk/demos/chat/Makefile sdk/demos/comp/Makefile sdk/demos/config/Makefile sdk/demos/controls/Makefile sdk/demos/cookie/Makefile sdk/demos/hello/Makefile sdk/demos/savepoint/Makefile sdk/demos/session/Makefile sdk/demos/sprintf/Makefile sdk/demos/strings/Makefile sdk/demos/rajax-jquery/Makefile sdk/demos/upload/Makefile utest/Makefile doc/man/Makefile etc/Makefile"
|
||||
|
||||
|
||||
cat >confcache <<\_ACEOF
|
||||
@@ -17642,6 +17693,8 @@
|
||||
"framework/common/Makefile") CONFIG_FILES="$CONFIG_FILES framework/common/Makefile" ;;
|
||||
"framework/runtime/Makefile") CONFIG_FILES="$CONFIG_FILES framework/runtime/Makefile" ;;
|
||||
"framework/defcomp/Makefile") CONFIG_FILES="$CONFIG_FILES framework/defcomp/Makefile" ;;
|
||||
+ "pkgconfig/tntnet.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/tntnet.pc" ;;
|
||||
+ "pkgconfig/tntnet_sdk.pc") CONFIG_FILES="$CONFIG_FILES pkgconfig/tntnet_sdk.pc" ;;
|
||||
"sdk/tools/common/Makefile") CONFIG_FILES="$CONFIG_FILES sdk/tools/common/Makefile" ;;
|
||||
"sdk/tools/ecppc/Makefile") CONFIG_FILES="$CONFIG_FILES sdk/tools/ecppc/Makefile" ;;
|
||||
"sdk/tools/ecppl/Makefile") CONFIG_FILES="$CONFIG_FILES sdk/tools/ecppl/Makefile" ;;
|
||||
diff -Naur tntnet-2.2.1/configure.in tntnet-2.2.1.patch/configure.in
|
||||
--- tntnet-2.2.1/configure.in 2014-01-17 20:11:40.000000000 +0100
|
||||
+++ tntnet-2.2.1.patch/configure.in 2016-01-07 06:08:14.679087771 +0100
|
||||
@@ -218,6 +218,8 @@
|
||||
framework/common/Makefile
|
||||
framework/runtime/Makefile
|
||||
framework/defcomp/Makefile
|
||||
+ pkgconfig/tntnet.pc
|
||||
+ pkgconfig/tntnet_sdk.pc
|
||||
sdk/tools/common/Makefile
|
||||
sdk/tools/ecppc/Makefile
|
||||
sdk/tools/ecppl/Makefile
|
||||
diff -Naur tntnet-2.2.1/Makefile.am tntnet-2.2.1.patch/Makefile.am
|
||||
--- tntnet-2.2.1/Makefile.am 2014-01-17 20:12:20.000000000 +0100
|
||||
+++ tntnet-2.2.1.patch/Makefile.am 2016-01-07 06:07:03.793973412 +0100
|
||||
@@ -80,3 +80,9 @@
|
||||
Releasenotes-2.2.markdown \
|
||||
Releasenotes-2.2.1.markdown \
|
||||
$(pkgdata_SCRIPTS)
|
||||
+
|
||||
+pkgconfigdir = $(libdir)/pkgconfig/
|
||||
+
|
||||
+pkgconfig_DATA = \
|
||||
+ pkgconfig/tntnet.pc \
|
||||
+ pkgconfig/tntnet_sdk.pc
|
||||
diff -Naur tntnet-2.2.1/Makefile.in tntnet-2.2.1.patch/Makefile.in
|
||||
--- tntnet-2.2.1/Makefile.in 2014-01-17 20:12:26.000000000 +0100
|
||||
+++ tntnet-2.2.1.patch/Makefile.in 2016-01-07 06:33:05.045478363 +0100
|
||||
@@ -1,7 +1,7 @@
|
||||
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
|
||||
+# Makefile.in generated by automake 1.13.4 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
-# Copyright (C) 1994-2012 Free Software Foundation, Inc.
|
||||
+# Copyright (C) 1994-2013 Free Software Foundation, Inc.
|
||||
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
@@ -14,24 +14,53 @@
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
+
|
||||
VPATH = @srcdir@
|
||||
-am__make_dryrun = \
|
||||
- { \
|
||||
- am__dry=no; \
|
||||
+am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
|
||||
+am__make_running_with_option = \
|
||||
+ case $${target_option-} in \
|
||||
+ ?) ;; \
|
||||
+ *) echo "am__make_running_with_option: internal error: invalid" \
|
||||
+ "target option '$${target_option-}' specified" >&2; \
|
||||
+ exit 1;; \
|
||||
+ esac; \
|
||||
+ has_opt=no; \
|
||||
+ sane_makeflags=$$MAKEFLAGS; \
|
||||
+ if $(am__is_gnu_make); then \
|
||||
+ sane_makeflags=$$MFLAGS; \
|
||||
+ else \
|
||||
case $$MAKEFLAGS in \
|
||||
*\\[\ \ ]*) \
|
||||
- echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
|
||||
- | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
|
||||
- *) \
|
||||
- for am__flg in $$MAKEFLAGS; do \
|
||||
- case $$am__flg in \
|
||||
- *=*|--*) ;; \
|
||||
- *n*) am__dry=yes; break;; \
|
||||
- esac; \
|
||||
- done;; \
|
||||
+ bs=\\; \
|
||||
+ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
|
||||
+ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
|
||||
esac; \
|
||||
- test $$am__dry = yes; \
|
||||
- }
|
||||
+ fi; \
|
||||
+ skip_next=no; \
|
||||
+ strip_trailopt () \
|
||||
+ { \
|
||||
+ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
|
||||
+ }; \
|
||||
+ for flg in $$sane_makeflags; do \
|
||||
+ test $$skip_next = yes && { skip_next=no; continue; }; \
|
||||
+ case $$flg in \
|
||||
+ *=*|--*) continue;; \
|
||||
+ -*I) strip_trailopt 'I'; skip_next=yes;; \
|
||||
+ -*I?*) strip_trailopt 'I';; \
|
||||
+ -*O) strip_trailopt 'O'; skip_next=yes;; \
|
||||
+ -*O?*) strip_trailopt 'O';; \
|
||||
+ -*l) strip_trailopt 'l'; skip_next=yes;; \
|
||||
+ -*l?*) strip_trailopt 'l';; \
|
||||
+ -[dEDm]) skip_next=yes;; \
|
||||
+ -[JT]) skip_next=yes;; \
|
||||
+ esac; \
|
||||
+ case $$flg in \
|
||||
+ *$$target_option*) has_opt=yes; break;; \
|
||||
+ esac; \
|
||||
+ done; \
|
||||
+ test $$has_opt = yes
|
||||
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
|
||||
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
@@ -52,11 +81,13 @@
|
||||
host_triplet = @host@
|
||||
target_triplet = @target@
|
||||
subdir = .
|
||||
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
- $(srcdir)/Makefile.in $(srcdir)/tntnet-config.in \
|
||||
- $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
|
||||
- TODO config.guess config.sub depcomp install-sh ltmain.sh \
|
||||
- missing
|
||||
+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
|
||||
+ $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
|
||||
+ $(top_srcdir)/configure $(am__configure_deps) \
|
||||
+ $(srcdir)/tntnet-config.in \
|
||||
+ $(top_srcdir)/pkgconfig/tntnet.pc.in \
|
||||
+ $(top_srcdir)/pkgconfig/tntnet_sdk.pc.in COPYING TODO \
|
||||
+ config.guess config.sub depcomp install-sh missing ltmain.sh
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \
|
||||
$(top_srcdir)/m4/ax_check_compile_flag.m4 \
|
||||
@@ -71,7 +102,8 @@
|
||||
configure.lineno config.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/framework/common/config.h
|
||||
-CONFIG_CLEAN_FILES = tntnet-config
|
||||
+CONFIG_CLEAN_FILES = tntnet-config pkgconfig/tntnet.pc \
|
||||
+ pkgconfig/tntnet_sdk.pc
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
@@ -100,27 +132,62 @@
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)"
|
||||
+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" \
|
||||
+ "$(DESTDIR)$(pkgconfigdir)"
|
||||
SCRIPTS = $(bin_SCRIPTS) $(pkgdata_SCRIPTS)
|
||||
+AM_V_P = $(am__v_P_@AM_V@)
|
||||
+am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
|
||||
+am__v_P_0 = false
|
||||
+am__v_P_1 = :
|
||||
+AM_V_GEN = $(am__v_GEN_@AM_V@)
|
||||
+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
|
||||
+am__v_GEN_0 = @echo " GEN " $@;
|
||||
+am__v_GEN_1 =
|
||||
+AM_V_at = $(am__v_at_@AM_V@)
|
||||
+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
|
||||
+am__v_at_0 = @
|
||||
+am__v_at_1 =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
- html-recursive info-recursive install-data-recursive \
|
||||
- install-dvi-recursive install-exec-recursive \
|
||||
- install-html-recursive install-info-recursive \
|
||||
- install-pdf-recursive install-ps-recursive install-recursive \
|
||||
- installcheck-recursive installdirs-recursive pdf-recursive \
|
||||
- ps-recursive uninstall-recursive
|
||||
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
|
||||
+ ctags-recursive dvi-recursive html-recursive info-recursive \
|
||||
+ install-data-recursive install-dvi-recursive \
|
||||
+ install-exec-recursive install-html-recursive \
|
||||
+ install-info-recursive install-pdf-recursive \
|
||||
+ install-ps-recursive install-recursive installcheck-recursive \
|
||||
+ installdirs-recursive pdf-recursive ps-recursive \
|
||||
+ tags-recursive uninstall-recursive
|
||||
am__can_run_installinfo = \
|
||||
case $$AM_UPDATE_INFO_DIR in \
|
||||
n|no|NO) false;; \
|
||||
*) (install-info --version) >/dev/null 2>&1;; \
|
||||
esac
|
||||
+DATA = $(pkgconfig_DATA)
|
||||
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
|
||||
distclean-recursive maintainer-clean-recursive
|
||||
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
|
||||
- $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
|
||||
+am__recursive_targets = \
|
||||
+ $(RECURSIVE_TARGETS) \
|
||||
+ $(RECURSIVE_CLEAN_TARGETS) \
|
||||
+ $(am__extra_recursive_targets)
|
||||
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
|
||||
cscope distdir dist dist-all distcheck
|
||||
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
|
||||
+# Read a list of newline-separated strings from the standard input,
|
||||
+# and print each of them once, without duplicates. Input order is
|
||||
+# *not* preserved.
|
||||
+am__uniquify_input = $(AWK) '\
|
||||
+ BEGIN { nonempty = 0; } \
|
||||
+ { items[$$0] = 1; nonempty = 1; } \
|
||||
+ END { if (nonempty) { for (i in items) print i; }; } \
|
||||
+'
|
||||
+# Make sure the list of sources is unique. This is necessary because,
|
||||
+# e.g., the same source file might be shared among _SOURCES variables
|
||||
+# for different programs/libraries.
|
||||
+am__define_uniq_tagged_files = \
|
||||
+ list='$(am__tagged_files)'; \
|
||||
+ unique=`for i in $$list; do \
|
||||
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
+ done | $(am__uniquify_input)`
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
CSCOPE = cscope
|
||||
@@ -179,6 +246,7 @@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -382,6 +450,11 @@
|
||||
Releasenotes-2.2.1.markdown \
|
||||
$(pkgdata_SCRIPTS)
|
||||
|
||||
+pkgconfigdir = $(libdir)/pkgconfig/
|
||||
+pkgconfig_DATA = \
|
||||
+ pkgconfig/tntnet.pc \
|
||||
+ pkgconfig/tntnet_sdk.pc
|
||||
+
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
@@ -421,6 +494,10 @@
|
||||
$(am__aclocal_m4_deps):
|
||||
tntnet-config: $(top_builddir)/config.status $(srcdir)/tntnet-config.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
+pkgconfig/tntnet.pc: $(top_builddir)/config.status $(top_srcdir)/pkgconfig/tntnet.pc.in
|
||||
+ cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
+pkgconfig/tntnet_sdk.pc: $(top_builddir)/config.status $(top_srcdir)/pkgconfig/tntnet_sdk.pc.in
|
||||
+ cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
|
||||
@@ -500,6 +577,27 @@
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool config.lt
|
||||
+install-pkgconfigDATA: $(pkgconfig_DATA)
|
||||
+ @$(NORMAL_INSTALL)
|
||||
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
+ if test -n "$$list"; then \
|
||||
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \
|
||||
+ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \
|
||||
+ fi; \
|
||||
+ for p in $$list; do \
|
||||
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
+ echo "$$d$$p"; \
|
||||
+ done | $(am__base_list) | \
|
||||
+ while read files; do \
|
||||
+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \
|
||||
+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \
|
||||
+ done
|
||||
+
|
||||
+uninstall-pkgconfigDATA:
|
||||
+ @$(NORMAL_UNINSTALL)
|
||||
+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
|
||||
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
|
||||
+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run 'make' without going through this Makefile.
|
||||
@@ -507,14 +605,13 @@
|
||||
# (1) if the variable is set in 'config.status', edit 'config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run 'make');
|
||||
# (2) otherwise, pass the desired values on the 'make' command line.
|
||||
-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
|
||||
- @fail= failcom='exit 1'; \
|
||||
- for f in x $$MAKEFLAGS; do \
|
||||
- case $$f in \
|
||||
- *=* | --[!k]*);; \
|
||||
- *k*) failcom='fail=yes';; \
|
||||
- esac; \
|
||||
- done; \
|
||||
+$(am__recursive_targets):
|
||||
+ @fail=; \
|
||||
+ if $(am__make_keepgoing); then \
|
||||
+ failcom='fail=yes'; \
|
||||
+ else \
|
||||
+ failcom='exit 1'; \
|
||||
+ fi; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
case "$@" in \
|
||||
@@ -535,31 +632,13 @@
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
-tags-recursive:
|
||||
- list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
- done
|
||||
-ctags-recursive:
|
||||
- list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
- done
|
||||
-cscopelist-recursive:
|
||||
- list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
- test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
|
||||
- done
|
||||
|
||||
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
- unique=`for i in $$list; do \
|
||||
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
- done | \
|
||||
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
- END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
- mkid -fID $$unique
|
||||
-tags: TAGS
|
||||
+ID: $(am__tagged_files)
|
||||
+ $(am__define_uniq_tagged_files); mkid -fID $$unique
|
||||
+tags: tags-recursive
|
||||
+TAGS: tags
|
||||
|
||||
-TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
- $(TAGS_FILES) $(LISP)
|
||||
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
set x; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
@@ -575,12 +654,7 @@
|
||||
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
- unique=`for i in $$list; do \
|
||||
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
- done | \
|
||||
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
- END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
+ $(am__define_uniq_tagged_files); \
|
||||
shift; \
|
||||
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
@@ -592,15 +666,11 @@
|
||||
$$unique; \
|
||||
fi; \
|
||||
fi
|
||||
-ctags: CTAGS
|
||||
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
- $(TAGS_FILES) $(LISP)
|
||||
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
- unique=`for i in $$list; do \
|
||||
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
- done | \
|
||||
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
|
||||
- END { if (nonempty) { for (i in files) print i; }; }'`; \
|
||||
+ctags: ctags-recursive
|
||||
+
|
||||
+CTAGS: ctags
|
||||
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
|
||||
+ $(am__define_uniq_tagged_files); \
|
||||
test -z "$(CTAGS_ARGS)$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$unique
|
||||
@@ -609,18 +679,16 @@
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& $(am__cd) $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) "$$here"
|
||||
-
|
||||
cscope: cscope.files
|
||||
test ! -s cscope.files \
|
||||
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
|
||||
-
|
||||
clean-cscope:
|
||||
-rm -f cscope.files
|
||||
+cscope.files: clean-cscope cscopelist
|
||||
+cscopelist: cscopelist-recursive
|
||||
|
||||
-cscope.files: clean-cscope cscopelist-recursive cscopelist
|
||||
-
|
||||
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
|
||||
- list='$(SOURCES) $(HEADERS) $(LISP)'; \
|
||||
+cscopelist-am: $(am__tagged_files)
|
||||
+ list='$(am__tagged_files)'; \
|
||||
case "$(srcdir)" in \
|
||||
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
|
||||
*) sdir=$(subdir)/$(srcdir) ;; \
|
||||
@@ -754,9 +822,9 @@
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
- chmod -R a-w $(distdir); chmod u+w $(distdir)
|
||||
- mkdir $(distdir)/_build
|
||||
- mkdir $(distdir)/_inst
|
||||
+ chmod -R a-w $(distdir)
|
||||
+ chmod u+w $(distdir)
|
||||
+ mkdir $(distdir)/_build $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
test -d $(distdir)/_build || exit 0; \
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
@@ -820,10 +888,10 @@
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
-all-am: Makefile $(SCRIPTS)
|
||||
+all-am: Makefile $(SCRIPTS) $(DATA)
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
- for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)"; do \
|
||||
+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(pkgdatadir)" "$(DESTDIR)$(pkgconfigdir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-recursive
|
||||
@@ -878,7 +946,7 @@
|
||||
|
||||
info-am:
|
||||
|
||||
-install-data-am: install-pkgdataSCRIPTS
|
||||
+install-data-am: install-pkgconfigDATA install-pkgdataSCRIPTS
|
||||
|
||||
install-dvi: install-dvi-recursive
|
||||
|
||||
@@ -924,30 +992,29 @@
|
||||
|
||||
ps-am:
|
||||
|
||||
-uninstall-am: uninstall-binSCRIPTS uninstall-pkgdataSCRIPTS
|
||||
+uninstall-am: uninstall-binSCRIPTS uninstall-pkgconfigDATA \
|
||||
+ uninstall-pkgdataSCRIPTS
|
||||
+
|
||||
+.MAKE: $(am__recursive_targets) install-am install-strip
|
||||
|
||||
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
|
||||
- cscopelist-recursive ctags-recursive install-am install-strip \
|
||||
- tags-recursive
|
||||
-
|
||||
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
|
||||
- all all-am am--refresh check check-am clean clean-cscope \
|
||||
- clean-generic clean-libtool cscope cscopelist \
|
||||
- cscopelist-recursive ctags ctags-recursive dist dist-all \
|
||||
- dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ dist-xz \
|
||||
- dist-zip distcheck distclean distclean-generic \
|
||||
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
|
||||
+ am--refresh check check-am clean clean-cscope clean-generic \
|
||||
+ clean-libtool cscope cscopelist-am ctags ctags-am dist \
|
||||
+ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \
|
||||
+ dist-xz dist-zip distcheck distclean distclean-generic \
|
||||
distclean-libtool distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-binSCRIPTS install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
- install-pkgdataSCRIPTS install-ps install-ps-am install-strip \
|
||||
- installcheck installcheck-am installdirs installdirs-am \
|
||||
- maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
- tags tags-recursive uninstall uninstall-am \
|
||||
- uninstall-binSCRIPTS uninstall-pkgdataSCRIPTS
|
||||
+ install-pkgconfigDATA install-pkgdataSCRIPTS install-ps \
|
||||
+ install-ps-am install-strip installcheck installcheck-am \
|
||||
+ installdirs installdirs-am maintainer-clean \
|
||||
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
+ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
|
||||
+ uninstall-am uninstall-binSCRIPTS uninstall-pkgconfigDATA \
|
||||
+ uninstall-pkgdataSCRIPTS
|
||||
|
||||
|
||||
tntnet-config: tntnet-config.in
|
||||
diff -Naur tntnet-2.2.1/pkgconfig/tntnet.pc.in tntnet-2.2.1.patch/pkgconfig/tntnet.pc.in
|
||||
--- tntnet-2.2.1/pkgconfig/tntnet.pc.in 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ tntnet-2.2.1.patch/pkgconfig/tntnet.pc.in 2016-01-07 06:07:03.794973414 +0100
|
||||
@@ -0,0 +1,11 @@
|
||||
+prefix=@prefix@
|
||||
+exec_prefix=@exec_prefix@
|
||||
+libdir=@libdir@
|
||||
+includedir=@includedir@
|
||||
+
|
||||
+Name: tntnet
|
||||
+Description: Modular, multithreaded web application library for C++
|
||||
+Version: @PACKAGE_VERSION@
|
||||
+Libs: -L${libdir} -ltntnet
|
||||
+Cflags: -I${includedir}
|
||||
+Requires.private: cxxtools
|
||||
diff -Naur tntnet-2.2.1/pkgconfig/tntnet_sdk.pc.in tntnet-2.2.1.patch/pkgconfig/tntnet_sdk.pc.in
|
||||
--- tntnet-2.2.1/pkgconfig/tntnet_sdk.pc.in 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ tntnet-2.2.1.patch/pkgconfig/tntnet_sdk.pc.in 2016-01-07 06:07:03.795973416 +0100
|
||||
@@ -0,0 +1,11 @@
|
||||
+prefix=@prefix@
|
||||
+exec_prefix=@exec_prefix@
|
||||
+libdir=@libdir@
|
||||
+includedir=@includedir@
|
||||
+
|
||||
+Name: tntnet_sdk
|
||||
+Description: Helper library for ecpp-parsing programs
|
||||
+Version: @PACKAGE_VERSION@
|
||||
+Libs: -L${libdir} -ltntnet_sdk
|
||||
+Cflags: -I${includedir}
|
||||
+Requires.private: cxxtools
|
||||
@@ -1,7 +1,3 @@
|
||||
6.0.0
|
||||
rebuild for OpenELEC-6.0
|
||||
4.3.2
|
||||
allow running scripts from addon settings
|
||||
4.3.1
|
||||
rebuild for addon api bump
|
||||
4.3.0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@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
|
||||
@@ -17,8 +17,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="hdhomerun"
|
||||
PKG_VERSION="6.0"
|
||||
PKG_REV="0"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.silicondust.com/products/hdhomerun/dvbt/"
|
||||
@@ -31,8 +31,6 @@ PKG_LONGDESC="A linux DVB driver for the HDHomeRun (http://www.silicondust.com).
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.python.script"
|
||||
PKG_ADDON_PROVIDES=""
|
||||
PKG_ADDON_REPOVERSION="6.0"
|
||||
|
||||
make_target() {
|
||||
: # nothing to do here
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2013 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
|
||||
@@ -15,3 +15,18 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import xbmcaddon
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.hdhomerun')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
if __name__ == "__main__" and len(sys.argv) == 2 and sys.argv[1] == 'refresh_tuners':
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_hdhomerun_tuners
|
||||
refresh_hdhomerun_tuners(__settings_xml__)
|
||||
__settings__.openSettings()
|
||||
|
||||
@@ -37,39 +37,36 @@ def _usage(this_file):
|
||||
return """SYNOPSIS: pretty print an XML document
|
||||
USAGE: python %s <filename> \n""" % this_file
|
||||
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout, ignore_contents = False):
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout):
|
||||
if line.strip():
|
||||
start = ""
|
||||
number_chars = 0
|
||||
for l in range(indent_level):
|
||||
start = start + " "
|
||||
number_chars = number_chars + 1
|
||||
if not ignore_contents:
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/|\-\-]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
output.write(" ")
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
output.write(" ")
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
output.write(start + line + "\n")
|
||||
else:
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
output.write(" ")
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
output.write(start + line + "\n")
|
||||
|
||||
|
||||
@@ -83,8 +80,7 @@ def _get_next_elem(data):
|
||||
start_pos = data.find("<")
|
||||
end_pos = data.find(">") + 1
|
||||
retval = data[start_pos:end_pos]
|
||||
stopper = retval.rfind("/")
|
||||
ignore_contents = False
|
||||
stopper = retval.rfind("/")
|
||||
if stopper < retval.rfind("\""):
|
||||
stopper = -1
|
||||
single = (stopper > -1 and ((retval.find(">") - stopper) < (stopper - retval.find("<"))))
|
||||
@@ -93,19 +89,11 @@ def _get_next_elem(data):
|
||||
ignore_question = retval.find("<?") > -1
|
||||
|
||||
if ignore_excl:
|
||||
ignore_contents = True
|
||||
cdata = retval.find("<![CDATA[") > -1
|
||||
if cdata:
|
||||
end_pos = data.find("]]>")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("]]>")
|
||||
stopper = end_pos
|
||||
else:
|
||||
end_pos = data.find("-->")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("-->")
|
||||
stopper = end_pos
|
||||
retval = data[start_pos:end_pos]
|
||||
|
||||
elif ignore_question:
|
||||
end_pos = data.find("?>") + len("?>")
|
||||
@@ -113,12 +101,11 @@ def _get_next_elem(data):
|
||||
|
||||
no_indent = ignore or single
|
||||
|
||||
|
||||
#print retval, end_pos, start_pos, stopper > -1, no_indent
|
||||
return start_pos, \
|
||||
end_pos, \
|
||||
stopper > -1, \
|
||||
no_indent, \
|
||||
ignore_contents
|
||||
no_indent
|
||||
|
||||
def get_pprint(xml, indent=4, width=80):
|
||||
"""Returns the pretty printed xml """
|
||||
@@ -129,8 +116,6 @@ def get_pprint(xml, indent=4, width=80):
|
||||
self.output += string
|
||||
out = out()
|
||||
pprint(xml, output=out, indent=indent, width=width)
|
||||
|
||||
|
||||
|
||||
return out.output
|
||||
|
||||
@@ -141,7 +126,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
Use indent to select indentation level. Default is 4 """
|
||||
data = xml
|
||||
indent_level = 0
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
while ((start_pos > -1 and end_pos > -1)):
|
||||
_pprint_elem_content(indent_level, data[:start_pos].strip(),
|
||||
output=output)
|
||||
@@ -151,8 +136,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
_pprint_line(indent_level,
|
||||
data[:end_pos - start_pos],
|
||||
width=width,
|
||||
output=output,
|
||||
ignore_contents=ignore_contents)
|
||||
output=output)
|
||||
data = data[end_pos - start_pos:]
|
||||
if not is_stop and not no_indent :
|
||||
indent_level = indent_level + indent
|
||||
@@ -160,7 +144,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
if not data:
|
||||
break
|
||||
else:
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -11,6 +11,6 @@
|
||||
<category label="9000">
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_TUNER_TYPES" type="bool" label="9005" default="true" />
|
||||
<setting label="9010" option="close" type="action" id="refresh_tuners" action="RunScript($CWD/resources/actions.py, refresh_tuners)" />
|
||||
<setting label="9010" option="close" type="action" action="RunScript($ID, refresh_tuners)" />
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
@@ -1,24 +1,13 @@
|
||||
6.0.0
|
||||
rebuild for OpenELEC-6.0
|
||||
|
||||
4.3.1
|
||||
fix keymaps path
|
||||
|
||||
4.3.0
|
||||
rebuild for addon api bump
|
||||
|
||||
4.1.0
|
||||
rebuild for addon api bump
|
||||
|
||||
4.0.1
|
||||
rebuild
|
||||
|
||||
4.0.0
|
||||
rebuild for OpenELEC-4.0
|
||||
|
||||
3.1.1
|
||||
rebuild for OpenELEC-3.2
|
||||
|
||||
3.0.1
|
||||
- bump addon version
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@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
|
||||
@@ -17,7 +17,7 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="imon-mce"
|
||||
PKG_VERSION="6.0"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
@@ -31,8 +31,6 @@ PKG_LONGDESC="imon-mce is a driver to add support for MCE remotes to the imon dr
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_ADDON_PROVIDES=""
|
||||
PKG_ADDON_REPOVERSION="6.0"
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
|
||||
@@ -21,4 +21,4 @@
|
||||
. /etc/profile
|
||||
|
||||
sleep 1 && \
|
||||
ir-keytable -p rc6 -w /usr/lib/udev/rc_keymaps/imon_mce &
|
||||
ir-keytable -p rc6 -w /etc/rc_keymaps/imon_mce &
|
||||
@@ -1,10 +1,6 @@
|
||||
6.0.1
|
||||
update driver for new devices support
|
||||
6.0.0
|
||||
rebuild for OpenELEC-6.0
|
||||
4.3.4
|
||||
fixed xbmc/kodi rebranding error
|
||||
some fixes
|
||||
removed driver update option (can't run script from addon settings anymore)
|
||||
4.3.3
|
||||
addon transformed to service addon
|
||||
new addon settings option to enable to check for new driver at boot
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@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
|
||||
@@ -17,8 +17,8 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="sundtek-mediatv"
|
||||
PKG_VERSION="6.0"
|
||||
PKG_REV="1"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="4"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="nonfree"
|
||||
PKG_SITE="http://support.sundtek.com/"
|
||||
@@ -30,15 +30,16 @@ PKG_SHORTDESC="Sundtek USB Stick DVB userspace driver"
|
||||
PKG_LONGDESC="Driver for Sundtek MediaTV Pro (DVB-C, DVB-T, AnalogTV, Composite, S-Video, FM-Radio USB Stick) and Sundtek SkyTV Ultimate (DVB-S/S2 USB)."
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_ADDON_PROVIDES=""
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_ADDON_REPOVERSION="6.0"
|
||||
|
||||
make_target() {
|
||||
mkdir -p $ROOT/$PKG_BUILD
|
||||
cd $ROOT/$PKG_BUILD
|
||||
|
||||
case $TARGET_ARCH in
|
||||
i386)
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/32bit/installer.tar.gz"
|
||||
;;
|
||||
x86_64)
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/64bit/installer.tar.gz"
|
||||
;;
|
||||
@@ -46,17 +47,10 @@ make_target() {
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz"
|
||||
;;
|
||||
esac
|
||||
|
||||
wget -O installer.tar.gz $INSTALLER_URL
|
||||
|
||||
tar -xzf installer.tar.gz
|
||||
|
||||
chmod -R 755 opt/ etc/
|
||||
|
||||
rm -f opt/bin/getinput.sh
|
||||
rm -f opt/bin/lirc.sh
|
||||
rm -fr opt/lib/pm/
|
||||
|
||||
wget -O version.used http://sundtek.de/media/latest.phtml
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2013 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
|
||||
@@ -78,7 +78,7 @@ if [ "$CHECK_BOOT" = "true" ]; then
|
||||
version_latest=$(cat version.latest)
|
||||
if [ "$version_used" != "$version_latest" ]; then
|
||||
# new version exist
|
||||
kodi-send -a "Notification(Sundtek, \"New driver version exist, update manually\", 4000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
kodi-send -a "Notification(Sundtek, \"New driver version exist, update manually\", 7000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
fi
|
||||
)&
|
||||
fi
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2013 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
|
||||
|
||||
@@ -24,35 +24,18 @@ SUNDTEK_ADDON_DIR="$HOME/.kodi/addons/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_HOME="$HOME/.kodi/userdata/addon_data/driver.dvb.sundtek-mediatv"
|
||||
SUNDTEK_ADDON_SETTINGS="$SUNDTEK_ADDON_HOME/settings.xml"
|
||||
|
||||
trap_exit_install() {
|
||||
kodi-send -a "Notification(Sundtek, Something went wrong. Cleaning..., 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
cd "$SUNDTEK_ADDON_DIR"
|
||||
rm -fr tmp
|
||||
exit 5
|
||||
}
|
||||
|
||||
# kill process
|
||||
systemctl stop driver.dvb.sundtek-mediatv
|
||||
killall -9 mediaclient &>/dev/null
|
||||
killall -9 mediasrv &>/dev/null
|
||||
|
||||
# exit on errors
|
||||
set -e
|
||||
|
||||
trap trap_exit_install EXIT
|
||||
logger -t Sundtek "### Starting updating driver ###"
|
||||
kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
|
||||
cd "$SUNDTEK_ADDON_DIR"
|
||||
rm -fr tmp
|
||||
mkdir tmp
|
||||
cd tmp
|
||||
|
||||
logger -t Sundtek "### Starting updating driver ###"
|
||||
kodi-send -a "Notification(Sundtek, Starting updating driver, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
|
||||
wget -O ../version.used http://sundtek.de/media/latest.phtml
|
||||
if [ $? -ne 0 ]; then
|
||||
logger -t Sundtek "### Can't get latest version ###"
|
||||
kodi-send -a "Notification(Sundtek, Cant get latest version, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
kodi-send -a "Notification(Sundtek, Can't get latest version, 8000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
cd ..
|
||||
rm -fr tmp/
|
||||
exit 1
|
||||
@@ -61,6 +44,8 @@ fi
|
||||
ARCH=$(sed -n 's|.*\.\([^-]*\)-.*|\1|p' /etc/release | tr -d '\n')
|
||||
if [ "$ARCH" = "x86_64" ]; then
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/64bit/installer.tar.gz"
|
||||
elif [ "$ARCH" = "i386" ]; then
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/32bit/installer.tar.gz"
|
||||
elif [ "$ARCH" = "arm" ]; then
|
||||
INSTALLER_URL="http://sundtek.de/media/netinst/armsysvhf/installer.tar.gz"
|
||||
else
|
||||
@@ -81,7 +66,6 @@ if [ $? -ne 0 ]; then
|
||||
rm -fr tmp/
|
||||
exit 3
|
||||
fi
|
||||
|
||||
logger -t Sundtek "### Extracting archive ###"
|
||||
kodi-send -a "Notification(Sundtek, Extracting archive, 2000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
tar -xzf installer.tar.gz
|
||||
@@ -93,12 +77,12 @@ if [ $? -ne 0 ]; then
|
||||
exit 4
|
||||
fi
|
||||
|
||||
# fix permissions
|
||||
chmod -R 755 opt/ etc/
|
||||
|
||||
rm -f opt/bin/getinput.sh
|
||||
rm -f opt/bin/lirc.sh
|
||||
rm -fr opt/lib/pm/
|
||||
killall -9 mediaclient &>/dev/null
|
||||
killall -9 mediasrv &>/dev/null
|
||||
|
||||
chmod 755 opt/bin/*
|
||||
|
||||
cp -Pa opt/bin/* ../bin/
|
||||
cp -Pa opt/lib/* ../lib/
|
||||
@@ -109,9 +93,4 @@ rm -fr tmp
|
||||
logger -t Sundtek "### Driver update finished ###"
|
||||
kodi-send -a "Notification(Sundtek, Driver update finished, 5000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
kodi-send -a "Notification(Sundtek, Please reboot, 5000, $SUNDTEK_ADDON_DIR/icon.png)"
|
||||
|
||||
trap - EXIT
|
||||
|
||||
systemctl start driver.dvb.sundtek-mediatv
|
||||
|
||||
exit 0
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2013 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
|
||||
|
||||
@@ -15,3 +15,29 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import xbmcaddon
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient'))
|
||||
__mediaclient_e__ = __mediaclient__ + ' -e'
|
||||
__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'sundtek-update-driver.sh'))
|
||||
|
||||
if __name__ == "__main__" and len(sys.argv) == 2:
|
||||
if sys.argv[1] == 'refresh_tuners':
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_sundtek_tuners
|
||||
refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__)
|
||||
__settings__.openSettings()
|
||||
elif sys.argv[1] == 'update_driver':
|
||||
proc = subprocess.Popen([__update_sh__], shell = True)
|
||||
return_code = proc.wait()
|
||||
print "sundtek update driver return value" + str(return_code)
|
||||
__settings__.openSettings()
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
################################################################################
|
||||
# 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/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import xbmcaddon
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.sundtek-mediatv')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
|
||||
__mediaclient__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'mediaclient'))
|
||||
__mediaclient_e__ = __mediaclient__ + ' -e'
|
||||
__update_sh__ = xbmc.translatePath(os.path.join(__cwd__, 'bin', 'sundtek-update-driver.sh'))
|
||||
|
||||
if len(sys.argv) == 2:
|
||||
if sys.argv[1] == 'refresh_tuners':
|
||||
print "sundtek refresh tuners"
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_sundtek_tuners
|
||||
refresh_sundtek_tuners(__settings_xml__, __mediaclient_e__)
|
||||
__settings__.openSettings()
|
||||
elif sys.argv[1] == 'update_driver':
|
||||
print "sundtek update driver"
|
||||
proc = subprocess.Popen([__update_sh__], shell = True)
|
||||
return_code = proc.wait()
|
||||
print "sundtek update driver return value " + str(return_code)
|
||||
__settings__.openSettings()
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2013 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
|
||||
|
||||
@@ -37,39 +37,36 @@ def _usage(this_file):
|
||||
return """SYNOPSIS: pretty print an XML document
|
||||
USAGE: python %s <filename> \n""" % this_file
|
||||
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout, ignore_contents = False):
|
||||
def _pprint_line(indent_level, line, width=100, output=_sys.stdout):
|
||||
if line.strip():
|
||||
start = ""
|
||||
number_chars = 0
|
||||
for l in range(indent_level):
|
||||
start = start + " "
|
||||
number_chars = number_chars + 1
|
||||
if not ignore_contents:
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/|\-\-]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
output.write(" ")
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
try:
|
||||
elem_start = _re.findall("(\<\W{0,1}\w+:\w+) ?", line)[0]
|
||||
elem_finished = _re.findall("([?|\]\]/]*\>)", line)[0]
|
||||
#should not have *
|
||||
attrs = _re.findall("(\S*?\=\".*?\")", line)
|
||||
output.write(start + elem_start)
|
||||
number_chars = len(start + elem_start)
|
||||
for attr in attrs:
|
||||
if (attrs.index(attr) + 1) == len(attrs):
|
||||
number_chars = number_chars + len(elem_finished)
|
||||
if (number_chars + len(attr) + 1) > width:
|
||||
output.write("\n")
|
||||
for i in range(len(start + elem_start) + 1):
|
||||
output.write(" ")
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
output.write(start + line + "\n")
|
||||
else:
|
||||
number_chars = len(start + elem_start) + 1
|
||||
else:
|
||||
output.write(" ")
|
||||
number_chars = number_chars + 1
|
||||
output.write(attr)
|
||||
number_chars = number_chars + len(attr)
|
||||
output.write(elem_finished + "\n")
|
||||
except IndexError:
|
||||
#give up pretty print this line
|
||||
output.write(start + line + "\n")
|
||||
|
||||
|
||||
@@ -83,8 +80,7 @@ def _get_next_elem(data):
|
||||
start_pos = data.find("<")
|
||||
end_pos = data.find(">") + 1
|
||||
retval = data[start_pos:end_pos]
|
||||
stopper = retval.rfind("/")
|
||||
ignore_contents = False
|
||||
stopper = retval.rfind("/")
|
||||
if stopper < retval.rfind("\""):
|
||||
stopper = -1
|
||||
single = (stopper > -1 and ((retval.find(">") - stopper) < (stopper - retval.find("<"))))
|
||||
@@ -93,19 +89,11 @@ def _get_next_elem(data):
|
||||
ignore_question = retval.find("<?") > -1
|
||||
|
||||
if ignore_excl:
|
||||
ignore_contents = True
|
||||
cdata = retval.find("<![CDATA[") > -1
|
||||
if cdata:
|
||||
end_pos = data.find("]]>")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("]]>")
|
||||
stopper = end_pos
|
||||
else:
|
||||
end_pos = data.find("-->")
|
||||
if end_pos > -1:
|
||||
end_pos = end_pos + len("-->")
|
||||
stopper = end_pos
|
||||
retval = data[start_pos:end_pos]
|
||||
|
||||
elif ignore_question:
|
||||
end_pos = data.find("?>") + len("?>")
|
||||
@@ -113,12 +101,11 @@ def _get_next_elem(data):
|
||||
|
||||
no_indent = ignore or single
|
||||
|
||||
|
||||
#print retval, end_pos, start_pos, stopper > -1, no_indent
|
||||
return start_pos, \
|
||||
end_pos, \
|
||||
stopper > -1, \
|
||||
no_indent, \
|
||||
ignore_contents
|
||||
no_indent
|
||||
|
||||
def get_pprint(xml, indent=4, width=80):
|
||||
"""Returns the pretty printed xml """
|
||||
@@ -129,8 +116,6 @@ def get_pprint(xml, indent=4, width=80):
|
||||
self.output += string
|
||||
out = out()
|
||||
pprint(xml, output=out, indent=indent, width=width)
|
||||
|
||||
|
||||
|
||||
return out.output
|
||||
|
||||
@@ -141,7 +126,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
Use indent to select indentation level. Default is 4 """
|
||||
data = xml
|
||||
indent_level = 0
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
while ((start_pos > -1 and end_pos > -1)):
|
||||
_pprint_elem_content(indent_level, data[:start_pos].strip(),
|
||||
output=output)
|
||||
@@ -151,8 +136,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
_pprint_line(indent_level,
|
||||
data[:end_pos - start_pos],
|
||||
width=width,
|
||||
output=output,
|
||||
ignore_contents=ignore_contents)
|
||||
output=output)
|
||||
data = data[end_pos - start_pos:]
|
||||
if not is_stop and not no_indent :
|
||||
indent_level = indent_level + indent
|
||||
@@ -160,7 +144,7 @@ def pprint(xml, output=_sys.stdout, indent=4, width=80):
|
||||
if not data:
|
||||
break
|
||||
else:
|
||||
start_pos, end_pos, is_stop, no_indent, ignore_contents = _get_next_elem(data)
|
||||
start_pos, end_pos, is_stop, no_indent = _get_next_elem(data)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -27,11 +27,13 @@
|
||||
<category label="9000">
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_TUNER_TYPES" type="bool" label="9005" default="true" />
|
||||
<setting label="9010" option="close" type="action" id="refresh_tuners" action="RunScript($CWD/resources/actions.py, refresh_tuners)" />
|
||||
<setting label="9010" option="close" type="action" action="RunScript($ID, refresh_tuners)" />
|
||||
</category>
|
||||
<!--
|
||||
<category label="3000">
|
||||
<setting type="sep" />
|
||||
<setting id="CHECK_BOOT" type="bool" label="3020" default="false" />
|
||||
<setting label="3010" option="close" type="action" id="update_driver" action="RunScript($CWD/resources/actions.py, update_driver)" />
|
||||
<setting label="3010" option="close" type="action" action="RunScript($ID, update_driver)" />
|
||||
</category>
|
||||
-->
|
||||
</settings>
|
||||
|
||||
@@ -1,24 +1,26 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
# This Program 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.
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# OpenELEC is distributed in the hope that it will be useful,
|
||||
# This Program 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
|
||||
# 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/>.
|
||||
# along with OpenELEC.tv; see the file COPYING. If not, write to
|
||||
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
|
||||
# http://www.gnu.org/copyleft/gpl.html
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="repository.unofficial.addon.pro"
|
||||
PKG_VERSION="6.0"
|
||||
PKG_REV="2"
|
||||
PKG_VERSION="4.3.3"
|
||||
PKG_REV="0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://unofficial.addon.pro"
|
||||
@@ -31,17 +33,16 @@ PKG_LONGDESC="Unfficial OpenELEC.tv Add-on Repository"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.addon.repository"
|
||||
PKG_ADDON_PROVIDES=""
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
PKG_MAINTAINER="unofficial.addon.pro"
|
||||
|
||||
make_target() {
|
||||
$SED -e "s|@PROJECT@|$PROJECT|g" \
|
||||
$SED -e "s|@ADDON_VERSION@|$ADDON_VERSION|g" \
|
||||
-e "s|@PROJECT@|$PROJECT|g" \
|
||||
-e "s|@ARCH@|$TARGET_ARCH|g" \
|
||||
-e "s|@PKG_VERSION@|$PKG_VERSION|g" \
|
||||
-e "s|@PKG_REV@|$PKG_REV|g"\
|
||||
-i addon.xml
|
||||
}
|
||||
|
||||
|
||||
@@ -1,20 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="repository.unofficial.addon.pro"
|
||||
name="[COLOR FF757677]Open[/COLOR][COLOR FF8ABEE2]ELEC[/COLOR] Add-ons (unofficial)"
|
||||
version="@PKG_VERSION@.@PKG_REV@"
|
||||
provider-name="OpenELEC Community">
|
||||
name="Unofficial [COLOR FF757677]Open[/COLOR][COLOR FF8ABEE2]ELEC[/COLOR] (@PROJECT@/@ARCH@) Add-ons"
|
||||
version="@PKG_VERSION@"
|
||||
provider-name="unofficial.addon.pro">
|
||||
<extension point="xbmc.addon.repository"
|
||||
name="OpenELEC Add-ons (unofficial)">
|
||||
<dir minversion="15.0.0">
|
||||
<info>http://unofficial.addon.pro/addons/6.0/@PROJECT@/@ARCH@/addons.xml</info>
|
||||
<checksum>http://unofficial.addon.pro/addons/6.0/@PROJECT@/@ARCH@/addons.xml.md5</checksum>
|
||||
<datadir zip="true">http://unofficial.addon.pro/addons/6.0/@PROJECT@/@ARCH@</datadir>
|
||||
</dir>
|
||||
name="Unofficial OpenELEC.tv Add-on Repository">
|
||||
<info>http://unofficial.addon.pro/addons/@ADDON_VERSION@/@PROJECT@/@ARCH@/addons.xml</info>
|
||||
<checksum>http://unofficial.addon.pro/addons/@ADDON_VERSION@/@PROJECT@/@ARCH@/addons.xml.md5</checksum>
|
||||
<datadir zip="true">http://unofficial.addon.pro/addons/@ADDON_VERSION@/@PROJECT@/@ARCH@</datadir>
|
||||
</extension>
|
||||
<extension point="xbmc.addon.metadata">
|
||||
<summary>OpenELEC Add-ons (unofficial)</summary>
|
||||
<description>The OpenELEC unofficial repository contains add-ons from the community. These add-ons are not supported by OpenELEC staff. If you find a broken add-on please check the OpenELEC or Kodi forums for community support threads and ask the add-on author to submit fixes via GitHub.</description>
|
||||
<disclaimer>Add-ons in this repository are not maintained or supported by OpenELEC staff.</disclaimer>
|
||||
<summary>Unofficial addon repository for OpenELEC</summary>
|
||||
<description>
|
||||
[COLOR red]=== BIG FAT WARNING ===[/COLOR]
|
||||
Use this repository at your own risk.
|
||||
If your house gets burned, it's your fault, not ours.
|
||||
We give no guarantee. We give no support.
|
||||
</description>
|
||||
<disclaimer>This is an unofficial addon repository. please don't ask for support in openelec forum / irc channel</disclaimer>
|
||||
<platform>all</platform>
|
||||
</extension>
|
||||
</addon>
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
6.0.1
|
||||
- update repo minversion for kodi 15
|
||||
|
||||
6.0.0
|
||||
- rebuild for OpenELEC-6.0
|
||||
|
||||
4.3.3
|
||||
- rebuild
|
||||
|
||||
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
@@ -1,50 +0,0 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 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/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="script.config.vdr"
|
||||
PKG_VERSION="1.0.8"
|
||||
PKG_REV="0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="OSS"
|
||||
PKG_SITE="http://www.openelec.tv"
|
||||
PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET=""
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION=""
|
||||
PKG_SHORTDESC="script.config.vdr"
|
||||
PKG_LONGDESC="script.config.vdr"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="dummy"
|
||||
PKG_ADDON_PROVIDES=""
|
||||
PKG_ADDON_REPOVERSION="6.0"
|
||||
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
make_target() {
|
||||
: # nothing to do here
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: # nothing to do here
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
|
||||
cp -PR $PKG_BUILD/* $ADDON_BUILD/$PKG_ADDON_ID
|
||||
}
|
||||
@@ -1,9 +1,3 @@
|
||||
6.0.0
|
||||
- rebuild for OpenELEC-6.0
|
||||
|
||||
4.3.5
|
||||
- added boblight-aml
|
||||
|
||||
4.3.4
|
||||
- update to kodi
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@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
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
PKG_NAME="boblightd"
|
||||
PKG_VERSION="478"
|
||||
PKG_REV="0"
|
||||
PKG_REV="4"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://code.google.com/p/boblight"
|
||||
@@ -31,8 +31,6 @@ PKG_LONGDESC="Boblight's main purpose is to create light effects from an externa
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_ADDON_PROVIDES=""
|
||||
PKG_ADDON_REPOVERSION="6.0"
|
||||
|
||||
PKG_AUTORECONF="yes"
|
||||
|
||||
@@ -41,7 +39,7 @@ if [ "$DISPLAYSERVER" = "x11" ] ; then
|
||||
fi
|
||||
|
||||
if [ "$OPENGL_SUPPORT" = "yes" ] ; then
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET mesa glu"
|
||||
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET Mesa glu"
|
||||
fi
|
||||
|
||||
if [ "$OPENGL" = "no" ]; then
|
||||
@@ -65,7 +63,6 @@ addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblightd $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-constant $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-aml $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
if [ "$DISPLAYSERVER" = "x11" ] ; then
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/src/boblight-X11 $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
fi
|
||||
|
||||
@@ -1,632 +0,0 @@
|
||||
diff --git a/src/Makefile.am b/src/Makefile.am
|
||||
index 9ba5381..c5a4dc6 100644
|
||||
--- a/src/Makefile.am
|
||||
+++ b/src/Makefile.am
|
||||
@@ -7,6 +7,7 @@ AM_CFLAGS =\
|
||||
-g
|
||||
|
||||
bin_PROGRAMS = boblightd \
|
||||
+ boblight-aml \
|
||||
boblight-constant
|
||||
|
||||
|
||||
@@ -19,6 +20,11 @@ endif
|
||||
|
||||
endif
|
||||
|
||||
+boblight_aml_SOURCES = clients/boblight-aml/boblight-aml.cpp
|
||||
+boblight_aml_SOURCES += clients/boblight-aml/flagmanager-aml.cpp
|
||||
+boblight_aml_SOURCES += clients/flagmanager.cpp
|
||||
+boblight_aml_SOURCES += util/misc.cpp
|
||||
+
|
||||
boblight_v4l_SOURCES = \
|
||||
clients/boblight-v4l/boblight-v4l.cpp \
|
||||
clients/boblight-v4l/flagmanager-v4l.cpp \
|
||||
diff -urPp src/clients/boblight-aml.cpp src/clients/boblight-aml/boblight-aml.cpp
|
||||
--- /dev/null Thu Jan 1 00:00:00 1970
|
||||
+++ b/src/clients/boblight-aml/boblight-aml.cpp Thu Jan 15 10:24:16 2015
|
||||
@@ -0,0 +1,491 @@
|
||||
+/*
|
||||
+ * boblight
|
||||
+ * Copyright (C) Bob 2009
|
||||
+ *
|
||||
+ * boblight 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 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * boblight 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#define BOBLIGHT_DLOPEN
|
||||
+#include "lib/boblight.h"
|
||||
+
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <unistd.h>
|
||||
+#include <signal.h>
|
||||
+#include <algorithm>
|
||||
+
|
||||
+#include <fcntl.h>
|
||||
+#include <errno.h>
|
||||
+#include <sys/stat.h>
|
||||
+#include <sys/poll.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/time.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+
|
||||
+#include "config.h"
|
||||
+#include "util/misc.h"
|
||||
+#include "util/timeutils.h"
|
||||
+#include "flagmanager-aml.h"
|
||||
+
|
||||
+using namespace std;
|
||||
+
|
||||
+//from linux/amlogic/amports/amvideocap.h
|
||||
+#define AMVIDEOCAP_IOC_MAGIC 'V'
|
||||
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH _IOW(AMVIDEOCAP_IOC_MAGIC, 0x02, int)
|
||||
+#define AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT _IOW(AMVIDEOCAP_IOC_MAGIC, 0x03, int)
|
||||
+
|
||||
+
|
||||
+// helper class - tries to load the "movie" settings from the script.xbmc.boblight addon
|
||||
+// and pass them to the boblight-aml client
|
||||
+class CBoblightAddonSettings
|
||||
+{
|
||||
+ public:
|
||||
+ CBoblightAddonSettings() : m_bobdisable(false), m_settingsLoaded(false)
|
||||
+ {
|
||||
+ m_settingsLoaded = loadBoblightAddonSettings();
|
||||
+ }
|
||||
+
|
||||
+ std::string getBoblightClientCmdLine()
|
||||
+ {
|
||||
+ std::string cmdLine = "";
|
||||
+ //convert bool string to lowercase
|
||||
+ transform(m_interpolation.begin(), m_interpolation.end(), m_interpolation.begin(), ::tolower);
|
||||
+
|
||||
+ cmdLine += "-s " + m_ip + ":" + m_port;
|
||||
+ cmdLine += " -o autospeed=" + m_autospeed;
|
||||
+ cmdLine += " -o interpolation=" + m_interpolation;
|
||||
+ cmdLine += " -o saturation=" + m_saturation;
|
||||
+ cmdLine += " -o speed=" + m_speed;
|
||||
+ cmdLine += " -o threshold=" + m_threshold;
|
||||
+ cmdLine += " -o value=" + m_value;
|
||||
+ return cmdLine;
|
||||
+ }
|
||||
+
|
||||
+ bool m_bobdisable;
|
||||
+ bool m_settingsLoaded;
|
||||
+ std::string m_ip;
|
||||
+ std::string m_port;
|
||||
+ std::string m_autospeed;
|
||||
+ std::string m_interpolation;
|
||||
+ std::string m_saturation;
|
||||
+ std::string m_speed;
|
||||
+ std::string m_threshold;
|
||||
+ std::string m_value;
|
||||
+
|
||||
+ private:
|
||||
+ #define SETTINGS_ATTR_BOBDISABLE "bobdisable"
|
||||
+ #define SETTINGS_ATTR_IP "hostip"
|
||||
+ #define SETTINGS_ATTR_PORT "hostport"
|
||||
+ #define SETTINGS_ATTR_AUTOSPEED "movie_autospeed"
|
||||
+ #define SETTINGS_ATTR_INTERPOLATION "movie_interpolation"
|
||||
+ #define SETTINGS_ATTR_SATURATION "movie_saturation"
|
||||
+ #define SETTINGS_ATTR_SPEED "movie_speed"
|
||||
+ #define SETTINGS_ATTR_THRESHOLD "movie_threshold"
|
||||
+ #define SETTINGS_ATTR_VALUE "movie_value"
|
||||
+ #define KODI_HOME_ENV_VAR "HOME"
|
||||
+
|
||||
+ bool loadBoblightAddonSettings()
|
||||
+ {
|
||||
+ bool ret = false;
|
||||
+ char *kodiHome = getenv(KODI_HOME_ENV_VAR);
|
||||
+ //fallback to custom settings file in case boblight addon is not installed
|
||||
+ std::string settingsFile = "/storage/boblight-aml.xml";
|
||||
+
|
||||
+ if (kodiHome != NULL)
|
||||
+ {
|
||||
+ settingsFile = std::string(kodiHome) + "/.kodi/userdata/addon_data/script.xbmc.boblight/settings.xml";
|
||||
+ }
|
||||
+
|
||||
+ FILE *fd = fopen(settingsFile.c_str(), "r");
|
||||
+
|
||||
+ if (fd != NULL)
|
||||
+ {
|
||||
+ fseek(fd, 0, SEEK_END);
|
||||
+ size_t fileSize = ftell(fd);
|
||||
+ fseek(fd, 0, SEEK_SET);
|
||||
+ if (fileSize > 0)
|
||||
+ {
|
||||
+ if (fileSize > 32000)//read 16k max - there shouldn't be a bigger settings.xml from boblight [tm]
|
||||
+ fileSize = 32000;
|
||||
+ char *xmlBuffer = new char[fileSize];
|
||||
+ size_t readCount = fread(xmlBuffer, fileSize, 1, fd);
|
||||
+ fclose(fd);
|
||||
+
|
||||
+ if (readCount == 1)
|
||||
+ {
|
||||
+ parseBoblightSettings(std::string(xmlBuffer));
|
||||
+ ret = true;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ fprintf(stderr, "Failed reading boblight addon settings.xml");
|
||||
+ }
|
||||
+ delete[] xmlBuffer;
|
||||
+ }
|
||||
+ }
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ void parseBoblightSettings(std::string xmlBuffer)
|
||||
+ {
|
||||
+ std::string settings_bobdisable_str;
|
||||
+ settings_bobdisable_str = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_BOBDISABLE);
|
||||
+ if (settings_bobdisable_str == "true" || settings_bobdisable_str == "True")
|
||||
+ m_bobdisable = true;
|
||||
+
|
||||
+ m_ip = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_IP);
|
||||
+ m_port = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_PORT);
|
||||
+ m_autospeed = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_AUTOSPEED);
|
||||
+ m_interpolation = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_INTERPOLATION);
|
||||
+ m_saturation = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_SATURATION);
|
||||
+ m_speed = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_SPEED);
|
||||
+ m_threshold = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_THRESHOLD);
|
||||
+ m_value = getValueFromXmlBuffer(xmlBuffer, SETTINGS_ATTR_VALUE);
|
||||
+ }
|
||||
+
|
||||
+ std::string getValueFromXmlBuffer(const std::string &xmlBuffer, const char* xmlAttribute)
|
||||
+ {
|
||||
+ size_t strPos = 0;
|
||||
+ std::string valueStr;
|
||||
+
|
||||
+ // each line in the xml looks like this:
|
||||
+ // <setting id="movie_value" value="1.000006" />
|
||||
+ // find the attribute
|
||||
+ if ((strPos = xmlBuffer.find(xmlAttribute)) != std::string::npos)
|
||||
+ {
|
||||
+ size_t strPos2 = 0;
|
||||
+ // from movie_value" value="1.000006" /> look for "value"
|
||||
+ if ((strPos2 = xmlBuffer.find("value", strPos)) != std::string::npos)
|
||||
+ {
|
||||
+ size_t strPos3 = 0;
|
||||
+ // from value="1.000006" /> look for "="
|
||||
+ if ((strPos3 = xmlBuffer.find("=", strPos2)) != std::string::npos)
|
||||
+ {
|
||||
+ //extract the value - strPos3 points to ="1.000006"
|
||||
+ int valueOffset = 1; //skip the "="
|
||||
+ if (xmlBuffer[strPos3 + valueOffset] == '"')
|
||||
+ valueOffset++;//skip " if needed
|
||||
+ int strLen = 0;
|
||||
+ do
|
||||
+ {
|
||||
+ // value stops with " or space
|
||||
+ if (xmlBuffer[strPos3 + valueOffset + strLen] == '"' ||
|
||||
+ xmlBuffer[strPos3 + valueOffset + strLen] == ' ')
|
||||
+ break;
|
||||
+ strLen++;
|
||||
+ } while (strLen < 20);// no insane xml garbage ...
|
||||
+
|
||||
+ valueStr = xmlBuffer.substr(strPos3 + valueOffset, strLen);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ return valueStr;
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
+struct aml_snapshot_t {
|
||||
+ unsigned int dst_width;
|
||||
+ unsigned int dst_height;
|
||||
+ unsigned int dst_stride;
|
||||
+ unsigned int dst_size;
|
||||
+ void *dst_vaddr;
|
||||
+};
|
||||
+
|
||||
+volatile bool g_stop = false;
|
||||
+CFlagManagerAML g_flagmanager;
|
||||
+/*********************************************************
|
||||
+ *********************************************************/
|
||||
+static void SignalHandler(int signum)
|
||||
+{
|
||||
+ if (signum == SIGTERM)
|
||||
+ {
|
||||
+ fprintf(stderr, "caught SIGTERM\n");
|
||||
+ g_stop = true;
|
||||
+ }
|
||||
+ else if (signum == SIGINT)
|
||||
+ {
|
||||
+ fprintf(stderr, "caught SIGTERM\n");
|
||||
+ g_stop = true;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+#define VIDEO_PATH "/dev/amvideo"
|
||||
+#define AMSTREAM_IOC_MAGIC 'S'
|
||||
+#define AMSTREAM_IOC_GET_VIDEO_DISABLE _IOR(AMSTREAM_IOC_MAGIC, 0x48, unsigned long)
|
||||
+static int amvideo_utils_video_playing()
|
||||
+{
|
||||
+ int video_fd;
|
||||
+ int video_disable;
|
||||
+
|
||||
+ video_fd = open(VIDEO_PATH, O_RDWR);
|
||||
+ if (video_fd < 0) {
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ ioctl(video_fd, AMSTREAM_IOC_GET_VIDEO_DISABLE, &video_disable);
|
||||
+ if (video_disable)
|
||||
+ {
|
||||
+ close(video_fd);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ close(video_fd);
|
||||
+
|
||||
+// fprintf(stderr, "pos x %d y %d w %d h %d\n",snapshot.src_x, snapshot.src_y,snapshot.src_width,snapshot.src_height);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int capture_frame(int fd, aml_snapshot_t &snapshot)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ ssize_t readResult = pread(fd, snapshot.dst_vaddr, snapshot.dst_size, 0);
|
||||
+
|
||||
+ if (readResult < snapshot.dst_size)
|
||||
+ {
|
||||
+ fprintf(stderr, "frame read returned %d\n", readResult);
|
||||
+ }
|
||||
+ //fprintf(stderr, "requ: %d read %d \n", snapshot.dst_size, readResult);
|
||||
+ fprintf(stderr, ".");
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int configure_capture(int fd, aml_snapshot_t &snapshot)
|
||||
+{
|
||||
+ int ret = 0;
|
||||
+ int ioctlret = 0;
|
||||
+
|
||||
+ if ((ioctlret = ioctl(fd, AMVIDEOCAP_IOW_SET_WANTFRAME_WIDTH, snapshot.dst_width)) != 0)
|
||||
+ {
|
||||
+ ret = 2;
|
||||
+ fprintf(stderr, "Error setting frame width (ret: %d errno: %d)\n", ioctlret, errno);
|
||||
+ }
|
||||
+
|
||||
+
|
||||
+ if ((ioctlret = ioctl(fd, AMVIDEOCAP_IOW_SET_WANTFRAME_HEIGHT, snapshot.dst_height)) != 0)
|
||||
+ {
|
||||
+ ret = 3;
|
||||
+ fprintf(stderr, "Error setting frame height (ret: %d errno: %d)\n", ioctlret, errno);
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void frameToboblight(void *boblight, uint8_t* outputptr, int w, int h, int stride)
|
||||
+{
|
||||
+ if (!boblight)
|
||||
+ {
|
||||
+ fprintf(stderr, "no boblight\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ if (!outputptr)
|
||||
+ {
|
||||
+ fprintf(stderr, "no outputptr\n");
|
||||
+ return;
|
||||
+ }
|
||||
+ //read out pixels and hand them to libboblight
|
||||
+ uint8_t* buffptr;
|
||||
+ for (int y = h; y > 0; y--) {
|
||||
+ buffptr = outputptr + stride * y;
|
||||
+ for (int x = 0; x < w; x++) {
|
||||
+ int rgb[3];
|
||||
+ rgb[2] = *(buffptr++);
|
||||
+ rgb[1] = *(buffptr++);
|
||||
+ rgb[0] = *(buffptr++);
|
||||
+
|
||||
+ //fprintf(stdout, "frameToboblight: x(%d), y(%d)\n", x, y);
|
||||
+
|
||||
+ boblight_addpixelxy(boblight, x, y, rgb);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static int Run(void* boblight)
|
||||
+{
|
||||
+ int snapshot_fd = -1;
|
||||
+ aml_snapshot_t aml_snapshot = {0};
|
||||
+ int lastPriority = 255;
|
||||
+
|
||||
+ aml_snapshot.dst_width = 160;
|
||||
+ aml_snapshot.dst_height = 160;
|
||||
+
|
||||
+ // calc stride, size and alloc mem
|
||||
+ aml_snapshot.dst_stride = aml_snapshot.dst_width * 3;
|
||||
+ aml_snapshot.dst_size = aml_snapshot.dst_stride * aml_snapshot.dst_height;
|
||||
+ aml_snapshot.dst_vaddr = calloc(aml_snapshot.dst_size, 1);
|
||||
+
|
||||
+ fprintf(stdout, "Connection to boblightd config: width(%d), height(%d)\n",
|
||||
+ aml_snapshot.dst_width, aml_snapshot.dst_height);
|
||||
+ //tell libboblight how big our image is
|
||||
+ boblight_setscanrange(boblight, (int)aml_snapshot.dst_width, (int)aml_snapshot.dst_height);
|
||||
+
|
||||
+ while(!g_stop)
|
||||
+ {
|
||||
+ int64_t bgn = GetTimeUs();
|
||||
+
|
||||
+ if (snapshot_fd == -1) {
|
||||
+ snapshot_fd = open(g_flagmanager.m_device.c_str(), O_RDWR, 0);
|
||||
+
|
||||
+ if (snapshot_fd == -1) {
|
||||
+ sleep(1);
|
||||
+ continue;
|
||||
+ } else {
|
||||
+ fprintf(stdout, "snapshot_fd(%d) \n", snapshot_fd);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // match source ratio if possible
|
||||
+ if (amvideo_utils_video_playing() != 0) {
|
||||
+ if ( lastPriority != 255)
|
||||
+ {
|
||||
+ boblight_setpriority(boblight, 255);
|
||||
+ lastPriority = 255;
|
||||
+ }
|
||||
+ sleep(1);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ if (configure_capture(snapshot_fd, aml_snapshot) == 0)
|
||||
+ {
|
||||
+ if (capture_frame(snapshot_fd, aml_snapshot) == 0)
|
||||
+ {
|
||||
+ // image to boblight convert.
|
||||
+ frameToboblight(boblight, (uint8_t*)aml_snapshot.dst_vaddr,
|
||||
+ aml_snapshot.dst_width, aml_snapshot.dst_height, aml_snapshot.dst_stride);
|
||||
+
|
||||
+ if (lastPriority != g_flagmanager.m_priority)
|
||||
+ {
|
||||
+ boblight_setpriority(boblight, g_flagmanager.m_priority);
|
||||
+ lastPriority = g_flagmanager.m_priority;
|
||||
+ }
|
||||
+ if (!boblight_sendrgb(boblight, 1, NULL))
|
||||
+ {
|
||||
+ // some error happened, probably connection broken, so bitch and try again
|
||||
+ PrintError(boblight_geterror(boblight));
|
||||
+ boblight_destroy(boblight);
|
||||
+ continue;
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ fprintf(stdout, "nap time\n");
|
||||
+ sleep(1);
|
||||
+ }
|
||||
+ }
|
||||
+ int64_t end = GetTimeUs();
|
||||
+ float calc_time_ms = (float)(end - bgn) / 1000.0;
|
||||
+ // throttle to 100ms max cycle rate
|
||||
+ calc_time_ms -= 100.0;
|
||||
+ if ((int)calc_time_ms < 0)
|
||||
+ usleep((int)(-calc_time_ms * 1000));
|
||||
+ }
|
||||
+
|
||||
+ // last image is black
|
||||
+ boblight_setpriority(boblight, 255);
|
||||
+ boblight_destroy(boblight);
|
||||
+ close(snapshot_fd);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+/*********************************************************
|
||||
+ *********************************************************/
|
||||
+int main(int argc, char *argv[])
|
||||
+{
|
||||
+ //load the boblight lib, if it fails we get a char* from dlerror()
|
||||
+ const char* boblight_error = boblight_loadlibrary(NULL);
|
||||
+ if (boblight_error)
|
||||
+ {
|
||||
+ PrintError(boblight_error);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ //try to parse the flags and bitch to stderr if there's an error
|
||||
+ try {
|
||||
+ g_flagmanager.ParseFlags(argc, argv);
|
||||
+ }
|
||||
+ catch (string error) {
|
||||
+ PrintError(error);
|
||||
+ g_flagmanager.PrintHelpMessage();
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if (g_flagmanager.m_printhelp) {
|
||||
+ g_flagmanager.PrintHelpMessage();
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if (g_flagmanager.m_printboblightoptions) {
|
||||
+ g_flagmanager.PrintBoblightOptions();
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ // check if we only should generate a cmdline based
|
||||
+ // on settings from possible found boblight addon
|
||||
+ if (g_flagmanager.generateCmdLine)
|
||||
+ {
|
||||
+ CBoblightAddonSettings settings;
|
||||
+ string cmdLine = "-p 100"; //default cmdline just contains priority 100
|
||||
+
|
||||
+ if (settings.m_settingsLoaded)
|
||||
+ cmdLine += " " + settings.getBoblightClientCmdLine();
|
||||
+ fprintf(stdout, "%s", cmdLine.c_str());
|
||||
+ return 0;//exit
|
||||
+ }
|
||||
+
|
||||
+ fprintf(stderr, "Using device: %s \n", g_flagmanager.m_device.c_str());
|
||||
+
|
||||
+ //set up signal handlers
|
||||
+ signal(SIGINT, SignalHandler);
|
||||
+ signal(SIGTERM, SignalHandler);
|
||||
+
|
||||
+ //keep running until we want to quit
|
||||
+ while(!g_stop) {
|
||||
+ //init boblight
|
||||
+ void* boblight = boblight_init();
|
||||
+
|
||||
+ fprintf(stdout, "Connecting to boblightd(%p)\n", boblight);
|
||||
+
|
||||
+ //try to connect, if we can't then bitch to stderr and destroy boblight
|
||||
+ if (!boblight_connect(boblight, g_flagmanager.m_address, g_flagmanager.m_port, 5000000) ||
|
||||
+ !boblight_setpriority(boblight, 255)) {
|
||||
+ PrintError(boblight_geterror(boblight));
|
||||
+ fprintf(stdout, "Waiting 10 seconds before trying again\n");
|
||||
+ boblight_destroy(boblight);
|
||||
+ sleep(2);
|
||||
+ continue;
|
||||
+ }
|
||||
+
|
||||
+ fprintf(stdout, "Connection to boblightd opened\n");
|
||||
+
|
||||
+ //try to parse the boblight flags and bitch to stderr if we can't
|
||||
+ try {
|
||||
+ g_flagmanager.ParseBoblightOptions(boblight);
|
||||
+ }
|
||||
+ catch (string error) {
|
||||
+ PrintError(error);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ try {
|
||||
+ Run(boblight);
|
||||
+ }
|
||||
+ catch (string error) {
|
||||
+ PrintError(error);
|
||||
+ boblight_destroy(boblight);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+ fprintf(stdout, "Exiting\n");
|
||||
+}
|
||||
diff -urPp src/clients/flagmanager-aml.cpp src/clients/boblight-aml/flagmanager-aml.cpp
|
||||
--- /dev/null Thu Jan 1 00:00:00 1970
|
||||
+++ b/src/clients/boblight-aml/flagmanager-aml.cpp Thu Jan 15 10:21:40 2015
|
||||
@@ -0,0 +1,68 @@
|
||||
+/*
|
||||
+ * boblight
|
||||
+ * Copyright (C) Bob 2009
|
||||
+ *
|
||||
+ * boblight 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 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * boblight 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#include <iostream>
|
||||
+
|
||||
+#include "flagmanager-aml.h"
|
||||
+#include "util/misc.h"
|
||||
+#include "config.h"
|
||||
+
|
||||
+#define DEFAULT_CAPTURE_DEVICE "/dev/amvideocap0"
|
||||
+
|
||||
+using namespace std;
|
||||
+
|
||||
+CFlagManagerAML::CFlagManagerAML()
|
||||
+{
|
||||
+ // extend the flags -d -> device
|
||||
+ // -g -> only generate cmdline from possible found boblight addon settings.xml
|
||||
+ m_flags += "d:g";
|
||||
+ m_device = DEFAULT_CAPTURE_DEVICE;
|
||||
+ generateCmdLine = false;
|
||||
+}
|
||||
+
|
||||
+void CFlagManagerAML::ParseFlagsExtended(int& argc, char**& argv, int& c, char*& optarg)
|
||||
+{
|
||||
+ if (c == 'd') //devicename
|
||||
+ {
|
||||
+ if (optarg) //optional device
|
||||
+ {
|
||||
+ m_device = optarg;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (c == 'g') //generate cmdline
|
||||
+ {
|
||||
+ generateCmdLine = true;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void CFlagManagerAML::PrintHelpMessage()
|
||||
+{
|
||||
+ cout << "Usage: boblight-aml\n";
|
||||
+ cout << "\n";
|
||||
+ cout << " options:\n";
|
||||
+ cout << "\n";
|
||||
+ cout << " -p priority, from 0 to 255, default is 128\n";
|
||||
+ cout << " -s address[:port], set the address and optional port to connect to\n";
|
||||
+ cout << " -o add libboblight option, syntax: [light:]option=value\n";
|
||||
+ cout << " -l list libboblight options\n";
|
||||
+ cout << " -f fork\n";
|
||||
+ cout << " -d <device> (defaults to " << m_device << ")\n";
|
||||
+ cout << " -g try to find the settings.xml file from boblight addon and return the cmdline to use its options\n";
|
||||
+ cout << "\n";
|
||||
+}
|
||||
diff -urPp src/clients/flagmanager-aml.h src/clients/boblight-aml/flagmanager-aml.h
|
||||
--- /dev/null Thu Jan 1 00:00:00 1970
|
||||
+++ b/src/clients/boblight-aml/flagmanager-aml.h Thu Jan 15 10:20:15 2015
|
||||
@@ -0,0 +1,36 @@
|
||||
+/*
|
||||
+ * boblight
|
||||
+ * Copyright (C) Bob 2009
|
||||
+ *
|
||||
+ * boblight 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 3 of the License, or
|
||||
+ * (at your option) any later version.
|
||||
+ *
|
||||
+ * boblight 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+ */
|
||||
+
|
||||
+#ifndef FLAGMANAGERAML
|
||||
+#define FLAGMANAGERAML
|
||||
+
|
||||
+#include "clients/flagmanager.h"
|
||||
+
|
||||
+class CFlagManagerAML : public CFlagManager
|
||||
+{
|
||||
+ public:
|
||||
+ CFlagManagerAML();
|
||||
+ void ParseFlagsExtended(int& argc, char**& argv, int& c, char*& optarg);
|
||||
+
|
||||
+ void PrintHelpMessage();
|
||||
+ std::string m_device; //device to open for amvideocap
|
||||
+ bool generateCmdLine;
|
||||
+
|
||||
+};
|
||||
+
|
||||
+#endif //FLAGMANAGERAML
|
||||
\ No newline at end of file
|
||||
@@ -35,10 +35,4 @@ if [ -x $ADDON_DIR/bin/boblight-X11 -a -e $ADDON_HOME/boblight.X11 ] ; then
|
||||
boblight-X11 -f >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
if [ -x $ADDON_DIR/bin/boblight-aml -a -e /dev/amvideocap0 ] ; then
|
||||
#generates cmdline from boblight addon settings
|
||||
CMDLINE=`boblight-aml -g`
|
||||
boblight-aml $CMDLINE >/dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
exec boblightd -c $ADDON_HOME/boblight.conf > $ADDON_LOG_FILE 2>&1
|
||||
|
||||
@@ -4,6 +4,7 @@ After=graphical.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.multimedia.boblightd/bin/boblightd.start"
|
||||
ExecStopPost=-/bin/sh -c "pidof boblight-X11 && killall -q -9 boblight-X11"
|
||||
TimeoutStopSec=1
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
|
||||
168
packages/addons/service/multimedia/tvheadend/changelog.txt
Normal file
@@ -0,0 +1,168 @@
|
||||
4.3.2
|
||||
- update to kodi
|
||||
|
||||
4.3.1
|
||||
- update to tvheadend-3.9.1847
|
||||
- tvheadend now has native support for hdhomerun devices
|
||||
|
||||
4.3.0
|
||||
- rebuild for addon api bump
|
||||
- update to tvheadend-3.9.1083
|
||||
|
||||
4.1.2
|
||||
- fix issues with "wait for frontend init". thanks @sraue
|
||||
|
||||
4.1.1
|
||||
- rebuild to fix curl/gnutls/ssl
|
||||
|
||||
4.1.0
|
||||
- convert to systemd service
|
||||
- rebuild for addon api bump
|
||||
|
||||
4.0.1
|
||||
- rebuild
|
||||
|
||||
4.0.0
|
||||
- rebuild for OpenELEC-4.0
|
||||
|
||||
3.1.4
|
||||
- rebuild
|
||||
|
||||
3.1.3
|
||||
- update to TVHeadend 3.4.27
|
||||
|
||||
3.1.2
|
||||
- fix unloading multiple modules on suspend
|
||||
|
||||
3.1.1
|
||||
- rebuild for OpenELEC-3.2
|
||||
|
||||
3.0.11
|
||||
- improve suspend/resume
|
||||
|
||||
3.0.10
|
||||
- fix preloading capmt.so with sundtek
|
||||
- added the ability to use a script's stdout as the xmltv source instead of a fixed file or URL
|
||||
|
||||
3.0.9
|
||||
- update to TVHeadend 3.4
|
||||
|
||||
3.0.8
|
||||
- update to TVHeadend 3.3.521
|
||||
|
||||
3.0.7
|
||||
- update to TVHeadend 3.3.511
|
||||
|
||||
3.0.6
|
||||
- update to TVHeadend 3.3.491
|
||||
- disable avahi support
|
||||
|
||||
3.0.5
|
||||
- update to TVHeadend 3.3.485
|
||||
|
||||
3.0.4
|
||||
- update to TVHeadend 3.3.403
|
||||
|
||||
3.0.3
|
||||
- update to TVHeadend 3.3.328
|
||||
- add an option to preload capmt_ca.so library
|
||||
|
||||
3.0.2
|
||||
- update to TVHeadend 3.2.18
|
||||
|
||||
3.0.1
|
||||
- bump addon version
|
||||
- add support to install as system addon
|
||||
- update to TVHeadend 3.2, rename addon
|
||||
- add version string to addon summary
|
||||
|
||||
2.1.5
|
||||
- add an option to wait for more than 1 adapters to appear
|
||||
|
||||
2.1.3
|
||||
- update to hts-tvheadend-78213a0
|
||||
|
||||
2.1.2
|
||||
- add suspend/resume fixes
|
||||
- use KILL signal to stop tvheadend
|
||||
- add an option to wait for fe initialization
|
||||
|
||||
2.1.1
|
||||
- update to addon version 2.1
|
||||
- update to hts-tvheadend-85e23bb
|
||||
|
||||
2.0.8
|
||||
- define default recordings folder to /storage/recordings
|
||||
- update to hts-tvheadend-a76f365
|
||||
- add patch for support IPTV radio streams
|
||||
|
||||
2.0.7
|
||||
- enable unloading/loading dvb modules on suspend/resume
|
||||
- add while loop for restarting tvheadend if it crashes
|
||||
|
||||
2.0.6
|
||||
- add possibilty to start / stop addon from addon manager with enable / disable
|
||||
- add possibility to browse filesystem for xmltv source file
|
||||
- start tvheadend in video user group
|
||||
- update to hts-tvheadend-b877800
|
||||
|
||||
2.0.5
|
||||
- start userspace DVB drivers before Tvheadend
|
||||
|
||||
2.0.4
|
||||
- update to hts-tvheadend-fdf89b2
|
||||
|
||||
2.0.3
|
||||
- rebuild for libiconv changes
|
||||
|
||||
2.0.2
|
||||
- update to hts-tvheadend-d66746c
|
||||
|
||||
2.0.1
|
||||
- fix patches
|
||||
|
||||
2.0.0
|
||||
- prepare for OpenELEC-2.0 release
|
||||
|
||||
1.90.2
|
||||
- depends on xbmc.python API 2.0
|
||||
|
||||
1.90.1
|
||||
- update to hts-tvheadend-fdc743f
|
||||
|
||||
1.90.0
|
||||
- add (CH) GA Weissenstein default muxes
|
||||
- prepare for OpenELEC-1.90 release
|
||||
|
||||
1.0.1
|
||||
- add XMLTV tv_file_grab support
|
||||
- add XMLTV configuration support
|
||||
- add teletext support patch
|
||||
- add fix memory leak patch
|
||||
|
||||
1.0.0
|
||||
- prepare for OpenELEC-1.0 release
|
||||
|
||||
0.99.8
|
||||
- add suspend/wakeup script
|
||||
|
||||
0.99.7
|
||||
- update to hts-tvheadend-c88a646
|
||||
|
||||
0.99.6
|
||||
- update to hts-tvheadend-9d775da
|
||||
|
||||
0.99.5
|
||||
- update to hts-tvheadend-ca68ed4
|
||||
|
||||
0.99.4
|
||||
- change icon
|
||||
|
||||
0.99.3
|
||||
- rebuild for openssl downgrade
|
||||
|
||||
0.99.2
|
||||
- rework start scripts
|
||||
|
||||
0.99.1
|
||||
- initial version hts-tvheadend-90e3570
|
||||
BIN
packages/addons/service/multimedia/tvheadend/icon/icon.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
73
packages/addons/service/multimedia/tvheadend/package.mk
Normal file
@@ -0,0 +1,73 @@
|
||||
################################################################################
|
||||
# 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/>.
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="tvheadend"
|
||||
PKG_VERSION="3.9.1847"
|
||||
PKG_REV="2"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.lonelycoder.com/hts/tvheadend_overview.html"
|
||||
#PKG_URL="https://github.com/downloads/tvheadend/tvheadend/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
PKG_URL="$DISTRO_SRC/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain libressl curl"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="service/multimedia"
|
||||
PKG_SHORTDESC="tvheadend (Version: $PKG_VERSION): a TV streaming server for Linux supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video (V4L) as input sources."
|
||||
PKG_LONGDESC="Tvheadend (Version: $PKG_VERSION) is a TV streaming server for Linux supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, IPTV, and Analog video (V4L) as input sources. It also comes with a powerful and easy to use web interface both used for configuration and day-to-day operations, such as searching the EPG and scheduling recordings. Even so, the most notable feature of Tvheadend is how easy it is to set up: Install it, navigate to the web user interface, drill into the TV adapters tab, select your current location and Tvheadend will start scanning channels and present them to you in just a few minutes. If installing as an Addon a reboot is needed"
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_AUTORECONF="no"
|
||||
|
||||
pre_build_target() {
|
||||
mkdir -p $PKG_BUILD/.$TARGET_NAME
|
||||
cp -RP $PKG_BUILD/* $PKG_BUILD/.$TARGET_NAME
|
||||
export CROSS_COMPILE=$TARGET_PREFIX
|
||||
}
|
||||
|
||||
configure_target() {
|
||||
./configure --prefix=/usr \
|
||||
--arch=$TARGET_ARCH \
|
||||
--cpu=$TARGET_CPU \
|
||||
--cc=$TARGET_CC \
|
||||
--enable-hdhomerun_client \
|
||||
--enable-hdhomerun_static \
|
||||
--enable-timeshift \
|
||||
--disable-avahi \
|
||||
--disable-libav \
|
||||
--enable-inotify \
|
||||
--enable-epoll \
|
||||
--disable-uriparser \
|
||||
--enable-tvhcsa \
|
||||
--enable-bundle \
|
||||
--disable-dbus_1 \
|
||||
--python=$ROOT/$TOOLCHAIN/bin/python
|
||||
}
|
||||
|
||||
post_make_target() {
|
||||
$CC -O -fbuiltin -fomit-frame-pointer -fPIC -shared -o capmt_ca.so src/extra/capmt_ca.c -ldl
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
: # nothing to do here
|
||||
}
|
||||
|
||||
addon() {
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/build.linux/tvheadend $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
cp -P $PKG_BUILD/.$TARGET_NAME/capmt_ca.so $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
From 67e38551bc3acadf27b3ed4922e897348a612fdb Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Saraev <stefan@saraev.ca>
|
||||
Date: Wed, 15 Oct 2014 13:35:09 +0300
|
||||
Subject: [PATCH] remove werror
|
||||
|
||||
---
|
||||
Makefile | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index ddcc47e..0087a6c 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -28,7 +28,7 @@ PROG := $(BUILDDIR)/tvheadend
|
||||
#
|
||||
|
||||
CFLAGS += -g -O2 -Wunused-result
|
||||
-CFLAGS += -Wall -Werror -Wwrite-strings -Wno-deprecated-declarations
|
||||
+CFLAGS += -Wall -Wwrite-strings -Wno-deprecated-declarations
|
||||
CFLAGS += -Wmissing-prototypes
|
||||
CFLAGS += -fms-extensions -funsigned-char -fno-strict-aliasing
|
||||
CFLAGS += -D_FILE_OFFSET_BITS=64
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
84
packages/addons/service/multimedia/tvheadend/source/bin/tv_grab_file
Executable file
@@ -0,0 +1,84 @@
|
||||
#!/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/>.
|
||||
################################################################################
|
||||
|
||||
. /etc/profile
|
||||
|
||||
ADDON_HOME="$HOME/.kodi/userdata/addon_data/service.multimedia.tvheadend"
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
XMLTV_TYPE=`grep XMLTV_TYPE $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
XMLTV_LOCATION_FILE=`grep XMLTV_LOCATION_FILE $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
XMLTV_LOCATION_WEB=`grep XMLTV_LOCATION_WEB $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
XMLTV_LOCATION_SCRIPT=`grep XMLTV_LOCATION_SCRIPT $ADDON_SETTINGS | awk '{print $3 }' | sed -e "s,value=,," -e "s,\",,g"`
|
||||
|
||||
dflag=
|
||||
vflag=
|
||||
cflag=
|
||||
|
||||
if [[ $# -lt 1 ]]; then
|
||||
if [ "$XMLTV_TYPE" = "FILE" ]; then
|
||||
cat "$XMLTV_LOCATION_FILE"
|
||||
exit 0
|
||||
elif [ "$XMLTV_TYPE" = "SCRIPT" ]; then
|
||||
if [ -e "$XMLTV_LOCATION_SCRIPT" ] ; then
|
||||
exec "$XMLTV_LOCATION_SCRIPT"
|
||||
fi
|
||||
elif [ "$XMLTV_TYPE" = "WEB" ]; then
|
||||
wget -qO - "$XMLTV_LOCATION_WEB"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
for arg; do
|
||||
delim=""
|
||||
case "$arg" in
|
||||
#translate --gnu-long-options to -g (short options)
|
||||
--description) args="${args}-d ";;
|
||||
--version) args="${args}-v ";;
|
||||
--capabilities) args="${args}-c ";;
|
||||
#pass through anything else
|
||||
*) [[ "${arg:0:1}" == "-" ]] || delim="\""
|
||||
args="${args}${delim}${arg}${delim} ";;
|
||||
esac
|
||||
done
|
||||
|
||||
#Reset the positional parameters to the short options
|
||||
eval set -- $args
|
||||
|
||||
while getopts "dvc" option; do
|
||||
case $option in
|
||||
d) dflag=1;;
|
||||
v) vflag=1;;
|
||||
c) cflag=1;;
|
||||
\?) printf "unknown option: -%s\n" $OPTARG
|
||||
printf "Usage: %s: [--description] [--version] [--capabilities] \n" $(basename $0)
|
||||
exit 2
|
||||
;;
|
||||
esac >&2
|
||||
done
|
||||
|
||||
if [ "$dflag" ]; then
|
||||
printf "tv_grab_file is a simple grabber that just read the local or web XMLTV formated file\n"
|
||||
fi
|
||||
if [ "$vflag" ]; then
|
||||
printf "0.1\n"
|
||||
fi
|
||||
if [ "$cflag" ]; then
|
||||
printf "baseline\n"
|
||||
fi
|
||||
89
packages/addons/service/multimedia/tvheadend/source/bin/tvheadend.start
Executable file
@@ -0,0 +1,89 @@
|
||||
#!/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/>.
|
||||
################################################################################
|
||||
|
||||
. /etc/profile
|
||||
|
||||
oe_setup_addon service.multimedia.tvheadend
|
||||
|
||||
ADDON_SETTINGS="$ADDON_HOME/settings.xml"
|
||||
XMLTV_FILE="$ADDON_DIR/bin/tv_grab_file"
|
||||
XMLTV_SETTINGS_DIR="$ADDON_HOME/xmltv"
|
||||
XMLTV_SETTINGS_FILE="$XMLTV_SETTINGS_DIR/config"
|
||||
DVR_SETTINGS_DIR="$ADDON_HOME/dvr"
|
||||
DVR_SETTINGS_FILE="$DVR_SETTINGS_DIR/config"
|
||||
DVR_DIR="$HOME/recordings"
|
||||
TIMESHIFT_SETTINGS_DIR="$ADDON_HOME/timeshift"
|
||||
TIMESHIFT_SETTINGS_FILE="$TIMESHIFT_SETTINGS_DIR/config"
|
||||
TIMESHIFT_DIR="$ADDON_HOME/cache/timeshift"
|
||||
|
||||
chmod a+x $ADDON_DIR/bin/*
|
||||
|
||||
if [ ! -f "$XMLTV_SETTINGS_FILE" ]; then
|
||||
mkdir -p $XMLTV_SETTINGS_DIR
|
||||
if [ -f $ADDON_DIR/xmltv-config ]; then
|
||||
cp $ADDON_DIR/xmltv-config $XMLTV_SETTINGS_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "$DVR_SETTINGS_FILE" ]; then
|
||||
mkdir -p $DVR_DIR
|
||||
mkdir -p $DVR_SETTINGS_DIR
|
||||
if [ -f $ADDON_DIR/dvr-config ]; then
|
||||
cp $ADDON_DIR/dvr-config $DVR_SETTINGS_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -f "$TIMESHIFT_SETTINGS_FILE" ]; then
|
||||
mkdir -p $TIMESHIFT_DIR
|
||||
mkdir -p $TIMESHIFT_SETTINGS_DIR
|
||||
if [ -f $ADDON_DIR/timeshift-config ]; then
|
||||
cp $ADDON_DIR/timeshift-config $TIMESHIFT_SETTINGS_FILE
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$DEBUG" = "yes" ]; then
|
||||
TVHEADEND_ARG="-B -C -s -u root -g video -c $ADDON_HOME"
|
||||
else
|
||||
TVHEADEND_ARG="-B -C -u root -g video -c $ADDON_HOME"
|
||||
fi
|
||||
|
||||
# start userspace DVB driver/addon
|
||||
for driver_dvb in $(find /storage/.kodi/addons/driver.dvb.*/bin/userspace-driver.sh -type f 2>/dev/null); do
|
||||
driver_dvb_name=$(echo $driver_dvb | awk 'BEGIN {FS="/"} {printf("%s", $5)}')
|
||||
logger -t Tvheadend "### Loading userspace DVB driver: $driver_dvb_name ###"
|
||||
# use ". " because of variable export
|
||||
. $driver_dvb
|
||||
done
|
||||
|
||||
if [ "$WAIT_FOR_FEINIT" == "true" ] ; then
|
||||
while [ true ] ; do
|
||||
if [ -e /dev/dvb/adapter$((NUM_ADAPTERS-1))/frontend0 ] ; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
fi
|
||||
|
||||
if [ "$PRELOAD_CAPMT_CA" == "true" ] ; then
|
||||
logger -t Tvheadend "### Preloading capmt_ca.so library ###"
|
||||
LD_PRELOAD="$ADDON_DIR/bin/capmt_ca.so $LD_PRELOAD" exec tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE
|
||||
else
|
||||
exec tvheadend $TVHEADEND_ARG &>$ADDON_LOG_FILE
|
||||
fi
|
||||
@@ -0,0 +1,17 @@
|
||||
################################################################################
|
||||
# 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/>.
|
||||
################################################################################
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"storage": "/storage/recordings",
|
||||
"retention-days": 31,
|
||||
"pre-extra-time": 0,
|
||||
"post-extra-time": 0,
|
||||
"day-dir": 0,
|
||||
"channel-dir": 0,
|
||||
"channel-in-title": 0,
|
||||
"date-in-title": 0,
|
||||
"time-in-title": 0,
|
||||
"whitespace-in-title": 0,
|
||||
"title-dir": 0,
|
||||
"episode-in-title": 0,
|
||||
"tag-files": 1
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<strings>
|
||||
|
||||
<!-- HTS TVHEADEND -->
|
||||
<string id="1000">XMLTV</string>
|
||||
<string id="1001">DVB</string>
|
||||
<string id="1011">XMLTV configuration</string>
|
||||
<string id="1011">XMLTV source type</string>
|
||||
<string id="1012">XMLTV File location</string>
|
||||
<string id="1013">XMLTV Web location</string>
|
||||
<string id="1014">XMLTV Script location</string>
|
||||
<string id="1020">DVB Configuration</string>
|
||||
<string id="1021">Unload DVB mudules before suspend</string>
|
||||
<string id="1022">Wait for frontend initialization</string>
|
||||
<string id="1023">Number of adapters to wait for</string>
|
||||
<string id="1024">Preload capmt_ca.so library</string>
|
||||
|
||||
</strings>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<settings>
|
||||
|
||||
<!-- HTS TVHEADEND -->
|
||||
<category label="1000">
|
||||
<setting label="1010" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="XMLTV_TYPE" type="labelenum" label="1011" values="NONE|FILE|SCRIPT|WEB" sort="yes" default="NONE"/>
|
||||
<setting id="XMLTV_LOCATION_FILE" type="file" label="1012" default="" enable="eq(-1,0)"/>
|
||||
<setting id="XMLTV_LOCATION_WEB" type="text" label="1013" default="http://" enable="eq(-2,3)"/>
|
||||
<setting id="XMLTV_LOCATION_SCRIPT" type="file" label="1014" default="" enable="eq(-3,2)"/>
|
||||
</category>
|
||||
<category label="1001">
|
||||
<setting label="1020" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="WAIT_FOR_FEINIT" type="bool" label="1022" default="false" />
|
||||
<setting id="NUM_ADAPTERS" type="slider" range="1,16" option="int" label="1023" default="1" enable="eq(-1,true)" />
|
||||
<setting id="REMOVE_MODULES" type="text" label="1021" values="" default=""/>
|
||||
<setting id="PRELOAD_CAPMT_CA" type="bool" label="1024" default="false" />
|
||||
</category>
|
||||
</settings>
|
||||
@@ -0,0 +1,8 @@
|
||||
<settings>
|
||||
<setting id="WAIT_FOR_FEINIT" value="false" />
|
||||
<setting id="NUM_ADAPTERS" value="1" />
|
||||
<setting id="XMLTV_LOCATION_FILE" value="" />
|
||||
<setting id="XMLTV_LOCATION_WEB" value="http://" />
|
||||
<setting id="XMLTV_TYPE" value="NONE" />
|
||||
<setting id="PRELOAD_CAPMT_CA" value="false" />
|
||||
</settings>
|
||||
@@ -1,3 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
@@ -16,17 +18,27 @@
|
||||
# along with OpenELEC. If not, see <http://www.gnu.org/licenses/>.
|
||||
################################################################################
|
||||
|
||||
import os
|
||||
import sys
|
||||
import xbmcaddon
|
||||
. /etc/profile
|
||||
|
||||
__settings__ = xbmcaddon.Addon(id = 'driver.dvb.hdhomerun')
|
||||
__cwd__ = __settings__.getAddonInfo('path')
|
||||
__resources_lib__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'lib'))
|
||||
__settings_xml__ = xbmc.translatePath(os.path.join(__cwd__, 'resources', 'settings.xml'))
|
||||
oe_setup_addon service.multimedia.tvheadend
|
||||
|
||||
if len(sys.argv) == 2 and sys.argv[1] == 'refresh_tuners':
|
||||
sys.path.append(__resources_lib__)
|
||||
from functions import refresh_hdhomerun_tuners
|
||||
refresh_hdhomerun_tuners(__settings_xml__)
|
||||
__settings__.openSettings()
|
||||
SERVICE="service.multimedia.tvheadend"
|
||||
|
||||
case "$1" in
|
||||
pre)
|
||||
if systemctl is-active "$SERVICE" &>/dev/null ; then
|
||||
systemctl stop "$SERVICE"
|
||||
for module in $REMOVE_MODULES ; do
|
||||
rmmod $module
|
||||
done
|
||||
fi
|
||||
;;
|
||||
post)
|
||||
if systemctl is-enabled "$SERVICE" &>/dev/null ; then
|
||||
for module in $REMOVE_MODULES ; do
|
||||
modprobe $module
|
||||
done
|
||||
systemctl start "$SERVICE"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=TVHeadend Service
|
||||
After=graphical.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.multimedia.tvheadend/bin/tvheadend.start"
|
||||
TimeoutStopSec=2
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
StartLimitInterval=0
|
||||
|
||||
[Install]
|
||||
WantedBy=kodi.target
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"enabled": 0,
|
||||
"ondemand": 0,
|
||||
"path": "/storage/.kodi/userdata/addon_data/service.multimedia.tvheadend/cache/timeshift",
|
||||
"unlimited_period": 0,
|
||||
"max_period": 3600,
|
||||
"unlimited_size": 0,
|
||||
"max_size": 1024
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"grabbers": [
|
||||
{
|
||||
"path": "/storage/.kodi/addons/service.multimedia.tvheadend/bin/tv_grab_file",
|
||||
"description": "tv_grag_file is a simple grabber that just read the ~/.xmltv/tv_grab_file.xmltv file",
|
||||
"version": "0.1\n",
|
||||
"mtime": 1318774706,
|
||||
"capabilities": 1
|
||||
}
|
||||
],
|
||||
"grab-interval": 12,
|
||||
"grab-enabled": 1,
|
||||
"current-grabber": "/storage/.kodi/addons/service.multimedia.tvheadend/bin/tv_grab_file"
|
||||
}
|
||||
@@ -1,60 +1,3 @@
|
||||
6.0.2
|
||||
- update to vdr-satip-2.2.3
|
||||
- update to vdr-plugin-vnsiserver-7c6ff30
|
||||
|
||||
6.0.1
|
||||
- update to vdr-plugin-dvbapi-0489e01
|
||||
- update to vdr-plugin-vnsiserver-a7b0670
|
||||
- update to vdr-satip-2.2.2
|
||||
- update to vdr-iptv-2.2.1
|
||||
|
||||
6.0.0
|
||||
- rebuild for OpenELEC-6.0
|
||||
- remove plugin 'control'
|
||||
- remove plugin 'xvdr'
|
||||
- update to vdr-plugin-vnsiserver-36e2b61
|
||||
|
||||
4.3.11
|
||||
- update to vdr-plugin-restfulapi-0.2.1.4
|
||||
|
||||
4.3.10
|
||||
- disable dvbapi network mode
|
||||
|
||||
4.3.9
|
||||
- update to vdr-2.2.0
|
||||
- update to vdr-iptv-2.2.0
|
||||
- update to vdr-satip-2.2.0
|
||||
- update to vdr-plugin-dvbapi-c0c7fa2
|
||||
- update to vdr-plugin-eepg-9cd9a75
|
||||
- update to vdr-plugin-vnsiserver-9529e6d
|
||||
- update to vdr-plugin-streamdev-84c6f6b
|
||||
|
||||
4.3.8
|
||||
- update to vdr-2.1.10
|
||||
- update to vdr-plugin-restfulapi-0.2.1.1
|
||||
- update to vdr-plugin-vnsiserver-f2175ba
|
||||
|
||||
4.3.7
|
||||
- update to vdr-2.1.8
|
||||
- update to vdr-plugin-vnsiserver-b887bc8
|
||||
- update to vdr-wirbelscan-0.0.9
|
||||
|
||||
4.3.6
|
||||
- update to vdr-satip-1.0.2
|
||||
- update to vdr-2.1.7
|
||||
|
||||
4.3.5
|
||||
- add plugin 'vdr-plugin-restfulapi'
|
||||
- update to vdr-plugin-xvdr-b300fc3
|
||||
|
||||
4.3.4
|
||||
- update to vdr-plugin-vnsiserver-a48edf1
|
||||
- update to vdr-plugin-dvbapi-36a6b1d
|
||||
|
||||
4.3.3
|
||||
- add plugin 'vdr-plugin-epgfixer'
|
||||
- update to vdr-satip-1.0.1
|
||||
|
||||
4.3.2
|
||||
- update to kodi
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
KBD.Up 00000000001B5B41
|
||||
KBD.Down 00000000001B5B42
|
||||
KBD.Menu 000000000000006D
|
||||
KBD.Ok 000000000000000D
|
||||
KBD.Back 000000000000007F
|
||||
KBD.Left 00000000001B5B44
|
||||
KBD.Right 00000000001B5B43
|
||||
KBD.Red 000000001B5B5B41
|
||||
KBD.Green 000000001B5B5B42
|
||||
KBD.Yellow 000000001B5B5B43
|
||||
KBD.Blue 000000001B5B5B44
|
||||
KBD.0 0000000000000030
|
||||
KBD.1 0000000000000031
|
||||
KBD.2 0000000000000032
|
||||
KBD.3 0000000000000033
|
||||
KBD.4 0000000000000034
|
||||
KBD.5 0000000000000035
|
||||
KBD.6 0000000000000036
|
||||
KBD.7 0000000000000037
|
||||
KBD.8 0000000000000038
|
||||
KBD.9 0000000000000039
|
||||
KBD.Info 0000000000000069
|
||||
KBD.FastFwd 0000001B5B31377E
|
||||
KBD.FastRew 000000001B5B5B45
|
||||
KBD.Power 0000000000000070
|
||||
KBD.Volume+ 0000001B5B32347E
|
||||
KBD.Volume- 0000001B5B32337E
|
||||
KBD.Mute 0000001B5B32317E
|
||||
KBD.User7 0000001B5B31387E
|
||||
KBD.User8 0000001B5B31397E
|
||||
KBD.User9 0000001B5B32307E
|
||||
@@ -1,6 +1,6 @@
|
||||
################################################################################
|
||||
# This file is part of OpenELEC - http://www.openelec.tv
|
||||
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
|
||||
# Copyright (C) 2011 Anthony Nash (nash.ant@gmail.com)
|
||||
#
|
||||
# OpenELEC is free software: you can redistribute it and/or modify
|
||||
@@ -18,13 +18,13 @@
|
||||
################################################################################
|
||||
|
||||
PKG_NAME="vdr-addon"
|
||||
PKG_VERSION="6.0"
|
||||
PKG_VERSION="4.3"
|
||||
PKG_REV="2"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.openelec.tv"
|
||||
PKG_URL=""
|
||||
PKG_DEPENDS_TARGET="toolchain attr libcap vdr vdr-plugin-vnsiserver vdr-iptv vdr-wirbelscan vdr-wirbelscancontrol vdr-plugin-dvbapi vdr-plugin-streamdev vdr-live vdr-epgsearch vdr-plugin-xmltv2vdr vdr-plugin-eepg vdr-dummydevice vdr-satip vdr-plugin-epgfixer vdr-plugin-restfulapi"
|
||||
PKG_DEPENDS_TARGET="toolchain attr libcap vdr vdr-plugin-xvdr vdr-plugin-vnsiserver vdr-iptv vdr-wirbelscan vdr-wirbelscancontrol vdr-plugin-dvbapi vdr-plugin-streamdev vdr-live vdr-control vdr-epgsearch vdr-plugin-xmltv2vdr vdr-plugin-eepg vdr-dummydevice vdr-satip"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="service.multimedia"
|
||||
PKG_SHORTDESC="vdr: A powerful DVB TV application"
|
||||
@@ -32,10 +32,6 @@ PKG_LONGDESC="This project describes how to build your own digital satellite rec
|
||||
PKG_AUTORECONF="no"
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="xbmc.service"
|
||||
PKG_ADDON_PROVIDES=""
|
||||
PKG_ADDON_REQUIRES="pvr.vdr.vnsi:0.0.0 script.config.vdr:0.0.0"
|
||||
PKG_ADDON_NAME="VDR PVR Backend"
|
||||
PKG_ADDON_REPOVERSION="6.0"
|
||||
|
||||
make_target() {
|
||||
: # nothing to do here
|
||||
@@ -48,21 +44,20 @@ makeinstall_target() {
|
||||
addon() {
|
||||
VDR_DIR="$(get_build_dir vdr)"
|
||||
VDR_LIVE_DIR="$(get_build_dir vdr-live)"
|
||||
VDR_PLUGIN_XVDR_DIR="$(get_build_dir vdr-plugin-xvdr)"
|
||||
VDR_PLUGIN_VNSISERVER_DIR="$(get_build_dir vdr-plugin-vnsiserver)"
|
||||
VDR_PLUGIN_STREAMVEV_DIR="$(get_build_dir vdr-plugin-streamdev)"
|
||||
VDR_PLUGIN_XMLTV2VDR="$(get_build_dir vdr-plugin-xmltv2vdr)"
|
||||
VDR_PLUGIN_EPGFIXER_DIR="$(get_build_dir vdr-plugin-epgfixer)"
|
||||
VDR_PLUGIN_RESTFULAPI_DIR="$(get_build_dir vdr-plugin-restfulapi)"
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
touch $ADDON_BUILD/$PKG_ADDON_ID/config/channels.conf
|
||||
cp $VDR_DIR/channels.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/diseqc.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/keymacros.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/scr.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/sources.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
cp $VDR_DIR/svdrphosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
echo '0.0.0.0/0' >> $ADDON_BUILD/$PKG_ADDON_ID/config/svdrphosts.conf
|
||||
|
||||
cp $PKG_DIR/config.plugins/remote.conf $ADDON_BUILD/$PKG_ADDON_ID/config
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/epgsearch
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/res/plugins/live
|
||||
@@ -74,6 +69,7 @@ addon() {
|
||||
cp $VDR_PLUGIN_XMLTV2VDR/dist/epgdata2xmltv/epgdata2xmltv.dist $ADDON_BUILD/$PKG_ADDON_ID/config/epgsources/epgdata2xmltv
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_XVDR_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_VNSISERVER_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-iptv)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-wirbelscan)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
@@ -83,15 +79,18 @@ addon() {
|
||||
cp -PR $VDR_PLUGIN_STREAMVEV_DIR/server/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_STREAMVEV_DIR/client/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_LIVE_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-control)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-epgsearch)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_XMLTV2VDR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-dummydevice)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $(get_build_dir vdr-satip)/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_EPGFIXER_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
cp -PR $VDR_PLUGIN_RESTFULAPI_DIR/libvdr*.so.* $ADDON_BUILD/$PKG_ADDON_ID/plugin
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/eepg
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
|
||||
cp -PR $VDR_PLUGIN_XVDR_DIR/xvdr/allowed_hosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
|
||||
cp -PR $VDR_PLUGIN_XVDR_DIR/xvdr/xvdr.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/xvdr
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/vnsiserver
|
||||
cp -PR $VDR_PLUGIN_VNSISERVER_DIR/vnsiserver/allowed_hosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/vnsiserver
|
||||
|
||||
@@ -100,15 +99,8 @@ addon() {
|
||||
cp -P $VDR_PLUGIN_XMLTV2VDR/dist/epgdata2xmltv/epgdata2xmltv $ADDON_BUILD/$PKG_ADDON_ID/bin
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir tntnet)/.install_pkg/usr/lib/libtntnet.so.12 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
cp -PL $(get_build_dir tntnet)/.install_pkg/usr/lib/libtntnet.so.11 $ADDON_BUILD/$PKG_ADDON_ID/lib
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server
|
||||
cp -PR $VDR_PLUGIN_STREAMVEV_DIR/streamdev-server/streamdevhosts.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/streamdev-server
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/epgfixer
|
||||
cp -PR $VDR_PLUGIN_EPGFIXER_DIR/epgfixer/*.conf $ADDON_BUILD/$PKG_ADDON_ID/config/plugins/epgfixer
|
||||
|
||||
mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/res/plugins/restfulapi
|
||||
cp -P $VDR_PLUGIN_RESTFULAPI_DIR/web/* $ADDON_BUILD/$PKG_ADDON_ID/res/plugins/restfulapi
|
||||
cp -P $VDR_PLUGIN_RESTFULAPI_DIR/API.html $ADDON_BUILD/$PKG_ADDON_ID/res/plugins/restfulapi
|
||||
}
|
||||
|
||||
@@ -45,7 +45,9 @@ ADDON_PLUGIN_DIR="$ADDON_DIR/plugin"
|
||||
chmod a+x $ADDON_DIR/bin/*
|
||||
|
||||
ADDON_CACHE_DIR="$ADDON_HOME/cache"
|
||||
mkdir -p $ADDON_CACHE_DIR
|
||||
if [ ! -f "$ADDON_CACHE_DIR" ]; then
|
||||
mkdir -p $ADDON_CACHE_DIR
|
||||
fi
|
||||
|
||||
VDR_ARG="-g /tmp --no-kbd"
|
||||
if [ "$DEBUG" = "yes" ]; then
|
||||
@@ -97,12 +99,12 @@ fi
|
||||
if [ "$ENABLE_LIVE" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P 'live -i $LIVE_IP -p $LIVE_PORT'"
|
||||
fi
|
||||
if [ "$ENABLE_CONTROL" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P 'control -p $CONTROL_PORT'"
|
||||
fi
|
||||
if [ "$ENABLE_EEPG" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P eepg"
|
||||
fi
|
||||
if [ "$ENABLE_EPGFIXER" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P epgfixer"
|
||||
fi
|
||||
if [ "$ENABLE_EPGSEARCH" == "true" ] ; then
|
||||
VDR_ARG="$VDR_ARG -P epgsearch"
|
||||
fi
|
||||
@@ -128,21 +130,8 @@ if [ "$ENABLE_XMLTV2VDR" == "true" ] ; then
|
||||
cp $source /var/lib/epgsources
|
||||
done
|
||||
fi
|
||||
|
||||
if [ ! -d "$ADDON_HOME/epgimages" ]; then
|
||||
mkdir -p "$ADDON_HOME/epgimages"
|
||||
fi
|
||||
if [ ! -z "$ADDON_HOME/channellogos" ]; then
|
||||
mkdir -p "$ADDON_HOME/channellogos"
|
||||
fi
|
||||
|
||||
RESTFULAPI_ARGS="--ip $RESTFULAPI_IP --port $RESTFULAPI_PORT"
|
||||
RESTFULAPI_ARGS="$RESTFULAPI_ARGS --epgimages=\"$ADDON_HOME/epgimages\""
|
||||
RESTFULAPI_ARGS="$RESTFULAPI_ARGS --channellogos=\"$ADDON_HOME/channellogos\""
|
||||
VDR_ARG="$VDR_ARG -P 'restfulapi $RESTFULAPI_ARGS'"
|
||||
|
||||
# vnsi last
|
||||
VDR_ARG="$VDR_ARG -P vnsiserver"
|
||||
# vnsi/xvdr last
|
||||
VDR_ARG="$VDR_ARG -P $PVR_PLUGIN"
|
||||
|
||||
cd $ADDON_DIR/config
|
||||
mkdir -p $ADDON_CONFIG_DIR
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<string id="1001">Plugins</string>
|
||||
<string id="1002">VDR</string>
|
||||
<string id="1020">DVB Configuration</string>
|
||||
<string id="1021">Unload DVB modules before suspend</string>
|
||||
<string id="1021">Unload DVB mudules before suspend</string>
|
||||
<string id="1022">Wait for frontend initialization</string>
|
||||
<string id="1023">Number of adapters to wait for</string>
|
||||
<string id="1024">Enable charset override</string>
|
||||
@@ -17,18 +17,17 @@
|
||||
<string id="1038">Enable plugin: live</string>
|
||||
<string id="1039">- listen on ip</string>
|
||||
<string id="1040">- listen on port</string>
|
||||
<string id="1042">Enable plugin: control</string>
|
||||
<string id="1043">- listen on port</string>
|
||||
<string id="1044">Enable plugin: epgsearch</string>
|
||||
<string id="1045">Enable plugin: xmltv2vdr</string>
|
||||
<string id="1046">Enable plugin: extended EPG</string>
|
||||
<string id="1047">Enable plugin: dummydevice</string>
|
||||
<string id="1048">Enable plugin: satip</string>
|
||||
<string id="1049">Enable plugin: epgfixer</string>
|
||||
<string id="1051">VDR Configuration</string>
|
||||
<string id="1052">VDR Video Dir</string>
|
||||
<string id="1053">PVR plugin</string>
|
||||
<string id="1056">Enable external recdmd</string>
|
||||
<string id="1057">External recdmd path</string>
|
||||
<string id="1058">- number of devices</string>
|
||||
<string id="1070">restfulapi plugin options</string>
|
||||
<string id="1071">- listen on ip</string>
|
||||
<string id="1072">- listen on port</string>
|
||||
</strings>
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<category label="1001">
|
||||
<setting label="1030" type="lsep"/>
|
||||
<setting type="sep" />
|
||||
<setting id="PVR_PLUGIN" type="labelenum" label="1053" values="xvdr|vnsiserver" default="vnsiserver" />
|
||||
<setting id="ENABLE_IPTV" type="bool" label="1031" default="false" />
|
||||
<setting id="IPTV_NUM_DEVICES" type="slider" option="int" range="1,4" label="1058" visible="!eq(-1,false)" default="1" />
|
||||
<setting id="ENABLE_STREAMDEV_CLIENT" type="bool" label="1032" default="false" />
|
||||
@@ -27,16 +28,14 @@
|
||||
<setting id="ENABLE_LIVE" type="bool" label="1038" default="false" />
|
||||
<setting id="LIVE_IP" type="ipaddress" label="1039" values="" visible="!eq(-1,false)" default="0.0.0.0"/>
|
||||
<setting id="LIVE_PORT" type="number" label="1040" values="" visible="!eq(-2,false)" default="8008"/>
|
||||
<setting id="ENABLE_CONTROL" type="bool" label="1042" default="false" />
|
||||
<setting id="CONTROL_PORT" type="number" label="1043" values="" visible="!eq(-1,false)" default="2002"/>
|
||||
<setting id="ENABLE_EEPG" type="bool" label="1046" default="false" />
|
||||
<setting id="ENABLE_EPGSEARCH" type="bool" label="1044" default="false" />
|
||||
<setting id="ENABLE_XMLTV2VDR" type="bool" label="1045" default="false" />
|
||||
<setting id="ENABLE_DUMMYDEVICE" type="bool" label="1047" default="false" />
|
||||
<setting id="ENABLE_SATIP" type="bool" label="1048" default="false" />
|
||||
<setting id="ENABLE_EPGFIXER" type="bool" label="1049" default="false" />
|
||||
<setting type="sep" />
|
||||
<setting id="ENABLE_SOFTCAM" type="bool" label="1036" default="true" />
|
||||
<setting type="lsep" label="1070" />
|
||||
<setting id="RESTFULAPI_IP" type="ipaddress" label="1071" values="" default="127.0.0.1"/>
|
||||
<setting id="RESTFULAPI_PORT" type="number" label="1072" values="" default="8002"/>
|
||||
</category>
|
||||
</settings>
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<setting id="NUM_ADAPTERS" value="1" />
|
||||
<setting id="REMOVE_MODULES" value="" />
|
||||
<setting id="VDR_VIDEO_DIR" value="/storage/videos" />
|
||||
<setting id="PVR_PLUGIN" value="vnsiserver" />
|
||||
<setting id="ENABLE_IPTV" value="false" />
|
||||
<setting id="ENABLE_SOFTCAM" value="true" />
|
||||
<setting id="ENABLE_STREAMDEV_CLIENT" value="false" />
|
||||
@@ -10,8 +11,9 @@
|
||||
<setting id="ENABLE_LIVE" value="false" />
|
||||
<setting id="LIVE_IP" value="0.0.0.0" />
|
||||
<setting id="LIVE_PORT" value="8008" />
|
||||
<setting id="ENABLE_CONTROL" value="false" />
|
||||
<setting id="CONTROL_PORT" value="2002" />
|
||||
<setting id="ENABLE_EEPG" value="false" />
|
||||
<setting id="ENABLE_EPGFIXER" value="false" />
|
||||
<setting id="ENABLE_EPGSEARCH" value="false" />
|
||||
<setting id="ENABLE_XMLTV2VDR" value="false" />
|
||||
<setting id="ENABLE_DUMMYDEVICE" value="false" />
|
||||
@@ -21,6 +23,4 @@
|
||||
<setting id="ENABLE_CHARSET_OVERRIDE" value="false" />
|
||||
<setting id="CHARSET_OVERRIDE_STR" value="" />
|
||||
<setting id="IPTV_NUM_DEVICES" value="1" />
|
||||
<setting id="RESTFULAPI_IP" value="127.0.0.1" />
|
||||
<setting id="RESTFULAPI_PORT" value="8002" />
|
||||
</settings>
|
||||
|
||||