The list is:
* manylinux1_x86_64
* macosx_10_6_x86_64
* win_amd64
Of note, win32 is missing from this list. We can add it later if there
is desire.
Also of note, there is now no path to *not* using wheels. We will need
to evaluate if we want to keep this around and, if so, expose it as an
option to users.
This changes includes so that local includes are consistently
#include "localFile.h"
while system and third-party includes are consistently
#include <systemFile.h>
This commit mostly converts the former to the latter; the two
exceptions are in android_main.cxx and fmodAudioSound.h, where
the reverse was necessary.
This makes it easier to build for one platform even if multiple
platforms are specified in setup.py/cfg. For example:
python setup.py build_apps -p win_amd64
Or, for multiple platforms:
python setup.py build_apps -p win32,win_amd64
This works by adding extra index urls. Optimized wheels have local
version tags that should take precedence over non-optimized wheels. If
no optimized wheel if found for a platform, a warning is issued and a
non-optimized wheel is used instead.
This creates a Windows installer. Still TODO:
* Dealing with creating shortcuts
* Add license information to installers
* Possibly tweak various names (e.g., display names, version numbers,
etc.)
* Application does not show up in Windows 7 list of programs in the
control panel (still has an uninstaller in the start menu)
* Add all built binaries to Start Menu
User-defined file handlers are added to a dictionary of default handlers
(just has egg2bam for *.egg files for now). Any user-provided file
handlers for a given file type will overwrite default file handlers.
This allows users to define file handlers without having to re-add
egg2bam to the list.
This was a hack used by installation methods that did not support
registering new commands correctly. The commands should now work
regardless of installation method (wheel, deb, NSIS installer, etc.).
Many thirdparty libraries rely on __file__ being set properly, for example to be able to locate data files, so it is easiest to just set this to something remotely sensible (like the executable path).
This is still not a perfect solution, since eg. the wrong version of a package may still be used if older versions are still in the __whl_cache__ directory. We may want to look into using pip to resolve the package versions, or do something clever such as automatically remove cached wheels if a newer version of the same package was downloaded.