% brew update && brew install python3
% cd /usr/local
% mkdir src ; cd src
% brew install cmake
% curl -Lo pyinstaller-python3.zip https://github.com/pyinstaller/pyinstaller/archive/python3.zip
% pip3 install pyinstaller-python3.zip
% pip3 install -Iv protobuf==3.0.0-alpha-1
% git clone https://github.com/Mindwerks/plate-tectonics.git
% cd plate-tectonics
% cmake .
% make
% cp -p libPlateTectonics.a /usr/local/lib
% cp -p src/platecapi.hpp /usr/local/include
% cp -p src/utils.hpp /usr/local/include
% cd ..
Note that the copy commands seemed to be necessary (or sufficient, anyway) to put the appropriate library and header files in locations where they would be automatically found later on during the compilation of the WorldEngine Python bindings.
Finally I compiled and installed the main "worldengine" code from source:
% git clone https://github.com/Mindwerks/worldengine.git
% cd worldengine
% pip3 install -r requirements_base.txt
Note that I installed the requirements from the base file; the "requirements3.txt" file adds the older 2.x version of "protobuf-py3", which wasn't needed since I had already installed the 3.x alpha version, up above.
Everything built and installed at this point, but I then ran into problems at runtime. I tracked back the errors and made a few modifications to the Python source, based on some Python 3-compliance notes about execfile, import syntax, and xrange/range. I also changed the protobuf-py3 dependency definition in the "setup.py" file. I've posted a Gist of the results of "git diff" to document the changes I made -- once those were in place, I could successfully build, install, and run "worldengine":
% python3 setup.py build
% python3 setup.py install
% cd
% worldengine world -v -n testworld -s 9 -x 128 -y 128 -q 9
[ ... got the expected output and some lovely images ... ]