Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[master] AttributeError: 'tuple' object has no attribute 'startswith' #631

Closed
thopiekar opened this issue Feb 8, 2016 · 2 comments · Fixed by #641
Closed

[master] AttributeError: 'tuple' object has no attribute 'startswith' #631

thopiekar opened this issue Feb 8, 2016 · 2 comments · Fixed by #641

Comments

@thopiekar
Copy link
Contributor

Hey, I wasn't playing with python-for-android for a long time. I just wanted to update my old qt5 recipe as I got together with the PySide2 team a (almost) working version of PySide. I just wanted to run toolchain.py to built something, but I landed here:

thopiekar@hp:.../python-for-android_fork$ PYTHONPATH=. python pythonforandroid/toolchain.py create
[INFO]:    This python-for-android revamp is an experimental alpha release!
[INFO]:    It should work (mostly), but you may experience missing features or bugs.
[INFO]:    Will compile for the following archs: armeabi
[INFO]:    Found Android API target in $ANDROIDAPI
[INFO]:    Available Android APIs are (21, 22, 23)
[INFO]:    Requested API target 21 is available, continuing.
[INFO]:    Found NDK dir in $ANDROIDNDK
[INFO]:    Got NDK version from $ANDROIDNDKVER
[WARNING]: NDK version was set as r10e, but checking the NDK dir claims it is r10e-rc4.
[WARNING]: The build will try to continue, but it may fail and you should check that your setting is correct.
[WARNING]: If the NDK dir result is correct, you don't need to manually set the NDK ver.
[INFO]:    Using Google NDK r10e
[INFO]:    Found virtualenv at /usr/bin/virtualenv
[INFO]:    Found the following toolchain versions: ['4.8', '4.9', 'clang3.5', 'clang3.6']
[INFO]:    Picking the latest gcc toolchain, here 4.9
[INFO]:    No existing dists meet the given requirements!
[INFO]:    No dist exists that meets your requirements, so one will be built.
[INFO]:    Found a single valid recipe set (this is good)
[INFO]:    Trying to find a bootstrap that matches the given recipes.
[INFO]:    This python-for-android revamp is an experimental alpha release!
[INFO]:    It should work (mostly), but you may experience missing features or bugs.
Traceback (most recent call last):
  File "pythonforandroid/toolchain.py", line 711, in <module>
    main()
  File "pythonforandroid/toolchain.py", line 708, in main
    ToolchainCL()
  File "pythonforandroid/toolchain.py", line 323, in __init__
    getattr(self, args.command)(unknown)
  File "pythonforandroid/toolchain.py", line 105, in wrapper_func
    build_dist_from_args(ctx, dist, dist_args)
  File "pythonforandroid/toolchain.py", line 129, in build_dist_from_args
    = get_recipe_order_and_bootstrap(ctx, dist.recipes, bs)
  File "/media/thopiekar/91e97c17-2dbb-47e5-8804-a6f3f4501c8e/Projekte/GIT/thopiekar/python-for-android_fork/pythonforandroid/graph.py", line 187, in get_recipe_order_and_bootstrap
    bs = Bootstrap.get_bootstrap_from_recipes(build_order, ctx)
  File "/media/thopiekar/91e97c17-2dbb-47e5-8804-a6f3f4501c8e/Projekte/GIT/thopiekar/python-for-android_fork/pythonforandroid/bootstrap.py", line 142, in get_bootstrap_from_recipes
    recipe = Recipe.get_recipe(recipe, ctx)
  File "/media/thopiekar/91e97c17-2dbb-47e5-8804-a6f3f4501c8e/Projekte/GIT/thopiekar/python-for-android_fork/pythonforandroid/recipe.py", line 609, in get_recipe
    recipe_file = join(recipes_dir, name, '__init__.py')
  File "/usr/lib/python2.7/posixpath.py", line 68, in join
    if b.startswith('/'):
AttributeError: 'tuple' object has no attribute 'startswith'

What am I doing wrong here?

@inclement
Copy link
Member

I think this is a bug, when the bootstrap recipe dependencies are loaded they are searched for in the possible recipe dirs even if the dependency is a tuple of two alternatives (which should be unpacked and two different possible trees constructed).

I think this hasn't been noticed before because it doesn't happen if you specify some/enough recipe requirements manually, so you may be able to work around it for now by adding some --requirements.

It shouldn't be hard to fix, I'll try to take a look at it in the next few days.

@inclement
Copy link
Member

Actually, I'm wrong, the workaround is to add --bootstrap=sdl2 or --bootstrap=pygame (or your new one if you're doing that for PySide), as this prevents the bootstrap choosing code from running.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants