Repository navigation
Building for different architecure on Apple Silicon #48
Description
Hello,
I am trying to build i386 (x86) version of python 3.7 on a apple sillicon Mac. Because I want to embed a python tool (USDZ Tools) in my app's sandbox.
I tried to run this command in x86 and moved python 3.7 env to temp folder, then tried to build python3.7. Which spits out this error:
Traceback (most recent call last): File "./setup.py", line 2407, in <module> main() File "./setup.py", line 2402, in main "Tools/scripts/2to3", "Tools/scripts/pyvenv"] File "/Users/TD/Downloads/python3.7/build/components/cpython/Lib/distutils/core.py", line 148, in setup dist.run_commands() File "/Users/TD/Downloads/python3.7/build/components/cpython/Lib/distutils/dist.py", line 966, in run_commands self.run_command(cmd) File "/Users/TD/Downloads/python3.7/build/components/cpython/Lib/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/Users/TD/Downloads/python3.7/build/components/cpython/Lib/distutils/command/build.py", line 135, in run self.run_command(cmd_name) File "/Users/TD/Downloads/python3.7/build/components/cpython/Lib/distutils/cmd.py", line 313, in run_command self.distribution.run_command(command) File "/Users/TD/Downloads/python3.7/build/components/cpython/Lib/distutils/dist.py", line 985, in run_command cmd_obj.run() File "/Users/TD/Downloads/python3.7/build/components/cpython/Lib/distutils/command/build_ext.py", line 340, in run self.build_extensions() File "./setup.py", line 272, in build_extensions missing = self.detect_modules() File "./setup.py", line 868, in detect_modules (tuple(int(n) for n in dep_target.split('.')[0:2]) AttributeError: 'int' object has no attribute 'split' make[3]: *** [sharedmods] Error 1 make[2]: *** [build_all_generate_profile] Error 2 make[1]: *** [profile-gen-stamp] Error 2 make: *** [profile-run-stamp] Error 2 ERROR make exited with code 2
This is probably an error caused by the build script, might need to cast dep_target into a String.
Any potential fix? If not I might have to tear down the entire USDZ Tools and re-write it in modern python or Swift. (I really don't want to do this, it uses a lot of dynamic linked libraries and .so objects.)
Some key requirements:
USDZ Tools only supports python 3.7.x on the x86 architecture (Thx Pixar). And I can not find alternative commandline tools that works well.
Have to run in an app sandbox, because I want to keep this app tidy and get it on App Store.
My app have to write in Swift, because it calls an first party API only supports Swift calling.
Activity
zsimic commentedon Apr 15, 2024
How is this related to portable-python? Can't tell from the stack trace, seems like a setuptools issue of some sort?
Never tested building an x86 python from mac M1, may or may not work (we usually use an x86 mac to do the x86 builds)
luotn commentedon Apr 15, 2024
Thank you for your prompt reply, this is last portion of the "portable-python build 3.7.17" command output.
It seems there is something to do with the build script.
The environment I copied for portable-python is python 3.7.9 in x86, I don't know if is this environment that is causing this issue.
I also tried environment of python 3.10 in arm64, which gives wrong architecture error.
PS: my original problem is solved. Resolved by using 64 bit buffer for each file while archiving.