--- a/Makefile Wed Dec 06 09:56:32 2017 +0100
+++ b/Makefile Wed Dec 06 15:50:36 2017 +0100
@@ -27,12 +27,12 @@
version = 1.2-rc1
-src := $(shell dirname $(lastword $(MAKEFILE_LIST)))
+src := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
HGREMOTE ?= https://hg.beremiz.org/
HGROOT ?= $(abspath $(src)/..)
GITROOT := $(HGROOT)
DIST =
-CPUS = 8
+CPUS := `cat /proc/cpuinfo | grep -e 'processor\W*:\W*[[:digit:]]*' | nl -n ln | tail -n1 | cut -f1`
BLKDEV=/dev/null
@@ -86,11 +86,6 @@
include $(src)/$(DIST).mk
endif
-CUSTOM := public
-CUSTOM_DIR := $(src)
-
-include $(CUSTOM_DIR)/$(CUSTOM).mk
-
build:
rm -rf build
mkdir -p build
@@ -143,98 +138,187 @@
pydir = build/python
pysite = $(pydir)/Lib/site-packages
+OSSLVER=openssl-1.0.1p
+M2CRVER=M2Crypto-0.22.6rc2
+MINGPFX=i686-w64-mingw32-
+
python: |build
rm -rf $(pydir)
mkdir -p $(pydir)
-
+
# Python
- $(call get_src_http,http://www.python.org/ftp/python/2.7.2,python-2.7.2.msi)\
+ $(call get_src_http,http://www.python.org/ftp/python/2.7.3,python-2.7.3.msi)\
$(msiexec) /qn /a $$dld TARGETDIR=.\\$(pydir)
-
- # WxPython (needs running inno unpacker in wine)
+
+ # WxPython 2.8 (needs running inno unpacker in wine)
$(call get_src_sf,innounp/innounp/innounp%200.36,innounp036.rar)\
unrar e $$dld innounp.exe $(tmp)
$(call get_src_sf,wxpython/wxPython/2.8.12.1,wxPython2.8-win32-unicode-2.8.12.1-py27.exe)\
$(wine) $(tmp)/innounp.exe -d$(tmp) -x $$dld
cp -R $(tmp)/\{code_GetPythonDir\}/* $(pydir)
cp -R $(tmp)/\{app\}/* $(pysite)
-
+
+ # WxPython 3.0 (needs running inno unpacker in wine)
+ $(call get_src_sf,wxpython/wxPython/3.0.2.0,wxPython3.0-win32-3.0.2.0-py27.exe)\
+ $(wine) $(tmp)/innounp.exe -d$(tmp) -x $$dld
+ cp -R $(tmp)/\{code_GetPythonDir\}/* $(pydir)
+ cp -R $(tmp)/\{app\}/* $(pysite)
+
# wxPython fails if VC9.0 bullshit is not fully here.
$(call get_src_http,http://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140,vcredist_x86.exe)\
cp $$dld $(tmp)
$(wine) $(tmp)/vcredist_x86.exe /qn /a
cp $(tmp)/drive_c/windows/winsxs/x86_Microsoft.VC90.CRT*/* $(pydir)
-
+
# MathPlotLib
$(call get_src_http,https://github.com/downloads/matplotlib/matplotlib,matplotlib-1.2.0.win32-py2.7.exe)\
unzip -d $(tmp)/mathplotlib $$dld ; [ $$? -eq 1 ] #silence error unziping .exe
cp -R $(tmp)/mathplotlib/PLATLIB/* $(pysite)
-
+
# pywin32
$(call get_src_sf,pywin32/pywin32/Build216,pywin32-216.win32-py2.7.exe)\
unzip -d $(tmp)/pw32 $$dld ; [ $$? -eq 1 ] #silence error unziping .exe
cp -R $(tmp)/pw32/PLATLIB/* $(pysite)
-
- # zope.interface
- $(call get_src_pypi,9d/2d/beb32519c0bd19bda4ac38c34db417d563ee698518e582f951d0b9e5898b,zope.interface-4.3.2-py2.7-win32.egg)\
+
+ # zope.interface (twisted prereq)
+ $(call get_src_pypi,2.7/z/zope.interface,zope.interface-4.3.2-py2.7-win32.egg)\
unzip -d $(tmp) $$dld
cp -R $(tmp)/zope $(pysite)
-
+
+ # six (pyopenssl prereq)
+ $(call get_src_pypi,py2.py3/s/six,six-1.11.0-py2.py3-none-any.whl)\
+ unzip -d $(tmp) $$dld
+ cp -R $(tmp)/six.py $(pysite)
+
+ # enum34 (cryptography prereq)
+ $(call get_src_pypi,source/e/enum34,enum34-1.1.6.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cp -R $(tmp)/enum34-1.1.6/enum $(pysite)
+
+ # cryptography (pyopenssl prereq)
+ $(call get_src_pypi,cp27/c/cryptography,cryptography-1.0.2-cp27-none-win32.whl)\
+ unzip -d $(tmp) $$dld
+ cp -R $(tmp)/cryptography $(pysite)
+
+ # pyopenssl (twisted/ssl prereq)
+ $(call get_src_pypi,py2.py3/p/pyOpenSSL,pyOpenSSL-0.15.1-py2.py3-none-any.whl)\
+ unzip -d $(tmp) $$dld
+ cp -R $(tmp)/OpenSSL $(pysite)
+
+ # pyasn1 (service identity prereq)
+ $(call get_src_pypi,source/p/pyasn1,pyasn1-0.1.9.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cp -R $(tmp)/pyasn1-0.1.9/pyasn1 $(pysite)
+
+ # pyasn1-modules (service identity prereq)
+ $(call get_src_pypi,source/p/pyasn1-modules,pyasn1-modules-0.0.8.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cp -R $(tmp)/pyasn1-modules-0.0.8/pyasn1_modules $(pysite)
+
+ # characteristic (service identity prereq)
+ $(call get_src_pypi,source/c/characteristic,characteristic-14.3.0.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cp -R $(tmp)/characteristic-14.3.0/characteristic.py $(pysite)
+
+ # service identity (twisted prereq)
+ $(call get_src_pypi,source/s/service_identity,service_identity-14.0.0.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cp -R $(tmp)/service_identity-14.0.0/service_identity $(pysite)
+
+ # txaio (autobahn prereq)
+ $(call get_src_pypi,source/t/txaio,txaio-2.6.0.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cp -R $(tmp)/txaio-2.6.0/txaio $(pysite)
+
+ # python-msgpack (autobahn prereq)
+ $(call get_src_pypi,cp27/m/msgpack-python,msgpack_python-0.4.8-cp27-cp27m-win32.whl)\
+ unzip -d $(tmp) $$dld
+ cp -R $(tmp)/msgpack $(pysite)
+
+ # u-msgpack-python (autobahn prereq)
+ $(call get_src_pypi,source/u/u-msgpack-python,u-msgpack-python-2.3.0.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cp -R $(tmp)/u-msgpack-python-2.3.0/umsgpack.py $(pysite)
+
+ # cffi (cryptography prereq)
+ $(call get_src_pypi,cp27/c/cffi,cffi-1.2.1-cp27-none-win32.whl)\
+ unzip -d $(tmp) $$dld
+ cp -R $(tmp)/cffi $(tmp)/_cffi_backend.pyd $(pysite)
+
# Twisted
- $(call get_src_pypi,2.7/T/Twisted,Twisted-11.0.0.winxp32-py2.7.msi)\
- $(msiexec) /qn /a $$dld TARGETDIR=.\\$(pydir)
-
+ $(call get_src_pypi,cp27/T/Twisted,Twisted-15.4.0-cp27-none-win32.whl)\
+ unzip -d $(tmp) $$dld
+ cp -R $(tmp)/twisted $(pysite)
+
+ # Autobahn
+ $(call get_src_pypi,source/a/autobahn,autobahn-17.6.1.tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ for i in autobahn twisted; do cp -R $(tmp)/autobahn-17.6.1/$$i $(pysite); done
+
# Nevow
$(call get_src_pypi,source/N/Nevow,Nevow-0.10.0.tar.gz)\
tar -C $(tmp) -xzf $$dld
for i in nevow formless twisted; do cp -R $(tmp)/Nevow-0.10.0/$$i $(pysite); done
-
+
# Numpy
$(call get_src_pypi,2.7/n/numpy,numpy-1.6.1.win32-py2.7.exe)\
unzip -d $(tmp)/np $$dld ; [ $$? -eq 1 ] #silence error unziping .exe
cp -R $(tmp)/np/PLATLIB/* $(pysite)
-
+
# SimpleJson
$(call get_src_pypi,source/s/simplejson,simplejson-2.2.1.tar.gz)\
tar -C $(tmp) -xzf $$dld
cp -R $(tmp)/simplejson-2.2.1/simplejson/ $(pysite)
-
+
# Zeroconf
$(call get_src_pypi,6b/88/48dbe88b10098f98acef33218763c5630b0081c7fd0849ab4793b1e9b6d3,zeroconf-0.19.1-py2.py3-none-any.whl)\
unzip -d $(tmp)/zeroconf $$dld
cp -R $(tmp)/zeroconf/* $(pysite)
-
- # Enum34
- $(call get_src_pypi,c5/db/e56e6b4bbac7c4a06de1c50de6fe1ef3810018ae11732a50f15f62c7d050,enum34-1.1.6-py2-none-any.whl)\
- unzip -d $(tmp)/enum34 $$dld
- cp -R $(tmp)/enum34/* $(pysite)
-
+
# netifaces
$(call get_src_pypi,05/00/c719457bcb8f14f9a7b9244c3c5e203c40d041a364cf784cf554aaef8129,netifaces-0.10.6-py2.7-win32.egg)\
unzip -d $(tmp)/netifaces $$dld
cp -R $(tmp)/netifaces/* $(pysite)
-
- # Six
- $(call get_src_pypi,67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a,six-1.11.0-py2.py3-none-any.whl)\
- unzip -d $(tmp)/six $$dld
- cp -R $(tmp)/six/* $(pysite)
-
-
+
# WxGlade
$(call get_src_http,https://bitbucket.org/wxglade/wxglade/get,034d891cc947.zip)\
unzip -d $(tmp) $$dld
mv $(tmp)/wxglade-wxglade-034d891cc947 $(pysite)/wxglade
-
+
# Pyro
$(call get_src_pypi,source/P/Pyro,Pyro-3.9.1.tar.gz)\
tar -C $(tmp) -xzf $$dld
mv $(tmp)/Pyro-3.9.1/Pyro $(pysite)
-
+
+ # Build Openssl
+ $(call get_src_http,https://openssl.org/source,$(OSSLVER).tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cd $(tmp)/$(OSSLVER); \
+ CC=$(MINGPFX)gcc ./Configure mingw && \
+ make all build-shared CROSS_COMPILE=$(MINGPFX) SHARED_LDFLAGS=-static-libgcc
+
+ # Build M2crypto
+ $(call get_src_pypi,source/M/M2Crypto,$(M2CRVER).tar.gz)\
+ tar -C $(tmp) -xzf $$dld
+ cd $(tmp)/$(M2CRVER); \
+ patch -p1 < $(src)/M2Crypto-mingw-cross-compile-fix.patch && \
+ PYTHONLIB=$(abspath $(pydir))/libs \
+ PYTHONINC=$(abspath $(pydir))/include/ \
+ MINGCCPREFIX=$(MINGPFX) \
+ python setup.py build build_ext \
+ --openssl=$(tmp)/$(OSSLVER) -cmingw32
+
+ # Copy openssl dlls directly in M2Crypto package directory
+ cp -a $(tmp)/$(OSSLVER)/*.dll $(tmp)/$(M2CRVER)/build/lib.win32-2.7/M2Crypto
+
+ # Move result into python site packages
+ mv $(tmp)/$(M2CRVER)/build/lib.win32-2.7/M2Crypto $(pysite)
+
# Lxml
$(call get_src_pypi,2.7/l/lxml,lxml-3.2.3.win32-py2.7.exe)\
unzip -d $(tmp)/lxml $$dld ; [ $$? -eq 1 ] #silence error unziping .exe
cp -R $(tmp)/lxml/PLATLIB/* $(pysite)
-
+
touch $@
matiecdir = build/matiec
@@ -248,10 +332,10 @@
rm -rf $(matiecdir)
mkdir -p $(matiecdir)
mv $(tmp)/matiec/*.exe $(matiecdir)
-
+
# install necessary shared libraries from local cross-compiler
$(call get_runtime_libs,$(matiecdir))
-
+
mv $(tmp)/matiec/lib $(matiecdir)
touch $@
@@ -261,7 +345,7 @@
beremiz: | build examples
$(call get_src_hg,build/beremiz)
- $(call tweak_beremiz_targets)
+ $(call tweak_beremiz_source)
rm -rf examples/canopen_tests
mkdir -p examples/canopen_tests
mv build/beremiz/tests/canopen_* examples/canopen_tests