Page MenuHome

Multi-platform Game Engine Publishing addon fails in 2.77
Closed, InvalidPublic

Description

System Information
Archlinux

Blender Version
Broken: 2.77
Worked: 2.76

Short description of error

Clicking "Publish" in 2.77 results in the following error:

Writing runtime... done
Copying Python files... Traceback (most recent call last):
  File "/usr/share/blender/2.77/scripts/addons/game_engine_publishing.py", line 227, in execute
    self.report
  File "/usr/share/blender/2.77/scripts/addons/game_engine_publishing.py", line 138, in WriteRuntime
    shutil.copytree(src, dst, ignore=lambda dir, contents: [i for i in contents if i == '__pycache__'])
  File "/usr/lib/python3.5/shutil.py", line 303, in copytree
    names = os.listdir(src)
FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/2.77/python/lib'

Exact steps for others to reproduce the error

  1. Open
  2. Click publish

Related Objects

Event Timeline

Ellwood Zwovic (gandalf3) raised the priority of this task from to 90.
Ellwood Zwovic (gandalf3) updated the task description. (Show Details)
Ellwood Zwovic (gandalf3) edited a custom field.

It seems the path to the python lib is assumed to be relative to the location of the blenderplayer, which might not be a valid assumption on Linux if you installed via packages without bundled python.

https://developer.blender.org/diffusion/BA/browse/master/game_engine_publishing.py;093b0effc26220a3639122af547a24f5140bbc03$51-54

python_dir = os.path.join(os.path.dirname(player_path),
                          bpy.app.version_string.split()[0],
                          "python",
                          "lib")

Works with official blender downloaded from blender.org, so seems to be a packaging issue?

Edit: Didn't see Nikolaus's comment above. So indeed this seems to be the case.
Should using system python be supported by the addon?

mangostaniko added a comment.EditedApr 16 2016, 11:49 AM

Assumably a lot of people might get blender via a package manager (at least on Linux) where it might come without python, and unless using Arch Linux it might be an outdated version not fit for Blender. That's why the addon copies the python lib into the executable bundle for Linux and Windows (for Mac OS it seems that its already contained in the Blenderplayer.app), but it tries to copy from a local path assuming python always comes with blender.

So basically you have disable "Publish Default Platform" and copy the Linux Blender binary from blender.org into the Library Path directory, which is //lib by default (// is the path of the .blend file) directory, add a custom platform and select the blenderplayer path, from which it will find the bundled python: https://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Game_Engine/Publishing

Maybe the addon might

  • communicate the meaning of the Library Path parameter more clearly
  • offer an option to publish for platforms that use a working system python install, but i guess that's really something Blenderplayer should allow? However i guess that it makes more sense to ship BGE games bundled with python anyway.

Let's wait for the addon maintainers on that matter.

mangostaniko lowered the priority of this task from 90 to Normal.EditedApr 16 2016, 12:33 PM

Guess this should not be considered a bug, since in fact everything is working fine.
It's more of a design issue, that likely has already been considered by the maintainers.

Brendon Murphy (meta-androcto) changed the task status from Unknown Status to Unknown Status.Sep 4 2016, 12:44 PM

archiving this task, above discussion does not solve but explains behavior as expected