diff options
-rw-r--r-- | addons/script.module.pycryptodome/addon.xml | 13 | ||||
-rw-r--r-- | cmake/installdata/common/addons.txt | 1 | ||||
-rw-r--r-- | project/BuildDependencies/scripts/0_package.list | 1 | ||||
-rw-r--r-- | system/addon-manifest.xml | 1 | ||||
-rw-r--r-- | tools/android/packaging/Makefile.in | 3 | ||||
-rw-r--r-- | tools/depends/target/Makefile | 3 | ||||
-rw-r--r-- | tools/depends/target/python27/modules.setup | 2 | ||||
-rw-r--r-- | tools/depends/target/pythonmodule-pycryptodome/01-nosetuptool.patch | 44 | ||||
-rw-r--r-- | tools/depends/target/pythonmodule-pycryptodome/02-android-dlopen.patch | 31 | ||||
-rw-r--r-- | tools/depends/target/pythonmodule-pycryptodome/Makefile | 53 |
10 files changed, 149 insertions, 3 deletions
diff --git a/addons/script.module.pycryptodome/addon.xml b/addons/script.module.pycryptodome/addon.xml new file mode 100644 index 0000000000..dd9c6be273 --- /dev/null +++ b/addons/script.module.pycryptodome/addon.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<addon id="script.module.pycryptodome" + name="Python Crypto Library" + version="3.4.3" + provider-name="Legrandin"> + <requires> + <import addon="xbmc.python" version="2.7.0"/> + </requires> + <extension point="xbmc.python.module" library="lib" /> + <extension point="xbmc.addon.metadata"> + <platform>all</platform> + </extension> +</addon>
\ No newline at end of file diff --git a/cmake/installdata/common/addons.txt b/cmake/installdata/common/addons.txt index 99857a7699..ad951eced6 100644 --- a/cmake/installdata/common/addons.txt +++ b/cmake/installdata/common/addons.txt @@ -23,6 +23,7 @@ addons/webinterface.default/* addons/screensaver.xbmc.builtin.dim/* addons/screensaver.xbmc.builtin.black/* addons/script.module.pil/* +addons/script.module.pycryptodome/* addons/script.module.pysqlite/* addons/resource.language.en_gb/* addons/resource.uisounds.kodi/* diff --git a/project/BuildDependencies/scripts/0_package.list b/project/BuildDependencies/scripts/0_package.list index e9dfdd61c6..d2d7dbaede 100644 --- a/project/BuildDependencies/scripts/0_package.list +++ b/project/BuildDependencies/scripts/0_package.list @@ -37,6 +37,7 @@ mysql-connector-c-6.1.6-win32-vc140-v2.7z openssl-1.0.2g-win32-vc140-v2.7z pcre-8.37-win32-vc140-v3.7z pillow-3.1.0-win32-vc140.7z +pycryptodome-3.4.3-win32.7z python-2.7.11-win32-vc140-v2.7z shairplay-0.9.0-win32-vc140-v2.7z sqlite-3.10.2-win32-vc140.7z diff --git a/system/addon-manifest.xml b/system/addon-manifest.xml index 0df3df682e..fd7737470e 100644 --- a/system/addon-manifest.xml +++ b/system/addon-manifest.xml @@ -29,6 +29,7 @@ <addon>screensaver.xbmc.builtin.black</addon> <addon>screensaver.xbmc.builtin.dim</addon> <addon>script.module.pil</addon> + <addon>script.module.pycryptodome</addon> <addon>service.xbmc.versioncheck</addon> <addon>skin.estuary</addon> <addon>skin.estouchy</addon> diff --git a/tools/android/packaging/Makefile.in b/tools/android/packaging/Makefile.in index 7a2850b96b..25e16f33ae 100644 --- a/tools/android/packaging/Makefile.in +++ b/tools/android/packaging/Makefile.in @@ -88,7 +88,7 @@ shared: mkdir -p assets cp -rfp $(PREFIX)/share/@APP_NAME_LC@/* ./assets find `pwd`/assets/ -depth -name ".git" -exec rm -rf {} \; - find `pwd`/assets/ -name "*.so" -not -name "*imaging*.so" -exec rm {} \; + find `pwd`/assets/ -name "*.so" -exec rm {} \; find `pwd`/assets/addons/skin.*/media/* -depth -not -iname "Textures.xbt" -exec rm -rf {} \; cd `pwd`/assets/addons; rm -rf $(EXCLUDED_ADDONS) mkdir -p assets/system/certs @@ -133,6 +133,7 @@ libs: $(PREFIX)/lib/@APP_NAME_LC@/lib@APP_NAME_LC@.so find $(PREFIX)/share/@APP_NAME_LC@/addons -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \; find $(PREFIX)/lib/@APP_NAME_LC@/addons -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \; || true find $(PREFIX)/lib/@APP_NAME_LC@/system -name "*.so" -exec cp -fp {} xbmc/obj/local/$(CPU)/ \; + DIR=${CURDIR}; cd $(PREFIX)/lib/python2.7/site-packages; for i in `find Crypto -name \*.so` ; do FN=`echo $$i | cut -c1- | tr "/" "_"` ; mv $$i $$DIR/xbmc/obj/local/$(CPU)/$$FN ; done cd xbmc/obj/local/$(CPU)/; find . -name "*.so" -not -name "lib*.so" | sed "s/\.\///" | xargs -I@ mv @ lib@ cp -fp xbmc/obj/local/$(CPU)/*.so xbmc/lib/$(CPU)/ $(STRIP) --strip-unneeded xbmc/lib/$(CPU)/*.so diff --git a/tools/depends/target/Makefile b/tools/depends/target/Makefile index 28807633fa..9d0c722fab 100644 --- a/tools/depends/target/Makefile +++ b/tools/depends/target/Makefile @@ -13,7 +13,7 @@ DEPENDS = \ python27 libshairplay \ libplist libcec libbluray tinyxml dummy-libxbmc \ libssh taglib libusb libnfs \ - pythonmodule-pil pythonmodule-setuptools \ + pythonmodule-pil pythonmodule-pycryptodome pythonmodule-setuptools \ libxslt ffmpeg platform crossguid \ libdvdread libdvdnav libdvdcss p8-platform @@ -95,6 +95,7 @@ libpng: $(ZLIB) openssl: $(ZLIB) gnutls: nettle $(ZLIB) nettle: gmp +pythonmodule-pycryptodome: python27 pythonmodule-setuptools pythonmodule-pil: $(ZLIB) libjpeg-turbo libpng freetype2 python27 pythonmodule-setuptools pythonmodule-setuptools: python27 libsdl2: $(LINUX_SYSTEM_LIBS) diff --git a/tools/depends/target/python27/modules.setup b/tools/depends/target/python27/modules.setup index cbb7e277fb..3bfde6d67a 100644 --- a/tools/depends/target/python27/modules.setup +++ b/tools/depends/target/python27/modules.setup @@ -85,7 +85,7 @@ MACHDESTLIB=$(BINLIBDEST) DESTPATH= # Site specific path components -- should begin with : if non-empty -SITEPATH= +SITEPATH=:site-packages # Standard path components for test modules TESTPATH= diff --git a/tools/depends/target/pythonmodule-pycryptodome/01-nosetuptool.patch b/tools/depends/target/pythonmodule-pycryptodome/01-nosetuptool.patch new file mode 100644 index 0000000000..078b065933 --- /dev/null +++ b/tools/depends/target/pythonmodule-pycryptodome/01-nosetuptool.patch @@ -0,0 +1,44 @@ +--- setup_o.py 2017-01-18 17:54:03.361747272 +0100 ++++ setup.py 2017-01-18 17:54:33.337935416 +0100 +@@ -20,10 +20,10 @@ + # SOFTWARE. + # =================================================================== + +-try: +- from setuptools import Extension, Command, setup +-except ImportError: +- from distutils.core import Extension, Command, setup ++#try: ++# from setuptools import Extension, Command, setup ++#except ImportError: ++from distutils.core import Extension, Command, setup + from distutils.command.build_ext import build_ext + from distutils.command.build import build + from distutils.command.install_lib import install_lib +@@ -464,16 +464,16 @@ + "Crypto.Signature", + "Crypto.Util", + "Crypto.Math", +- "Crypto.SelfTest", +- "Crypto.SelfTest.Cipher", +- "Crypto.SelfTest.Hash", +- "Crypto.SelfTest.IO", +- "Crypto.SelfTest.Protocol", +- "Crypto.SelfTest.PublicKey", +- "Crypto.SelfTest.Random", +- "Crypto.SelfTest.Signature", +- "Crypto.SelfTest.Util", +- "Crypto.SelfTest.Math", ++# "Crypto.SelfTest", ++# "Crypto.SelfTest.Cipher", ++# "Crypto.SelfTest.Hash", ++# "Crypto.SelfTest.IO", ++# "Crypto.SelfTest.Protocol", ++# "Crypto.SelfTest.PublicKey", ++# "Crypto.SelfTest.Random", ++# "Crypto.SelfTest.Signature", ++# "Crypto.SelfTest.Util", ++# "Crypto.SelfTest.Math", + ], + package_dir = { "Crypto": "lib/Crypto" }, + package_data = { diff --git a/tools/depends/target/pythonmodule-pycryptodome/02-android-dlopen.patch b/tools/depends/target/pythonmodule-pycryptodome/02-android-dlopen.patch new file mode 100644 index 0000000000..2253426e7c --- /dev/null +++ b/tools/depends/target/pythonmodule-pycryptodome/02-android-dlopen.patch @@ -0,0 +1,31 @@ +--- lib/Crypto/Util/_raw_api_o.py 2017-01-19 07:49:10.126996702 +0100 ++++ lib/Crypto/Util/_raw_api.py 2017-01-19 11:16:23.126321052 +0100 +@@ -101,11 +101,14 @@ + def load_lib(name, cdecl): + import platform + bits, linkage = platform.architecture() +- if "." not in name and not linkage.startswith("Win"): +- full_name = find_library(name) +- if full_name is None: +- raise OSError("Cannot load library '%s'" % name) +- name = full_name ++ try: ++ if "." not in name and not linkage.startswith("Win"): ++ full_name = find_library(name) ++ if full_name is None: ++ raise OSError("Cannot load library '%s'" % name) ++ name = full_name ++ except IOError: ++ raise OSError("Cannot load library '%s'" % name) + return CDLL(name) + + def get_c_string(c_string): +@@ -165,7 +168,7 @@ + for ext, mod, typ in imp.get_suffixes(): + if typ == imp.C_EXTENSION: + try: +- return load_lib(pycryptodome_filename(dir_comps, basename + ext), cdecl) ++ return load_lib("lib" + name.replace(".", "_") + ".so", cdecl) + except OSError: + pass + raise OSError("Cannot load native module '%s'" % name) diff --git a/tools/depends/target/pythonmodule-pycryptodome/Makefile b/tools/depends/target/pythonmodule-pycryptodome/Makefile new file mode 100644 index 0000000000..017b35a252 --- /dev/null +++ b/tools/depends/target/pythonmodule-pycryptodome/Makefile @@ -0,0 +1,53 @@ +include ../../Makefile.include +DEPS= ../../Makefile.include Makefile #pillow-crosscompile.patch + +VERSION.TXT := $(CMAKE_SOURCE_DIR)/version.txt +APP_NAME=$(shell awk '/APP_NAME/ {print tolower($$2)}' $(VERSION.TXT)) + +# lib name, version +LIBNAME=pycryptodome +VERSION=3.4.3 +SOURCE=$(LIBNAME)-$(VERSION) +ARCHIVE=$(SOURCE).tar.gz + +CROSSFLAGS=PYTHONXCPREFIX="$(PREFIX)" CC="$(CC) $(CFLAGS)" LDSHARED="$(CC) -shared" LDFLAGS="$(LDFLAGS)" PYTHONPATH="$(PREFIX)/lib/python2.7/site-packages/" +ifeq ($(OS),android) +CROSSFLAGS=PYTHONXCPREFIX="$(PREFIX)" CC="$(CC) $(CFLAGS)" LDSHARED="$(CC) -shared" LDFLAGS="$(LDFLAGS) -L$(PREFIX)/lib/dummy-lib$(APP_NAME)/ -l$(APP_NAME) -lm" PYTHONPATH="$(PREFIX)/lib/python2.7/site-packages/" +endif +ifeq ($(OS),osx) +CROSSFLAGS=PYTHONXCPREFIX="$(PREFIX)" CC="$(CC)" LDSHARED="$(CC) -shared" LDFLAGS="$(LDFLAGS) -lpython" PYTHONPATH="$(PREFIX)/lib/python2.7/site-packages/" +endif +ifeq ($(OS),ios) +PYTHON_O=$(abs_top_srcdir)/target/python27/$(PLATFORM)/Modules/python.o +CROSSFLAGS=PYTHONXCPREFIX="$(PREFIX)" CC="$(CC) $(CFLAGS)" CCSHARED="$(CC) $(CFLAGS) $(PYTHON_O)" LDFLAGS="$(LDFLAGS)" PYTHONPATH="$(PREFIX)/lib/python2.7/site-packages/" +endif + +LIBDYLIB=$(PLATFORM)/dist/$(LIBNAME)-$(VERSION)-py2.7.egg + +all: .installed-$(PLATFORM) + +$(TARBALLS_LOCATION)/$(ARCHIVE): + cd $(TARBALLS_LOCATION); $(RETRIEVE_TOOL) $(RETRIEVE_TOOL_FLAGS) $(BASE_URL)/$(ARCHIVE) + +$(PLATFORM): $(TARBALLS_LOCATION)/$(ARCHIVE) $(DEPS) + rm -rf $(PLATFORM)/*; mkdir -p $(PLATFORM) + cd $(PLATFORM); $(ARCHIVE_TOOL) $(ARCHIVE_TOOL_FLAGS) $(TARBALLS_LOCATION)/$(ARCHIVE) + cd $(PLATFORM); patch -p0 < ../01-nosetuptool.patch +ifeq ($(OS),android) + cd $(PLATFORM); patch -p0 < ../02-android-dlopen.patch +endif + +$(LIBDYLIB): $(PLATFORM) + mkdir -p $(PLATFORM)/output + cd $(PLATFORM); $(CROSSFLAGS) $(NATIVEPREFIX)/bin/python setup.py build_ext --plat-name $(OS)-$(TARGET_ARCH) + +.installed-$(PLATFORM): $(LIBDYLIB) + cd $(PLATFORM); $(CROSSFLAGS) $(NATIVEPREFIX)/bin/python setup.py install --prefix=$(PREFIX) + touch $@ + +clean: + $(MAKE) -C $(PLATFORM) clean + rm -f .installed-$(PLATFORM) + +distclean:: + rm -rf $(PLATFORM) .installed-$(PLATFORM) |