diff --git a/packages/addons/service/usbmuxd/changelog.txt b/packages/addons/service/usbmuxd/changelog.txt new file mode 100644 index 0000000000..747949c2d5 --- /dev/null +++ b/packages/addons/service/usbmuxd/changelog.txt @@ -0,0 +1,2 @@ +8.1.100 +- initial release diff --git a/packages/addons/service/usbmuxd/icon/icon.png b/packages/addons/service/usbmuxd/icon/icon.png new file mode 100644 index 0000000000..9e57dfd852 Binary files /dev/null and b/packages/addons/service/usbmuxd/icon/icon.png differ diff --git a/packages/addons/service/usbmuxd/package.mk b/packages/addons/service/usbmuxd/package.mk new file mode 100644 index 0000000000..092b575d0a --- /dev/null +++ b/packages/addons/service/usbmuxd/package.mk @@ -0,0 +1,48 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ + +PKG_NAME="usbmuxd" +PKG_VERSION="1.1.0" +PKG_REV="100" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="http://www.libimobiledevice.org" +PKG_URL="http://www.libimobiledevice.org/downloads/$PKG_NAME-$PKG_VERSION.tar.bz2" +PKG_DEPENDS_TARGET="toolchain libusb libimobiledevice" +PKG_SECTION="service" +PKG_SHORTDESC="USB Multiplex Daemon" +PKG_LONGDESC="USB Multiplex Daemon" +PKG_AUTORECONF="no" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="iPhone Tether" +PKG_ADDON_TYPE="xbmc.service" + +PKG_DISCLAIMER="Additional data charges may occur. The LibreELEC team doesn't take any resposibility for extra data charges." + +PKG_CONFIGURE_OPTS_TARGET="ac_cv_func_malloc_0_nonnull=yes \ + ac_cv_func_realloc_0_nonnull=yes" + +makeinstall_target() { + : +} + +addon() { + mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/bin + cp -P $PKG_BUILD/.$TARGET_NAME/src/usbmuxd $ADDON_BUILD/$PKG_ADDON_ID/bin/ +} diff --git a/packages/addons/service/usbmuxd/patches/usbmuxd-0001-remove-duplicate-functions.patch b/packages/addons/service/usbmuxd/patches/usbmuxd-0001-remove-duplicate-functions.patch new file mode 100644 index 0000000000..b9bd887cc4 --- /dev/null +++ b/packages/addons/service/usbmuxd/patches/usbmuxd-0001-remove-duplicate-functions.patch @@ -0,0 +1,184 @@ +diff -Naur a/src/utils.c b/src/utils.c +--- a/src/utils.c 2014-10-16 04:23:27.000000000 -0700 ++++ b/src/utils.c 2015-11-12 14:41:05.656507596 -0800 +@@ -156,149 +156,6 @@ + #endif + + /** +- * Concatenate strings into a newly allocated string +- * +- * @note: Specify NULL for the last string in the varargs list +- * +- * @str: The first string in the list +- * @...: Subsequent strings. Use NULL for the last item. +- * +- * @return a newly allocated string, or NULL if @str is NULL. This will also +- * return NULL and set errno to ENOMEM if memory is exhausted. +- */ +-char *string_concat(const char *str, ...) +-{ +- size_t len; +- va_list args; +- char *s; +- char *result; +- char *dest; +- +- if (!str) +- return NULL; +- +- /* Compute final length */ +- +- len = strlen(str) + 1; /* plus 1 for the null terminator */ +- +- va_start(args, str); +- s = va_arg(args, char *); +- while (s) { +- len += strlen(s); +- s = va_arg(args, char*); +- } +- va_end(args); +- +- /* Concat each string */ +- +- result = malloc(len); +- if (!result) +- return NULL; /* errno remains set */ +- +- dest = result; +- +- dest = stpcpy(dest, str); +- +- va_start(args, str); +- s = va_arg(args, char *); +- while (s) { +- dest = stpcpy(dest, s); +- s = va_arg(args, char *); +- } +- va_end(args); +- +- return result; +-} +- +-void buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length) +-{ +- FILE *f; +- uint64_t size; +- +- *length = 0; +- +- f = fopen(filename, "rb"); +- if (!f) { +- return; +- } +- +- fseek(f, 0, SEEK_END); +- size = ftell(f); +- rewind(f); +- +- if (size == 0) { +- fclose(f); +- return; +- } +- +- *buffer = (char*)malloc(sizeof(char)*(size+1)); +- if (fread(*buffer, sizeof(char), size, f) != size) { +- usbmuxd_log(LL_ERROR, "%s: ERROR: couldn't read %d bytes from %s", __func__, (int)size, filename); +- } +- fclose(f); +- +- *length = size; +-} +- +-void buffer_write_to_filename(const char *filename, const char *buffer, uint64_t length) +-{ +- FILE *f; +- +- f = fopen(filename, "wb"); +- if (f) { +- fwrite(buffer, sizeof(char), length, f); +- fclose(f); +- } +-} +- +-int plist_read_from_filename(plist_t *plist, const char *filename) +-{ +- char *buffer = NULL; +- uint64_t length; +- +- if (!filename) +- return 0; +- +- buffer_read_from_filename(filename, &buffer, &length); +- +- if (!buffer) { +- return 0; +- } +- +- if ((length > 8) && (memcmp(buffer, "bplist00", 8) == 0)) { +- plist_from_bin(buffer, length, plist); +- } else { +- plist_from_xml(buffer, length, plist); +- } +- +- free(buffer); +- +- return 1; +-} +- +-int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format) +-{ +- char *buffer = NULL; +- uint32_t length; +- +- if (!plist || !filename) +- return 0; +- +- if (format == PLIST_FORMAT_XML) +- plist_to_xml(plist, &buffer, &length); +- else if (format == PLIST_FORMAT_BINARY) +- plist_to_bin(plist, &buffer, &length); +- else +- return 0; +- +- buffer_write_to_filename(filename, buffer, length); +- +- free(buffer); +- +- return 1; +-} +- +-/** + * Get number of milliseconds since the epoch. + */ + uint64_t mstime64(void) +diff -Naur a/src/utils.h b/src/utils.h +--- a/src/utils.h 2014-10-16 04:29:50.000000000 -0700 ++++ b/src/utils.h 2015-11-12 14:40:41.990644890 -0800 +@@ -19,6 +19,8 @@ + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + ++#include ++ + #ifndef UTILS_H + #define UTILS_H + +@@ -73,18 +75,6 @@ + #ifndef HAVE_STPCPY + char *stpcpy(char * s1, const char * s2); + #endif +-char *string_concat(const char *str, ...); +- +-void buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length); +-void buffer_write_to_filename(const char *filename, const char *buffer, uint64_t length); +- +-enum plist_format_t { +- PLIST_FORMAT_XML, +- PLIST_FORMAT_BINARY +-}; +- +-int plist_read_from_filename(plist_t *plist, const char *filename); +-int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format); + + uint64_t mstime64(void); + diff --git a/packages/addons/service/usbmuxd/source/default.py b/packages/addons/service/usbmuxd/source/default.py new file mode 100644 index 0000000000..1a91d91ede --- /dev/null +++ b/packages/addons/service/usbmuxd/source/default.py @@ -0,0 +1,17 @@ +################################################################################ +# This file is part of LibreELEC - https://libreelec.tv +# Copyright (C) 2016 Team LibreELEC +# +# LibreELEC is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# LibreELEC is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with LibreELEC. If not, see . +################################################################################ diff --git a/packages/addons/service/usbmuxd/source/system.d/service.usbmuxd.service b/packages/addons/service/usbmuxd/source/system.d/service.usbmuxd.service new file mode 100644 index 0000000000..ae86307ebe --- /dev/null +++ b/packages/addons/service/usbmuxd/source/system.d/service.usbmuxd.service @@ -0,0 +1,12 @@ +[Unit] +Description=Socket daemon for the usbmux protocol used by Apple devices + +[Service] +Type=simple +ExecStartPre=/sbin/modprobe ipheth +ExecStart=/storage/.kodi/addons/service.usbmuxd/bin/usbmuxd --systemd +PIDFile=/var/run/usbmuxd.pid + +[Install] +WantedBy=multi-user.target +