diff --git a/cross/cryptography/Makefile b/cross/cryptography/Makefile
new file mode 100644
index 00000000000..918fd9c48fc
--- /dev/null
+++ b/cross/cryptography/Makefile
@@ -0,0 +1,14 @@
+PKG_NAME = cryptography
+PKG_VERS = 2.4.2
+PKG_EXT = tar.gz
+PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
+PKG_DIST_SITE = https://files.pythonhosted.org/packages/source/c/$(PKG_NAME)
+PKG_DIR = $(PKG_NAME)-$(PKG_VERS)
+
+DEPENDS = cross/openssl cross/cffi
+
+HOMEPAGE = http://github.com/pyca/cryptography
+COMMENT = Provide cryptographic recipes and primitives to Python developers
+LICENSE = BSD/ASL2
+
+include ../../mk/spksrc.python-module.mk
diff --git a/cross/cryptography/PLIST b/cross/cryptography/PLIST
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/cross/cryptography/digests b/cross/cryptography/digests
new file mode 100644
index 00000000000..49937e5cbd0
--- /dev/null
+++ b/cross/cryptography/digests
@@ -0,0 +1,3 @@
+cryptography-2.4.2.tar.gz SHA1 dbebf76a5e10eeb3c251bd1a243e0d1dacfda765
+cryptography-2.4.2.tar.gz SHA256 05a6052c6a9f17ff78ba78f8e6eb1d777d25db3b763343a1ae89a7a8670386dd
+cryptography-2.4.2.tar.gz MD5 26bad6a40a373e2ad43dfa13dc4b162b
diff --git a/cross/libsodium/Makefile b/cross/libsodium/Makefile
index e40f4e3b407..fc8a860e0a4 100644
--- a/cross/libsodium/Makefile
+++ b/cross/libsodium/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = libsodium
-PKG_VERS = 1.0.16
+PKG_VERS = 1.0.17
PKG_EXT = tar.gz
PKG_DIR = $(PKG_NAME)-$(PKG_VERS)
PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
diff --git a/cross/libsodium/PLIST b/cross/libsodium/PLIST
index b501a890122..0d0a38f36b0 100644
--- a/cross/libsodium/PLIST
+++ b/cross/libsodium/PLIST
@@ -1,3 +1,3 @@
lnk:lib/libsodium.so
lnk:lib/libsodium.so.23
-lib:lib/libsodium.so.23.1.0
+lib:lib/libsodium.so.23.2.0
diff --git a/cross/libsodium/digests b/cross/libsodium/digests
index 91f56768503..82454f2013c 100644
--- a/cross/libsodium/digests
+++ b/cross/libsodium/digests
@@ -1,3 +1,3 @@
-libsodium-1.0.16.tar.gz SHA1 c7ea321d7b8534e51c5e3d86055f6c1aa1e48ee9
-libsodium-1.0.16.tar.gz SHA256 eeadc7e1e1bcef09680fb4837d448fbdf57224978f865ac1c16745868fbd0533
-libsodium-1.0.16.tar.gz MD5 37b18839e57e7a62834231395c8e962b
+libsodium-1.0.17.tar.gz SHA1 3ff06c4aa33eb0a9c9d83481a00383b0c81d4a80
+libsodium-1.0.17.tar.gz SHA256 0cc3dae33e642cc187b5ceb467e0ad0e1b51dcba577de1190e9ffa17766ac2b1
+libsodium-1.0.17.tar.gz MD5 0f71e2680187a1558b5461e6879342c5
diff --git a/cross/pip/Makefile b/cross/pip/Makefile
index a375358c611..47cb769cff8 100644
--- a/cross/pip/Makefile
+++ b/cross/pip/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = pip
-PKG_VERS = 9.0.1
+PKG_VERS = 18.1
PKG_EXT = tar.gz
PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://files.pythonhosted.org/packages/source/p/$(PKG_NAME)
diff --git a/cross/pip/digests b/cross/pip/digests
index 87e2f70ed64..22aa92031b4 100644
--- a/cross/pip/digests
+++ b/cross/pip/digests
@@ -1,3 +1,3 @@
-pip-9.0.1.tar.gz SHA1 57ff41e99cb01b6a1c2b0999161589b726f0ec8b
-pip-9.0.1.tar.gz SHA256 09f243e1a7b461f654c26a725fa373211bb7ff17a9300058b205c61658ca940d
-pip-9.0.1.tar.gz MD5 35f01da33009719497f01a4ba69d63c9
+pip-18.1.tar.gz SHA1 1226368a8d39bd8b945517b6f7cb9802b279564e
+pip-18.1.tar.gz SHA256 c0a292bd977ef590379a3f05d7b7f65135487b67470f6281289a94e015650ea1
+pip-18.1.tar.gz MD5 75cad449ad62c88b22de317a26781714
diff --git a/cross/python/Makefile b/cross/python/Makefile
index 2e40b29ac6d..764e16778fc 100644
--- a/cross/python/Makefile
+++ b/cross/python/Makefile
@@ -1,7 +1,7 @@
PKG_NAME = python
PKG_VERS_MAJOR = 2
PKG_VERS_MINOR = 7
-PKG_VERS_PATCH = 14
+PKG_VERS_PATCH = 15
PKG_VERS = $(PKG_VERS_MAJOR).$(PKG_VERS_MINOR).$(PKG_VERS_PATCH)
PKG_EXT = tar.xz
PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT)
@@ -20,10 +20,12 @@ ADDITIONAL_CFLAGS = -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
CONFIGURE_ARGS = --enable-shared --enable-unicode=ucs4 --target=$(TC_TARGET) --enable-ipv6 PYTHON_FOR_BUILD=$(HOSTPYTHON) PYTHON_LIB_NATIVE=$(PYTHON_LIB_NATIVE)
CONFIGURE_ARGS += ac_cv_file__dev_ptmx=yes ac_cv_file__dev_ptc=no ac_cv_have_long_long_format=yes ac_cv_buggy_getaddrinfo=no
-POST_PATCH_TARGET = myPostPatch
-PRE_CONFIGURE_TARGET = myPreConfigure
-PRE_INSTALL_TARGET = myPreInstall
-POST_INSTALL_TARGET = myPostInstall
+POST_PATCH_TARGET = python_post_patch
+PRE_CONFIGURE_TARGET = python_pre_configure
+PRE_INSTALL_TARGET = python_pre_install
+POST_INSTALL_TARGET = python_post_install
+
+PLIST_TRANSFORM = sed -e 's%@PKG_SHORT_VERS@%$(PKG_VERS_MAJOR).$(PKG_VERS_MINOR)%'
include ../../mk/spksrc.cross-cc.mk
@@ -39,27 +41,27 @@ PYTHON_LIB_CROSS = $(WORK_DIR)/$(PKG_DIR)/build/lib.linux2-$(BUILD_ARCH)-$(PKG_V
PYTHON_LIB_DIR = lib/python$(PKG_VERS_MAJOR).$(PKG_VERS_MINOR)
PYTHON_INC_DIR = include/python$(PKG_VERS_MAJOR).$(PKG_VERS_MINOR)
-.PHONY: myPostPatch
-myPostPatch:
+.PHONY: python_post_patch
+python_post_patch:
# Need to bring our own mime-type definitions
$(RUN) sed -e 's#@INSTALL_PREFIX@#$(INSTALL_PREFIX)#' -i Lib/mimetypes.py
-.PHONY: myPreConfigure
-myPreConfigure:
+.PHONY: python_pre_configure
+python_pre_configure:
# Needed for cross-compilation of wheels
cp $(PYTHON_NATIVE) $(HOSTPYTHON)
# Needed to apply patch-changes to configure.ac
$(RUN) autoreconf
-.PHONY: myPreInstall
-myPreInstall:
+.PHONY: python_pre_install
+python_pre_install:
# Needed to have native modules available when compiling wheels
cp -R $(HOSTPYTHON_LIB_NATIVE) $(PYTHON_LIB_CROSS)/../
# Supplies correct flags
cp $(PYTHON_LIB_CROSS)/_sysconfigdata.py* $(PYTHON_LIB_NATIVE)/
-.PHONY: myPostInstall
-myPostInstall: $(WORK_DIR)/python-cc.mk
+.PHONY: python_post_install
+python_post_install: $(WORK_DIR)/python-cc.mk
# Add mimetypes
@install -m 755 -d $(STAGING_INSTALL_PREFIX)/etc/
@install -m 644 -D src/mime.types $(STAGING_INSTALL_PREFIX)/etc/
diff --git a/cross/python/PLIST b/cross/python/PLIST
index d18e72d973b..95d24912066 100644
--- a/cross/python/PLIST
+++ b/cross/python/PLIST
@@ -4,10 +4,10 @@ bin:bin/pydoc
bin:bin/smtpd.py
lnk:bin/python
lnk:bin/python2
-bin:bin/python2.7
-lnk:lib/libpython2.7.so
-lib:lib/libpython2.7.so.1.0
-rsc:lib/python2.7
-lib:lib/python2.7/lib-dynload/*.so
+bin:bin/python@PKG_SHORT_VERS@
+lnk:lib/libpython@PKG_SHORT_VERS@.so
+lib:lib/libpython@PKG_SHORT_VERS@.so.1.0
+rsc:lib/python@PKG_SHORT_VERS@
+lib:lib/python@PKG_SHORT_VERS@/lib-dynload/*.so
rsc:etc/mime.types
-rsc:include/python2.7/pyconfig.h
+rsc:include/python@PKG_SHORT_VERS@/pyconfig.h
diff --git a/cross/python/digests b/cross/python/digests
index 5c09090b377..ebfdf8caca5 100644
--- a/cross/python/digests
+++ b/cross/python/digests
@@ -1,3 +1,3 @@
-Python-2.7.14.tar.xz SHA1 cf146474fc988b4b6b53fdd81b71c2815873b469
-Python-2.7.14.tar.xz SHA256 71ffb26e09e78650e424929b2b457b9c912ac216576e6bd9e7d204ed03296a66
-Python-2.7.14.tar.xz MD5 1f6db41ad91d9eb0a6f0c769b8613c5b
+Python-2.7.15.tar.xz SHA1 f99348a095ec4a6411c84c0d15343d11920c9724
+Python-2.7.15.tar.xz SHA256 22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574
+Python-2.7.15.tar.xz MD5 a80ae3cc478460b922242f43a1b4094d
diff --git a/cross/wheel/Makefile b/cross/wheel/Makefile
index 8ad2fc5a8f0..f7c69b804df 100644
--- a/cross/wheel/Makefile
+++ b/cross/wheel/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = wheel
-PKG_VERS = 0.30.0
+PKG_VERS = 0.32.3
PKG_EXT = tar.gz
PKG_DIST_NAME = $(PKG_NAME)-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = https://files.pythonhosted.org/packages/source/w/$(PKG_NAME)
diff --git a/cross/wheel/digests b/cross/wheel/digests
index 77a62937dd6..030f249b221 100644
--- a/cross/wheel/digests
+++ b/cross/wheel/digests
@@ -1,3 +1,3 @@
-wheel-0.30.0.tar.gz SHA1 947ed0617298824d94e523b35f72d406fa78ba4b
-wheel-0.30.0.tar.gz SHA256 9515fe0a94e823fd90b08d22de45d7bde57c90edce705b22f5e1ecf7e1b653c8
-wheel-0.30.0.tar.gz MD5 e48f8f2329f1419572d93b68a63272a9
+wheel-0.32.3.tar.gz SHA1 b10e2b4f3627e1904285c204c1975e84d634c9eb
+wheel-0.32.3.tar.gz SHA256 029703bf514e16c8271c3821806a1c171220cc5bdd325cbf4e7da1e056a01db6
+wheel-0.32.3.tar.gz MD5 0040eb1e7a49c4f2e55eb0e59ee2974e
diff --git a/native/python/Makefile b/native/python/Makefile
index a04f326628c..9432fc3d8b9 100644
--- a/native/python/Makefile
+++ b/native/python/Makefile
@@ -1,5 +1,5 @@
PKG_NAME = python
-PKG_VERS = 2.7.14
+PKG_VERS = 2.7.15
PKG_EXT = tar.xz
PKG_DIST_NAME = Python-$(PKG_VERS).$(PKG_EXT)
PKG_DIST_SITE = http://www.python.org/ftp/python/$(PKG_VERS)
@@ -14,19 +14,19 @@ LICENSE = PSF
GNU_CONFIGURE = 1
CONFIGURE_ARGS = --enable-unicode=ucs4 --enable-ipv6
-POST_INSTALL_TARGET = myPostInstall
+POST_INSTALL_TARGET = python_post_install
include ../../mk/spksrc.native-cc.mk
PYTHON = $(WORK_DIR)/install/usr/local/bin/python
PIP = $(WORK_DIR)/install/usr/local/bin/pip
-.PHONY: myPostInstall
-myPostInstall: $(WORK_DIR)/python-native.mk
+.PHONY: python_post_install
+python_post_install: $(WORK_DIR)/python-native.mk
@$(MSG) Installing setuptools, pip and cffi
@$(RUN) wget https://bootstrap.pypa.io/get-pip.py -O - | $(PYTHON)
- @$(PIP) install "setuptools==37.0.0"
- @$(PIP) install "cffi==1.11.2"
+ @$(PIP) install "setuptools==40.6.2"
+ @$(PIP) install "cffi==1.11.5"
$(WORK_DIR)/python-native.mk:
@echo PIP=$(PIP_NATIVE) >> $@
diff --git a/native/python/digests b/native/python/digests
index 5c09090b377..ebfdf8caca5 100644
--- a/native/python/digests
+++ b/native/python/digests
@@ -1,3 +1,3 @@
-Python-2.7.14.tar.xz SHA1 cf146474fc988b4b6b53fdd81b71c2815873b469
-Python-2.7.14.tar.xz SHA256 71ffb26e09e78650e424929b2b457b9c912ac216576e6bd9e7d204ed03296a66
-Python-2.7.14.tar.xz MD5 1f6db41ad91d9eb0a6f0c769b8613c5b
+Python-2.7.15.tar.xz SHA1 f99348a095ec4a6411c84c0d15343d11920c9724
+Python-2.7.15.tar.xz SHA256 22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574
+Python-2.7.15.tar.xz MD5 a80ae3cc478460b922242f43a1b4094d
diff --git a/spk/python/Makefile b/spk/python/Makefile
index 52f1255e6be..302301afc9e 100644
--- a/spk/python/Makefile
+++ b/spk/python/Makefile
@@ -1,13 +1,13 @@
SPK_NAME = python
SPK_SHORT_VERS = 2.7
-SPK_VERS = $(SPK_SHORT_VERS).14
+SPK_VERS = $(SPK_SHORT_VERS).15
SPK_REV = 20
SPK_ICON = src/python.png
DEPENDS = cross/busybox cross/$(SPK_NAME)
# Build-time dependencies
DEPENDS += cross/setuptools cross/pip cross/wheel
-DEPENDS += cross/cffi cross/bcrypt
+DEPENDS += cross/cryptography cross/cffi cross/bcrypt
# Cross-compiled wheels
DEPENDS += cross/lxml cross/m2crypto cross/msgpack-python cross/pillow
@@ -24,7 +24,7 @@ DESCRIPTION_SPN = Lenguaje de programaciĆ³n Python 2.7.
RELOAD_UI = yes
STARTABLE = no
DISPLAY_NAME = Python
-CHANGELOG = "1. Update to Python 2.7.14
2. Update modules"
+CHANGELOG = "1. Update to Python 2.7.15
2. Update modules"
HOMEPAGE = http://www.python.org
LICENSE = PSF
diff --git a/spk/python/src/requirements.txt b/spk/python/src/requirements.txt
index 9a823bf221b..7109b0b345f 100644
--- a/spk/python/src/requirements.txt
+++ b/spk/python/src/requirements.txt
@@ -4,25 +4,25 @@
#lxml==3.7.2
#m2crypto==0.25.0
#msgpack-python==0.5.6
-#pillow==4.0.0
+#pillow==5.3.0
#pyalsa==1.0.29
#pyaudio==0.2.9
#pycrypto==2.6.1
#pycurl==7.43.0
-#pyyaml==3.12
+#pyyaml==3.13
#pyzmq==16.0.2
#uwsgi==2.0.14
#pycparser==2.18
## Cross-compiled via spksrc.wheel.mk
-markupsafe==1.0
-psutil==5.4.3
-pymongo==3.4.0
-sqlalchemy==1.2.0
+markupsafe==1.1.0
+psutil==5.4.8
+pymongo==3.7.2
+sqlalchemy==1.2.10
# General support
six==1.11.0
-virtualenv==15.1.0
+virtualenv==16.1.0
# Cheetah and dependencies
cheetah==2.4.4
@@ -31,30 +31,30 @@ markdown==2.6.11
# Cryptography/pyOpenSSL/M2Crypto dependencies
# These also depends on cross/cffi and cross/openssl,
# which are installed through cross/bcrypt
-pyOpenSSL==17.5.0
-cryptography==2.1.4
-pyasn1==0.4.2
+pyOpenSSL==18.0.0
+#cryptography==2.4.2 now built as buildtime dependency
+pyasn1==0.4.4
asn1crypto==0.24.0
enum34==1.1.6
-idna==2.6
-ipaddress==1.0.19
-typing==3.5.2.2
+idna==2.7
+ipaddress==1.0.22
+typing==3.6.6
# Twisted and dependencies
-twisted==17.9.0
-zope.interface==4.4.3
-Automat==0.6.0
+twisted==18.9.0
+zope.interface==4.6.0
+Automat==0.7.0
constantly==15.1.0
-hyperlink==17.3.1
-attrs==17.4.0
+hyperlink==18.0.0
+attrs==18.2.0
incremental==17.5.0
# Requests and dependencies
# Always get latest certificates!
-requests==2.18.4
-urllib3==1.22
+requests==2.20.1
+urllib3==1.24.1
chardet==3.0.4
certifi
# pillow dependencies
-olefile==0.44
+olefile==0.46