PyMeshLab icon indicating copy to clipboard operation
PyMeshLab copied to clipboard

install PyMeshLab on M1-chip

Open MarsVegetables opened this issue 2 years ago • 17 comments

Hi, Currently, this useful lib could not be installed via pip on my M1-chip Mac. Do you have any plan for providing the installation option? Thank you.

MarsVegetables avatar Dec 16 '21 23:12 MarsVegetables

Hi, sorry for the late reply. At the moment we don't have the possibility to test anything on M1, I even don't know if pymeshlab builds on that architecture. Sorry about that. Also releasing it with our build-and-release pipeline on github actions would be not easy (they provide only x86-64 architecture on mac), but I guess that it could be done using cross compilation.. If anyone that has an M1 mac wants to provide any help on this (at least to make pymeshlab build on M1 and make a test wheel), it would be really appreciated.

alemuntoni avatar Jan 11 '22 08:01 alemuntoni

I do have an MBP 2021 with an M1 Processor and I am interested in installing this on a Mac. If I can help you with that, please let me know. But I have to admit that I am pretty clueless when it comes to the whole Wheel-Stuff. You might have to give me precise instructions on how to be helpful :)

StWiemann avatar Jan 31 '22 18:01 StWiemann

Right now, we cannot automate the build of m1 (see https://github.com/cnr-isti-vclab/meshlab/issues/1172 and https://github.com/actions/virtual-environments/issues/2187). Also having a M1 machine and build manually the package would led on generating a wheel for a specific python version (as you can see in the release page, we release a version of pymeshlab for each python version and for each architecture). If you want to try building pymeshlab, here there are the instructions to build pymeshlab. You can also try to build it using the scripts: after having cloned the repo and installed python and qt, it should be as easy as calling:

sh scripts/macOS/1_build.sh

Also knowing if right now it builds easily would help for a future release!

alemuntoni avatar Feb 01 '22 18:02 alemuntoni

After sorting out some path-stuff with Qt5 it built just fine with and without the 1_build.sh script. 👍

StWiemann avatar Feb 03 '22 12:02 StWiemann

Great @StWiemann, thanks! So, I just fixed a small bug with the last commit. Could you please pull, rebuild and then go into the distrib folder inside the build directory and try pymeshlab? Just opening a terminal from the distrib directory and run

python3
import pymeshlab

alemuntoni avatar Feb 03 '22 16:02 alemuntoni

@alemuntoni Sorry that it took me so long. I encountered an error I tried sorting out beforehand and it turned out that I didn't clone the whole repository correctly. That took some time to figure out. But after that everything worked fine and I was able to import pymeshlab. :)

StWiemann avatar Feb 11 '22 13:02 StWiemann

@StWiemann that's great! Then we just need to wait until github actions makes available M1 virtual machines.. Just to be sure that everything works as expected, could you please run the tests from the distrib directory?

pytest --pyargs pymeshlab

You'll need to run pip install pytest if you don't have the pytest package installed.

alemuntoni avatar Feb 11 '22 15:02 alemuntoni

Tried it with a conda and a pyenv virtual env of python 3.9 just to make sure that it isn't conda-related:

When I do python -m pytest --pyargs pymeshlab (something I found on the Internet as suggested fix) I get:

============================= test session starts ==============================
platform darwin -- Python 3.9.9, pytest-7.0.1, pluggy-1.0.0
rootdir: /Users/stephan/git/test-pymesh/PyMeshLab
collected 9 items                                                              

pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py F        [ 11%]
pymeshlab/dummybin.app/Contents/tests/test_delete_small_components.py F  [ 22%]
pymeshlab/dummybin.app/Contents/tests/test_hausdorff.py F                [ 33%]
pymeshlab/dummybin.app/Contents/tests/test_laplacian_smoothing.py F      [ 44%]
pymeshlab/dummybin.app/Contents/tests/test_merge_meshes.py F             [ 55%]
pymeshlab/dummybin.app/Contents/tests/test_mesh_booleans.py F            [ 66%]
pymeshlab/dummybin.app/Contents/tests/test_number_plugins.py F           [ 77%]
pymeshlab/dummybin.app/Contents/tests/test_select_faces_with_edge_longer_than.py F [ 88%]
                                                                         [ 88%]
pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py F [100%]

=================================== FAILURES ===================================
____________________________ test_ambient_occlusion ____________________________

    @pytest.mark.glcontext
    def test_ambient_occlusion():
        print('\n')
        base_path = samples_common.samples_absolute_path()
        output_path = samples_common.test_output_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py:13: AttributeError
----------------------------- Captured stdout call -----------------------------


_________________________ test_delete_small_components _________________________

    def test_delete_small_components():
        print('\n')
        base_path = samples_common.samples_absolute_path()
        output_path = samples_common.test_output_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_delete_small_components.py:9: AttributeError
----------------------------- Captured stdout call -----------------------------


________________________________ test_hausdorff ________________________________

    def test_hausdorff():
        print('\n')
        base_path = samples_common.samples_absolute_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_hausdorff.py:8: AttributeError
----------------------------- Captured stdout call -----------------------------


___________________________ test_laplacian_smoothing ___________________________

    def test_laplacian_smoothing():
        print('\n')
        output_path = samples_common.test_output_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_laplacian_smoothing.py:8: AttributeError
----------------------------- Captured stdout call -----------------------------


______________________________ test_merge_meshes _______________________________

    def test_merge_meshes():
        print('\n')
        base_path = samples_common.samples_absolute_path()
        output_path = samples_common.test_output_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_merge_meshes.py:9: AttributeError
----------------------------- Captured stdout call -----------------------------


______________________________ test_mesh_booleans ______________________________

    def test_mesh_booleans():
        print('\n')
        base_path = samples_common.samples_absolute_path()
        output_path = samples_common.test_output_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_mesh_booleans.py:9: AttributeError
----------------------------- Captured stdout call -----------------------------


_____________________________ test_number_plugins ______________________________

    def test_number_plugins():
        print('\n')
>       n_plugins = ml.number_plugins()
E       AttributeError: module 'pymeshlab' has no attribute 'number_plugins'

pymeshlab/dummybin.app/Contents/tests/test_number_plugins.py:6: AttributeError
----------------------------- Captured stdout call -----------------------------


___________________ test_select_faces_with_edge_longer_than ____________________

    def test_select_faces_with_edge_longer_than():
        print('\n')
        base_path = samples_common.samples_absolute_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_select_faces_with_edge_longer_than.py:8: AttributeError
----------------------------- Captured stdout call -----------------------------


_______________________ test_texture_map_defragmentation _______________________

    @pytest.mark.glcontext
    def test_texture_map_defragmentation():
        print('\n')
        base_path = samples_common.samples_absolute_path()
        output_path = samples_common.test_output_path()
>       ms = ml.MeshSet()
E       AttributeError: module 'pymeshlab' has no attribute 'MeshSet'

pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py:13: AttributeError
----------------------------- Captured stdout call -----------------------------


=============================== warnings summary ===============================
pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py:8
  /Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py:8: PytestUnknownMarkWarning: Unknown pytest.mark.glcontext - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.glcontext

pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py:8
  /Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py:8: PytestUnknownMarkWarning: Unknown pytest.mark.glcontext - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.glcontext

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py::test_ambient_occlusion
FAILED pymeshlab/dummybin.app/Contents/tests/test_delete_small_components.py::test_delete_small_components
FAILED pymeshlab/dummybin.app/Contents/tests/test_hausdorff.py::test_hausdorff
FAILED pymeshlab/dummybin.app/Contents/tests/test_laplacian_smoothing.py::test_laplacian_smoothing
FAILED pymeshlab/dummybin.app/Contents/tests/test_merge_meshes.py::test_merge_meshes
FAILED pymeshlab/dummybin.app/Contents/tests/test_mesh_booleans.py::test_mesh_booleans
FAILED pymeshlab/dummybin.app/Contents/tests/test_number_plugins.py::test_number_plugins
FAILED pymeshlab/dummybin.app/Contents/tests/test_select_faces_with_edge_longer_than.py::test_select_faces_with_edge_longer_than
FAILED pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py::test_texture_map_defragmentation
======================== 9 failed, 2 warnings in 0.04s =========================

When I try it with just pytest --pyargs pymeshlab I get:

============================= test session starts ==============================
platform darwin -- Python 3.9.9, pytest-7.0.1, pluggy-1.0.0
rootdir: /Users/stephan/git/test-pymesh/PyMeshLab
collected 0 items / 9 errors                                                   

==================================== ERRORS ====================================
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_delete_small_components.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_delete_small_components.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_delete_small_components.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_hausdorff.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_hausdorff.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_hausdorff.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_laplacian_smoothing.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_laplacian_smoothing.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_laplacian_smoothing.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_merge_meshes.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_merge_meshes.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_merge_meshes.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_mesh_booleans.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_mesh_booleans.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_mesh_booleans.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_number_plugins.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_number_plugins.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_number_plugins.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_select_faces_with_edge_longer_than.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_select_faces_with_edge_longer_than.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_select_faces_with_edge_longer_than.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
_ ERROR collecting src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py _
ImportError while importing test module '/Users/stephan/git/test-pymesh/PyMeshLab/src/build/distrib/pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/Users/stephan/.pyenv/versions/3.9.9/lib/python3.9/importlib/__init__.py:127: in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py:1: in <module>
    import pymeshlab as ml
E   ModuleNotFoundError: No module named 'pymeshlab'
=========================== short test summary info ============================
ERROR pymeshlab/dummybin.app/Contents/tests/test_ambient_occlusion.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_delete_small_components.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_hausdorff.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_laplacian_smoothing.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_merge_meshes.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_mesh_booleans.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_number_plugins.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_select_faces_with_edge_longer_than.py
ERROR pymeshlab/dummybin.app/Contents/tests/test_texture_map_defragmentation.py
!!!!!!!!!!!!!!!!!!! Interrupted: 9 errors during collection !!!!!!!!!!!!!!!!!!!!
============================== 9 errors in 0.06s =============================

Not sure why it can't find pymeshlab.

StWiemann avatar Feb 11 '22 19:02 StWiemann

Ran into a very odd issue building from source on an M1 (latest master). Have a work-around but thought I'd share it in case it effects others.

  • build is OK, but import pymeshlab causes a hard crash, due to code signing issues.
Crash report
-------------------------------------
Translated Report (Full Report Below)
-------------------------------------

Process: python3.8 [1816] Path: /Users/USER/*/python3.8 Identifier: python3.8 Version: ??? Code Type: ARM-64 (Native) Parent Process: zsh [567] Responsible: Terminal [501] User ID: 501

Date/Time: 2022-03-15 14:29:52.0911 +1300 OS Version: macOS 12.1 (21C52) Report Version: 12 Anonymous UUID: 2BE0EFF7-5876-DDD6-578B-D17A0D293236

Time Awake Since Boot: 620 seconds

System Integrity Protection: enabled

Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGKILL (Code Signature Invalid)) Exception Codes: UNKNOWN_0x32 at 0x0000000105b80000 Exception Codes: 0x0000000000000032, 0x0000000105b80000 Exception Note: EXC_CORPSE_NOTIFY

Termination Reason: Namespace CODESIGNING, Code 2

VM Region Info: 0x105b80000 is in 0x105b80000-0x105ba8000; bytes after start: 0 bytes before end: 163839 REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL mapped file 105b70000-105b80000 [ 64K] r--/rwx SM=COW ...t_id=2f5636f5 ---> mapped file 105b80000-105ba8000 [ 160K] r-x/rwx SM=COW ...t_id=2f5648f5 VM_ALLOCATE (reserved) 105ba8000-105bd0000 [ 160K] rw-/rwx SM=NUL ...(unallocated)

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 dyld 0x1035a7d88 dyld3::MachOFile::isMachO(Diagnostics&, unsigned long long) const + 20 1 dyld 0x103589174 dyld4::Loader::mapSegments(Diagnostics&, dyld4::RuntimeState&, char const*, unsigned long long, dyld4::Loader::CodeSignatureInFile const&, bool, dyld3::Arraydyld4::Loader::Region const&, bool, bool, dyld4::Loader::FileValidationInfo const&) + 1092 2 dyld 0x103589174 dyld4::Loader::mapSegments(Diagnostics&, dyld4::RuntimeState&, char const*, unsigned long long, dyld4::Loader::CodeSignatureInFile const&, bool, dyld3::Arraydyld4::Loader::Region const&, bool, bool, dyld4::Loader::FileValidationInfo const&) + 1092 3 dyld 0x10358e990 invocation function for block in dyld4::JustInTimeLoader::makeJustInTimeLoaderDisk(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, bool, unsigned int) + 68 4 dyld 0x10358e324 dyld4::JustInTimeLoader::withRegions(dyld3::MachOAnalyzer const*, void (dyld3::Arraydyld4::Loader::Region const&) block_pointer) + 292 5 dyld 0x10358e8e4 invocation function for block in dyld4::JustInTimeLoader::makeJustInTimeLoaderDisk(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, bool, unsigned int) + 492 6 dyld 0x103593b44 dyld4::SyscallDelegate::withReadOnlyMappedFile(Diagnostics&, char const*, bool, void (void const*, unsigned long, bool, dyld4::FileID const&, char const*) block_pointer) const + 128 7 dyld 0x10358e6c4 dyld4::JustInTimeLoader::makeJustInTimeLoaderDisk(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, bool, unsigned int) + 204 8 dyld 0x103588580 invocation function for block in dyld4::Loader::getLoader(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&) + 1412 9 dyld 0x103587810 dyld4::Loader::forEachResolvedAtPathVar(dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, dyld4::ProcessConfig::PathOverrides::Type, bool&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer) + 172 10 dyld 0x1035876d8 invocation function for block in dyld4::Loader::forEachPath(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer) + 116 11 dyld 0x10357de90 dyld4::ProcessConfig::PathOverrides::forEachPathVariant(char const*, dyld3::Platform, bool, bool&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer) const + 672 12 dyld 0x10358764c dyld4::Loader::forEachPath(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer) + 172 13 dyld 0x103587df8 dyld4::Loader::getLoader(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&) + 840 14 dyld 0x10358c968 invocation function for block in dyld4::JustInTimeLoader::loadDependents(Diagnostics&, dyld4::RuntimeState&, dyld4::Loader::LoadOptions const&) + 380 15 dyld 0x1035a8ffc invocation function for block in dyld3::MachOFile::forEachDependentDylib(void (char const*, bool, bool, bool, unsigned int, unsigned int, bool&) block_pointer) const + 148 16 dyld 0x103575f98 dyld3::MachOFile::forEachLoadCommand(Diagnostics&, void (load_command const*, bool&) block_pointer) const + 168 17 dyld 0x1035a8e3c dyld3::MachOFile::forEachDependentDylib(void (char const*, bool, bool, bool, unsigned int, unsigned int, bool&) block_pointer) const + 172 18 dyld 0x10358c6d0 dyld4::JustInTimeLoader::loadDependents(Diagnostics&, dyld4::RuntimeState&, dyld4::Loader::LoadOptions const&) + 164 19 dyld 0x103599ad4 invocation function for block in dyld4::APIs::dlopen_from(char const*, int, void*) + 472 20 dyld 0x10357ea24 dyld4::RuntimeState::withLoadersWriteLock(void () block_pointer) + 100 21 dyld 0x103599704 dyld4::APIs::dlopen_from(char const*, int, void*) + 464 22 python3.8 0x102f593d8 _PyImport_FindSharedFuncptr + 380 23 python3.8 0x102f19abc _PyImport_LoadDynamicModuleWithSpec + 1304 24 python3.8 0x102f1885c _imp_create_dynamic + 456 25 python3.8 0x102e23970 cfunction_vectorcall_FASTCALL + 284 26 python3.8 0x102dd14c0 PyVectorcall_Call + 120 27 python3.8 0x102ee3318 _PyEval_EvalFrameDefault + 30588 28 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 29 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 30 python3.8 0x102ee6348 call_function + 528 31 python3.8 0x102ee2ebc _PyEval_EvalFrameDefault + 29472 32 python3.8 0x102dd1d90 function_code_fastcall + 128 33 python3.8 0x102ee6348 call_function + 528 34 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 35 python3.8 0x102dd1d90 function_code_fastcall + 128 36 python3.8 0x102ee6348 call_function + 528 37 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 38 python3.8 0x102dd1d90 function_code_fastcall + 128 39 python3.8 0x102ee6348 call_function + 528 40 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 41 python3.8 0x102dd1d90 function_code_fastcall + 128 42 python3.8 0x102ee6348 call_function + 528 43 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 44 python3.8 0x102dd1d90 function_code_fastcall + 128 45 python3.8 0x102dd3b34 object_vacall + 444 46 python3.8 0x102dd3cc4 _PyObject_CallMethodIdObjArgs + 116 47 python3.8 0x102f136f4 PyImport_ImportModuleLevelObject + 1792 48 python3.8 0x102ee1130 _PyEval_EvalFrameDefault + 21908 49 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 50 python3.8 0x102ed6650 builtin_exec + 1096 51 python3.8 0x102e23970 cfunction_vectorcall_FASTCALL + 284 52 python3.8 0x102dd14c0 PyVectorcall_Call + 120 53 python3.8 0x102ee3318 _PyEval_EvalFrameDefault + 30588 54 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 55 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 56 python3.8 0x102ee6348 call_function + 528 57 python3.8 0x102ee2ebc _PyEval_EvalFrameDefault + 29472 58 python3.8 0x102dd1d90 function_code_fastcall + 128 59 python3.8 0x102ee6348 call_function + 528 60 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 61 python3.8 0x102dd1d90 function_code_fastcall + 128 62 python3.8 0x102ee6348 call_function + 528 63 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 64 python3.8 0x102dd1d90 function_code_fastcall + 128 65 python3.8 0x102ee6348 call_function + 528 66 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 67 python3.8 0x102dd1d90 function_code_fastcall + 128 68 python3.8 0x102dd3b34 object_vacall + 444 69 python3.8 0x102dd3cc4 _PyObject_CallMethodIdObjArgs + 116 70 python3.8 0x102f136f4 PyImport_ImportModuleLevelObject + 1792 71 python3.8 0x102ee1130 _PyEval_EvalFrameDefault + 21908 72 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 73 python3.8 0x102ed6650 builtin_exec + 1096 74 python3.8 0x102e23970 cfunction_vectorcall_FASTCALL + 284 75 python3.8 0x102ee6348 call_function + 528 76 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 77 python3.8 0x102de8d3c gen_send_ex + 324 78 python3.8 0x102ede90c _PyEval_EvalFrameDefault + 11632 79 python3.8 0x102de8d3c gen_send_ex + 324 80 python3.8 0x102ede90c _PyEval_EvalFrameDefault + 11632 81 python3.8 0x102de8d3c gen_send_ex + 324 82 python3.8 0x102ddfa4c method_vectorcall_O + 448 83 python3.8 0x102ee6348 call_function + 528 84 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 85 python3.8 0x102dd1d90 function_code_fastcall + 128 86 python3.8 0x102ee6348 call_function + 528 87 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 88 python3.8 0x102dd1d90 function_code_fastcall + 128 89 python3.8 0x102ee6348 call_function + 528 90 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 91 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 92 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 93 python3.8 0x102dd591c method_vectorcall + 156 94 python3.8 0x102ee6348 call_function + 528 95 python3.8 0x102ee2fac _PyEval_EvalFrameDefault + 29712 96 python3.8 0x102dd1d90 function_code_fastcall + 128 97 python3.8 0x102ee6348 call_function + 528 98 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 99 python3.8 0x102dd1d90 function_code_fastcall + 128 100 python3.8 0x102ee6348 call_function + 528 101 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 102 python3.8 0x102dd1d90 function_code_fastcall + 128 103 python3.8 0x102ee6348 call_function + 528 104 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 105 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 106 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 107 python3.8 0x102dd5a88 method_vectorcall + 520 108 python3.8 0x102dd14c0 PyVectorcall_Call + 120 109 python3.8 0x102ee314c _PyEval_EvalFrameDefault + 30128 110 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 111 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 112 python3.8 0x102ee6348 call_function + 528 113 python3.8 0x102ee2f34 _PyEval_EvalFrameDefault + 29592 114 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 115 python3.8 0x102f34e3c PyRun_SimpleFileExFlags + 1052 116 python3.8 0x102f5ceb0 Py_RunMain + 2980 117 python3.8 0x102f5e0a8 pymain_main + 1244 118 python3.8 0x102da81e0 main + 56 119 dyld 0x1035790f4 start + 520

Thread 1: 0 libsystem_kernel.dylib 0x1b3b5d0c0 __psynch_cvwait + 8 1 libsystem_pthread.dylib 0x1b3b95808 _pthread_cond_wait + 1228 2 python3.8 0x102f49ae8 PyThread_acquire_lock_timed + 604 3 python3.8 0x102fb7d9c acquire_timed + 256 4 python3.8 0x102fb7fb0 lock_PyThread_acquire_lock + 72 5 python3.8 0x102ddf27c method_vectorcall_VARARGS_KEYWORDS + 568 6 python3.8 0x102ee6348 call_function + 528 7 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 8 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 9 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 10 python3.8 0x102ee6348 call_function + 528 11 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 12 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 13 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 14 python3.8 0x102ee6348 call_function + 528 15 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 16 python3.8 0x102dd1d90 function_code_fastcall + 128 17 python3.8 0x102dd14c0 PyVectorcall_Call + 120 18 python3.8 0x102ee314c _PyEval_EvalFrameDefault + 30128 19 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 20 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 21 python3.8 0x102dd14c0 PyVectorcall_Call + 120 22 python3.8 0x102ee314c _PyEval_EvalFrameDefault + 30128 23 python3.8 0x102edb584 _PyEval_EvalCodeWithName + 3340 24 python3.8 0x102dd1f10 _PyFunction_Vectorcall + 236 25 python3.8 0x102ee6348 call_function + 528 26 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 27 python3.8 0x102dd1d90 function_code_fastcall + 128 28 python3.8 0x102ee6348 call_function + 528 29 python3.8 0x102ee2ea0 _PyEval_EvalFrameDefault + 29444 30 python3.8 0x102dd1d90 function_code_fastcall + 128 31 python3.8 0x102dd59cc method_vectorcall + 332 32 python3.8 0x102dd14c0 PyVectorcall_Call + 120 33 python3.8 0x102fb72fc t_bootstrap + 196 34 python3.8 0x102f49604 pythread_wrapper + 48 35 libsystem_pthread.dylib 0x1b3b95240 _pthread_start + 148 36 libsystem_pthread.dylib 0x1b3b90024 thread_start + 8

Thread 0 crashed with ARM Thread State (64-bit): x0: 0x0000000105b80000 x1: 0x000000016d055178 x2: 0x0000000000028000 x3: 0x0000000000040012 x4: 0x000000000000000c x5: 0x0000000000000000 x6: 0x0000000000000000 x7: 0x0000000000000000 x8: 0x00000001035ec62c x9: 0x00000001035edea8 x10: 0x0000000000000004 x11: 0x0000000000000001 x12: 0x0000000000000001 x13: 0x0800000000030000 x14: 0x0000000000030000 x15: 0x0000000000000000 x16: 0x00000000000000c5 x17: 0x6ae100016d054958 x18: 0x0000000000000000 x19: 0x000000016d055178 x20: 0x00000001031b0060 x21: 0x0000000000050000 x22: 0x000000000000000c x23: 0x000000016d054c68 x24: 0x0000000000000040 x25: 0x0000000000000000 x26: 0x000000016d0549ec x27: 0x0000000000000000 x28: 0x0000000105b80000 fp: 0x000000016d0545b0 lr: 0x7f6f000103589174 sp: 0x000000016d0545a0 pc: 0x00000001035a7d88 cpsr: 0x00001000 far: 0x0000000105b80000 esr: 0x92000007 (Data Abort) byte read Translation fault

Binary Images: 0x103574000 - 0x1035d3fff dyld () <7e92b284-4b90-3b68-b31a-3ddc4c0e8d40> /usr/lib/dyld 0x102da4000 - 0x103073fff python3.8 () <60d73728-b4bc-3469-b887-1dddbc1f5fe3> /Users/USER//python3.8 0x1b3b58000 - 0x1b3b8dfff libsystem_kernel.dylib () /usr/lib/system/libsystem_kernel.dylib 0x1b3b8e000 - 0x1b3b9afff libsystem_pthread.dylib () /usr/lib/system/libsystem_pthread.dylib 0x0 - 0xffffffffffffffff ??? () <00000000-0000-0000-0000-000000000000> ???

External Modification Summary: Calls made by other processes targeting this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by all processes on this machine: task_for_pid: 0 thread_create: 0 thread_set_state: 0

VM Region Summary: ReadOnly portion of Libraries: Total=665.6M resident=0K(0%) swapped_out_or_unallocated=665.6M(100%) Writable regions: Total=1.1G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.1G(100%)

                            VIRTUAL   REGION 

REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Activity Tracing 256K 1 Kernel Alloc Once 32K 1 MALLOC 234.2M 31 MALLOC guard page 96K 5 MALLOC_MEDIUM (reserved) 480.0M 4 reserved VM address space (unallocated) MALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated) STACK GUARD 32K 2 Stack 32.0M 2 VM_ALLOCATE 1.0G 109 VM_ALLOCATE (reserved) 160K 1 reserved VM address space (unallocated) __AUTH 221K 46 __AUTH_CONST 2879K 122 __DATA 2027K 161 __DATA_CONST 4508K 169 __DATA_DIRTY 233K 50 __LINKEDIT 578.8M 48 __OBJC_CONST 259K 29 __OBJC_RO 82.0M 1 __OBJC_RW 3104K 1 __TEXT 86.7M 175 __UNICODE 588K 1 dyld private memory 1024K 1 mapped file 1632K 8 shared memory 32K 2 =========== ======= ======= TOTAL 2.9G 971 TOTAL, minus reserved VM space 2.0G 971


Full Report

{"app_name":"python3.8","timestamp":"2022-03-15 14:29:53.00 +1300","app_version":"","slice_uuid":"60d73728-b4bc-3469-b887-1dddbc1f5fe3","build_version":"","platform":1,"share_with_app_devs":0,"is_first_party":1,"bug_type":"309","os_version":"macOS 12.1 (21C52)","incident_id":"0522892B-AE72-4681-811B-B11B506AD059","name":"python3.8"} { "uptime" : 620, "procLaunch" : "2022-03-15 14:29:49.6071 +1300", "procRole" : "Unspecified", "version" : 2, "userID" : 501, "deployVersion" : 210, "modelCode" : "MacBookPro18,3", "procStartAbsTime" : 15019907642, "coalitionID" : 511, "osVersion" : { "train" : "macOS 12.1", "build" : "21C52", "releaseType" : "User" }, "captureTime" : "2022-03-15 14:29:52.0911 +1300", "incident" : "0522892B-AE72-4681-811B-B11B506AD059", "bug_type" : "309", "pid" : 1816, "procExitAbsTime" : 15079510076, "translated" : false, "cpuType" : "ARM-64", "procName" : "python3.8", "procPath" : "/Users/USER//python3.8", "parentProc" : "zsh", "parentPid" : 567, "coalitionName" : "com.apple.Terminal", "crashReporterKey" : "2BE0EFF7-5876-DDD6-578B-D17A0D293236", "responsiblePid" : 501, "responsibleProc" : "Terminal", "sip" : "enabled", "vmRegionInfo" : "0x105b80000 is in 0x105b80000-0x105ba8000; bytes after start: 0 bytes before end: 163839\n REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL\n mapped file 105b70000-105b80000 [ 64K] r--/rwx SM=COW ...t_id=2f5636f5\n---> mapped file 105b80000-105ba8000 [ 160K] r-x/rwx SM=COW ...t_id=2f5648f5\n VM_ALLOCATE (reserved) 105ba8000-105bd0000 [ 160K] rw-/rwx SM=NUL ...(unallocated)", "isCorpse" : 1, "exception" : {"codes":"0x0000000000000032, 0x0000000105b80000","rawCodes":[50,4390912000],"type":"EXC_BAD_ACCESS","signal":"SIGKILL (Code Signature Invalid)","subtype":"UNKNOWN_0x32 at 0x0000000105b80000"}, "termination" : {"namespace":"CODESIGNING","flags":0,"code":2}, "vmregioninfo" : "0x105b80000 is in 0x105b80000-0x105ba8000; bytes after start: 0 bytes before end: 163839\n REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL\n mapped file 105b70000-105b80000 [ 64K] r--/rwx SM=COW ...t_id=2f5636f5\n---> mapped file 105b80000-105ba8000 [ 160K] r-x/rwx SM=COW ...t_id=2f5648f5\n VM_ALLOCATE (reserved) 105ba8000-105bd0000 [ 160K] rw-/rwx SM=NUL ...(unallocated)", "extMods" : {"caller":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"system":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"targeted":{"thread_create":0,"thread_set_state":0,"task_for_pid":0},"warnings":0}, "faultingThread" : 0, "threads" : [{"triggered":true,"id":18066,"threadState":{"x":[{"value":4390912000},{"value":6124032376},{"value":163840},{"value":262162},{"value":12},{"value":0},{"value":0},{"value":0},{"value":4351510060,"symbolLocation":172,"symbol":"_main_thread"},{"value":4351516328,"symbolLocation":0,"symbol":"errno"},{"value":4},{"value":1},{"value":1},{"value":576460752303620096},{"value":196608},{"value":0},{"value":197},{"value":7701436843904289112},{"value":0},{"value":6124032376},{"value":4347068512},{"value":327680},{"value":12},{"value":6124031080},{"value":64},{"value":0},{"value":6124030444},{"value":0},{"value":4390912000}],"flavor":"ARM_THREAD_STATE64","lr":{"value":9182558169582834036},"cpsr":{"value":4096},"fp":{"value":6124029360},"sp":{"value":6124029344},"esr":{"value":2449473543,"description":"(Data Abort) byte read Translation fault"},"pc":{"value":4351229320,"matchesCrashFrame":1},"far":{"value":4390912000}},"queue":"com.apple.main-thread","frames":[{"imageOffset":212360,"symbol":"dyld3::MachOFile::isMachO(Diagnostics&, unsigned long long) const","symbolLocation":20,"imageIndex":0},{"imageOffset":86388,"symbol":"dyld4::Loader::mapSegments(Diagnostics&, dyld4::RuntimeState&, char const, unsigned long long, dyld4::Loader::CodeSignatureInFile const&, bool, dyld3::Arraydyld4::Loader::Region const&, bool, bool, dyld4::Loader::FileValidationInfo const&)","symbolLocation":1092,"imageIndex":0},{"imageOffset":86388,"symbol":"dyld4::Loader::mapSegments(Diagnostics&, dyld4::RuntimeState&, char const*, unsigned long long, dyld4::Loader::CodeSignatureInFile const&, bool, dyld3::Arraydyld4::Loader::Region const&, bool, bool, dyld4::Loader::FileValidationInfo const&)","symbolLocation":1092,"imageIndex":0},{"imageOffset":108944,"symbol":"invocation function for block in dyld4::JustInTimeLoader::makeJustInTimeLoaderDisk(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, bool, unsigned int)","symbolLocation":68,"imageIndex":0},{"imageOffset":107300,"symbol":"dyld4::JustInTimeLoader::withRegions(dyld3::MachOAnalyzer const*, void (dyld3::Arraydyld4::Loader::Region const&) block_pointer)","symbolLocation":292,"imageIndex":0},{"imageOffset":108772,"symbol":"invocation function for block in dyld4::JustInTimeLoader::makeJustInTimeLoaderDisk(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, bool, unsigned int)","symbolLocation":492,"imageIndex":0},{"imageOffset":129860,"symbol":"dyld4::SyscallDelegate::withReadOnlyMappedFile(Diagnostics&, char const*, bool, void (void const*, unsigned long, bool, dyld4::FileID const&, char const*) block_pointer) const","symbolLocation":128,"imageIndex":0},{"imageOffset":108228,"symbol":"dyld4::JustInTimeLoader::makeJustInTimeLoaderDisk(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, bool, unsigned int)","symbolLocation":204,"imageIndex":0},{"imageOffset":83328,"symbol":"invocation function for block in dyld4::Loader::getLoader(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&)","symbolLocation":1412,"imageIndex":0},{"imageOffset":79888,"symbol":"dyld4::Loader::forEachResolvedAtPathVar(dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, dyld4::ProcessConfig::PathOverrides::Type, bool&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer)","symbolLocation":172,"imageIndex":0},{"imageOffset":79576,"symbol":"invocation function for block in dyld4::Loader::forEachPath(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer)","symbolLocation":116,"imageIndex":0},{"imageOffset":40592,"symbol":"dyld4::ProcessConfig::PathOverrides::forEachPathVariant(char const*, dyld3::Platform, bool, bool&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer) const","symbolLocation":672,"imageIndex":0},{"imageOffset":79436,"symbol":"dyld4::Loader::forEachPath(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&, void (char const*, dyld4::ProcessConfig::PathOverrides::Type, bool&) block_pointer)","symbolLocation":172,"imageIndex":0},{"imageOffset":81400,"symbol":"dyld4::Loader::getLoader(Diagnostics&, dyld4::RuntimeState&, char const*, dyld4::Loader::LoadOptions const&)","symbolLocation":840,"imageIndex":0},{"imageOffset":100712,"symbol":"invocation function for block in dyld4::JustInTimeLoader::loadDependents(Diagnostics&, dyld4::RuntimeState&, dyld4::Loader::LoadOptions const&)","symbolLocation":380,"imageIndex":0},{"imageOffset":217084,"symbol":"invocation function for block in dyld3::MachOFile::forEachDependentDylib(void (char const*, bool, bool, bool, unsigned int, unsigned int, bool&) block_pointer) const","symbolLocation":148,"imageIndex":0},{"imageOffset":8088,"symbol":"dyld3::MachOFile::forEachLoadCommand(Diagnostics&, void (load_command const*, bool&) block_pointer) const","symbolLocation":168,"imageIndex":0},{"imageOffset":216636,"symbol":"dyld3::MachOFile::forEachDependentDylib(void (char const*, bool, bool, bool, unsigned int, unsigned int, bool&) block_pointer) const","symbolLocation":172,"imageIndex":0},{"imageOffset":100048,"symbol":"dyld4::JustInTimeLoader::loadDependents(Diagnostics&, dyld4::RuntimeState&, dyld4::Loader::LoadOptions const&)","symbolLocation":164,"imageIndex":0},{"imageOffset":154324,"symbol":"invocation function for block in dyld4::APIs::dlopen_from(char const*, int, void*)","symbolLocation":472,"imageIndex":0},{"imageOffset":43556,"symbol":"dyld4::RuntimeState::withLoadersWriteLock(void () block_pointer)","symbolLocation":100,"imageIndex":0},{"imageOffset":153348,"symbol":"dyld4::APIs::dlopen_from(char const*, int, void*)","symbolLocation":464,"imageIndex":0},{"imageOffset":1790936,"symbol":"_PyImport_FindSharedFuncptr","symbolLocation":380,"imageIndex":1},{"imageOffset":1530556,"symbol":"_PyImport_LoadDynamicModuleWithSpec","symbolLocation":1304,"imageIndex":1},{"imageOffset":1525852,"symbol":"_imp_create_dynamic","symbolLocation":456,"imageIndex":1},{"imageOffset":522608,"symbol":"cfunction_vectorcall_FASTCALL","symbolLocation":284,"imageIndex":1},{"imageOffset":185536,"symbol":"PyVectorcall_Call","symbolLocation":120,"imageIndex":1},{"imageOffset":1307416,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":30588,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306300,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29472,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":195380,"symbol":"object_vacall","symbolLocation":444,"imageIndex":1},{"imageOffset":195780,"symbol":"_PyObject_CallMethodIdObjArgs","symbolLocation":116,"imageIndex":1},{"imageOffset":1505012,"symbol":"PyImport_ImportModuleLevelObject","symbolLocation":1792,"imageIndex":1},{"imageOffset":1298736,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":21908,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":1254992,"symbol":"builtin_exec","symbolLocation":1096,"imageIndex":1},{"imageOffset":522608,"symbol":"cfunction_vectorcall_FASTCALL","symbolLocation":284,"imageIndex":1},{"imageOffset":185536,"symbol":"PyVectorcall_Call","symbolLocation":120,"imageIndex":1},{"imageOffset":1307416,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":30588,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306300,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29472,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":195380,"symbol":"object_vacall","symbolLocation":444,"imageIndex":1},{"imageOffset":195780,"symbol":"_PyObject_CallMethodIdObjArgs","symbolLocation":116,"imageIndex":1},{"imageOffset":1505012,"symbol":"PyImport_ImportModuleLevelObject","symbolLocation":1792,"imageIndex":1},{"imageOffset":1298736,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":21908,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":1254992,"symbol":"builtin_exec","symbolLocation":1096,"imageIndex":1},{"imageOffset":522608,"symbol":"cfunction_vectorcall_FASTCALL","symbolLocation":284,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":281916,"symbol":"gen_send_ex","symbolLocation":324,"imageIndex":1},{"imageOffset":1288460,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":11632,"imageIndex":1},{"imageOffset":281916,"symbol":"gen_send_ex","symbolLocation":324,"imageIndex":1},{"imageOffset":1288460,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":11632,"imageIndex":1},{"imageOffset":281916,"symbol":"gen_send_ex","symbolLocation":324,"imageIndex":1},{"imageOffset":244300,"symbol":"method_vectorcall_O","symbolLocation":448,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":203036,"symbol":"method_vectorcall","symbolLocation":156,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306540,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29712,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":203400,"symbol":"method_vectorcall","symbolLocation":520,"imageIndex":1},{"imageOffset":185536,"symbol":"PyVectorcall_Call","symbolLocation":120,"imageIndex":1},{"imageOffset":1306956,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":30128,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306420,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29592,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":1642044,"symbol":"PyRun_SimpleFileExFlags","symbolLocation":1052,"imageIndex":1},{"imageOffset":1806000,"symbol":"Py_RunMain","symbolLocation":2980,"imageIndex":1},{"imageOffset":1810600,"symbol":"pymain_main","symbolLocation":1244,"imageIndex":1},{"imageOffset":16864,"symbol":"main","symbolLocation":56,"imageIndex":1},{"imageOffset":20724,"symbol":"start","symbolLocation":520,"imageIndex":0}]},{"id":18077,"frames":[{"imageOffset":20672,"symbol":"__psynch_cvwait","symbolLocation":8,"imageIndex":2},{"imageOffset":30728,"symbol":"_pthread_cond_wait","symbolLocation":1228,"imageIndex":3},{"imageOffset":1727208,"symbol":"PyThread_acquire_lock_timed","symbolLocation":604,"imageIndex":1},{"imageOffset":2178460,"symbol":"acquire_timed","symbolLocation":256,"imageIndex":1},{"imageOffset":2178992,"symbol":"lock_PyThread_acquire_lock","symbolLocation":72,"imageIndex":1},{"imageOffset":242300,"symbol":"method_vectorcall_VARARGS_KEYWORDS","symbolLocation":568,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":185536,"symbol":"PyVectorcall_Call","symbolLocation":120,"imageIndex":1},{"imageOffset":1306956,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":30128,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":185536,"symbol":"PyVectorcall_Call","symbolLocation":120,"imageIndex":1},{"imageOffset":1306956,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":30128,"imageIndex":1},{"imageOffset":1275268,"symbol":"_PyEval_EvalCodeWithName","symbolLocation":3340,"imageIndex":1},{"imageOffset":188176,"symbol":"_PyFunction_Vectorcall","symbolLocation":236,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":1319752,"symbol":"call_function","symbolLocation":528,"imageIndex":1},{"imageOffset":1306272,"symbol":"_PyEval_EvalFrameDefault","symbolLocation":29444,"imageIndex":1},{"imageOffset":187792,"symbol":"function_code_fastcall","symbolLocation":128,"imageIndex":1},{"imageOffset":203212,"symbol":"method_vectorcall","symbolLocation":332,"imageIndex":1},{"imageOffset":185536,"symbol":"PyVectorcall_Call","symbolLocation":120,"imageIndex":1},{"imageOffset":2175740,"symbol":"t_bootstrap","symbolLocation":196,"imageIndex":1},{"imageOffset":1725956,"symbol":"pythread_wrapper","symbolLocation":48,"imageIndex":1},{"imageOffset":29248,"symbol":"_pthread_start","symbolLocation":148,"imageIndex":3},{"imageOffset":8228,"symbol":"thread_start","symbolLocation":8,"imageIndex":3}]}], "usedImages" : [ { "source" : "P", "arch" : "arm64e", "base" : 4351016960, "size" : 393216, "uuid" : "7e92b284-4b90-3b68-b31a-3ddc4c0e8d40", "path" : "/usr/lib/dyld", "name" : "dyld" }, { "source" : "P", "arch" : "arm64", "base" : 4342824960, "size" : 2949120, "uuid" : "60d73728-b4bc-3469-b887-1dddbc1f5fe3", "path" : "/Users/USER/*/python3.8", "name" : "python3.8" }, { "source" : "P", "arch" : "arm64e", "base" : 7309983744, "size" : 221184, "uuid" : "c8b3081a-5081-3a99-bbe3-01413de444c6", "path" : "/usr/lib/system/libsystem_kernel.dylib", "name" : "libsystem_kernel.dylib" }, { "source" : "P", "arch" : "arm64e", "base" : 7310204928, "size" : 53248, "uuid" : "ed328b18-eeef-3b15-8858-798b19b0c2cd", "path" : "/usr/lib/system/libsystem_pthread.dylib", "name" : "libsystem_pthread.dylib" }, { "size" : 0, "source" : "A", "base" : 0, "uuid" : "00000000-0000-0000-0000-000000000000" } ], "sharedCache" : { "base" : 7307034624, "size" : 3089596416, "uuid" : "66c33c62-48a9-31e5-b8b5-7a71c9760d07" }, "vmSummary" : "ReadOnly portion of Libraries: Total=665.6M resident=0K(0%) swapped_out_or_unallocated=665.6M(100%)\nWritable regions: Total=1.1G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.1G(100%)\n\n VIRTUAL REGION \nREGION TYPE SIZE COUNT (non-coalesced) \n=========== ======= ======= \nActivity Tracing 256K 1 \nKernel Alloc Once 32K 1 \nMALLOC 234.2M 31 \nMALLOC guard page 96K 5 \nMALLOC_MEDIUM (reserved) 480.0M 4 reserved VM address space (unallocated)\nMALLOC_NANO (reserved) 384.0M 1 reserved VM address space (unallocated)\nSTACK GUARD 32K 2 \nStack 32.0M 2 \nVM_ALLOCATE 1.0G 109 \nVM_ALLOCATE (reserved) 160K 1 reserved VM address space (unallocated)\n__AUTH 221K 46 \n__AUTH_CONST 2879K 122 \n__DATA 2027K 161 \n__DATA_CONST 4508K 169 \n__DATA_DIRTY 233K 50 \n__LINKEDIT 578.8M 48 \n__OBJC_CONST 259K 29 \n__OBJC_RO 82.0M 1 \n__OBJC_RW 3104K 1 \n__TEXT 86.7M 175 \n__UNICODE 588K 1 \ndyld private memory 1024K 1 \nmapped file 1632K 8 \nshared memory 32K 2 \n=========== ======= ======= \nTOTAL 2.9G 971 \nTOTAL, minus reserved VM space 2.0G 971 \n", "legacyInfo" : { "threadTriggered" : { "queue" : "com.apple.main-thread" } }, "trialInfo" : { "rollouts" : [ { "rolloutId" : "60da5e84ab0ca017dace9abf", "factorPackIds" : {

  },
  "deploymentId" : 240000008
},
{
  "rolloutId" : "607844aa04477260f58a8077",
  "factorPackIds" : {
    "SIRI_MORPHUN_ASSETS" : "6103050cbfe6dc472e1c982a"
  },
  "deploymentId" : 240000066
},
{
  "rolloutId" : "602ad4dac86151000cf27e46",
  "factorPackIds" : {
    "SIRI_DICTATION_ASSETS" : "61fb0e87c773c43cde3bb80e"
  },
  "deploymentId" : 240000303
},
{
  "rolloutId" : "5ffde50ce2aacd000d47a95f",
  "factorPackIds" : {

  },
  "deploymentId" : 240000119
},
{
  "rolloutId" : "601d9415f79519000ccd4b69",
  "factorPackIds" : {
    "SIRI_TEXT_TO_SPEECH" : "621d4d0f680160486b9e1c98"
  },
  "deploymentId" : 240000412
},
{
  "rolloutId" : "5fc94383418129005b4e9ae0",
  "factorPackIds" : {

  },
  "deploymentId" : 240000274
}

], "experiments" : [

] } }

  • Looking into things a bit more, it turns out that a lot of the libraries in the Frameworks directory are not signed (required for aarch64, but not intel)
  • running codesign --force -s - pymeshlab/Frameworks/*.dylib fixes things
  • after which all the tests run fine. (I suspect @StWiemann didn't run them from the pymeshlab directory)

David-Baddeley avatar Mar 15 '22 08:03 David-Baddeley

Oh ok, thanks @David-Baddeley. Then we will need to sign all the libraries used by pymeshlab when releasing for m1. It shouldn't be an issue. Let's hope to have news from github actions for having native m1 builds.

alemuntoni avatar Mar 15 '22 13:03 alemuntoni

Hey there,

I am just following up on the installation on an M1 chip. I now managed to build the pymeshlab without any errors. The only problem that I still have is, when I run python3 and then import pymeshlab I get the following error:

File "<stdin>", line 1, in <module> File "/Users/ydreher/Desktop/Desktop/Uni/PhD/Dokumente/ProtocolsAndMacros/ReconstructionProgramState_31.03.2022/Reco. nstructionVersion4/pymeshlab2/PyMeshLab/pymeshlab/__init__.py", line 11, in <module> from .pmeshlab import * ModuleNotFoundError: No module named 'pymeshlab.pmeshlab'

Any idea, where this could be coming from?

jabruniessner avatar Apr 26 '22 14:04 jabruniessner

@jabrucohee did you build pymeshlab using the script we provided (this one)? After calling make, you should then call make install, in order to copy the built package into the pymeshlab directory.

alemuntoni avatar Apr 26 '22 14:04 alemuntoni

@alemuntoni , I tried both versions once with the script and once by typing cmake .. && make && make install. In both cases I get that error. However, I installed qt5 using Homebrew. Since it couldn't find it at the beginning, I needed to use

cmake -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt@5 ..

which directs to the folder where qt5 is installed.

When using the script I added this part to the line

cmake $BUILD_OPTION -DBUILD_DUMMY_BIN_MAC_DEPLOY=ON -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH $BUILD_MESHLAB_OPTION $NIGHTLY_OPTION $SOURCE_PATH

So I used

cmake $BUILD_OPTION -DBUILD_DUMMY_BIN_MAC_DEPLOY=ON -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt@5 $BUILD_MESHLAB_OPTION $NIGHTLY_OPTION $SOURCE_PATH

before that it wouldn't built, but than it did

Could this be related ? this is the only. alteration that I made.

I checked and I did run make install

thanks in advance !

jabruniessner avatar Apr 26 '22 16:04 jabruniessner

Ok, you should remove from the command the options -DBUILD_DUMMY_BIN_MAC_DEPLOY=ON, you don't need it. It is used to make a package ready to be deployed, which is not your case.

alemuntoni avatar Apr 27 '22 10:04 alemuntoni

Thanks,

I tried that, but no luck unfortunately, the error persists

jabruniessner avatar Apr 28 '22 13:04 jabruniessner

m1 sillicon pymeshlab pytest success note.

  1. clone repo git clone --recursive https://github.com/cnr-isti-vclab/PyMeshLab.git
  2. install qt@5 with homebrew brew install qt@5
  3. modify build script (scripts/macOS/1_build.sh) line 77, with custom qt dir and remove -DBUILD_DUMMY_BIN_MAC_DEPLOY flag. cmake $BUILD_OPTION -DCMAKE_INSTALL_PREFIX=$INSTALL_PATH -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt@5 $BUILD_MESHLAB_O
  4. build sh scripts/macOS/1_build.sh
  5. run pytest in PyMeshLab dir. pytest --pyargs pymeshlab

Wish this helps someone need.

sethheon avatar Jun 09 '22 08:06 sethheon

Hey there thanks for that comment, it seems to be a different issue entirely. It turns out that Pymeshlab seems to work fine with python version 3.9. but it does not work with python version 3.10. At least not on the mac. If you use python version 3.10 the above mentioned error occurs. With or without the -DBUILD_DUMMY_BIN_MAC_DEPLOY decorator. I don't know where this issue comes from. To those of you have managed to get it to run: which Python version were you using?

Unfortunatley, my application also heavily relies on tkinter which seems to be behaving badly with python version 3.9 in python. So I cannot do anything unfortunately. If somebody mananges to find a fix, that would be greatly appreciated

jabruniessner avatar Sep 13 '22 17:09 jabruniessner

m1 sillicon pymeshlab pytest success note. [...] Wish this helps someone need.

The new 1_build uses Ninja and, at least after a bunch of fooling about, I still can't quite get it to build. There are a lot of LAPACK references that it complains about, a few things I had to fix in the Lib3ds make and so on. Close, but no cigar. Just a FYI

flipphillips avatar Jun 22 '23 20:06 flipphillips

Was anyone able to get it to build with Python 3.10?

n1ckfg avatar Nov 04 '23 04:11 n1ckfg

Just an update here: Issue https://github.com/actions/runner-images/issues/2187 has been closed since M1 large runners have been released. However, large runners are available only for paying accounts. In this discussion github actions maintainers say that they will start to work on non-large m1 runners at some point, but there is no roadmap right now.

Anyway, for the next version, I'll build a package and release it for m1 (probably just for one version of python, like 3.11)

alemuntoni avatar Nov 16 '23 08:11 alemuntoni

That would be amazing. If it's only practical to do one Python version, would you be open to doing 3.10 to keep pymeshlab in sync with Blender's standalone Python module (which for the current, next, and latest LTS versions only works with 3.10)?

n1ckfg avatar Nov 16 '23 14:11 n1ckfg

Hi everybody,

After trying and crying a lot, I finally got some native arm wheels of pymeshlab. I have uploaded them as assets of the latest release here.

Before uploading them on PyPi, I would like to get some feedback from you. It would be really appreciated.

If you can, please download the right wheel for your python version, and then run pip install pymeshlab*.whl. And let me know if it works (at least, if the library is imported correctly, and if the basic features like loading/saving meshes work).

Thank you everybody for the help!

alemuntoni avatar Dec 19 '23 15:12 alemuntoni

Amazing! Can't import it yet, there seems to be a Qt linking error. I'm on Ventura 13.6, tried installing pyqt5 and pyqt using brew but no change. Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/nick/.pyenv/versions/3.10.13/lib/python3.10/site-packages/pymeshlab/__init__.py", line 11, in <module> from .pmeshlab import * ImportError: dlopen(/Users/nick/.pyenv/versions/3.10.13/lib/python3.10/site-packages/pymeshlab/pmeshlab.cpython-310-darwin.so, 0x0002): Symbol not found: __ZTVNSt3__13pmr25monotonic_buffer_resourceE Referenced from: <2421DF8C-7779-32B7-AA75-E276668C9B50> /Users/nick/.pyenv/versions/3.10.13/lib/python3.10/site-packages/pymeshlab/Frameworks/QtXml.framework/Versions/5/QtXml Expected in: <3EE92404-8FC3-374B-A598-D5C9A8CD64B5> /usr/lib/libc++.1.dylib

n1ckfg avatar Dec 19 '23 16:12 n1ckfg

@n1ckfg thanks! I guess I'll have to cry some more... :D In the meantime, could you check whether installing qt@5 from brew solves the issue? I was on Sonoma when I built pymeshlab, but I hope this won't be a problem...

alemuntoni avatar Dec 20 '23 14:12 alemuntoni

Sure--what's the exact install string you'd like to try? I've already tried brew install pyqt5 and brew install pyqt.

n1ckfg avatar Dec 20 '23 14:12 n1ckfg

@n1ckfg brew install qt@5

alemuntoni avatar Dec 20 '23 14:12 alemuntoni

Tried qt@5 and adding to path in .bash_profile, no luck. This suggests upgrading to Sonoma as a fix: https://forum.qt.io/topic/149842/qt-6-5-2-build-crash-after-update-to-macos14-sdk/3

n1ckfg avatar Dec 20 '23 14:12 n1ckfg

Thanks @n1ckfg! That's annoying... I'll check if it is possible to downgrade and I'll try to build the wheel again. But I won't be able to do it this year..

alemuntoni avatar Dec 20 '23 14:12 alemuntoni

Thanks--I upgraded to Sonoma and it does import, load, and save correctly! Filters seem to partly work too, if called by function name. Using apply_filter() with a string crashes to bash with Bus error: 10

n1ckfg avatar Dec 20 '23 18:12 n1ckfg

In this discussion github actions maintainers say that they will start to work on non-large m1 runners at some point, but there is no roadmap right now.

You can use FlyCI's M1 and M2 runners. Our runners are on average 2x faster and 2x cheaper than GitHub's AND we have a free tier for OSS projects (see below).

Install Instructrions

Easily replace your M1 runners:

jobs:
 ci:
-    runs-on: macos-latest
+    runs-on: flyci-macos-large-latest-m1
   steps:
   - name: 👀 Checkout repo
     uses: actions/checkout@v4

Or try the M2 runners:

jobs:
  ci:
-    runs-on: macos-latest
+    runs-on: flyci-macos-large-latest-m2
    steps:
      - name: 👀 Checkout repo
        uses: actions/checkout@v4

Pricing

Processor vCPU RAM (GB) Storage Label Price on FlyCI Price on GitHub
M1 4 7 28 GB flyci-macos-large-latest-m1 $0.06 -
M1 8 14 28 GB flyci-macos-xlarge-latest-m1 $0.12 $0.16
M2 4 7 28 GB flyci-macos-large-latest-m2 $0.08 -
M2 8 14 28 GB flyci-macos-xlarge-latest-m2 $0.16 -

500 mins/month Free for Public Repos

If your repo is public, then FlyCI offers 500 mins/month of free M1 runner usage with the flyci-macos-large-latest-m1 runner.

Best Regards, Kiril Gantchev CEO and co-founder of FlyCI

kgantchev avatar Jan 15 '24 17:01 kgantchev