Code Monkey home page Code Monkey logo

pywallet's Introduction

PyWallet

Join the chat at https://gitter.im/PyWallet/Lobby Build Status

Play Store

Cross platform Ethereum Wallet built with Python and Kivy.

Screenshot Nexus Screenshot Dell

Features

  • Keystore on device
  • Show balance
  • Show transaction history
  • Receive Ethers via QR code
  • Send Ethers
  • Handle multiple accounts
  • Manage accounts

Run

Linux

./src/main.py --debug

The --debug flag is required if you want to see errors printed in your console. Otherwise the exception will be only sent to Sentry.

Android

Build, deploy and run on Android using buildozer:

buildozer android debug deploy run logcat
buildozer android adb -- logcat

Install

See Install.md for detailed instructions.

Testing

See Testing.md.

Documentation

pywallet's People

Contributors

andremiras avatar gitter-badger 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

pywallet's Issues

Report Android unit test in the UI

This is a follow up for #40.
Tests are working on Android, now we need to find a nice way to report them.
Also make them running in background and if possible report the outcome asynchronously in the UI.

Unit test the UI

Also write tests for the UI, making sure events interact as expected.

History._load_history() is a blocking call

History._load_history() performs a call to pywalib.get_transaction_history() which is blocking.
It makes the UI freezes, but it should instead be ran asynchronously.

Allow tab key navigation

Make it possible to navigate through widgets using tab key.
This should be enabled for the following screens:

  • Send Ethers
  • Manage existing keystores
  • Create new account

Consider using Docker on Travis

That would allow us to use Ubuntu Xenial.
We could have two Dockerfiles one for Kivy Linux and the other one for Android build.

sudo: required

language: generic
services:
  - docker 

before_install:
  - docker pull ubuntu:16.04 

script:
 - docker build .

Spend from address

Make it possible to choose the address to spend from.
With #21 it's currently to spend Ethers, but it defaults to the main account.

Ability to decrease pbkdf2

Try to make it possible to decrease pbkdf2 for testing purpose.
It currently takes about 2 minutes to generate a new wallet on my Honor 5C smartphone.

Account list popup overlap

On small resolutions (e.g. nexus4) the account list popup shows overlaps/wraps accounts.
We would prefer to have some ellipsis, like it's the case in the account flat button.
We could do two things, increase the popup size and use some ellipsis in the middle.

image

Command was:

./src/main.py -m screen:phone_nexus_4,portrait,scale=.5

Write first usage notice/disclarmer

Some dialog box should appear at first startup.

This is a free and open source software at an early stage of development...
Feedback is more than welcome...

Manage keystore broken layout mobile

On mobile the manage keystore view seems broken, the bottom bar is not centered.
Resizing the window slightly fixes it.
See attached screenshot.
image

Various secp256k1 recipe issues

I see at least 3 issues:

  1. hostpython setup.py install -O2 bad exit code
  2. autogen.sh: No such file or directory
  3. Using bundled libsecp256k1 (from secp256k1 setup.py) when it should use the libsecp256k1 recipe

See log below:

[INFO]:    Building secp256k1 for armeabi-v7a
[INFO]:    secp256k1 apparently isn't already in site-packages
[INFO]:    Building compiled components in secp256k1
[INFO]:    -> directory context /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/other_builds/secp256k1/armeabi-v7a/secp256k1
[INFO]:    -> running hostpython setup.py build_ext -v
           working: Installed /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/other_builds/secp256k1/armeabi-v7a/secp256k1/.eggs/pytest_runner-2.6.2-py2.7.egg                                                                                    
           working: creating build/lib.linux-x86_64-2.7                                                                                                                                                                                                       [INFO]:    ->
 running find build/lib.linux-x86_64-2.7 -name "*.o" -exec arm-linux-androideabi-strip --strip-unneeded {} ;
[INFO]:    <- directory context /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/python-for-android-master
[INFO]:    Installing secp256k1 into site-packages
[INFO]:    -> directory context /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/other_builds/secp256k1/armeabi-v7a/secp256k1
[INFO]:    -> running hostpython setup.py install -O2 --root=/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/python-installs/pywallet --install-lib=lib/python2.7/site-packages
           working: error: /home/ubuntu/workspace/PyWallet/.buildozer/andException in thread background thread for pid 25480:                                                                                                                                             
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 1540, in wrap
    fn(*args, **kwargs)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 2459, in background_thread
    handle_exit_code(exit_code)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 2157, in fn
    return self.command.handle_command_exit_code(exit_code)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 815, in handle_command_exit_code
    raise exc
ErrorReturnCode_1: 

  RAN: /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/other_builds/hostpython2/desktop/hostpython2/hostpython setup.py install -O2 --root=/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/python-installs/pywallet --insta
ll-lib=lib/python2.7/site-packages

  STDOUT:
0.29.1
Using bundled libsecp256k1
running install
running build
running build_py
copying secp256k1/__main__.py -> build/lib.linux-x86_64-2.7/secp256k1
copying secp256k1/__init__.py -> build/lib.linux-x86_64-2.7/secp256k1
running build_clib
error: /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/other_builds/secp256k1/armeabi-v7a/secp256k1/libsecp256k1/autogen.sh: No such file or directory


  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/workspace/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 905, in <module>
    main()
  File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 902, in main
    ToolchainCL()
  File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 508, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 147, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 190, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "pythonforandroid/build.py", line 565, in build_recipes
  File "pythonforandroid/recipe.py", line 891, in build_arch
  File "pythonforandroid/recipe.py", line 859, in install_python_package
  File "pythonforandroid/logger.py", line 175, in shprint
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 863, in next
    self.wait()
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 792, in wait
    self.handle_command_exit_code(exit_code)
  File "/home/ubuntu/.local/lib/python2.7/site-packages/sh.py", line 815, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1: 

  RAN: /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/other_builds/hostpython2/desktop/hostpython2/hostpython setup.py install -O2 --root=/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/python-installs/pywallet --insta
ll-lib=lib/python2.7/site-packages

  STDOUT:
0.29.1
Using bundled libsecp256k1
running install
running build
running build_py
copying secp256k1/__main__.py -> build/lib.linux-x86_64-2.7/secp256k1
copying secp256k1/__init__.py -> build/lib.linux-x86_64-2.7/secp256k1
running build_clib
error: /home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/build/other_builds/secp256k1/armeabi-v7a/secp256k1/libsecp256k1/autogen.sh: No such file or directory


  STDERR:

# Command failed: /usr/bin/python -m pythonforandroid.toolchain create --dist_name=pywallet --bootstrap=sdl2 --requirements=hostpython2,kivy,setuptools,openssl,pycryptodome,pysha3,ethash,scrypt,bitcoin,rlp,pyethereum,devp2p,gevent,pbkdf2,pyethapp,https://gitlab.com/k
ivymd/KivyMD/repository/archive.zip?ref=7de5790274a45c4fa2fb9c6fcd875645e536c95b,requests,pyelliptic==1.5.7,cffi,secp256k1 --arch armeabi-v7a --copy-libs --local-recipes /home/ubuntu/workspace/PyWallet/python-for-android/recipes --color=always --storage-dir=/home/ubu
ntu/workspace/PyWallet/.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

Custom icon

Create a custom icon rather than using the default one.

cannot locate symbol secp256k1_ecdsa_sign_recoverable

06-16 22:46:58.802 23831 23984 I python  :  Traceback (most recent call last):
06-16 22:46:58.803 23831 23984 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/app/main.py", line 16, in <module>
06-16 22:46:58.803 23831 23984 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/app/pywalib.py", line 7, in <module>
06-16 22:46:58.804 23831 23984 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/devp2p/app.py", line 8, in <module>
06-16 22:46:58.804 23831 23984 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/devp2p/crypto.py", line 32, in <module>
06-16 22:46:58.805 23831 23984 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/secp256k1/__init__.py", line 5, in <module>
06-16 22:46:58.805 23831 23984 I python  :  ImportError: dlopen failed: cannot locate symbol "secp256k1_ecdsa_sign_recoverable" referenced by "/data/data/org.test.pywallet/files/app/lib/python2.7/site-packages/secp256k1/_libsecp256k1.so"...
06-16 22:46:58.873 23831 23984 I python  : Python for android ended.

Send transaction via Etherscan

Since we currently can't connect to other nodes using pydevp2p (refs #5), we could publish the (locally signed) transaction to Etherscan.

Can't send transaction / spend Ethers

The transaction is signed and tx hash is returned, but then can't seem to find it with find_transaction() and this is on the main network.
Will provide code example soon.

The application crashes when no wallet were found

Rather than crashing it should pop-up an error message and give the option to create a wallet.

