eclipse-ecal / ecal

📦 eCAL - enhanced Communication Abstraction Layer. A high performance publish-subscribe, client-server cross-plattform middleware.
https://ecal.io
Apache License 2.0
836 stars 174 forks source link

eCAL on Apple M1 #1165

Open KerstinKeller opened 1 year ago

KerstinKeller commented 1 year ago

Problem Description

Atm we have problems building and running eCAL on Apple M1 hardware.

Build Problems:

Runtime Problems:

How to reproduce

Try to build / run eCAL master (or 5.12.0-rc.1) on MacOs M1 hardware.

How did you get eCAL?

I don't know

Environment

eCAL System Information

No response

martinkarg commented 1 year ago

There's also the issue with the segmentation fault when building the python wheel

Logs off cmake --build . --target create_python_wheel --config Release

[295/295] Creating python wheel
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-11.1-arm64-cpython-39
creating build/lib.macosx-11.1-arm64-cpython-39/ecal
copying ecal/__init__.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal
creating build/lib.macosx-11.1-arm64-cpython-39/ecal/core
copying ecal/core/service.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core
copying ecal/core/subscriber.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core
copying ecal/core/__init__.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core
copying ecal/core/core.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core
copying ecal/core/publisher.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core
creating build/lib.macosx-11.1-arm64-cpython-39/ecal/measurement
copying ecal/measurement/measurement.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/measurement
copying ecal/measurement/__init__.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/measurement
copying ecal/measurement/hdf5.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/measurement
creating build/lib.macosx-11.1-arm64-cpython-39/ecal/proto
copying ecal/proto/__init__.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/proto
copying ecal/proto/helper.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/proto
creating build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/process_pb2.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/layer_pb2.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/service_pb2.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/host_pb2.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/__init__.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/monitoring_pb2.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/topic_pb2.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/core/pb/ecal_pb2.py -> build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb
copying ecal/_ecal_core_py.so -> build/lib.macosx-11.1-arm64-cpython-39/ecal
copying ecal/_ecal_hdf5_py.so -> build/lib.macosx-11.1-arm64-cpython-39/ecal
running build_ext
/opt/anaconda3/envs/ecal_wheel/lib/python3.9/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated.
!!

        ********************************************************************************
        Please avoid running ``setup.py`` directly.
        Instead, use pypa/build, pypa/installer or other
        standards-based tools.

        See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details.
        ********************************************************************************

!!
  self.initialize_options()
installing to build/bdist.macosx-11.1-arm64/wheel
running install
running install_lib
creating build/bdist.macosx-11.1-arm64
creating build/bdist.macosx-11.1-arm64/wheel
creating build/bdist.macosx-11.1-arm64/wheel/ecal
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/_ecal_core_py.so -> build/bdist.macosx-11.1-arm64/wheel/ecal
creating build/bdist.macosx-11.1-arm64/wheel/ecal/core
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/service.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core
creating build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/process_pb2.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/layer_pb2.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/service_pb2.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/host_pb2.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/__init__.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/monitoring_pb2.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/topic_pb2.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/pb/ecal_pb2.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core/pb
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/subscriber.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/__init__.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/core.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/core/publisher.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/core
creating build/bdist.macosx-11.1-arm64/wheel/ecal/measurement
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/measurement/measurement.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/measurement
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/measurement/__init__.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/measurement
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/measurement/hdf5.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/measurement
creating build/bdist.macosx-11.1-arm64/wheel/ecal/proto
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/proto/__init__.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/proto
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/proto/helper.py -> build/bdist.macosx-11.1-arm64/wheel/ecal/proto
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/__init__.py -> build/bdist.macosx-11.1-arm64/wheel/ecal
copying build/lib.macosx-11.1-arm64-cpython-39/ecal/_ecal_hdf5_py.so -> build/bdist.macosx-11.1-arm64/wheel/ecal
running install_egg_info
running egg_info
creating ecal5.egg-info
writing ecal5.egg-info/PKG-INFO
writing dependency_links to ecal5.egg-info/dependency_links.txt
writing requirements to ecal5.egg-info/requires.txt
writing top-level names to ecal5.egg-info/top_level.txt
writing manifest file 'ecal5.egg-info/SOURCES.txt'
reading manifest file 'ecal5.egg-info/SOURCES.txt'
writing manifest file 'ecal5.egg-info/SOURCES.txt'
Copying ecal5.egg-info to build/bdist.macosx-11.1-arm64/wheel/ecal5-5.12.0-py3.9.egg-info
running install_scripts
[WARNING] This wheel needs a higher macOS version than the version your Python interpreter is compiled against.  To silence this warning, set MACOSX_DEPLOYMENT_TARGET to at least 13_0 or recreate these files with lower MACOSX_DEPLOYMENT_TARGET:
build/bdist.macosx-11.1-arm64/wheel/ecal/_ecal_core_py.so
build/bdist.macosx-11.1-arm64/wheel/ecal/_ecal_hdf5_py.so[WARNING] This wheel needs a higher macOS version than the version your Python interpreter is compiled against.  To silence this warning, set MACOSX_DEPLOYMENT_TARGET to at least 13_0 or recreate these files with lower MACOSX_DEPLOYMENT_TARGET:
build/bdist.macosx-11.1-arm64/wheel/ecal/_ecal_core_py.so
build/bdist.macosx-11.1-arm64/wheel/ecal/_ecal_hdf5_py.socreating build/bdist.macosx-11.1-arm64/wheel/ecal5-5.12.0.dist-info/WHEEL
creating '/Users/uia72002/Documents/Github/ecal/_build/_deploy/ecal5-5.12.0-cp39-cp39-macosx_13_0_arm64.whl' and adding 'build/bdist.macosx-11.1-arm64/wheel' to it
adding 'ecal/__init__.py'
adding 'ecal/_ecal_core_py.so'
adding 'ecal/_ecal_hdf5_py.so'
adding 'ecal/core/__init__.py'
adding 'ecal/core/core.py'
adding 'ecal/core/publisher.py'
adding 'ecal/core/service.py'
adding 'ecal/core/subscriber.py'
adding 'ecal/core/pb/__init__.py'
adding 'ecal/core/pb/ecal_pb2.py'
adding 'ecal/core/pb/host_pb2.py'
adding 'ecal/core/pb/layer_pb2.py'
adding 'ecal/core/pb/monitoring_pb2.py'
adding 'ecal/core/pb/process_pb2.py'
adding 'ecal/core/pb/service_pb2.py'
adding 'ecal/core/pb/topic_pb2.py'
adding 'ecal/measurement/__init__.py'
adding 'ecal/measurement/hdf5.py'
adding 'ecal/measurement/measurement.py'
adding 'ecal/proto/__init__.py'
adding 'ecal/proto/helper.py'
adding 'ecal5-5.12.0.dist-info/METADATA'
adding 'ecal5-5.12.0.dist-info/WHEEL'
adding 'ecal5-5.12.0.dist-info/top_level.txt'
adding 'ecal5-5.12.0.dist-info/RECORD'
removing build/bdist.macosx-11.1-arm64/wheel

Which leads to a segmentation fault:

> python
Python 3.9.17 (main, Jul  5 2023, 15:35:09)
[Clang 14.0.6 ] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from ecal.measurement.measurement import Measurement
zsh: segmentation fault  python