Giter Site home page Giter Site logo

etherollapp's Introduction

EtherollApp

Build Status Github Actions Tests Github Actions Android PyPI version Get it on F-Droid Releases

Provably fair dice game running on the Ethereum blockchain. Built with Python, Kivy and love.

Screenshot mainscreen Screenshot roll history

Closed down

The upstream project/smart-contract closed down. https://www.reddit.com/r/etheroll/comments/peeekh/etheroll_is_closing_down/

Install & Usage

EtherollApp is available on PyPI. Therefore it can be installed via pip.

pip3 install --user EtherollApp

Once installed, it should be available in your PATH and can be ran from the command line.

etherollapp

Develop & Contribute

If you want to experiment with the project or contribute, you can clone it and install dependencies.

make

Later run the code on desktop via the run target.

make run

Unit tests are also available.

make test
make uitest

On Android you can build, deploy and run using Buildozer.

buildozer android debug deploy run logcat

And debug with logcat.

buildozer android adb -- logcat

Documentation

Find out more browsing the documentation directory: https://github.com/AndreMiras/EtherollApp/tree/develop/docs/

etherollapp's People

Contributors

andremiras avatar poussinou avatar sanjusci avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

etherollapp's Issues

Refactoring files split

The project is getting bigger so we should split in different files rather keeping it all on etheroll.{py.kv}

Remember selected account

Every time we open the app, we need to select the account for playing.
This should be kept in a user settings instead and restored when opening the application.

Per account bet history

It should be possible to see bet history for a given account.
Clicking the history would display a detailed view with:

  • bet size
  • result win/lose
  • reward
  • chances/roll under
  • actual result
  • tx hashes (both bet and callback) #49

This probably needs to be split in separated tasks.

pyetheroll.py refactoring

pyetheroll.py is currently mixing a lot of draft/trial-error code.
It needs to be refactored/cleaned

Setup continuous integration

Setup continuous integration testing using something like Travis.
It should at minimum run tox for testing the library. It would be better if it can also run UI testing.

List of CI tools working with GitHub:
https://github.com/marketplace/category/continuous-integration
Interesting graph showing top 10 most used CI tools on GitHub:
https://blog.github.com/2017-11-07-github-welcomes-all-ci-tools/
Comparing the top 3:
https://stackoverflow.com/questions/35192400/travis-vs-circleci-vs-jenkins
https://stackshare.io/stackups/circleci-vs-jenkins-vs-travis-ci

FileNotFoundError: [Errno 2] No such file or directory

After compiling the Android apk on buildozer, the file is not found for the deployment.

buildozer android debug deploy run
...
[INFO]:    <- directory context /home/andre/demo/.buildozer/android/platform/python-for-android-new-toolchain
[INFO]:    # Copying APK to current directory
[INFO]:    # Found APK file: /home/andre/demo/.buildozer/android/platform/build/dists/myapp/bin/MyApplication-0.1-debug.apk
[DEBUG]:   -> running cp /home/andre/demo/.buildozer/android/platform/build/dists/myapp/bin/MyApplication-0.1-debug.apk ./
b'Could not find hostpython, will not compile to .pyo (this is normal with python3)\nNo compiled python is present to zip, skipping.\nthis should only be the case if you are using the CrystaX python\n'Traceback (most recent call last):
  File "/home/andre/.local/bin/buildozer", line 11, in <module>
    load_entry_point('buildozer==0.34', 'console_scripts', 'buildozer')()
  File "/home/andre/.local/lib64/python3.5/site-packages/buildozer/scripts/client.py", line 13, in main
    Buildozer().run_command(sys.argv[1:])
  File "/home/andre/.local/lib64/python3.5/site-packages/buildozer/__init__.py", line 1058, in run_command
    self.target.run_commands(args)
  File "/home/andre/.local/lib64/python3.5/site-packages/buildozer/target.py", line 92, in run_commands
    func(args)
  File "/home/andre/.local/lib64/python3.5/site-packages/buildozer/target.py", line 104, in cmd_debug
    self.buildozer.build()
  File "/home/andre/.local/lib64/python3.5/site-packages/buildozer/__init__.py", line 212, in build
    self.target.build_package()
  File "/home/andre/.local/lib64/python3.5/site-packages/buildozer/targets/android.py", line 817, in build_package
    copyfile(join(apk_dir, apk), join(self.buildozer.bin_dir, apk_dest))
  File "/usr/lib64/python3.5/shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/home/andre/demo/.buildozer/android/platform/build/dists/myapp/build/outputs/apk/myapp-debug.apk'

This is a known buildozer issue kivy/buildozer#312

Python3 + greenlet install issue

Can't build greenlet (on both Gentoo and Ubuntu).

buildozer android debug
...
[INFO]:    Building python3crystax for armeabi-v7a                                                    
[INFO]:    Building greenlet for armeabi-v7a
[INFO]:    greenlet apparently isn't already in site-packages
[INFO]:    Installing greenlet into site-packages
[INFO]:    -> directory context /home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/other_builds/greenlet-python3crystax/armeabi-v7a/greenlet     
[INFO]:    -> running python3.5 setup.py install -O2 --root=/home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/python-installs/etheroll --install-lib=.
           working:  #error "LONG_BIT definition appears wrong for plaException in thread background thread for pid 5781: (bad gcc/glibc config?)."