./main.py
[INFO   ] [Logger      ] Record log in /home/andre/.kivy/logs/kivy_17-06-12_20.txt
[INFO   ] [Kivy        ] v1.10.1.dev0, git-Unknown, 20170612
[INFO   ] [Python      ] v2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609]
[INFO   ] [Factory     ] 194 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [KivyMD      ] KivyMD version: 0.1.2
[INFO   ] [Text        ] Provider: sdl2
[INFO   ] [OSC         ] using <multiprocessing> for socket
[INFO   ] [Window      ] Provider: sdl2(['window_egl_rpi'] ignored)
[INFO   ] [GL          ] Using the "OpenGL" graphics system
[INFO   ] [GL          ] Backend used <gl>
[INFO   ] [GL          ] OpenGL version <3.0 Mesa 12.0.6>
[INFO   ] [GL          ] OpenGL vendor <Intel Open Source Technology Center>
[INFO   ] [GL          ] OpenGL renderer <Mesa DRI Intel(R) Kabylake GT2 >
[INFO   ] [GL          ] OpenGL parsed version: 3, 0
[INFO   ] [GL          ] Shading version <1.30>
[INFO   ] [GL          ] Texture max size <8192>
[INFO   ] [GL          ] Texture max units <32>
[INFO   ] [Window      ] auto add sdl2 input provider
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [GL          ] NPOT texture support is available
 Exception TypeError: 'float() argument must be a string or a number' in 'kivy.properties.dpi2px' ignored
 Exception TypeError: 'float() argument must be a string or a number' in 'kivy.properties.dpi2px' ignored
[WARNING] [MDBottomNavigation] 50dp is less than the minimum size of 80dp for a MDBottomNavigationItem. We must now expand to 168dp.
[WARNING] [MDBottomNavigation] 33dp is less than the minimum size of 80dp for a MDBottomNavigationItem. We must now expand to 168dp.
[INFO   ] [Base        ] Start application main loop
 WARNING:accounts       keystore directory does not exist directory=/home/andre/.config/pyethapp/keystore/
 WARNING:accounts       no accounts found 
 INFO:app       registering service service=accounts
[INFO   ] [Base        ] Leaving application in progress...
 Traceback (most recent call last):
   File "./main.py", line 40, in <module>
     ControllerApp().run()
   File "/home/andre/workspace/PyWallet/venv/local/lib/python2.7/site-packages/kivy/app.py", line 828, in run
     runTouchApp()
   File "/home/andre/workspace/PyWallet/venv/local/lib/python2.7/site-packages/kivy/base.py", line 504, in runTouchApp
     EventLoop.window.mainloop()
   File "/home/andre/workspace/PyWallet/venv/local/lib/python2.7/site-packages/kivy/core/window/window_sdl2.py", line 663, in mainloop
     self._mainloop()
   File "/home/andre/workspace/PyWallet/venv/local/lib/python2.7/site-packages/kivy/core/window/window_sdl2.py", line 405, in _mainloop
     EventLoop.idle()
   File "/home/andre/workspace/PyWallet/venv/local/lib/python2.7/site-packages/kivy/base.py", line 339, in idle
     Clock.tick()
   File "/home/andre/workspace/PyWallet/venv/local/lib/python2.7/site-packages/kivy/clock.py", line 581, in tick
     self._process_events()
   File "kivy/_clock.pyx", line 367, in kivy._clock.CyClockBase._process_events (/tmp/pip-ogTFge-build/kivy/_clock.c:7410)
   File "kivy/_clock.pyx", line 397, in kivy._clock.CyClockBase._process_events (/tmp/pip-ogTFge-build/kivy/_clock.c:7285)
   File "kivy/_clock.pyx", line 395, in kivy._clock.CyClockBase._process_events (/tmp/pip-ogTFge-build/kivy/_clock.c:7207)
   File "kivy/_clock.pyx", line 167, in kivy._clock.ClockEvent.tick (/tmp/pip-ogTFge-build/kivy/_clock.c:3211)
   File "./main.py", line 25, in _load_balance
     account = pywalib.get_main_account()
   File "/home/andre/workspace/PyWallet/pywalib.py", line 73, in get_main_account
     account = app.services.accounts[0]
   File "/home/andre/workspace/PyWallet/venv/local/lib/python2.7/site-packages/pyethapp/accounts.py", line 508, in __getitem__
     return self.accounts[address_or_idx]
 IndexError: list index out of range

Kivy on_press/on_release fired multiple times

