diff --git a/buildscripts/builder.sh b/buildscripts/builder.sh new file mode 100755 index 00000000..07949fa4 --- /dev/null +++ b/buildscripts/builder.sh @@ -0,0 +1,173 @@ +#!/bin/bash + +# INIT +MACHINE_TYPE=`uname -m` +BASE_DIR=$(pwd) +PYTHON_VERSION=2.7.15 +PYQT_VERSION=4-4.11.4-gpl-Py2.7-Qt4.8.7 +OPENSSL_VERSION=1_0_2t +DIRECTORY32BIT=SoftwareDownloads32bit +DIRECTORY64BIT=SoftwareDownloads64bit + +if [ ${MACHINE_TYPE} == 'x86_64' ]; then + if [ ! -d "$DIRECTORY64BIT" ]; then + mkdir SoftwareDownloads64bit + cd SoftwareDownloads64bit + else + echo "Directory already exists" + cd SoftwareDownloads64bit + fi +else + if [ ! -d "$DIRECTORY32BIT" ]; then + mkdir SoftwareDownloads32bit + cd SoftwareDownloads32bit + else + echo "Directory 32 bit alrready exists" + cd SoftwareDownloads32bit + fi +fi +#Functions +function install_wine { + + + wget -nc https://dl.winehq.org/wine-builds/Release.key --no-check-certificate + sudo apt-key add Release.key + sudo apt-add-repository 'https://dl.winehq.org/wine-builds/ubuntu/' + sudo apt-get -y update + sudo apt-get -y install wine1.8 winetricks + if [ ${MACHINE_TYPE} == 'x86_64' ]; then + sudo apt-get -y install wine64-development + env WINEPREFIX=$HOME/.wine64 WINEARCH=win64 winecfg + WINE="env WINEPREFIX=$HOME/.wine64 wine" + export WINEPREFIX + + else + sudo apt-get -y install wine32-development + env WINEPREFIX=$HOME/.wine32 WINEARCH=win32 winecfg + WINE="env WINEPREFIX=$HOME/.wine32 wine" + export WINEPREFIX + + fi +} + +function install_python(){ + echo "Download Python2.7" + + if [ ${MACHINE_TYPE} == 'x86_64' ]; then + # For 64 bit machine + wget -nc wget http://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.amd64.msi --no-check-certificate + echo "Install Python2.7 for 64 bit" + $WINE msiexec -i python-${PYTHON_VERSION}.amd64.msi /q /norestart + + wget -nc https://download.microsoft.com/download/d/2/4/d242c3fb-da5a-4542-ad66-f9661d0a8d19/vcredist_x64.exe --no-check-certificate + $WINE vcredist_x64.exe /q /norestart + echo "Installed vcredist for 64 bit" + $WINE pip install --upgrade pip + + else + # For 32 bit machine + wget -nc https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.msi --no-check-certificate + echo "Install Python2.7 for 32 bit" + $WINE msiexec -i python-${PYTHON_VERSION}.msi /q /norestart + + echo "Installing vc_redist for 32 bit " + wget -nc https://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe --no-check-certificate + $WINE vcredist_x86.exe /q /norestart + #insatlled msvcr120.dll for 32 bit system + wget -nc http://www.dll-found.com/zip/m/msvcr120.dll.zip --no-check-certificate + unzip msvcr120.dll.zip + sudo cp msvcr120.dll $HOME/.wine32/drive_c/windows/system32/ + $WINE pip install --upgrade pip + + fi +} + +function install_pyqt(){ + + echo "Download PyQT" + if [ ${MACHINE_TYPE} == 'x86_64' ]; then + # For 64 bit machine + wget -nc --content-disposition https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe?raw=true --no-check-certificate + $WINE PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe /q /norestart /silent /verysiling /sp- /suppressmsgboxes + else + # For 32 bit machine + wget -nc --content-disposition https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x32.exe?raw=true --no-check-certificate + $WINE PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x32.exe /q /norestart /silent /verysiling /sp- /suppressmsgboxes + fi +} + +function install_openssl(){ + if [ ${MACHINE_TYPE} == 'x86_64' ]; then + wget -nc --content-disposition https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/Win64OpenSSL-${OPENSSL_VERSION}.exe?raw=true --no-check-certificate + $WINE Win64OpenSSL-${OPENSSL_VERSION}.exe /q /norestart /silent /verysiling /sp- /suppressmsgboxes + + else + wget -nc --content-disposition https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/Win32OpenSSL-${OPENSSL_VERSION}.exe?raw=true --no-check-certificate + $WINE Win32OpenSSL-${OPENSSL_VERSION}.exe /q /norestart /silent /verysiling /sp- /suppressmsgboxes + echo "Install PyInstaller 32 bit" + fi +} + +function install_pyinstaller() +{ + $WINE pip install pyinstaller + echo "Install PyInstaller" + echo "Install Pyopencl" + + if [ ${MACHINE_TYPE} == 'x86_64' ]; then + wget -nc https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/pyopencl-2015.1-cp27-none-win_amd64.whl --no-check-certificate + $WINE pip install pyopencl-2015.1-cp27-none-win_amd64.whl + $WINE pip install msgpack-python + + else + wget -nc --content-disposition https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/pyopencl-2015.1-cp27-none-win_amd64one-win32.whl?raw=true --no-check-certificate + $WINE pip install msgpack-python + $WINE pip install pyopencl-2015.1-cp27-none-win32.whl + fi + echo "Install Message Pack" + +} + + +function build_dll(){ + cd $BASE_DIR + rm -rf master.zip + rm -rf PyBitmessage + git clone https://github.com/Bitmessage/PyBitmessage.git + cd PyBitmessage/src/bitmsghash + if [ ${MACHINE_TYPE} == 'x86_64' ]; then + # Do stuff for 64 bit machine + echo "Install MinGW" + sudo apt-get -y install mingw-w64 + echo "Create dll" + x86_64-w64-mingw32-g++ -D_WIN32 -Wall -O3 -march=native -I$HOME/.wine64/drive_c/OpenSSL-Win64/include -I/usr/x86_64-w64-mingw32/include -L$HOME/.wine64/drive_c/OpenSSL-Win64/lib -c bitmsghash.cpp + x86_64-w64-mingw32-g++ -static-libgcc -shared bitmsghash.o -D_WIN32 -O3 -march=native -I$HOME/.wine64/drive_c/OpenSSL-Win64/include -L$HOME/.wine64/drive_c/OpenSSL-Win64 -L/usr/lib/x86_64-linux-gnu/wine -fPIC -shared -lcrypt32 -leay32 -lwsock32 -o bitmsghash64.dll -Wl,--out-implib,bitmsghash.a + echo "DLL generated successfully " + cd .. + cp -R bitmsghash ../../../src/ + cd ../../../ + cd packages/pyinstaller/ + env WINEPREFIX=$HOME/.wine64 wine pyinstaller bitmessagemain.spec + else + echo "Install MinGW for 32 bit" + sudo apt-get install mingw-w64 + echo "Create dll" + + + i686-w64-mingw32-g++ -D_WIN32 -Wall -m32 -O3 -march=native -I$HOME/.wine32/drive_c/OpenSSL-Win32/include -I/usr/i686-w64-mingw32/include -L$HOME/.wine32/drive_c/OpenSSL-Win32/lib -c bitmsghash.cpp + i686-w64-mingw32-g++ -static-libgcc -shared bitmsghash.o -D_WIN32 -O3 -march=native -I$HOME/.wine32/drive_c/OpenSSL-Win32/include -L$HOME/.wine32/drive_c/OpenSSL-Win32/lib/MinGW -fPIC -shared -lcrypt32 -leay32 -lwsock32 -o bitmsghash32.dll -Wl,--out-implib,bitmsghash.a + cd .. + cp -R bitmsghash ../../../src/ + cd ../../../ + cd packages/pyinstaller/ + env WINEPREFIX=$HOME/.wine32 wine pyinstaller bitmessagemain.spec + fi +} + + +install_wine +install_python +install_pyqt +install_openssl +install_pyinstaller +build_dll