Traceback (most recent call last):
  File "/usr/lib64/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()   
  File "/usr/lib64/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)                                                                                                                                                                                                                             File "/home/andre/.local/lib64/python2.7/site-packages/sh.py", line 2170, in background_thread                                                                                                                                                                          
    handle_exit_code(exit_code)                                                                                                                                                                                                                                              File "/home/andre/.local/lib64/python2.7/site-packages/sh.py", line 1929, in fn 
    return self.command.handle_command_exit_code(exit_code) 
  File "/home/andre/.local/lib64/python2.7/site-packages/sh.py", line 672, in handle_command_exit_code
    raise exc                      
ErrorReturnCode_1:                                                                                                             
                                                                                 
  RAN: /usr/bin/python3.5 setup.py install -O2 --root=/home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/python-installs/etheroll --install-lib=.
                                                                    
  STDOUT:
running install
running build
running build_ext
building 'greenlet' extension                                                                                                                                                                                                                                              arm-linux-androideabi-gcc -DANDROID -mandroid -fomit-frame-pointer -D__ANDROID_API__=19 -I/home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -isysroot /home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/python-installs/etheroll/include/python3.5 -DANDROID -mandroid -fomit-frame-pointer -D__ANDROID_API__=19 -I/home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm
-isysroot /home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/python-installs/etheroll/include/python3.5 -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC
 -I/usr/include/python3.5m -c greenlet.c -o build/temp.linux-x86_64-3.5/greenlet.o
In file included from /usr/include/python3.5m/Python.h:50:0,
                 from greenlet.h:8,                 
                 from greenlet.c:5:      
/usr/include/python3.5m/pyport.h:820:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
 #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
  ^
error: command 'arm-linux-androideabi-gcc' failed with exit status 1


  STDERR:


Traceback (most recent call last):
  File "/usr/lib64/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/andre/Progz/EtherollApp/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 978, in <module>
    main()
  File "/home/andre/Progz/EtherollApp/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 975, in main
    ToolchainCL()
  File "/home/andre/Progz/EtherollApp/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 512, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/home/andre/Progz/EtherollApp/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 149, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/home/andre/Progz/EtherollApp/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 193, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "pythonforandroid/build.py", line 573, in build_recipes
  File "pythonforandroid/recipe.py", line 775, in build_arch
  File "pythonforandroid/recipe.py", line 797, in install_python_package
  File "pythonforandroid/logger.py", line 175, in shprint
  File "/home/andre/.local/lib64/python2.7/site-packages/sh.py", line 720, in next
    self.wait()
  File "/home/andre/.local/lib64/python2.7/site-packages/sh.py", line 651, in wait
    self.handle_command_exit_code(exit_code)
  File "/home/andre/.local/lib64/python2.7/site-packages/sh.py", line 672, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1:

  RAN: /usr/bin/python3.5 setup.py install -O2 --root=/home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/python-installs/etheroll --install-lib=.

  STDOUT:
running install
running build
running build_ext
building 'greenlet' extension
arm-linux-androideabi-gcc -DANDROID -mandroid -fomit-frame-pointer -D__ANDROID_API__=19 -I/home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -isysroot /home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/python-installs/etheroll/include/python3.5 -DANDROID -mandroid -fomit-frame-pointer -D__ANDROID_API__=19 -I/home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -isysroot /home/andre/.buildozer/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/andre/Progz/EtherollApp/.buildozer/android/platform/build/build/python-installs/etheroll/include/python3.5 -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -fPIC -I/usr/include/python3.5m -c greenlet.c -o build/temp.linux-x86_64-3.5/greenlet.o
In file included from /usr/include/python3.5m/Python.h:50:0,
                 from greenlet.h:8,
                 from greenlet.c:5:
/usr/include/python3.5m/pyport.h:820:2: error: #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
 #error "LONG_BIT definition appears wrong for platform (bad gcc/glibc config?)."
  ^
error: command 'arm-linux-androideabi-gcc' failed with exit status 1


  STDERR:

# Command failed: /usr/bin/python2.7 -m pythonforandroid.toolchain create --dist_name=etheroll --bootstrap=sdl2 --requirements=python3crystax,kivy,gevent,https://gitlab.com/kivymd/KivyMD/repository/archive.zip?ref=19e587e6,devp2p==0.9.3,https://github.com/ethereum/pyethapp/archive/8406f32.zip,web3==4.0.0b11,https://github.com/corpetty/py-etherscan-api/archive/a783f720a6175b227cdfe8dc3040ebad3022d79f.zip,eth-testrpc==1.3.3 --arch armeabi-v7a --copy-libs --local-recipes /home/andre/Progz/EtherollApp/src/python-for-android/recipes --color=always --storage-dir=/home/andre/Progz/EtherollApp/.buildozer/android/platform/build
# 
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2

