Hi all!
I am making a set of tooling for building Blender as a Python module in Python. The goal of this tooling is to provide early support for building Blender as a Python module for Windows, MacOS and Linux. I have had success in following the build scripts on all three systems now that I have one of each.
The build tooling that I am making for this compares the release tags of the Git Repo to the release tags of the SVN Repo. Then, inside of the SVN repo we determine for which platforms precompiled libraries exist.
The traversal of the SVN repo is really slow however. I retrieved a complete list of which Python versions were found for which operating system and it took a little over a half an hour. Is anyone familiar with an efficient svn search algorithm that could perhaps reduce the time it takes to map these objects? Or maybe (more likely) there is a place in my code which is inefficient?
The library where this development is occurring is bpy-make in “sources.py”. The slow code is in BlenderSvn.platforms
.
I am however happy with the results I am getting:
Click to expand results
<Version('2.26')>: [{'darwin-6.1-powerpc/': set(), 'windows/': {(2, 2)}}],
<Version('2.27')>: [None],
<Version('2.28a0')>: [{'darwin-6.1-powerpc/': set(), 'windows/': {(2, 2)}}],
<Version('2.28rc0')>: [None],
<Version('2.28')>: [None],
<Version('2.30')>: [{'darwin-6.1-powerpc/': set(), 'windows/': {(2, 2)}}],
<Version('2.31a0')>: [{'darwin-6.1-powerpc/': set(), 'windows/': {(2, 2)}}],
<Version('2.31')>: [{'darwin-6.1-powerpc/': set(), 'windows/': {(2, 2)}}],
<Version('2.32')>: [{'darwin-6.1-powerpc/': set(), 'windows/': {(2, 2)}}],
<Version('2.33a0')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.33')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.34')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.35a0')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.35')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.36')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.37a0')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.37')>: [{'darwin-6.1-powerpc/': set(),
'windows/': {(2, 3), (2, 2)}}],
<Version('2.40')>: [None],
<Version('2.41')>: [None],
<Version('2.42a0')>: [None],
<Version('2.42')>: [None],
<Version('2.43')>: [None],
<Version('2.44')>: [None],
<Version('2.45')>: [None],
<Version('2.46')>: [None],
<Version('2.47')>: [None],
<Version('2.48a0')>: [None],
<Version('2.48')>: [None],
<Version('2.49a0')>: [None, None],
<Version('2.49b0')>: [None],
<Version('2.49')>: [None],
<Version('2.50')>: [None],
<Version('2.51')>: [None],
<Version('2.52')>: [None],
<Version('2.53')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 1)},
'win64/': {(3, 0), (2, 5), (2, 6), (3, 1)},
'windows/': {(3, 1)}}],
<Version('2.54')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 1)},
'win64/': {(3, 1)},
'windows/': {(3, 1)}}],
<Version('2.55')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 1)},
'win64/': {(3, 1)},
'windows/': {(3, 1)}}],
<Version('2.56a0')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 1)},
'win64/': {(3, 1)},
'windows/': {(3, 1)}}],
<Version('2.56')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 1)},
'win64/': {(3, 1)},
'windows/': {(3, 1)}}],
<Version('2.57a0')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2), (3, 1)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.57b0')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2), (3, 1)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.57')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2), (3, 1)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.58a0')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2), (3, 1)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.58')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2), (3, 1)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.59')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2), (3, 1)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.60a0')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.60')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.61')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.62')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.63a0')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.63')>: [{'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.64a0')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.64')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 2)},
'win64/': {(3, 2)},
'windows/': {(3, 2)}}],
<Version('2.65a0')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'windows/': {(3, 2), (3, 3)}}],
<Version('2.65')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'windows/': {(3, 2), (3, 3)}}],
<Version('2.66a0')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'windows/': {(3, 2), (3, 3)}}],
<Version('2.66')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'windows/': {(3, 2), (3, 3)}}],
<Version('2.67a0')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'windows/': {(3, 2), (3, 3)}}],
<Version('2.67b0')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'windows/': {(3, 2), (3, 3)}}],
<Version('2.67')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'windows/': {(3, 2), (3, 3)}}],
<Version('2.68a0')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'win64_vc11/': {(3, 3)},
'windows/': {(3, 2), (3, 3)},
'windows_vc11/': {(3, 3)}}],
<Version('2.68')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'win64_vc11/': {(3, 3)},
'windows/': {(3, 2), (3, 3)},
'windows_vc11/': {(3, 3)}}],
<Version('2.69')>: [{'android/': set(),
'darwin-6.1-powerpc/': {(3, 1)},
'darwin-8.0.0-powerpc/': {(3, 1)},
'darwin-8.x.i386/': {(3, 1)},
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 2), (3, 3)},
'win64_vc11/': {(3, 3)},
'windows/': {(3, 2), (3, 3)},
'windows_vc11/': {(3, 3)}}],
<Version('2.70')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 3)},
'win64/': {(3, 3)},
'win64_vc11/': {(3, 3)},
'win64_vc12/': {(3, 3)},
'windows/': {(3, 3)},
'windows_vc11/': {(3, 3)},
'windows_vc12/': {(3, 3)}}],
<Version('2.71')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 4)},
'win64/': {(3, 4), (3, 3)},
'win64_vc12/': {(3, 4), (3, 3)},
'windows/': {(3, 4), (3, 3)},
'windows_vc12/': {(3, 4), (3, 3)}}],
<Version('2.72')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 4)},
'win64/': {(3, 4), (3, 3)},
'win64_vc12/': {(3, 4)},
'windows/': {(3, 4), (3, 3)},
'windows_vc12/': {(3, 4)}}],
<Version('2.73')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 4)},
'win64/': {(3, 4), (3, 3)},
'win64_vc12/': {(3, 4)},
'windows/': {(3, 4), (3, 3)},
'windows_vc12/': {(3, 4)}}],
<Version('2.74')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 4)},
'win64/': {(3, 4), (3, 3)},
'win64_vc12/': {(3, 4)},
'windows/': {(3, 4), (3, 3)},
'windows_vc12/': {(3, 4)}}],
<Version('2.75')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 4)},
'win64/': {(3, 4), (3, 3)},
'win64_vc12/': {(3, 4)},
'windows/': {(3, 4), (3, 3)},
'windows_vc12/': {(3, 4)}}],
<Version('2.76')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 4)},
'win64/': {(3, 4)},
'win64_vc12/': {(3, 4)},
'windows/': {(3, 4)},
'windows_vc12/': {(3, 4)}}],
<Version('2.77')>: [{'android/': set(),
'darwin-6.1-powerpc/': set(),
'darwin-8.0.0-powerpc/': set(),
'darwin-8.x.i386/': set(),
'darwin-9.x.universal/': {(3, 5)},
'win64/': {(3, 4)},
'win64_vc12/': {(3, 5)},
'win64_vc14/': {(3, 5)},
'windows/': {(3, 4)},
'windows_vc12/': {(3, 4), (3, 5)}}],
<Version('2.78')>: [{'android/': set(),
'darwin-9.x.universal/': {(3, 5)},
'win64/': {(3, 4)},
'win64_vc12/': {(3, 5)},
'win64_vc14/': {(3, 5)},
'windows/': {(3, 4)},
'windows_vc12/': {(3, 4), (3, 5)},
'windows_vc14/': {(3, 5)}}],
<Version('2.79a0')>: [{'android/': set(),
'darwin-9.x.universal/': {(3, 5)},
'darwin/': {(3, 5)},
'win64/': {(3, 4)},
'win64_vc12/': {(3, 5)},
'win64_vc14/': {(3, 5)},
'windows/': {(3, 4)},
'windows_vc12/': {(3, 5)},
'windows_vc14/': {(3, 5)}}],
<Version('2.79')>: [{'android/': set(),
'darwin-9.x.universal/': {(3, 5)},
'darwin/': {(3, 5)},
'win64/': {(3, 4)},
'win64_vc12/': {(3, 5)},
'win64_vc14/': {(3, 5)},
'windows/': {(3, 4)},
'windows_vc12/': {(3, 5)},
'windows_vc14/': {(3, 5)}}],
<Version('2.80')>: [{'darwin/': {(3, 7)},
'win64_vc14/': {(3, 7), (3, 6), (3, 5)},
'windows_vc14/': {(3, 7), (3, 6), (3, 5)}}],
<Version('2.81')>: [{'darwin/': {(3, 7)},
'win64_vc14/': {(3, 7), (3, 6), (3, 5)}}]
Any guidance is appreciated!