Directory maintenance
- rearrange obsolete build scripts - rearrange working build scripts - add build / devel scripts I use - add existing development tests (bloom filter, message encoding, thread interrupts) - add directory descriptions
This commit is contained in:
parent
7ca6576dfc
commit
3033520995
2
build/README.md
Normal file
2
build/README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
This directory contains scripts that are helpful for developers when building
|
||||
or maintaining PyBitmessage.
|
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
|
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"
|
22
build/updatetranslations.sh
Executable file
22
build/updatetranslations.sh
Executable file
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ ! -f "$1" ]; then
|
||||
echo "$1 not found, please specify the file name for source"
|
||||
exit
|
||||
fi
|
||||
|
||||
srcdir=`mktemp -d`
|
||||
|
||||
unzip "$1" -d $srcdir
|
||||
|
||||
for i in $srcdir/*ts; do
|
||||
o=`basename $i|cut -b3-`
|
||||
o="${o,,}"
|
||||
o="${o//@/_}"
|
||||
echo "$i -> $o"
|
||||
mv "$i" "$HOME/src/PyBitmessage/src/translations/$o"
|
||||
done
|
||||
|
||||
rm -rf -- $srcdir
|
||||
|
||||
lrelease-qt4 "$HOME/src/PyBitmessage/src/translations/bitmessage.pro"
|
3
dev/README.md
Normal file
3
dev/README.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
This directory contains code for future features, but it's not integrated into
|
||||
PyBitmessage and may not work at all. Developers can look at it if they are
|
||||
interested.
|
60
dev/bloomfiltertest.py
Normal file
60
dev/bloomfiltertest.py
Normal file
|
@ -0,0 +1,60 @@
|
|||
from math import ceil
|
||||
from os import stat, getenv, path
|
||||
from pybloom import BloomFilter as BloomFilter1
|
||||
from pybloomfilter import BloomFilter as BloomFilter2
|
||||
import sqlite3
|
||||
from time import time
|
||||
|
||||
# Ubuntu: apt-get install python-pybloomfiltermmap
|
||||
|
||||
conn = sqlite3.connect(path.join(getenv("HOME"), '.config/PyBitmessage/messages.dat'))
|
||||
|
||||
conn.text_factory = str
|
||||
cur = conn.cursor()
|
||||
rawlen = 0
|
||||
itemcount = 0
|
||||
|
||||
cur.execute('''SELECT COUNT(hash) FROM inventory''')
|
||||
for row in cur.fetchall():
|
||||
itemcount = row[0]
|
||||
|
||||
filtersize = 1000 * (int(itemcount / 1000) + 1)
|
||||
errorrate = 1.0 / 1000.0
|
||||
|
||||
bf1 = BloomFilter1(capacity=filtersize, error_rate=errorrate)
|
||||
bf2 = BloomFilter2(capacity=filtersize, error_rate=errorrate)
|
||||
|
||||
item = '''SELECT hash FROM inventory'''
|
||||
cur.execute(item, '')
|
||||
bf1time = 0
|
||||
bf2time = 0
|
||||
for row in cur.fetchall():
|
||||
rawlen += len(row[0])
|
||||
try:
|
||||
times = [time()]
|
||||
bf1.add(row[0])
|
||||
times.append(time())
|
||||
bf2.add(row[0])
|
||||
times.append(time())
|
||||
bf1time += times[1] - times[0]
|
||||
bf2time += times[2] - times[1]
|
||||
except IndexError:
|
||||
pass
|
||||
|
||||
#f = open("/home/shurdeek/tmp/bloom.dat", "wb")
|
||||
#sb1.tofile(f)
|
||||
#f.close()
|
||||
|
||||
|
||||
print "Item count: %i" % (itemcount)
|
||||
print "Raw length: %i" % (rawlen)
|
||||
print "Bloom filter 1 length: %i, reduction to: %.2f%%" % \
|
||||
(bf1.bitarray.buffer_info()[1],
|
||||
100.0 * bf1.bitarray.buffer_info()[1] / rawlen)
|
||||
print "Bloom filter 1 capacity: %i and error rate: %.3f%%" % (bf1.capacity, 100.0 * bf1.error_rate)
|
||||
print "Bloom filter 1 took %.2fs" % (bf1time)
|
||||
print "Bloom filter 2 length: %i, reduction to: %.3f%%" % \
|
||||
(bf2.num_bits / 8,
|
||||
100.0 * bf2.num_bits / 8 / rawlen)
|
||||
print "Bloom filter 2 capacity: %i and error rate: %.3f%%" % (bf2.capacity, 100.0 * bf2.error_rate)
|
||||
print "Bloom filter 2 took %.2fs" % (bf2time)
|
27
dev/msgtest.py
Normal file
27
dev/msgtest.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
import importlib
|
||||
from os import listdir, path
|
||||
from pprint import pprint
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
data = {"": "message", "subject": "subject", "body": "body"}
|
||||
#data = {"": "vote", "msgid": "msgid"}
|
||||
#data = {"fsck": 1}
|
||||
|
||||
import messagetypes
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
msgType = data[""]
|
||||
except KeyError:
|
||||
print "Message type missing"
|
||||
sys.exit(1)
|
||||
else:
|
||||
print "Message type: %s" % (msgType)
|
||||
msgObj = messagetypes.constructObject(data)
|
||||
if msgObj is None:
|
||||
sys.exit(1)
|
||||
try:
|
||||
msgObj.process()
|
||||
except:
|
||||
pprint(sys.exc_info())
|
49
dev/powinterrupttest.py
Normal file
49
dev/powinterrupttest.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
import ctypes
|
||||
import hashlib
|
||||
from multiprocessing import current_process
|
||||
import os
|
||||
import signal
|
||||
from struct import unpack, pack
|
||||
from threading import current_thread
|
||||
|
||||
shutdown = 0
|
||||
|
||||
|
||||
def signal_handler(signal, frame):
|
||||
global shutdown
|
||||
print "Got signal %i in %s/%s" % (signal, current_process().name, current_thread().name)
|
||||
if current_process().name != "MainProcess":
|
||||
raise StopIteration("Interrupted")
|
||||
if current_thread().name != "MainThread":
|
||||
return
|
||||
shutdown = 1
|
||||
|
||||
|
||||
def _doCPoW(target, initialHash):
|
||||
# global shutdown
|
||||
h = initialHash
|
||||
m = target
|
||||
out_h = ctypes.pointer(ctypes.create_string_buffer(h, 64))
|
||||
out_m = ctypes.c_ulonglong(m)
|
||||
print "C PoW start"
|
||||
for c in range(0, 200000):
|
||||
print "Iter: %i" % (c)
|
||||
nonce = bmpow(out_h, out_m)
|
||||
if shutdown:
|
||||
break
|
||||
trialValue, = unpack('>Q', hashlib.sha512(hashlib.sha512(pack('>Q', nonce) + initialHash).digest()).digest()[0:8])
|
||||
if shutdown != 0:
|
||||
raise StopIteration("Interrupted")
|
||||
print "C PoW done"
|
||||
return [trialValue, nonce]
|
||||
|
||||
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
|
||||
bso = ctypes.CDLL(os.path.join("bitmsghash", "bitmsghash.so"))
|
||||
|
||||
bmpow = bso.BitmessagePOW
|
||||
bmpow.restype = ctypes.c_ulonglong
|
||||
|
||||
_doCPoW(2**44, "")
|
36
packages/README.md
Normal file
36
packages/README.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
The `generate.sh` script is obsolete, but is included for historical reasons.
|
||||
|
||||
Maintained packages can be obtained:
|
||||
|
||||
Windows:
|
||||
========
|
||||
|
||||
https://github.com/Bitmessage/PyBitmessage/releases
|
||||
|
||||
Works on Windows XP or higher.
|
||||
|
||||
|
||||
OSX:
|
||||
====
|
||||
|
||||
https://github.com/Bitmessage/PyBitmessage/releases
|
||||
|
||||
Wors on OSX 10.7.5 or higher
|
||||
|
||||
|
||||
Arch linux:
|
||||
===========
|
||||
|
||||
Releases matching PyBitmessage releases:
|
||||
|
||||
https://aur.archlinux.org/packages/pybitmessage-git/
|
||||
|
||||
Development snapshot equivalent to the v0.6 git branch:
|
||||
|
||||
https://aur.archlinux.org/packages/pybitmessage-dev-git/
|
||||
|
||||
|
||||
FreeBSD:
|
||||
========
|
||||
|
||||
Use the FreeBSD ports.
|
Reference in New Issue
Block a user