For some reason the all the Kivy click events get fired multiple times.
Even moving the mouse above a button fires the event.
Kivy==1.10.0
Code to reproduce:
main.py:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.config import Config


class Controls(BoxLayout):

    pass


class TouchApp(App):

    def build(self):
        return Controls()


if __name__ == '__main__':
    TouchApp().run()

touch.kv:

#:kivy 1.9.1

<Controls>

    Button:
        text: 'Touch here'
        on_press: print "on_press"
        on_release: print "on_release"

ImportError: dlopen failed: cannot locate symbol "PyExc_TypeError"

This is a follow up for #11.
Both libsecp256k1 and secp256k1 recipes compiles now, but we have a new runtime error.

06-16 22:01:00.449 20940 21112 I python  :  Traceback (most recent call last):
06-16 22:01:00.450 20940 21112 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/app/main.py", line 16, in <module>
06-16 22:01:00.450 20940 21112 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/app/pywalib.py", line 7, in <module>
06-16 22:01:00.451 20940 21112 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/devp2p/app.py", line 8, in <module>
06-16 22:01:00.451 20940 21112 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/devp2p/crypto.py", line 32, in <module>
06-16 22:01:00.452 20940 21112 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/secp256k1/__init__.py", line 5, in <module>
06-16 22:01:00.452 20940 21112 I python  :  ImportError: dlopen failed: cannot locate symbol "PyExc_TypeError" referenced by "/data/data/org.test.pywallet/files/app/lib/python2.7/site-packages/secp256k1/_libsecp256k1.so"...
06-16 22:01:00.521 20940 21112 I python  : Python for android ended.

Closing and opening a new dedicated ticket.

OSError: Cannot load native module 'Crypto.Hash._BLAKE2s' (Travis)

Travis can't install pbkdf2 when pycryptodome is installed/
See build 86:
https://travis-ci.org/AndreMiras/PyWallet/builds/246657156

The error is:

