Skip to content

🔧 Harden installed QDMI runtime staging - #2231

Draft
burgholzer wants to merge 1 commit into
codex/qdmi-default-driver-extension-c2from
codex/qdmi-installed-consumer-deployment-c3
Draft

🔧 Harden installed QDMI runtime staging#2231
burgholzer wants to merge 1 commit into
codex/qdmi-default-driver-extension-c2from
codex/qdmi-installed-consumer-deployment-c3

Conversation

@burgholzer

@burgholzer burgholzer commented Aug 24, 2026

Copy link
Copy Markdown
Member

🤖 AI text below 🤖

Description

Stage the complete QDMI runtime closure for installed and imported consumers.

This pull request:

  • stages imported MQT::CoreQDMI, MQT::CoreQDMIDriver, and device libraries through mqt_copy_qdmi_runtime;
  • copies transitive runtime DLLs on Windows;
  • preserves device manifests, provider assets, and build RPATHs;
  • installs the public qdmi/ProgramFormat.hpp header required by qdmi/Client.hpp; and
  • validates the installed package through a real find_package(mqt-core) consumer that creates a qdmi::Session.

The change only hardens deployment. It does not add another Client or Driver API.

Dependencies

This PR is stacked directly on #2230.

Validation

On the exact replay:

  • focused Driver build: passed;
  • installed-consumer fixture: 2/2 passed;
  • Driver tests: 97/97 passed;
  • full repository lint: passed;
  • signed commit verification and diff checks: passed.

The preceding deployment layer also passed the full 440-step release build and documentation build. The imported-target closure passed simulated Windows generation with CMake 3.28 and 4.4.

Hosted CI is pending for this draft.

AI assistance: OpenAI Codex assisted with implementation, review, testing, and this description.

Checklist

  • The pull request only contains commits that are focused and relevant to this change.
  • I have added appropriate tests that cover the new/changed functionality.
  • I have updated the documentation to reflect these changes.
  • I have added entries to the changelog for any noteworthy additions, changes, fixes, or removals.
  • I have added migration instructions to the upgrade guide (if needed).
  • The changes follow the project's style guidelines and introduce no new warnings.
  • The changes are fully tested and pass the CI checks.
  • I have reviewed my own code changes.

If PR contains AI-assisted content:

  • Any agent that created, edited, or submitted GitHub content was explicitly authorized for that scope, as required by our AI Usage Guidelines.
  • Every agent-authored or agent-edited public text body begins with the visible disclosure 🤖 *AI text below* 🤖 (titles are exempt).
  • I have disclosed AI assistance in the PR description.
  • I confirm that I have personally reviewed and understood all AI-generated content, and accept full responsibility for it.

@burgholzer burgholzer added fix Fix for something that isn't working c++ Anything related to C++ code packaging Anything related to Python packaging QDMI Anything related to QDMI labels Aug 24, 2026
@burgholzer burgholzer self-assigned this Aug 24, 2026
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from c179ed5 to a475cff Compare August 24, 2026 19:17
@codecov

codecov Bot commented Aug 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from a475cff to 4e8ca87 Compare August 24, 2026 20:21
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from 4e8ca87 to 7a0a7b2 Compare August 24, 2026 20:46
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from 7a0a7b2 to dac07f4 Compare August 24, 2026 20:52
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from dac07f4 to 7559735 Compare August 24, 2026 20:58
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch 2 times, most recently from f83234e to 4c203d2 Compare August 24, 2026 22:38
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from 4c203d2 to d68d7dc Compare August 24, 2026 23:02
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from d68d7dc to 63eab06 Compare August 24, 2026 23:48
@burgholzer burgholzer added this to the QDMI Support milestone Aug 26, 2026

@burgholzer burgholzer left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also quite a bit of meta comments here for the general direction of this series. This should complete the run of feedback through the PRs.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This feels overly complicated and slightly confusing, especially because of the terminology being used. "closure", "staging", "concrete", "runtime".
I think this is important work to ensure a robust installation and usage; but it needs to be prepared in a better fashion.

Our top distribution channel is the mqt-core Python package. It is either directly used, which needs to work with the shipped libraries. Or it is loaded in other Python-only libraries (also not critical), or it is used to feed a find_package(mqt-core) call in another project (such as MQT QCEC, MQT DDSIM, or MQT QMAP). The latter case is probably the one that is hardest to get right across all systems when it comes to using the QDMI-related functionality.
However, I still have the feeling that most of that was already working quite alright.

The second distribution channel is likely installations in HPC centers. These would typically build MQT Core from source via tools like spack. I do not really foresee major problems there with the solution that we previously had in place (maybe I am missing something though). The key aspect here is that this is almost exclusively for Linux (x86 and arm64), while the Python distribution channel is much broader and needs to cover macOS and Windows.

Maybe one can simplify around that information and already include these thoughts in the iteration on the lower layers.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This definitely goes out of its way to prove that something works.
I'd personally be fine if this was demonstrated locally but not directly included in the test suite.

Assisted-by: GPT-5.6 Sol via Codex
@burgholzer
burgholzer force-pushed the codex/qdmi-installed-consumer-deployment-c3 branch from 63eab06 to 7545e0b Compare August 27, 2026 14:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++ Anything related to C++ code fix Fix for something that isn't working packaging Anything related to Python packaging QDMI Anything related to QDMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant