Compare commits
No commits in common. "v0.6" and "python3android" have entirely different histories.
v0.6
...
python3and
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -17,5 +17,4 @@ dist
|
|||
*.egg-info
|
||||
docs/_*/*
|
||||
docs/autodoc/
|
||||
build
|
||||
pyan/
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
version: 2
|
||||
|
||||
python:
|
||||
version: 2.7
|
||||
install:
|
||||
- requirements: docs/requirements.txt
|
||||
- method: setuptools
|
||||
path: .
|
||||
system_packages: true
|
|
@ -6,7 +6,6 @@ addons:
|
|||
packages:
|
||||
- build-essential
|
||||
- libcap-dev
|
||||
- tor
|
||||
install:
|
||||
- pip install -r requirements.txt
|
||||
- ln -s src pybitmessage # tests environment
|
||||
|
|
2
COPYING
2
COPYING
|
@ -1,5 +1,5 @@
|
|||
Copyright (c) 2012-2016 Jonathan Warren
|
||||
Copyright (c) 2012-2020 The Bitmessage Developers
|
||||
Copyright (c) 2012-2019 The Bitmessage Developers
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
51
LICENSE
51
LICENSE
|
@ -1,6 +1,6 @@
|
|||
The MIT License (MIT)
|
||||
Copyright (c) 2012-2016 Jonathan Warren
|
||||
Copyright (c) 2012-2020 The Bitmessage Developers
|
||||
Copyright (c) 2012-2019 The Bitmessage Developers
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
@ -22,7 +22,7 @@ SOFTWARE.
|
|||
|
||||
===== qidenticon.py identicon python implementation with QPixmap output by sendiulo <sendiulo@gmx.net>
|
||||
|
||||
qidenticon.py is Licensed under FreeBSD License.
|
||||
qidenticon.py is Licesensed under FreeBSD License.
|
||||
(http://www.freebsd.org/copyright/freebsd-license.html)
|
||||
|
||||
Copyright 2013 "Sendiulo". All rights reserved.
|
||||
|
@ -36,7 +36,7 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR I
|
|||
|
||||
===== based on identicon.py identicon python implementation. by Shin Adachi <shn@glucose.jp>
|
||||
|
||||
identicon.py is Licensed under FreeBSD License.
|
||||
identicon.py is Licesensed under FreeBSD License.
|
||||
(http://www.freebsd.org/copyright/freebsd-license.html)
|
||||
|
||||
Copyright 1994-2009 Shin Adachi. All rights reserved.
|
||||
|
@ -47,48 +47,3 @@ Redistribution and use in source and binary forms, with or without modification,
|
|||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
===== based on asyncore_pollchoose.py asyncore_pollchoose python implementation. by Sam Rushing <rushing@nightmare.com>
|
||||
|
||||
Copyright 1996 by Sam Rushing. All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and
|
||||
its documentation for any purpose and without fee is hereby
|
||||
granted, provided that the above copyright notice appear in all
|
||||
copies and that both that copyright notice and this permission
|
||||
notice appear in supporting documentation, and that the name of Sam
|
||||
Rushing not be used in advertising or publicity pertaining to
|
||||
distribution of the software without specific, written prior
|
||||
permission.
|
||||
|
||||
SAM RUSHING DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
|
||||
NO EVENT SHALL SAM RUSHING BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
===== based on namecoin.py namecoin.py python implementation by Daniel Kraft <d@domob.eu>
|
||||
|
||||
Copyright (C) 2013 by Daniel Kraft <d@domob.eu>
|
||||
|
||||
This file is part of the Bitmessage project.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -14,10 +14,12 @@ Development
|
|||
----------
|
||||
Bitmessage is a collaborative project. You are welcome to submit pull requests
|
||||
although if you plan to put a non-trivial amount of work into coding new
|
||||
features, it is recommended that you first describe your ideas in the
|
||||
separate issue.
|
||||
features, it is recommended that you first solicit feedback on the DevTalk
|
||||
pseudo-mailing list:
|
||||
BM-2D9QKN4teYRvoq2fyzpiftPh9WP9qggtzh
|
||||
|
||||
Feel welcome to join chan "bitmessage", BM-2cWy7cvHoq3f1rYMerRJp8PT653jjSuEdY
|
||||
Feel welcome to join chan "bitmessage", BM-2cWy7cvHoq3f1rYMerRJp8PT653jjSuEdY
|
||||
which is on preview here: https://beamstat.com/chan/bitmessage
|
||||
|
||||
References
|
||||
----------
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
PyBitmessage(Android)
|
||||
|
||||
This sample aims to be as close to a real world example of a mobile. It has a more refined design and also provides a practical example of how a mobile app would interact and communicate with its addresses.
|
||||
This sample aims to be as close to a real world example of a mobile. It has a more refined design and also provides a practical example of how a mobile app would interact and communicate with its adresses.
|
||||
|
||||
Steps for trying out this sample:
|
||||
|
||||
|
@ -13,7 +13,7 @@ This sample uses the kivy as Kivy is an open source, cross-platform Python frame
|
|||
|
||||
Kivy is written in Python and Cython, supports various input devices and has an extensive widget library. With the same codebase, you can target Windows, OS X, Linux, Android and iOS. All Kivy widgets are built with multitouch support.
|
||||
|
||||
Kivy in support take Buildozer which is a tool that automates the entire build process. It downloads and sets up all the prerequisite for python-for-android, including the android SDK and NDK, then builds an apk that can be automatically pushed to the device.
|
||||
Kivy in support take Buildozer which is a tool that automates the entire build process. It downloads and sets up all the prequisites for python-for-android, including the android SDK and NDK, then builds an apk that can be automatically pushed to the device.
|
||||
|
||||
Buildozer currently works only in Linux, and is an alpha release, but it already works well and can significantly simplify the apk build.
|
||||
|
||||
|
|
16
build/changelang.sh
Executable file
16
build/changelang.sh
Executable file
|
@ -0,0 +1,16 @@
|
|||
export LANG=de_DE.UTF-8
|
||||
export LANGUAGE=de_DE
|
||||
export LC_CTYPE="de_DE.UTF-8"
|
||||
export LC_NUMERIC=de_DE.UTF-8
|
||||
export LC_TIME=de_DE.UTF-8
|
||||
export LC_COLLATE="de_DE.UTF-8"
|
||||
export LC_MONETARY=de_DE.UTF-8
|
||||
export LC_MESSAGES="de_DE.UTF-8"
|
||||
export LC_PAPER=de_DE.UTF-8
|
||||
export LC_NAME=de_DE.UTF-8
|
||||
export LC_ADDRESS=de_DE.UTF-8
|
||||
export LC_TELEPHONE=de_DE.UTF-8
|
||||
export LC_MEASUREMENT=de_DE.UTF-8
|
||||
export LC_IDENTIFICATION=de_DE.UTF-8
|
||||
export LC_ALL=
|
||||
python2.7 src/bitmessagemain.py
|
23
build/compiletest.py
Executable file
23
build/compiletest.py
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/python2.7
|
||||
|
||||
import ctypes
|
||||
import fnmatch
|
||||
import os
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
matches = []
|
||||
for root, dirnames, filenames in os.walk('src'):
|
||||
for filename in fnmatch.filter(filenames, '*.py'):
|
||||
matches.append(os.path.join(root, filename))
|
||||
|
||||
for filename in matches:
|
||||
source = open(filename, 'r').read() + '\n'
|
||||
try:
|
||||
compile(source, filename, 'exec')
|
||||
except Exception as e:
|
||||
if 'win' in sys.platform:
|
||||
ctypes.windll.user32.MessageBoxA(0, traceback.format_exc(), "Exception in " + filename, 1)
|
||||
else:
|
||||
print "Exception in %s: %s" % (filename, traceback.format_exc())
|
||||
sys.exit(1)
|
11
build/mergepullrequest.sh
Executable file
11
build/mergepullrequest.sh
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "You must specify pull request number"
|
||||
exit
|
||||
fi
|
||||
|
||||
git pull
|
||||
git checkout v0.6
|
||||
git fetch origin pull/"$1"/head:"$1"
|
||||
git merge --ff-only "$1"
|
173
buildscripts/builder.sh
Executable file
173
buildscripts/builder.sh
Executable file
|
@ -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
|
|
@ -1,169 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
# INIT
|
||||
MACHINE_TYPE=`uname -m`
|
||||
BASE_DIR=$(pwd)
|
||||
PYTHON_VERSION=2.7.17
|
||||
PYQT_VERSION=4-4.11.4-gpl-Py2.7-Qt4.8.7
|
||||
OPENSSL_VERSION=1_0_2t
|
||||
SRCPATH=~/Downloads
|
||||
|
||||
#Functions
|
||||
function download_sources_32 {
|
||||
if [ ! -d ${SRCPATH} ]; then
|
||||
mkdir -p ${SRCPATH}
|
||||
fi
|
||||
wget -P ${SRCPATH} -c -nc --content-disposition \
|
||||
https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.msi \
|
||||
https://download.microsoft.com/download/1/1/1/1116b75a-9ec3-481a-a3c8-1777b5381140/vcredist_x86.exe \
|
||||
https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/PyQt${PYQT_VERSION}-x32.exe?raw=true \
|
||||
https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/Win32OpenSSL-${OPENSSL_VERSION}.exe?raw=true \
|
||||
https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/pyopencl-2015.1-cp27-none-win32.whl?raw=true
|
||||
}
|
||||
|
||||
function download_sources_64 {
|
||||
if [ ! -d ${SRCPATH} ]; then
|
||||
mkdir -p ${SRCPATH}
|
||||
fi
|
||||
wget -P ${SRCPATH} -c -nc --content-disposition \
|
||||
http://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.amd64.msi \
|
||||
https://download.microsoft.com/download/d/2/4/d242c3fb-da5a-4542-ad66-f9661d0a8d19/vcredist_x64.exe \
|
||||
https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/PyQt${PYQT_VERSION}-x64.exe?raw=true \
|
||||
https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/Win64OpenSSL-${OPENSSL_VERSION}.exe?raw=true \
|
||||
https://github.com/Bitmessage/ThirdPartyLibraries/blob/master/pyopencl-2015.1-cp27-none-win_amd64.whl?raw=true
|
||||
}
|
||||
|
||||
function download_sources {
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
download_sources_64
|
||||
else
|
||||
download_sources_32
|
||||
fi
|
||||
}
|
||||
|
||||
function install_wine {
|
||||
echo "Setting up wine"
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
export WINEPREFIX=${HOME}/.wine64 WINEARCH=win64
|
||||
else
|
||||
export WINEPREFIX=${HOME}/.wine32 WINEARCH=win32
|
||||
fi
|
||||
rm -rf ${WINEPREFIX}
|
||||
rm -rf packages/pyinstaller/{build,dist}
|
||||
}
|
||||
|
||||
function install_python(){
|
||||
cd ${SRCPATH}
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
echo "Installing Python ${PYTHON_VERSION} 64b"
|
||||
wine msiexec -i python-${PYTHON_VERSION}.amd64.msi /q /norestart
|
||||
echo "Installing vcredist for 64 bit"
|
||||
wine vcredist_x64.exe /q /norestart
|
||||
else
|
||||
echo "Installing Python ${PYTHON_VERSION} 32b"
|
||||
wine msiexec -i python-${PYTHON_VERSION}.msi /q /norestart
|
||||
# MSVCR 2008 required for Windows XP
|
||||
cd ${SRCPATH}
|
||||
echo "Installing vc_redist (2008) for 32 bit "
|
||||
wine vcredist_x86.exe /Q
|
||||
fi
|
||||
# add cert
|
||||
if [ -f /usr/local/share/ca-certificates/bitmessage-proxy.crt ]; then
|
||||
wine python -m pip config set global.cert 'z:\usr\local\share\ca-certificates\bitmessage-proxy.crt'
|
||||
fi
|
||||
echo "Upgrading pip"
|
||||
wine python -m pip install --upgrade pip
|
||||
}
|
||||
|
||||
function install_pyqt(){
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
echo "Installing PyQt-${PYQT_VERSION} 64b"
|
||||
wine PyQt${PYQT_VERSION}-x64.exe /S /WX
|
||||
else
|
||||
echo "Installing PyQt-${PYQT_VERSION} 32b"
|
||||
wine PyQt${PYQT_VERSION}-x32.exe /S /WX
|
||||
fi
|
||||
}
|
||||
|
||||
function install_openssl(){
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
echo "Installing OpenSSL ${OPENSSL_VERSION} 64b"
|
||||
wine Win64OpenSSL-${OPENSSL_VERSION}.exe /q /norestart /silent /verysilent /sp- /suppressmsgboxes
|
||||
else
|
||||
echo "Installing OpenSSL ${OPENSSL_VERSION} 32b"
|
||||
wine Win32OpenSSL-${OPENSSL_VERSION}.exe /q /norestart /silent /verysilent /sp- /suppressmsgboxes
|
||||
fi
|
||||
}
|
||||
|
||||
function install_pyinstaller()
|
||||
{
|
||||
cd ${BASE_DIR}
|
||||
echo "Installing PyInstaller"
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
wine python -m pip install pyinstaller
|
||||
else
|
||||
# 3.2.1 is the last version to work on XP
|
||||
# see https://github.com/pyinstaller/pyinstaller/issues/2931
|
||||
wine python -m pip install -I pyinstaller==3.2.1
|
||||
fi
|
||||
}
|
||||
|
||||
function install_msgpack()
|
||||
{
|
||||
cd ${BASE_DIR}
|
||||
echo "Installing msgpack"
|
||||
wine python -m pip install msgpack-python
|
||||
}
|
||||
|
||||
function install_pyopencl()
|
||||
{
|
||||
cd ${SRCPATH}
|
||||
echo "Installing PyOpenCL"
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
wine python -m pip install pyopencl-2015.1-cp27-none-win_amd64.whl
|
||||
else
|
||||
wine python -m pip install pyopencl-2015.1-cp27-none-win32.whl
|
||||
fi
|
||||
sed -Ei 's/_DEFAULT_INCLUDE_OPTIONS = .*/_DEFAULT_INCLUDE_OPTIONS = [] /' $WINEPREFIX/drive_c/Python27/Lib/site-packages/pyopencl/__init__.py
|
||||
}
|
||||
|
||||
function build_dll(){
|
||||
cd ${BASE_DIR}
|
||||
cd src/bitmsghash
|
||||
if [ ${MACHINE_TYPE} == 'x86_64' ]; then
|
||||
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
|
||||
else
|
||||
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
|
||||
fi
|
||||
}
|
||||
|
||||
function build_exe(){
|
||||
cd ${BASE_DIR}
|
||||
cd packages/pyinstaller
|
||||
wine pyinstaller bitmessagemain.spec
|
||||
}
|
||||
|
||||
# prepare on ubuntu
|
||||
# dpkg --add-architecture i386
|
||||
# apt update
|
||||
# apt -y install wget wine-stable wine-development winetricks mingw-w64 wine32 wine64 xvfb
|
||||
|
||||
|
||||
download_sources
|
||||
if [ "$1" == "--download-only" ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
install_wine
|
||||
install_python
|
||||
install_pyqt
|
||||
install_openssl
|
||||
install_pyopencl
|
||||
install_msgpack
|
||||
install_pyinstaller
|
||||
build_dll
|
||||
build_exe
|
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/env python2
|
||||
"""
|
||||
Check dependencies and give recommendations about how to satisfy them
|
||||
Check dependendies and give recommendations about how to satisfy them
|
||||
|
||||
Limitations:
|
||||
|
||||
|
@ -164,7 +164,7 @@ if (not compiler or prereqs) and OPSYS in PACKAGE_MANAGER:
|
|||
if not compiler:
|
||||
compilerToPackages()
|
||||
prereqToPackages()
|
||||
if prereqs and mandatory:
|
||||
if mandatory:
|
||||
sys.exit(1)
|
||||
else:
|
||||
print("All the dependencies satisfied, you can install PyBitmessage")
|
||||
|
|
22
debian/README.Debian
vendored
22
debian/README.Debian
vendored
|
@ -1,22 +0,0 @@
|
|||
bitmessage for Debian
|
||||
--------------------
|
||||
|
||||
In order to build the .deb yourself, you'll first have to install the stuff that's neccessary to compile .debs:
|
||||
|
||||
|
||||
apt-get install python-minimal python-setuptools python-all \
|
||||
python openssl libssl-dev dh-apparmor debhelper dh-python \
|
||||
python-msgpack python-qt4 git
|
||||
|
||||
|
||||
Next make some build directory and clone the newest git repository:
|
||||
|
||||
And if I haven't forgotten anything, you can build the .deb package now:
|
||||
|
||||
|
||||
dpkg-buildpackage -us -uc
|
||||
|
||||
|
||||
I've tried this with Debian Buster, but I'd expect it to work on most if not all recent debian-based distributions. Maybe with some minor changes.
|
||||
|
||||
-- citizenaspirant <citizenadmin@helicoptarianconstitocracy.org> Wed, 29 Apr 2020 17:53:21 +0000
|
19
debian/apparmor/pybitmessage
vendored
19
debian/apparmor/pybitmessage
vendored
|
@ -1,19 +0,0 @@
|
|||
# Last Modified: Wed Apr 29 21:04:08 2020
|
||||
#include <tunables/global>
|
||||
|
||||
/usr/bin/pybitmessage {
|
||||
#include <abstractions/base>
|
||||
#include <abstractions/fonts>
|
||||
#include <abstractions/lightdm>
|
||||
#include <abstractions/python>
|
||||
#include <abstractions/user-tmp>
|
||||
|
||||
owner /home/*/.ICEauthority r,
|
||||
owner /home/*/.Xauthority r,
|
||||
owner /home/*/.config/PyBitmessage/ rw,
|
||||
owner /home/*/.config/PyBitmessage/* rwk,
|
||||
owner /home/*/.config/Trolltech.conf rwk,
|
||||
owner /home/*/.config/Trolltech.conf.* rw,
|
||||
owner /proc/*/mounts r,
|
||||
|
||||
}
|
1
debian/bitmessage-docs.docs
vendored
1
debian/bitmessage-docs.docs
vendored
|
@ -1 +0,0 @@
|
|||
README.Debian
|
5
debian/changelog
vendored
5
debian/changelog
vendored
|
@ -1,5 +0,0 @@
|
|||
bitmessage (0.7a-1) unstable; urgency=medium
|
||||
|
||||
* Initial release
|
||||
|
||||
-- citizenaspirant <citizenadmin@helicoptarianconstitocracy.org> Wed, 29 Apr 2020 17:53:21 +0000
|
1
debian/compat
vendored
1
debian/compat
vendored
|
@ -1 +0,0 @@
|
|||
11
|
20
debian/control
vendored
20
debian/control
vendored
|
@ -1,20 +0,0 @@
|
|||
Source: bitmessage
|
||||
Section: net
|
||||
Priority: optional
|
||||
Maintainer: citizenadmin <citizenadmin@helicoptarianconstitocracy.org>
|
||||
Build-Depends: debhelper (>= 11), dh-python, dh-apparmor, python-all, python-setuptools
|
||||
Standards-Version: 4.1.3
|
||||
Homepage: https://github.com/Bitmessage/PyBitmessage
|
||||
X-Python-Version: >= 2.6
|
||||
#Vcs-Browser: https://salsa.debian.org/debian/bitmessage
|
||||
Vcs-Git: https://github.com/Bitmessage/PyBitmessage
|
||||
#Testsuite: autopkgtest-pkg-python
|
||||
|
||||
Package: python-bitmessage
|
||||
Architecture: all
|
||||
Depends: ${python:Depends}, ${misc:Depends}, python, openssl, libssl-dev, python-msgpack, python-setuptools
|
||||
Suggests: apparmor, tor, python-pyopencl, python-qt4, python-stem
|
||||
Description: BitMessage Anonymous Communication Client
|
||||
.
|
||||
Bitmessage is a P2P communication protocol used to send encrypted messages to another person or to many subscribers. It is decentralized and trustless, meaning that you need-not inherently trust any entities like root certificate authorities. It uses strong authentication, which means that the sender of a message cannot be spoofed. BM aims to hide metadata from passive eavesdroppers like those ongoing warrantless wiretapping programs. Hence the sender and receiver of Bitmessages stay anonymous.
|
||||
|
38
debian/copyright
vendored
38
debian/copyright
vendored
|
@ -1,38 +0,0 @@
|
|||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: bitmessage
|
||||
Source: <url://example.com>
|
||||
|
||||
Files: *
|
||||
Copyright: <years> <put author's name and email here>
|
||||
<years> <likewise for another author>
|
||||
License: <special license>
|
||||
<Put the license of the package here indented by 1 space>
|
||||
<This follows the format of Description: lines in control file>
|
||||
.
|
||||
<Including paragraphs>
|
||||
|
||||
# If you want to use GPL v2 or later for the /debian/* files use
|
||||
# the following clauses, or change it to suit. Delete these two lines
|
||||
Files: debian/*
|
||||
Copyright: 2020 unknown <builder@unknown>
|
||||
License: GPL-2+
|
||||
This package is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
.
|
||||
This package is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
.
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License version 2 can be found in "/usr/share/common-licenses/GPL-2".
|
||||
|
||||
# Please also look if there are files or directories which have a
|
||||
# different copyright/license attached and list them here.
|
||||
# Please avoid picking licenses with terms that are more restrictive than the
|
||||
# packaged work, as it may make Debian's contributions unacceptable upstream.
|
4
debian/menu
vendored
4
debian/menu
vendored
|
@ -1,4 +0,0 @@
|
|||
?package(bitmessage): \
|
||||
needs="X11|text|vc|wm" \
|
||||
section="Applications/Office"\
|
||||
title="bitmessage" command="/usr/bin/bitmessage"
|
2
debian/python-bitmessage.install
vendored
2
debian/python-bitmessage.install
vendored
|
@ -1,2 +0,0 @@
|
|||
debian/apparmor/pybitmessage etc/apparmor.d
|
||||
|
19
debian/rules
vendored
19
debian/rules
vendored
|
@ -1,19 +0,0 @@
|
|||
#!/usr/bin/make -f
|
||||
# See debhelper(7) (uncomment to enable)
|
||||
# output every command that modifies files on the build system.
|
||||
export DH_VERBOSE = 1
|
||||
export DH_OPTIONS=-v
|
||||
|
||||
export PYBUILD_NAME=bitmessage
|
||||
|
||||
%:
|
||||
dh $@ --with python2 --buildsystem=pybuild
|
||||
dh_apparmor --profile-name=pybitmessage -ppython-bitmessage
|
||||
|
||||
# If you need to rebuild the Sphinx documentation
|
||||
# Add spinxdoc to the dh --with line
|
||||
#override_dh_auto_build:
|
||||
# dh_auto_build
|
||||
# PYTHONPATH=. http_proxy='127.0.0.1:9' sphinx-build -N -bhtml docs/ build/html # HTML generator
|
||||
# PYTHONPATH=. http_proxy='127.0.0.1:9' sphinx-build -N -bman docs/ build/man # Manpage generator
|
||||
|
1
debian/source/format
vendored
1
debian/source/format
vendored
|
@ -1 +0,0 @@
|
|||
3.0 (quilt)
|
1
debian/source/options
vendored
1
debian/source/options
vendored
|
@ -1 +0,0 @@
|
|||
extend-diff-ignore = "^[^/]*[.]egg-info/"
|
4
docs/_static/custom.css
vendored
4
docs/_static/custom.css
vendored
|
@ -1,4 +0,0 @@
|
|||
/* Hide "On GitHub" section from versions menu */
|
||||
li.wy-breadcrumbs-aside > a.fa {
|
||||
display: none;
|
||||
}
|
119
docs/conf.py
119
docs/conf.py
|
@ -2,24 +2,35 @@
|
|||
"""
|
||||
Configuration file for the Sphinx documentation builder.
|
||||
|
||||
For a full list of options see the documentation:
|
||||
This file does only contain a selection of the most common options. For a
|
||||
full list see the documentation:
|
||||
http://www.sphinx-doc.org/en/master/config
|
||||
|
||||
-- Path setup --------------------------------------------------------------
|
||||
|
||||
If extensions (or modules to document with autodoc) are in another directory,
|
||||
add these directories to sys.path here. If the directory is relative to the
|
||||
documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from sphinx.apidoc import main
|
||||
from mock import Mock as MagicMock
|
||||
|
||||
sys.path.insert(0, os.path.abspath('.'))
|
||||
sys.path.insert(0, os.path.abspath('..'))
|
||||
sys.path.insert(0, os.path.abspath('../src'))
|
||||
sys.path.insert(0, os.path.abspath('../src/pyelliptic'))
|
||||
|
||||
from importlib import import_module
|
||||
|
||||
import version # noqa:E402
|
||||
import version
|
||||
|
||||
|
||||
# -- Project information -----------------------------------------------------
|
||||
|
||||
project = u'PyBitmessage'
|
||||
copyright = u'2019, The Bitmessage Team' # pylint: disable=redefined-builtin
|
||||
copyright = u'2018, The Bitmessage Team' # pylint: disable=redefined-builtin
|
||||
author = u'The Bitmessage Team'
|
||||
|
||||
# The short X.Y version
|
||||
|
@ -39,18 +50,15 @@ release = version
|
|||
# ones.
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx.ext.coverage', # FIXME: unused
|
||||
'sphinx.ext.imgmath', # legacy unused
|
||||
# 'sphinx.ext.doctest', # Currently disabled due to bad doctests
|
||||
'sphinx.ext.intersphinx',
|
||||
'sphinx.ext.linkcode',
|
||||
'sphinx.ext.napoleon',
|
||||
'sphinx.ext.todo',
|
||||
'sphinxcontrib.apidoc',
|
||||
'sphinx.ext.coverage',
|
||||
'sphinx.ext.imgmath',
|
||||
'sphinx.ext.viewcode',
|
||||
'm2r',
|
||||
]
|
||||
|
||||
default_role = 'obj'
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
|
@ -67,29 +75,23 @@ master_doc = 'index'
|
|||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
# language = None
|
||||
language = None
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
# This pattern also affects html_static_path and html_extra_path .
|
||||
exclude_patterns = ['_build']
|
||||
exclude_patterns = [u'_build', 'Thumbs.db', '.DS_Store']
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# Don't prepend every class or function name with full module path
|
||||
add_module_names = False
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
modindex_common_prefix = ['pybitmessage.']
|
||||
|
||||
|
||||
# -- Options for HTML output -------------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
html_theme = 'alabaster'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
|
@ -102,10 +104,6 @@ html_theme = 'sphinx_rtd_theme'
|
|||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['_static']
|
||||
|
||||
html_css_files = [
|
||||
'custom.css',
|
||||
]
|
||||
|
||||
# Custom sidebar templates, must be a dictionary that maps document names
|
||||
# to template names.
|
||||
#
|
||||
|
@ -116,7 +114,10 @@ html_css_files = [
|
|||
#
|
||||
# html_sidebars = {}
|
||||
|
||||
html_show_sourcelink = False
|
||||
# Deal with long lines in source view
|
||||
html_theme_options = {
|
||||
'page_width': '1366px',
|
||||
}
|
||||
|
||||
# -- Options for HTMLHelp output ---------------------------------------------
|
||||
|
||||
|
@ -198,74 +199,10 @@ epub_exclude_files = ['search.html']
|
|||
|
||||
# -- Extension configuration -------------------------------------------------
|
||||
|
||||
autodoc_mock_imports = [
|
||||
'debug',
|
||||
'pybitmessage.bitmessagekivy',
|
||||
'pybitmessage.bitmessageqt.addressvalidator',
|
||||
'pybitmessage.helper_startup',
|
||||
'pybitmessage.network.httpd',
|
||||
'pybitmessage.network.https',
|
||||
'ctypes',
|
||||
'dialog',
|
||||
'gi',
|
||||
'kivy',
|
||||
'logging',
|
||||
'msgpack',
|
||||
'numpy',
|
||||
'pkg_resources',
|
||||
'pycanberra',
|
||||
'pyopencl',
|
||||
'PyQt4',
|
||||
'pyxdg',
|
||||
'qrcode',
|
||||
'stem',
|
||||
]
|
||||
autodoc_member_order = 'bysource'
|
||||
|
||||
# Apidoc settings
|
||||
apidoc_module_dir = '../pybitmessage'
|
||||
apidoc_output_dir = 'autodoc'
|
||||
apidoc_excluded_paths = [
|
||||
'bitmessagekivy', 'build_osx.py',
|
||||
'bitmessageqt/addressvalidator.py', 'bitmessageqt/migrationwizard.py',
|
||||
'bitmessageqt/newaddresswizard.py', 'helper_startup.py',
|
||||
'kivymd', 'main.py', 'navigationdrawer', 'network/http*',
|
||||
'pybitmessage', 'tests', 'version.py'
|
||||
]
|
||||
apidoc_module_first = True
|
||||
apidoc_separate_modules = True
|
||||
apidoc_toc_file = False
|
||||
apidoc_extra_args = ['-a']
|
||||
|
||||
# Napoleon settings
|
||||
napoleon_google_docstring = True
|
||||
|
||||
|
||||
# linkcode function
|
||||
def linkcode_resolve(domain, info):
|
||||
"""This generates source URL's for sphinx.ext.linkcode"""
|
||||
if domain != 'py' or not info['module']:
|
||||
return
|
||||
try:
|
||||
home = os.path.abspath(import_module('pybitmessage').__path__[0])
|
||||
mod = import_module(info['module']).__file__
|
||||
except ImportError:
|
||||
return
|
||||
repo = 'https://github.com/Bitmessage/PyBitmessage/blob/v0.6/src%s'
|
||||
path = mod.replace(home, '')
|
||||
if path != mod:
|
||||
# put the link only for top level definitions
|
||||
if len(info['fullname'].split('.')) > 1:
|
||||
return
|
||||
if path.endswith('.pyc'):
|
||||
path = path[:-1]
|
||||
return repo % path
|
||||
|
||||
|
||||
# -- Options for intersphinx extension ---------------------------------------
|
||||
|
||||
# Example configuration for intersphinx: refer to the Python standard library.
|
||||
intersphinx_mapping = {'https://docs.python.org/2.7/': None}
|
||||
intersphinx_mapping = {'https://docs.python.org/': None}
|
||||
|
||||
# -- Options for todo extension ----------------------------------------------
|
||||
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
.. mdinclude:: ../../../fabfile/README.md
|
||||
.. mdinclude:: fabfile/README.md
|
||||
|
||||
|
|
|
@ -21,12 +21,12 @@ If we are to make bold claims about protecting your privacy we should demonstrat
|
|||
- looking to audit
|
||||
- warrant canary
|
||||
|
||||
Digital footprint
|
||||
Digital foootprint
|
||||
------------------
|
||||
|
||||
Your internet use can reveal metadata you wouldn't expect. This can be connected with other information about you if you're not careful.
|
||||
|
||||
* Use separate addresses for different purposes
|
||||
* Use separate addresses for different puprose
|
||||
* Don't make the same mistakes all the time
|
||||
* Your language use is unique. The more you type, the more you fingerprint yourself. The words you know and use often vs the words you don't know or use often.
|
||||
|
||||
|
|
|
@ -11,17 +11,17 @@ Bitmessage makes use of fabric_ to define tasks such as building documentation o
|
|||
Code style and linters
|
||||
----------------------
|
||||
|
||||
We aim to be PEP8 compliant but we recognize that we have a long way still to go. Currently we have style and lint exceptions specified at the most specific place we can. We are ignoring certain issues project-wide in order to avoid alert-blindness, avoid style and lint regressions and to allow continuous integration to hook into the output from the tools. While it is hoped that all new changes pass the checks, fixing some existing violations are mini-projects in themselves. Current thinking on ignorable violations is reflected in the options and comments in setup.cfg. Module and line-level lint warnings represent refactoring opportunities.
|
||||
We aim to be PEP8 compliant but we recognise that we have a long way still to go. Currently we have style and lint exceptions specified at the most specific place we can. We are ignoring certain issues project-wide in order to avoid alert-blindess, avoid style and lint regressions and to allow continuous integration to hook into the output from the tools. While it is hoped that all new changes pass the checks, fixing some existing violations are mini-projects in themselves. Current thinking on ignorable violations is reflected in the options and comments in setup.cfg. Module and line-level lint warnings represent refactoring opportunities.
|
||||
|
||||
Pull requests
|
||||
-------------
|
||||
|
||||
There is a template at PULL_REQUEST_TEMPLATE.md that appears in the pull-request description. Please replace this text with something appropriate to your changes based on the ideas in the template.
|
||||
There is a template at PULL_REQUEST_TEMPLATE.md that appears in the pull-request description. Please replace this text with something appropriate to your changes based off the ideas in the template.
|
||||
|
||||
Bike-shedding
|
||||
-------------
|
||||
|
||||
Beyond having well-documented, Pythonic code with static analysis tool checks, extensive test coverage and powerful devops tools, what else can we have? Without violating any linters there is room for making arbitrary decisions solely for the sake of project consistency. These are the stuff of the pedant's PR comments. Rather than have such conversations in PR comments, we can lay out the result of discussion here.
|
||||
Beyond having well-documented, Pythonic code with static analysis tool checks, extensive test coverage and powerful devops tools, what else can we have? Without violating any linters there is room for making arbirary decisions solely for the sake of project consistency. These are the stuff of the pedant's PR comments. Rather than have such conversations in PR comments, we can lay out the result of discussion here.
|
||||
|
||||
I'm putting up a strawman for each topic here, mostly based on my memory of reading related Stack Overflow articles etc. If contributors feel strongly (and we don't have anything better to do) then maybe we can convince each other to update this section.
|
||||
|
||||
|
@ -49,7 +49,7 @@ British vs American spelling
|
|||
Dependency graph
|
||||
----------------
|
||||
|
||||
These images are not very useful right now but the aim is to tweak the settings of one or more of them to be informative, and/or divide them up into smaller graphs.
|
||||
These images are not very useful right now but the aim is to tweak the settings of one or more of them to be informative, and/or divide them up into smaller grapghs.
|
||||
|
||||
To re-build them, run `fab build_docs:dep_graphs=true`. Note that the dot graph takes a lot of time.
|
||||
|
||||
|
@ -62,7 +62,7 @@ To re-build them, run `fab build_docs:dep_graphs=true`. Note that the dot graph
|
|||
.. figure:: ../../../../_static/deps-sfdp.png
|
||||
:alt: SFDP graph of dependencies
|
||||
:width: 100 pc
|
||||
|
||||
|
||||
:index:`SFDP` graph of dependencies
|
||||
|
||||
.. figure:: ../../../../_static/deps-dot.png
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
Processes
|
||||
=========
|
||||
|
||||
In order to keep the Bitmessage project running, the team runs a number of systems and accounts that form the
|
||||
development pipeline and continuous delivery process. We are always striving to improve this process. Towards
|
||||
In other to keep the Bitmessage project running the team run a number of systems and accounts that form the
|
||||
development pipeline and continuous delivery process. We are always striving to improve the process. Towards
|
||||
that end it is documented here.
|
||||
|
||||
|
||||
|
@ -20,7 +20,7 @@ Our official Github_ account is Bitmessage. Our issue tracker is here as well.
|
|||
BitMessage
|
||||
----------
|
||||
|
||||
We eat our own dog food! You can send us bug reports via the [chan] bitmessage BM-2cWy7cvHoq3f1rYMerRJp8PT653jjSuEdY
|
||||
We eat our own dog food! You can send us bug reports via the Bitmessage chan at xxx
|
||||
|
||||
|
||||
.. _website: https://bitmessage.org
|
||||
|
|
|
@ -1,20 +1,12 @@
|
|||
.. mdinclude:: ../README.md
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
autodoc/pybitmessage
|
||||
|
||||
Legacy pages
|
||||
------------
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
overview
|
||||
usage
|
||||
contribute
|
||||
|
||||
|
||||
Indices and tables
|
||||
------------------
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
m2r
|
||||
sphinxcontrib-apidoc
|
|
@ -1,6 +1,6 @@
|
|||
# Fabric
|
||||
|
||||
[Fabric](https://www.fabfile.org) is a Python library for performing devops tasks. You can think of it a bit like a
|
||||
[Fabric](https://www.fabfile.org) is a Python library for performing devops tasks. You can thing of it a bit like a
|
||||
makefile on steroids for Python. Its api abstracts away the clunky way you would run shell commands in Python, check
|
||||
return values and manage stdio. Tasks may be targetted at particular hosts or group of hosts.
|
||||
|
||||
|
@ -46,7 +46,7 @@ Furthermore, you can use -- to run arbitrary shell commands rather than tasks:
|
|||
|
||||
There are a number of advantages that should benefit us:
|
||||
|
||||
* Common tasks can be written in Python and executed consistently
|
||||
* Common tasks can be writen in Python and executed consistently
|
||||
* Common tasks are now under source control
|
||||
* All developers can run the same commands, if the underlying command sequence for a task changes (after review, obv)
|
||||
the user does not have to care
|
||||
|
|
|
@ -15,7 +15,7 @@ OSX:
|
|||
|
||||
https://github.com/Bitmessage/PyBitmessage/releases
|
||||
|
||||
Works on OSX 10.7.5 or higher
|
||||
Wors on OSX 10.7.5 or higher
|
||||
|
||||
|
||||
Arch linux:
|
||||
|
|
|
@ -11,13 +11,13 @@ else:
|
|||
sslName = 'OpenSSL-Win%s' % ("32" if arch == 32 else "64")
|
||||
site_root = os.path.abspath(HOMEPATH)
|
||||
spec_root = os.path.abspath(SPECPATH)
|
||||
cdrivePath = site_root[0:3]
|
||||
srcPath = os.path.join(spec_root[:-20], "src")
|
||||
qtBase = "PyQt4"
|
||||
openSSLPath = os.path.join(cdrivePath, sslName)
|
||||
msvcrDllPath = os.path.join(cdrivePath, "windows", "system32")
|
||||
pythonDllPath = os.path.join(cdrivePath, "Python27")
|
||||
outPath = os.path.join(spec_root, "bitmessagemain")
|
||||
cdrivePath= site_root[0:3]
|
||||
srcPath = spec_root[:-20]+"src\\"
|
||||
qtPath = site_root+"\\PyQt4\\"
|
||||
openSSLPath = cdrivePath+sslName+"\\"
|
||||
msvcrDllPath = cdrivePath+"windows\\system32\\"
|
||||
pythonDllPath = cdrivePath+"Python27\\"
|
||||
outPath = spec_root+"\\bitmessagemain"
|
||||
|
||||
importPath = srcPath
|
||||
sys.path.insert(0,importPath)
|
||||
|
@ -31,9 +31,9 @@ os.rename(os.path.join(srcPath, '__init__.py'), os.path.join(srcPath, '__init__.
|
|||
|
||||
# -*- mode: python -*-
|
||||
a = Analysis(
|
||||
[os.path.join(srcPath, 'bitmessagemain.py')],
|
||||
[srcPath + 'bitmessagemain.py'],
|
||||
pathex=[outPath],
|
||||
hiddenimports=['bitmessageqt.languagebox', 'pyopencl','numpy', 'win32com' , 'setuptools.msvc' ,'_cffi_backend'],
|
||||
hiddenimports=['pyopencl','numpy', 'win32com' , 'setuptools.msvc' ,'_cffi_backend'],
|
||||
hookspath=None,
|
||||
runtime_hooks=None
|
||||
)
|
||||
|
@ -43,32 +43,23 @@ os.rename(os.path.join(srcPath, '__init__.py.backup'), os.path.join(srcPath, '__
|
|||
def addTranslations():
|
||||
import os
|
||||
extraDatas = []
|
||||
for file_ in os.listdir(os.path.join(srcPath, 'translations')):
|
||||
if file_[-3:] != ".qm":
|
||||
for file in os.listdir(srcPath + 'translations'):
|
||||
if file[-3:] != ".qm":
|
||||
continue
|
||||
extraDatas.append((os.path.join('translations', file_),
|
||||
os.path.join(srcPath, 'translations', file_), 'DATA'))
|
||||
for libdir in sys.path:
|
||||
qtdir = os.path.join(libdir, qtBase, 'translations')
|
||||
if os.path.isdir(qtdir):
|
||||
break
|
||||
if not os.path.isdir(qtdir):
|
||||
return extraDatas
|
||||
for file_ in os.listdir(qtdir):
|
||||
if file_[0:3] != "qt_" or file_[5:8] != ".qm":
|
||||
extraDatas.append((os.path.join('translations', file), os.path.join(srcPath, 'translations', file), 'DATA'))
|
||||
for file in os.listdir(qtPath + 'translations'):
|
||||
if file[0:3] != "qt_" or file[5:8] != ".qm":
|
||||
continue
|
||||
extraDatas.append((os.path.join('translations', file_),
|
||||
os.path.join(qtdir, file_), 'DATA'))
|
||||
extraDatas.append((os.path.join('translations', file), os.path.join(qtPath, 'translations', file), 'DATA'))
|
||||
return extraDatas
|
||||
|
||||
def addUIs():
|
||||
import os
|
||||
extraDatas = []
|
||||
for file_ in os.listdir(os.path.join(srcPath, 'bitmessageqt')):
|
||||
if file_[-3:] != ".ui":
|
||||
for file in os.listdir(srcPath + 'bitmessageqt'):
|
||||
if file[-3:] != ".ui":
|
||||
continue
|
||||
extraDatas.append((os.path.join('ui', file_), os.path.join(srcPath,
|
||||
'bitmessageqt', file_), 'DATA'))
|
||||
extraDatas.append((os.path.join('ui', file), os.path.join(srcPath, 'bitmessageqt', file), 'DATA'))
|
||||
return extraDatas
|
||||
|
||||
# append the translations directory
|
||||
|
@ -76,8 +67,10 @@ a.datas += addTranslations()
|
|||
a.datas += addUIs()
|
||||
|
||||
|
||||
a.binaries += [('libeay32.dll', os.path.join(openSSLPath, 'libeay32.dll'), 'BINARY'),
|
||||
('python27.dll', os.path.join(pythonDllPath, 'python27.dll'), 'BINARY'),
|
||||
|
||||
a.binaries += [('libeay32.dll', openSSLPath + 'libeay32.dll', 'BINARY'),
|
||||
('python27.dll', pythonDllPath + 'python27.dll', 'BINARY'),
|
||||
('msvcr120.dll', msvcrDllPath + 'msvcr120.dll','BINARY'),
|
||||
(os.path.join('bitmsghash', 'bitmsghash%i.dll' % (arch)), os.path.join(srcPath, 'bitmsghash', 'bitmsghash%i.dll' % (arch)), 'BINARY'),
|
||||
(os.path.join('bitmsghash', 'bitmsghash.cl'), os.path.join(srcPath, 'bitmsghash', 'bitmsghash.cl'), 'BINARY'),
|
||||
(os.path.join('sslkeys', 'cert.pem'), os.path.join(srcPath, 'sslkeys', 'cert.pem'), 'BINARY'),
|
||||
|
@ -100,14 +93,14 @@ exe = EXE(pyz,
|
|||
name=fname,
|
||||
debug=False,
|
||||
strip=None,
|
||||
upx=False,
|
||||
console=False, icon= os.path.join(srcPath, 'images', 'can-icon.ico'))
|
||||
upx=True,
|
||||
console=True, icon= os.path.join(srcPath, 'images', 'can-icon.ico'))
|
||||
|
||||
coll = COLLECT(exe,
|
||||
a.binaries,
|
||||
a.zipfiles,
|
||||
a.datas,
|
||||
strip=False,
|
||||
upx=False,
|
||||
upx=True,
|
||||
name='main')
|
||||
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
src
|
|
@ -1,17 +1,14 @@
|
|||
# Since there is overlap in the violations that the different tools check for, it makes sense to quiesce some warnings
|
||||
# in some tools if those warnings in other tools are preferred. This avoids the need to add duplicate lint warnings.
|
||||
|
||||
# max-line-length should be removed ASAP!
|
||||
|
||||
[pycodestyle]
|
||||
max-line-length = 119
|
||||
|
||||
[flake8]
|
||||
max-line-length = 119
|
||||
ignore = E722,F841,W503
|
||||
ignore = E722,F841
|
||||
# E722: pylint is preferred for bare-except
|
||||
# F841: pylint is preferred for unused-variable
|
||||
# W503: deprecated: https://bugs.python.org/issue26763 - https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-after-a-binary-operator
|
||||
|
||||
# pylint honours the [MESSAGES CONTROL] section
|
||||
# as well as [MASTER] section
|
||||
|
|
15
setup.py
15
setup.py
|
@ -17,7 +17,13 @@ EXTRAS_REQUIRE = {
|
|||
'qrcode': ['qrcode'],
|
||||
'sound;platform_system=="Windows"': ['winsound'],
|
||||
'tor': ['stem'],
|
||||
'docs': ['sphinx', 'sphinxcontrib-apidoc', 'm2r']
|
||||
'docs': [
|
||||
'sphinx', # fab build_docs
|
||||
'graphviz', # fab build_docs
|
||||
'curses', # src/depends.py
|
||||
'python2-pythondialog', # src/depends.py
|
||||
'm2r', # fab build_docs
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
|
@ -64,6 +70,7 @@ if __name__ == "__main__":
|
|||
'pybitmessage.network',
|
||||
'pybitmessage.plugins',
|
||||
'pybitmessage.pyelliptic',
|
||||
'pybitmessage.socks',
|
||||
'pybitmessage.storage'
|
||||
]
|
||||
|
||||
|
@ -149,9 +156,5 @@ if __name__ == "__main__":
|
|||
# ]
|
||||
},
|
||||
scripts=['src/pybitmessage'],
|
||||
cmdclass={'install': InstallCmd},
|
||||
command_options={
|
||||
'build_sphinx': {
|
||||
'source_dir': ('setup.py', 'docs')}
|
||||
}
|
||||
cmdclass={'install': InstallCmd}
|
||||
)
|
||||
|
|
|
@ -1,22 +1,25 @@
|
|||
"""
|
||||
Operations with addresses
|
||||
src/addresses.py
|
||||
================
|
||||
|
||||
"""
|
||||
# pylint: disable=redefined-outer-name,inconsistent-return-statements
|
||||
|
||||
import hashlib
|
||||
from binascii import hexlify, unhexlify
|
||||
from struct import pack, unpack
|
||||
|
||||
from debug import logger
|
||||
|
||||
|
||||
ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
|
||||
|
||||
|
||||
def encodeBase58(num, alphabet=ALPHABET):
|
||||
"""Encode a number in Base X
|
||||
|
||||
Args:
|
||||
num: The number to encode
|
||||
alphabet: The alphabet to use for encoding
|
||||
`num`: The number to encode
|
||||
`alphabet`: The alphabet to use for encoding
|
||||
"""
|
||||
if num == 0:
|
||||
return alphabet[0]
|
||||
|
@ -24,6 +27,7 @@ def encodeBase58(num, alphabet=ALPHABET):
|
|||
base = len(alphabet)
|
||||
while num:
|
||||
rem = num % base
|
||||
# print 'num is:', num
|
||||
num = num // base
|
||||
arr.append(alphabet[rem])
|
||||
arr.reverse()
|
||||
|
@ -33,9 +37,9 @@ def encodeBase58(num, alphabet=ALPHABET):
|
|||
def decodeBase58(string, alphabet=ALPHABET):
|
||||
"""Decode a Base X encoded string into the number
|
||||
|
||||
Args:
|
||||
string: The encoded string
|
||||
alphabet: The alphabet to use for encoding
|
||||
Arguments:
|
||||
- `string`: The encoded string
|
||||
- `alphabet`: The alphabet to use for encoding
|
||||
"""
|
||||
base = len(alphabet)
|
||||
num = 0
|
||||
|
@ -50,20 +54,11 @@ def decodeBase58(string, alphabet=ALPHABET):
|
|||
return num
|
||||
|
||||
|
||||
class varintEncodeError(Exception):
|
||||
"""Exception class for encoding varint"""
|
||||
pass
|
||||
|
||||
|
||||
class varintDecodeError(Exception):
|
||||
"""Exception class for decoding varint data"""
|
||||
pass
|
||||
|
||||
|
||||
def encodeVarint(integer):
|
||||
"""Convert integer into varint bytes"""
|
||||
if integer < 0:
|
||||
raise varintEncodeError('varint cannot be < 0')
|
||||
logger.error('varint cannot be < 0')
|
||||
raise SystemExit
|
||||
if integer < 253:
|
||||
return pack('>B', integer)
|
||||
if integer >= 253 and integer < 65536:
|
||||
|
@ -73,7 +68,13 @@ def encodeVarint(integer):
|
|||
if integer >= 4294967296 and integer < 18446744073709551616:
|
||||
return pack('>B', 255) + pack('>Q', integer)
|
||||
if integer >= 18446744073709551616:
|
||||
raise varintEncodeError('varint cannot be >= 18446744073709551616')
|
||||
logger.error('varint cannot be >= 18446744073709551616')
|
||||
raise SystemExit
|
||||
|
||||
|
||||
class varintDecodeError(Exception):
|
||||
"""Exception class for decoding varint data"""
|
||||
pass
|
||||
|
||||
|
||||
def decodeVarint(data):
|
||||
|
@ -178,8 +179,7 @@ def decodeAddress(address):
|
|||
returns (status, address version number, stream number,
|
||||
data (almost certainly a ripe hash))
|
||||
"""
|
||||
# pylint: disable=too-many-return-statements,too-many-statements
|
||||
# pylint: disable=too-many-branches
|
||||
# pylint: disable=too-many-return-statements,too-many-statements,too-many-return-statements,too-many-branches
|
||||
|
||||
address = str(address).strip()
|
||||
|
||||
|