�[?25hCollecting PyYAML (from -r requirements.txt (line 1))
/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/build/build/venv/local/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py:122: InsecurePlatformWarning: A true SSLContext object is not available. This prevents urllib3 from configuring SSL appropriately and may cause certain SSL connections to fail. You can upgrade to a newer version of Python to solve this. For more information, see https://urllib3.readthedocs.io/en/latest/security.html#insecureplatformwarning.
  InsecurePlatformWarning
  Using cached PyYAML-3.12.tar.gz
Collecting bitcoin (from -r requirements.txt (line 2))
  Using cached bitcoin-1.1.42.tar.gz
Collecting pbkdf2 (from -r requirements.txt (line 7))
  Using cached pbkdf2-1.3.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-jlmed6/pbkdf2/setup.py", line 11, in <module>
        from pbkdf2 import __version__
      File "pbkdf2.py", line 62, in <module>
        from Crypto.Hash import HMAC, SHA as SHA1
      File "/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/build/build/python-installs/pywallet/lib/python2.7/site-packages/Crypto/Hash/HMAC.py", line 81, in <module>
        import MD5, BLAKE2s
      File "/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/build/build/python-installs/pywallet/lib/python2.7/site-packages/Crypto/Hash/BLAKE2s.py", line 83, in <module>
        """)
      File "/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/build/build/python-installs/pywallet/lib/python2.7/site-packages/Crypto/Util/_raw_api.py", line 171, in load_pycryptodome_raw_lib
        raise OSError("Cannot load native module '%s'" % name)
    OSError: Cannot load native module 'Crypto.Hash._BLAKE2s'
    
    ----------------------------------------
�[31mCommand "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-jlmed6/pbkdf2/�[0m


  STDERR:


Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, 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/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 905, in <module>
    main()
  File "/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 902, in main
    ToolchainCL()
  File "/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 508, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 147, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 190, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "pythonforandroid/build.py", line 585, in build_recipes
  File "pythonforandroid/build.py", line 626, in run_pymodules_install
  File "pythonforandroid/logger.py", line 175, in shprint
  File "/home/travis/.local/lib/python2.7/site-packages/sh.py", line 863, in next
    self.wait()
  File "/home/travis/.local/lib/python2.7/site-packages/sh.py", line 792, in wait
    self.handle_command_exit_code(exit_code)
  File "/home/travis/.local/lib/python2.7/site-packages/sh.py", line 815, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1
.tar.gz                           �[0m
           working:     Complete output from command python setup.py egg_info: �[0m
           working:     Traceback (most recent call last):                     �[0m
           working:       File "<string>", line 1, in <module>                 �[0m
           working:       File "/tmp/pip-build-jlmed6/pbkdf2/s...(and 30 more) �[0m
           working:         from pbkdf2 import __version__                     �[0m
           working:       File "pbkdf2.py", line 62, in <module>               �[0m
           working:         from Crypto.Hash import HMAC, SHA as SHA1          �[0m
           working:       File "/home/travis/build/AndreMiras...(and 145 more) �[0m
           working:         import MD5, BLAKE2s                                �[0m
           working:       File "/home/travis/build/AndreMiras...(and 148 more) �[0m
           working:         """)                                               �[0m
           working:       File "/home/travis/build/AndreMiras...(and 167 more) �[0m
           working:         raise OSError("Cannot load native ...(and 20 more) �[0m
           working:     OSError: Cannot load native module 'Cr...(and 19 more) �[0m
           working:     ----------------------------------------               �[0m
           working: �[31mCommand "python setup.py egg_info" f...(and 60 more)  �[0m
                                                                               
�[0m�[1;31m# Command failed: /usr/bin/python -m pythonforandroid.toolchain create --dist_name=pywallet --bootstrap=sdl2 --requirements=hostpython2,kivy,setuptools,openssl,pysha3,ethash,scrypt,bitcoin,rlp,repoze.lru,PyYAML,https://github.com/ethereum/pyethereum/archive/0ae64823d1bccba9c8148adb462060cb83c08f06.zip,https://github.com/ethereum/pydevp2p/archive/cc68f6d69fa88ffaac6f8483392c37eb9f19d712.zip,gevent,pbkdf2,pycryptodome,https://github.com/ethereum/pyethapp/archive/409331e88a397ce5276c430aff4a8866d413e45d.zip,https://gitlab.com/kivymd/KivyMD/repository/archive.zip?ref=7de5790274a45c4fa2fb9c6fcd875645e536c95b,requests,pyelliptic==1.5.7,cffi,secp256k1,qrcode --arch armeabi-v7a --copy-libs --local-recipes /home/travis/build/AndreMiras/PyWallet/src/python-for-android/recipes --color=always --storage-dir=/home/travis/build/AndreMiras/PyWallet/.buildozer/android/platform/build�[0m
�[0m�[1;31m# �[0m
�[0m�[1;31m# Buildozer failed to execute the last command�[0m
�[0m�[1;31m# The error might be hidden in the log above this error�[0m
�[0m�[1;31m# Please read the full log, and search for it before�[0m
�[0m�[1;31m# raising an issue with buildozer itself.�[0m
�[0m�[1;31m# In case of a bug report, please add a full log with log_level = 2�[0m

travis_time:end:27f846b6:start=1498344305016112501,finish=1498345317397764167,duration=1012381651666
�[0K
�[32;1mThe command "./travis/script_android.sh" exited with 0.�[0m```

Also another problem is that the build is still shown as green even though there's an error.

secp256k1 and pkg-config

In the secp256k1 recipe, the pkg-config package dependency should be completely skipped. However, it currently seems to be only partly inhibited.

Steps to reproduce, try to install secp256k1 recipe with "pkg-config" not installed on e.g. Ubuntu Xenial, here's the output:

[INFO]:    Building secp256k1 for armeabi-v7a                                                                                                                                                                                                                     [13/1822]
[INFO]:    secp256k1 apparently isn't already in site-packages                                                                                                                                                                                                             [INFO]:    Building compiled components in secp256k1                                                                                                                                                                                                                       [INFO]:    -> directory context /src/.buildozer/android/platform/build/build/other_builds/secp256k1/armeabi-v7a/secp256k1                                                                                                                                                  stty: 'standard input': Inappropriate ioctl for device
[INFO]:    -> running hostpython setup.py build_ext -v
Exception in thread background thread for pid 14782:
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 "/root/.local/lib/python2.7/site-packages/sh.py", line 1540, in wrap
    fn(*args, **kwargs)        
  File "/root/.local/lib/python2.7/site-packages/sh.py", line 2459, in background_thread
    handle_exit_code(exit_code)
  File "/root/.local/lib/python2.7/site-packages/sh.py", line 2157, in fn
    return self.command.handle_command_exit_code(exit_code)
  File "/root/.local/lib/python2.7/site-packages/sh.py", line 815, in handle_command_exit_code
    raise exc
ErrorReturnCode_1: 

  RAN: /src/.buildozer/android/platform/build/build/other_builds/hostpython2/desktop/hostpython2/hostpython setup.py build_ext -v

  STDOUT:
'pkg-config' is required to install this package. Please see the README for details.


  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 "/src/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 905, in <module>
    main()
  File "/src/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 902, in main
    ToolchainCL()
  File "/src/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 508, in __init__
    getattr(self, args.subparser_name.replace('-', '_'))(args)
  File "/src/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 147, in wrapper_func
    build_dist_from_args(ctx, dist, args)
  File "/src/.buildozer/android/platform/python-for-android-master/pythonforandroid/toolchain.py", line 190, in build_dist_from_args
    build_recipes(build_order, python_modules, ctx)
  File "pythonforandroid/build.py", line 565, in build_recipes
  File "pythonforandroid/recipe.py", line 890, in build_arch
  File "pythonforandroid/recipe.py", line 902, in build_compiled_components
  File "pythonforandroid/logger.py", line 175, in shprint
  File "/root/.local/lib/python2.7/site-packages/sh.py", line 863, in next
    self.wait()
  File "/root/.local/lib/python2.7/site-packages/sh.py", line 792, in wait
    self.handle_command_exit_code(exit_code)
  File "/root/.local/lib/python2.7/site-packages/sh.py", line 815, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1: 

  RAN: /src/.buildozer/android/platform/build/build/other_builds/hostpython2/desktop/hostpython2/hostpython setup.py build_ext -v

  STDOUT:
'pkg-config' is required to install this package. Please see the README for details.


  STDERR:

# Command failed: /usr/bin/python -m pythonforandroid.toolchain create --dist_name=pywallet --bootstrap=sdl2 --requirements=hostpython2,kivy,setuptools,openssl,pycryptodome,pysha3,ethash,scrypt,bitcoin,rlp,repoze.lru,PyYAML,https://github.com/ethereum/pyethereum/arch
ive/0ae64823d1bccba9c8148adb462060cb83c08f06.zip,https://github.com/ethereum/pydevp2p/archive/cc68f6d69fa88ffaac6f8483392c37eb9f19d712.zip,gevent,pbkdf2,https://github.com/ethereum/pyethapp/archive/409331e88a397ce5276c430aff4a8866d413e45d.zip,https://gitlab.com/kivym
d/KivyMD/repository/archive.zip?ref=7de5790274a45c4fa2fb9c6fcd875645e536c95b,requests,pyelliptic==1.5.7,cffi,secp256k1,qrcode --arch armeabi-v7a --copy-libs --local-recipes /src/src/python-for-android/recipes --color=always --storage-dir=/src/.buildozer/android/platf
orm/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

_libsecp256k1.so is 64-bit instead of 32-bit

I had this issue trying to run on Android:
buildozer android adb -- logcat | grep -i python

06-13 00:24:19.182 17873 18089 I python  :  Traceback (most recent call last):
06-13 00:24:19.182 17873 18089 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/app/main.py", line 16, in <module>
06-13 00:24:19.183 17873 18089 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/app/pywalib.py", line 7, in <module>
06-13 00:24:19.184 17873 18089 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/devp2p/app.py", line 8, in <module>
06-13 00:24:19.185 17873 18089 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/devp2p/crypto.py", line 32, in <module>
06-13 00:24:19.186 17873 18089 I python  :    File "/home/ubuntu/workspace/PyWallet/.buildozer/android/platform/build/dists/pywallet/private/lib/python2.7/site-packages/secp256k1/__init__.py", line 5, in <module>
06-13 00:24:19.186 17873 18089 I python  :  ImportError: dlopen failed: "/data/data/org.test.pywallet/files/app/lib/python2.7/site-packages/secp256k1/_libsecp256k1.so" is 64-bit instead of 32-bit
06-13 00:24:19.272 17873 18089 I python  : Python for android ended.

Python3 support

pyethapp currently requires gipc==0.4.0 which is not Python3 compatible.
Python 3 support was added to gipc==0.6.0.
See pip install error output below:

Collecting gipc==0.4.0 (from pyethapp==1.5.0->-r requirements.txt (line 7))
  Downloading gipc-0.4.0.zip
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-ivs7zndf/gipc/setup.py", line 22, in <module>
        long_description=open("README.rst").read().decode('utf-8'),
    AttributeError: 'str' object has no attribute 'decode'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-ivs7zndf/gipc/

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.