Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

📦 Distribution of device implementations #111

Open
4 tasks
burgholzer opened this issue Dec 3, 2024 · 0 comments
Open
4 tasks

📦 Distribution of device implementations #111

burgholzer opened this issue Dec 3, 2024 · 0 comments
Labels
documentation Improvements or additions to documentation usability Increasing usability of the library

Comments

@burgholzer
Copy link
Contributor

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
@burgholzer burgholzer added usability Increasing usability of the library documentation Improvements or additions to documentation labels Dec 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation usability Increasing usability of the library
Projects
None yet
Development

No branches or pull requests

1 participant