Upstream issue kivy/python-for-android#1245 and pull request kivy/python-for-android#1250

Gevent compilation issues

INFO]:    Building gevent for armeabi-v7a
[INFO]:    gevent apparently isn't already in site-packages
[INFO]:    Building compiled components in gevent
[INFO]:    -> directory context /home/ubuntu/demo/.buildozer/android/platform/build/build/other_builds/gevent-python3crystax/armeabi-v7a/gevent
[INFO]:    -> running python3.5 setup.py build_ext -v
           working: error: command 'x86_64-linux-gnu-gcc' failed with exit status 1                                                   Exception in thread background thread for pid 27865:                                                                                
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 2170, in background_thread
    handle_exit_code(exit_code)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 1929, in fn
    return self.command.handle_command_exit_code(exit_code)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 672, in handle_command_exit_code
    raise exc
ErrorReturnCode_1: 

  RAN: /usr/bin/python3.5 setup.py build_ext -v

  STDOUT:
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'install_requires'
  warnings.warn(msg)
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'setup_requires'
  warnings.warn(msg)
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'test_suite'
  warnings.warn(msg)
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'include_package_data'
  warnings.warn(msg)
/usr/lib/python3.5/distutils/dist.py:261: UserWarning: Unknown distribution option: 'zip_safe'
  warnings.warn(msg)
running build_ext
Running '(cd  "/home/ubuntu/demo/.buildozer/android/platform/build/build/other_builds/gevent-python3crystax/armeabi-v7a/gevent/libev"  && /bin/sh ./configure --host=arm-linux-androideabi  && cp config.h "$OLDPWD" ) > configure-output.txt' in /home/ubuntu/demo/.buildo
zer/android/platform/build/build/other_builds/gevent-python3crystax/armeabi-v7a/gevent/build/temp.linux-x86_64-3.5/libev
configure: WARNING: using cross tools not prefixed with host triplet
building 'gevent.corecext' extension
creating build/temp.linux-x86_64-3.5/gevent
/usr/bin/ccache arm-linux-androideabi-gcc -DANDROID -mandroid -fomit-frame-pointer -D__ANDROID_API__=19 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -isysroot /vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/u
buntu/demo/.buildozer/android/platform/build/build/python-installs/myapp/include/python3.5 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/sources/python/3.5/include/python/ -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -DANDROID -mandroid -fomit-frame-pointer -D__AND
ROID_API__=19 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -isysroot /vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/ubuntu/demo/.buildozer/android/platform/build/build/python-installs/myapp/include/python3.5
 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/sources/python/3.5/include/python/ -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DLIBEV_EMBED=1 -DEV_COMMON= -DEV_CLEANUP_ENABLE=0 -DEV_EMBED_ENABLE=0 -DEV_PERIODIC_ENABLE=0 -Ibu
ild/temp.linux-x86_64-3.5/libev -Ilibev -I/usr/include/python3.5m -c gevent/gevent.corecext.c -o build/temp.linux-x86_64-3.5/gevent/gevent.corecext.o
In file included from gevent/libev.h:2:0,
                 from gevent/gevent.corecext.c:241:
libev/ev.c:483:48: warning: "/*" within comment [-Wcomment]
 /*#define MIN_INTERVAL  0.00000095367431640625 /* 1/2**20, good till 2200 */
...
...
...
gevent/gevent.corecext.c: In function '__pyx_pf_6gevent_8corecext_5child_6active___get__':
gevent/gevent.corecext.c:32955:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   if ((ev_is_active((&__pyx_v_self->_watcher)) != 0)) {
   ^
gevent/gevent.corecext.c: In function '__pyx_pf_6gevent_8corecext_5child_7pending___get__':
gevent/gevent.corecext.c:33016:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   if ((ev_is_pending((&__pyx_v_self->_watcher)) != 0)) {
   ^
gevent/gevent.corecext.c: In function '__pyx_pf_6gevent_8corecext_5child_6__init__':
gevent/gevent.corecext.c:33214:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
   ev_child_init((&__pyx_v_self->_watcher), ((void *)gevent_callback_child), __pyx_v_pid, __pyx_v_trace);
   ^
gevent/gevent.corecext.c:33214:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
gevent/gevent.corecext.c:33214:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
gevent/gevent.corecext.c:33214:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
creating build/lib.linux-x86_64-3.5
creating build/lib.linux-x86_64-3.5/gevent
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro --sysroot /vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -lm -L/home/ubuntu/demo/.buildozer/android/platform/build/build/libs_collecti
ons/myapp/armeabi-v7a -L/vagrant/crystax-ndk-10.3.2-linux-x86_64/sources/crystax/libs/armeabi-v7a -lcrystax -DANDROID -mandroid -fomit-frame-pointer -D__ANDROID_API__=19 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -isysroot /vagrant/cryst
ax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/ubuntu/demo/.buildozer/android/platform/build/build/python-installs/myapp/include/python3.5 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/sources/python/3.5/include/python/ -march=armv7-a -mfloat-abi=softf
p -mfpu=vfp -mthumb -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.5/gevent/gevent.corecext.o -o build/lib.linux-x86_64-3.5/gevent/corecext.cpython-35m-x86_64-linux-gnu.so
x86_64-linux-gnu-gcc: error: unrecognized command line option '-mfloat-abi=softfp'
x86_64-linux-gnu-gcc: error: unrecognized command line option '-mfpu=vfp'
x86_64-linux-gnu-gcc: error: unrecognized command line option '-mthumb'
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1


  STDERR:


Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/ubuntu/python-for-android/pythonforandroid/toolchain.py", line 978, in <module>
    main()
  File "/home/ubuntu/python-for-android/pythonforandroid/toolchain.py", line 975, in main
    ToolchainCL()
  File "/home/ubuntu/python-for-android/pythonforandroid/toolchain.py", line 512, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/home/ubuntu/python-for-android/pythonforandroid/toolchain.py", line 149, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/home/ubuntu/python-for-android/pythonforandroid/toolchain.py", line 193, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "pythonforandroid/build.py", line 574, in build_recipes
  File "pythonforandroid/recipe.py", line 847, in build_arch
  File "pythonforandroid/recipe.py", line 859, in build_compiled_components
  File "pythonforandroid/logger.py", line 175, in shprint
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 720, in next
    self.wait()
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 651, in wait
    self.handle_command_exit_code(exit_code)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 672, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1: 

  RAN: /usr/bin/python3.5 setup.py build_ext -v

  STDOUT:
...
...
gevent/gevent.corecext.c:33214:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
gevent/gevent.corecext.c:33214:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
gevent/gevent.corecext.c:33214:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
creating build/lib.linux-x86_64-3.5
creating build/lib.linux-x86_64-3.5/gevent
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro --sysroot /vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -lm -L/home/ubuntu/demo/.buildozer/android/platform/build/build/libs_collections/myapp/armeabi-v7a -L/vagrant/crystax-ndk-10.3.2-linux-x86_64/sources/crystax/libs/armeabi-v7a -lcrystax -DANDROID -mandroid -fomit-frame-pointer -D__ANDROID_API__=19 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -isysroot /vagrant/crystax-ndk-10.3.2-linux-x86_64/platforms/android-19/arch-arm -I/home/ubuntu/demo/.buildozer/android/platform/build/build/python-installs/myapp/include/python3.5 -I/vagrant/crystax-ndk-10.3.2-linux-x86_64/sources/python/3.5/include/python/ -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.5/gevent/gevent.corecext.o -o build/lib.linux-x86_64-3.5/gevent/corecext.cpython-35m-x86_64-linux-gnu.so
x86_64-linux-gnu-gcc: error: unrecognized command line option '-mfloat-abi=softfp'
x86_64-linux-gnu-gcc: error: unrecognized command line option '-mfpu=vfp'
x86_64-linux-gnu-gcc: error: unrecognized command line option '-mthumb'
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1


  STDERR:

# Command failed: /usr/bin/python -m pythonforandroid.toolchain create --dist_name=myapp --bootstrap=sdl2 --requirements=python3crystax,kivy,setuptools,hostpython3crystax,gevent --arch armeabi-v7a --copy-libs --color=always --storage-dir=/home/ubuntu/demo/.buildozer/android/platform/build
# 
# Buildozer failed to execute the last command
# The error might be hidden in the log above this error
# Please read the full log, and search for it before
# raising an issue with buildozer itself.
# In case of a bug report, please add a full log with log_level = 2

Upstream issue kivy/python-for-android#1251

Integrate with Sentry

Hook to Sentry to collect errors/crashes.
If possible it should be only enabled for Android release versions, hence not for desktop and not in Android debug.

Porting to Android

See if it compiles on Android, otherwise create subtask for porting thirdparty packages to python-for-android.

Known issues:

  • Deployment IOError/FileNotFoundError: #26
  • assertion PyBytes_Check failed: #27
  • setuptools Python3: kivy/python-for-android#1248
  • OSError: [Errno 2] No such file or directory: 'build': #28
  • Gevent compilation issues: #29
  • FileNotFoundError lib crypto on Android: #30

Handle wrong wallet password error

This is a follow up for #7. Currently if the password is wrong, the app will crash.
We need to:

  1. handle wrong password gracefully
  2. make it possible to try again setting/caching the password

UI testing rolling screen sliders

Verify the rolling screen bet size & chances sliders work as expected.

  • check bet size <-> input coupling
  • check chances <-> input coupling, refs #46
  • labels coupling (roll under, wager & profit)
  • clicking roll places the bet with expected parameters

Place a bet on the testnet

Deploy the contract on the testnet, try to place a bet and document the instructions

  • how to deploy on the testnet
  • including the mining on testnet to get enough for deployment
  • updated library and code example for placing the bet (playerRollDice())

Lazy screen loading

Currently all the screen objects get initialized at application startup. This is not good because it slows down the application and eats the ram. We should setup some lazy screen loading so they only get initialized when needed.

Quick account actions

Make it possible to perform quick account actions via list bottom sheet.
Clicking on the account should pop a list bottom sheet with the following actions:

  1. copy Ethereum address to clipboard
  2. switch account
  3. show QRCode #44

basic unit testing

Once we start having stable enough tooling functions, it should be unit tested to avoid regressions.
At the same time introduce tox with at minimum pep8 and flake8.

PyYAML ImportError: No module named 'error'

See trace below:

04-03 22:33:06.777  7579  7642 I python  :  Traceback (most recent call last):
04-03 22:33:06.777  7579  7642 I python  :    File "main.py", line 16, in <module>
04-03 22:33:06.778  7579  7642 I python  :      from pyethapp.accounts import AccountsService
04-03 22:33:06.778  7579  7642 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/pyethapp/accounts.py", line 9, in <module>
04-03 22:33:06.779  7579  7642 I python  :      from ethereum.tools import keys
04-03 22:33:06.779  7579  7642 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/ethereum/tools/__init__.py", line 1, in <module>
04-03 22:33:06.780  7579  7642 I python  :      from ethereum.tools import keys, new_statetest_utils, testutils, tester, _solidity
04-03 22:33:06.780  7579  7642 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/ethereum/tools/new_statetest_utils.py", line 1, in <module>
04-03 22:33:06.780  7579  7642 I python  :      from ethereum.state import State
04-03 22:33:06.781  7579  7642 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/ethereum/state.py", line 8, in <module>
04-03 22:33:06.781  7579  7642 I python  :      from ethereum import trie
04-03 22:33:06.782  7579  7642 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/ethereum/trie.py", line 6, in <module>
04-03 22:33:06.782  7579  7642 I python  :      from ethereum.abi import is_string
04-03 22:33:06.782  7579  7642 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/ethereum/abi.py", line 9, in <module>
04-03 22:33:06.783  7579  7642 I python  :      import yaml
04-03 22:33:06.783  7579  7642 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/yaml/__init__.py", line 2, in <module>
04-03 22:33:06.784  7579  7642 I python  :      from error import *
04-03 22:33:06.784  7579  7642 I python  :  ImportError: No module named 'error'
04-03 22:33:06.969  7579  7642 I python  : Python for android ended.

This is because PyYAML will install the module for Python2 if you run Buildozer from Python2.

ValueError: invalid literal for int() with base 10: '50.0'

When validating the chances input.

ValueError: invalid literal for int() with base 10: '50.0'
(21 additional frame(s) were not displayed)
...
  File "etheroll.py", line 375, in <lambda>
    if not focused else False)
  File "kivy/_event.pyx", line 714, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7295)
  File "kivy/_event.pyx", line 1225, in kivy._event.EventObservers.dispatch (kivy/_event.c:12844)
  File "kivy/_event.pyx", line 1149, in kivy._event.EventObservers._dispatch (kivy/_event.c:12419)
  File "etheroll.py", line 370, in <lambda>
    setattr(slider, 'value', cast_to(inpt.text)))

ValueError: invalid literal for int() with base 10: '50.0'

Sentry details:
https://sentry.io/andre-5t/etheroll-be/issues/528143202/

Build simple UI

Build simple/draft graphical interface for betting.
The UI will make it possible to:

  • select existing account
  • input account password
  • input bet ETH value
  • input roll under number

Account import

Make it possible to import existing account to the app.
At first it could be just an instruction with where to put the keystore files.

Dockerizing project

Make it possible to easily run the Linux app in a docker container.
That would make it easier for continuous integration and also for dev contributions.

Android requests.exceptions.SSLError

SSL doesn't seem to be available on Python3 Crystax. Upstream kivy/python-for-android#1195

See stacktrace (after clicking roll):

04-04 23:32:48.445 20544 20615 I python  : [INFO   ] [Base        ] Leaving application in progress...                                                                                             [41/1954]
04-04 23:32:48.446 20544 20615 I python  :  Traceback (most recent call last):
04-04 23:32:48.446 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/urllib3/connectionpool.py", line 589, in urlopen
04-04 23:32:48.447 20544 20615 I python  :      conn = self._get_conn(timeout=pool_timeout)
04-04 23:32:48.448 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/urllib3/connectionpool.py", line 251, in _get_conn
04-04 23:32:48.449 20544 20615 I python  :      return conn or self._new_conn()
04-04 23:32:48.449 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/urllib3/connectionpool.py", line 827, in _new_conn
04-04 23:32:48.451 20544 20615 I python  :      raise SSLError("Can't connect to HTTPS URL because the SSL "
04-04 23:32:48.451 20544 20615 I python  :  urllib3.exceptions.SSLError: Can't connect to HTTPS URL because the SSL module is not available.
04-04 23:32:48.451 20544 20615 I python  :  
04-04 23:32:48.451 20544 20615 I python  :  During handling of the above exception, another exception occurred:
04-04 23:32:48.451 20544 20615 I python  :  
04-04 23:32:48.452 20544 20615 I python  :  Traceback (most recent call last):
04-04 23:32:48.452 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/requests/adapters.py", line 440, in send
04-04 23:32:48.453 20544 20615 I python  :      timeout=timeout
04-04 23:32:48.453 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/urllib3/connectionpool.py", line 639, in urlopen
04-04 23:32:48.455 20544 20615 I python  :      _stacktrace=sys.exc_info()[2])
04-04 23:32:48.455 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/urllib3/util/retry.py", line 388, in increment
04-04 23:32:48.456 20544 20615 I python  :      raise MaxRetryError(_pool, url, error or ResponseError(cause))
04-04 23:32:48.457 20544 20615 I python  :  urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='ropsten.infura.io', port=443): Max retries exceeded with url: / (Caused by SSLError("Can't connect t
o HTTPS URL because the SSL module is not available.",))
04-04 23:32:48.457 20544 20615 I python  :  
04-04 23:32:48.457 20544 20615 I python  :  During handling of the above exception, another exception occurred:
04-04 23:32:48.457 20544 20615 I python  :  
04-04 23:32:48.457 20544 20615 I python  :  Traceback (most recent call last):
04-04 23:32:48.458 20544 20615 I python  :    File "main.py", line 5, in <module>
04-04 23:32:48.458 20544 20615 I python  :      EtherollApp().run()
04-04 23:32:48.458 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/app.py", line 828, in run
04-04 23:32:48.461 20544 20615 I python  :      runTouchApp()
04-04 23:32:48.461 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/base.py", line 504, in runTouchApp
04-04 23:32:48.463 20544 20615 I python  :      EventLoop.window.mainloop()
04-04 23:32:48.463 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/core/window/window_sdl2.py", line 663, in mainloop
04-04 23:32:48.465 20544 20615 I python  :      self._mainloop()
04-04 23:32:48.465 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/core/window/window_sdl2.py", line 405, in _mainloop
04-04 23:32:48.466 20544 20615 I python  :      EventLoop.idle()
04-04 23:32:48.466 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/base.py", line 342, in idle
04-04 23:32:48.467 20544 20615 I python  :      self.dispatch_input()
04-04 23:32:48.467 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/base.py", line 327, in dispatch_input
04-04 23:32:48.468 20544 20615 I python  :      post_dispatch_input(*pop(0))
04-04 23:32:48.469 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/base.py", line 293, in post_dispatch_input
04-04 23:32:48.470 20544 20615 I python  :      wid.dispatch('on_touch_up', me)
04-04 23:32:48.470 20544 20615 I python  :    File "kivy/_event.pyx", line 718, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7336)
04-04 23:32:48.470 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivymd/ripplebehavior.py", line 68, in on_touch_up
04-04 23:32:48.471 20544 20615 I python  :      return super(CommonRipple, self).on_touch_up(touch)
04-04 23:32:48.471 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivymd/button.py", line 206, in on_touch_up
04-04 23:32:48.472 20544 20615 I python  :      return super(BaseButton, self).on_touch_up(touch)
04-04 23:32:48.472 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/kivy/uix/behaviors/button.py", line 179, in on_touch_up
04-04 23:32:48.473 20544 20615 I python  :      self.dispatch('on_release')
04-04 23:32:48.473 20544 20615 I python  :    File "kivy/_event.pyx", line 714, in kivy._event.EventDispatcher.dispatch (kivy/_event.c:7295)
04-04 23:32:48.474 20544 20615 I python  :    File "kivy/_event.pyx", line 1225, in kivy._event.EventObservers.dispatch (kivy/_event.c:12844)
04-04 23:32:48.474 20544 20615 I python  :    File "kivy/_event.pyx", line 1149, in kivy._event.EventObservers._dispatch (kivy/_event.c:12419)
04-04 23:32:48.475 20544 20615 I python  :    File "./etheroll.py", line 446, in <lambda>
04-04 23:32:48.476 20544 20615 I python  :      dialog, account, content.password))
04-04 23:32:48.476 20544 20615 I python  :    File "./etheroll.py", line 429, in on_unlock_clicked
04-04 23:32:48.477 20544 20615 I python  :      self.roll()
04-04 23:32:48.478 20544 20615 I python  :    File "./etheroll.py", line 497, in roll
04-04 23:32:48.479 20544 20615 I python  :      bet_size, chances, wallet_path, password)
04-04 23:32:48.479 20544 20615 I python  :    File "./pyetheroll.py", line 274, in player_roll_dice
04-04 23:32:48.480 20544 20615 I python  :      nonce = etheroll.web3.eth.getTransactionCount(from_address_normalized)
04-04 23:32:48.481 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/eth.py", line 203, in getTransactionCount
04-04 23:32:48.482 20544 20615 I python  :      block_identifier,
04-04 23:32:48.482 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/manager.py", line 101, in request_blocking
04-04 23:32:48.482 20544 20615 I python  :      response = self._make_request(method, params)
04-04 23:32:48.483 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/manager.py", line 84, in _make_request
04-04 23:32:48.483 20544 20615 I python  :      return request_func(method, params)
04-04 23:32:48.483 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/middleware/gas_price_strategy.py", line 18, in middleware
04-04 23:32:48.484 20544 20615 I python  :      return make_request(method, params)
04-04 23:32:48.484 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/middleware/formatting.py", line 21, in middleware
04-04 23:32:48.485 20544 20615 I python  :      response = make_request(method, formatted_params)
04-04 23:32:48.485 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/middleware/attrdict.py", line 18, in middleware
04-04 23:32:48.485 20544 20615 I python  :      response = make_request(method, params)
04-04 23:32:48.486 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/middleware/formatting.py", line 21, in middleware
04-04 23:32:48.486 20544 20615 I python  :      response = make_request(method, formatted_params)
04-04 23:32:48.486 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/middleware/validation.py", line 46, in middleware
04-04 23:32:48.487 20544 20615 I python  :      return make_request(method, params)
04-04 23:32:48.487 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/middleware/formatting.py", line 21, in middleware
04-04 23:32:48.488 20544 20615 I python  :      response = make_request(method, formatted_params)
04-04 23:32:48.488 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/middleware/exception_retry_request.py", line 80, in middleware
04-04 23:32:48.488 20544 20615 I python  :      return make_request(method, params)
04-04 23:32:48.489 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/providers/rpc.py", line 67, in make_request
04-04 23:32:48.489 20544 20615 I python  :      **self.get_request_kwargs()
04-04 23:32:48.490 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/web3/utils/request.py", line 21, in make_post_request
04-04 23:32:48.490 20544 20615 I python  :      response = session.post(endpoint_uri, data=data, *args, **kwargs)
04-04 23:32:48.490 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/requests/sessions.py", line 555, in post
04-04 23:32:48.492 20544 20615 I python  :      return self.request('POST', url, data=data, json=json, **kwargs)
04-04 23:32:48.492 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/requests/sessions.py", line 508, in request
04-04 23:32:48.493 20544 20615 I python  :      resp = self.send(prep, **send_kwargs)
04-04 23:32:48.494 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/requests/sessions.py", line 618, in send
04-04 23:32:48.495 20544 20615 I python  :      r = adapter.send(request, **kwargs)
04-04 23:32:48.495 20544 20615 I python  :    File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/requests/adapters.py", line 506, in send
04-04 23:32:48.497 20544 20615 I python  :      raise SSLError(e, request=request)
04-04 23:32:48.497 20544 20615 I python  :  requests.exceptions.SSLError: HTTPSConnectionPool(host='ropsten.infura.io', port=443): Max retries exceeded with url: / (Caused by SSLError("Can't connect to HT
TPS URL because the SSL module is not available.",))
04-04 23:32:49.179 20544 20615 I python  : Python for android ended.

FileNotFoundError lib crypto on Android

Looks like libcrypto cannot be loaded properly.

adb logcat | grep -i python
04-02 02:42:33.825 19512 19512 I PythonActivity: Surface will NOT be transparent
04-02 02:42:33.873 19512 19545 I python  : Initialize Python for Android
04-02 02:42:33.873 19512 19545 I python  : Changing directory to the one provided by ANDROID_ARGUMENT
04-02 02:42:33.873 19512 19545 I python  : /data/user/0/com.github.andremiras.etheroll/files/app
04-02 02:42:33.877 19512 19545 I python  : Preparing to initialize python
04-02 02:42:33.878 19512 19545 I python  : crystax_python exists
04-02 02:42:33.878 19512 19545 I python  : calculated paths to be...
04-02 02:42:33.878 19512 19545 I python  : /data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/stdlib.zip:/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/modules
04-02 02:42:33.882 19512 19545 I python  : set wchar paths...
04-02 02:42:33.965  1198  1280 I ActivityManager: Displayed com.github.andremiras.etheroll/org.kivy.android.PythonActivity: +438ms
04-02 02:42:34.173 19512 19545 I python  : Initialized python
04-02 02:42:34.173 19512 19545 I python  : AND: Init threads
04-02 02:42:34.173 19512 19545 I python  : testing python print redirection
04-02 02:42:34.175 19512 19545 I python  : Android path ['.', '/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/stdlib.zip', '/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/modules', '/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages']
04-02 02:42:34.175 19512 19545 I python  : os.environ is environ({'ANDROID_BOOTLOGO': '1', 'CUST_POLICY_DIRS': '/system/emui/base:/system/emui/oversea:/system/emui/oversea_honor:/system/emui/lite:/system/global:/vendor/etc:/product/etc:/hw_oem:/cust/hw/normal:/cust_comm:/version/region_comm/oversea:/cust_spec', 'ANDROID_ASSETS': '/system/app', 'PATH': '/sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin:/system/vendor/bin:/vendor/xbin:/system/vendor/xbin:/product/bin:/product/xbin', 'ANDROID_PRIVATE': '/data/user/0/com.github.andremiras.etheroll/files', 'ANDROID_APP_PATH': '/data/user/0/com.github.andremiras.etheroll/files/app', 'PYTHONHOME': '/data/user/0/com.github.andremiras.etheroll/files/app', 'OEM_ROOT': '/hw_oem', 'ANDROID_ROOT': '/system', 'BOOTCLASSPATH': '/system/framework/core-oj.jar:/system/framework/core-libart.jar:/system/framework/conscrypt.jar:/system/framework/okhttp.jar:/system/framework/core-junit.jar:/system/framework/bouncycastle.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/telephony-common.jar:/system/framework/voip-common.jar:/system/framework/ims-common.jar:/system/framework/apache-xml.jar:/system/framework/org.apache.http.legacy.boot.jar:/system/framework/hwEmui.jar:/system/framework/hwTelephony-common.jar:/system/framework/hwframework.jar:/system/framework/org.simalliance.openmobileapi.jar:/system/framework/org.ifaa.android.manager.jar:/system/framework/hwaps.jar:/system/framework/hwcustEmui.jar:/system/framework/hwcustTelephony-common.jar:/system/framework/hwcustframework.jar', 'PYTHONPATH': '/data/user/0/com.github.andremiras.etheroll/files/app:/data/user/0/com.github.andremiras.etheroll/files/app/lib', 'ANDROID_ENTRYPOINT': 'main.pyo', 'PYTHON_NAME': 'python', 'ANDROID_STORAGE': '', 'ASEC_MOUNTPOINT': '/mnt/asec', 'SYSTEMSERVERCLASSPATH': '/system/framework/services.jar:/system/framework/ethernet-service.jar:/system/framework/wifi-service.jar:/system/framework/hwServices.jar:/system/framework/hwWifi-service.jar:/system/framework/hwcustServices.jar:/system/framework/hwcustwifi-service.jar', 'PYTHONOPTIMIZE': '2', 'EXTERNAL_STORAGE': '/sdcard', 'ANDROID_UNPACK': '/data/user/0/com.github.andremiras.etheroll/files/app', 'ANDROID_ARGUMENT': '/data/user/0/com.github.andremiras.etheroll/files/app', 'ANDROID_SOCKET_zygote_secondary': '14', 'ANDROID_DATA': '/data'})
04-02 02:42:34.175 19512 19545 I python  : Android kivy bootstrap done. __name__ is __main__
04-02 02:42:34.175 19512 19545 I python  : AND: Ran string
04-02 02:42:34.175 19512 19545 I python  : Run user program, change dir and execute entrypoint
04-02 02:42:34.175 19512 19545 I python  : main.py


04-02 02:42:36.155 19512 19545 W linker  : /data/data/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/greenlet.so: is missing DT_SONAME will use basename as a replacement: "greenlet.so"
04-02 02:42:36.161 19512 19545 W linker  : /data/data/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/gevent/corecext.so: is missing DT_SONAME will use basename as a replacement: "corecext.so"
04-02 02:42:36.372 19512 19545 I python  : Traceback (most recent call last):
04-02 02:42:36.372 19512 19545 I python  :   File "main.py", line 7, in <module>
04-02 02:42:36.373 19512 19545 I python  :     from devp2p.app import BaseApp
04-02 02:42:36.373 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/devp2p/app.py", line 8, in <module>
04-02 02:42:36.373 19512 19545 I python  :     from devp2p import crypto
04-02 02:42:36.373 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/devp2p/crypto.py", line 7, in <module>
04-02 02:42:36.373 19512 19545 I python  :     import pyelliptic
04-02 02:42:36.373 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/pyelliptic/__init__.py", line 43, in <module>
04-02 02:42:36.374 19512 19545 I python  :     from .openssl import OpenSSL
04-02 02:42:36.374 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/site-packages/pyelliptic/openssl.py", line 522, in <module>
04-02 02:42:36.375 19512 19545 I python  :     libname = ctypes.util.find_library('crypto')
04-02 02:42:36.375 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/stdlib.zip/ctypes/util.py", line 239, in find_library
04-02 02:42:36.375 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/stdlib.zip/ctypes/util.py", line 103, in _findLib_gcc
04-02 02:42:36.375 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/stdlib.zip/os.py", line 993, in popen
04-02 02:42:36.375 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/stdlib.zip/subprocess.py", line 950, in __init__
04-02 02:42:36.376 19512 19545 I python  :   File "/data/user/0/com.github.andremiras.etheroll/files/app/crystax_python/stdlib.zip/subprocess.py", line 1544, in _execute_child
04-02 02:42:36.376 19512 19545 I python  : FileNotFoundError: [Errno 2] No such file or directory: '/bin/sh'
04-02 02:42:36.450 19512 19545 I python  : Python for android ended.
04-02 02:42:37.015  1198  1377 W InputDispatcher: channel '4c15f07 com.github.andremiras.etheroll/org.kivy.android.PythonActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x9
04-02 02:42:37.015  1198  1377 E InputDispatcher: channel '4c15f07 com.github.andremiras.etheroll/org.kivy.android.PythonActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
04-02 02:42:37.015  1198  1908 W InputDispatcher: Attempted to unregister already unregistered input channel '4c15f07 com.github.andremiras.etheroll/org.kivy.android.PythonActivity (server)'

Upstream kivy/python-for-android#1195 and kivy/python-for-android#691

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.