aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/script.module.pycryptodome/addon.xml13
-rw-r--r--cmake/installdata/common/addons.txt1
-rw-r--r--project/BuildDependencies/scripts/0_package.list1
-rw-r--r--system/addon-manifest.xml1
-rw-r--r--tools/android/packaging/Makefile.in3
-rw-r--r--tools/depends/target/Makefile3
-rw-r--r--tools/depends/target/python27/modules.setup2
-rw-r--r--tools/depends/target/pythonmodule-pycryptodome/01-nosetuptool.patch44
-rw-r--r--tools/depends/target/pythonmodule-pycryptodome/02-android-dlopen.patch31
-rw-r--r--tools/depends/target/pythonmodule-pycryptodome/Makefile53
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)