You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
QDMI currently lacks a best practice/guide for how to reliably distribute device implementations.
As a general rule, binaries built on one Linux distro will only work on other Linux distros that are the same age or newer. This is a problem well known in the Python community when it comes to packaging compiled extensions. There, tools such as cibuildwheel rely on building extensions in manylinux Docker containers. This makes sure that the compiled binaries do not use too recent symbols. In addition, cibuildwheel uses a tool called auditwheel to copy any external shared libraries into the resulting Python wheel and modifies the RPATH so that the library acts as if it were statically linked.
I think we could be using some of these concepts to make sure that the device implementations being distributed are widely compatible. This should be possible by adding a Dockerfile to the device template that orchestrates the build. Such a file can also be placed next to the example device implementations to test the build process.
Ideally, one would create a CI workflow that builds the binary in the container and subsequently tests it on various Ubuntu versions available on GitHub. However, that might be a little tough to set up.
Set up a basic manylinux build environment for existing example device implementations
Add CI workflow to test building, compliance (auditwheel), and execution
Add build pipeline and workflow to device template
Add documentation
The text was updated successfully, but these errors were encountered:
QDMI currently lacks a best practice/guide for how to reliably distribute device implementations.
As a general rule, binaries built on one Linux distro will only work on other Linux distros that are the same age or newer. This is a problem well known in the Python community when it comes to packaging compiled extensions. There, tools such as cibuildwheel rely on building extensions in manylinux Docker containers. This makes sure that the compiled binaries do not use too recent symbols. In addition, cibuildwheel uses a tool called auditwheel to copy any external shared libraries into the resulting Python wheel and modifies the RPATH so that the library acts as if it were statically linked.
I think we could be using some of these concepts to make sure that the device implementations being distributed are widely compatible. This should be possible by adding a
Dockerfile
to the device template that orchestrates the build. Such a file can also be placed next to the example device implementations to test the build process.Ideally, one would create a CI workflow that builds the binary in the container and subsequently tests it on various Ubuntu versions available on GitHub. However, that might be a little tough to set up.
The text was updated successfully, but these errors were encountered: