ci: distro-compat smoke-test matrix for cua-driver linux binary (CUA-599) - #1959
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughA new GitHub Actions workflow file is added that defines a "CI: cua-driver distro-compat matrix" pipeline. It configures PR/push/dispatch triggers, read-only permissions, and jobs that resolve a driver release version, download and extract the corresponding tarball, then run libc/ABI verification and smoke checks across a distro matrix. Changescua-driver distro-compat CI workflow
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci-distro-compat-cua-driver.yml:
- Line 1: The .github/workflows/ci-distro-compat-cua-driver.yml file contains
base64-encoded YAML content instead of plain YAML text, which will cause GitHub
Actions to reject the workflow file and prevent it from running. Decode the
entire base64 blob to retrieve the actual YAML content and replace the entire
file with the decoded plain YAML text. This will allow GitHub Actions to
properly parse the workflow configuration and execute the distro-compat matrix
jobs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 162d9a70-b78a-4702-b2b9-bc5967984d9f
📒 Files selected for processing (1)
.github/workflows/ci-distro-compat-cua-driver.yml
| @@ -0,0 +1 @@ | |||
| bmFtZTogIkNJOiBjdWEtZHJpdmVyIGRpc3Ryby1jb21wYXQgbWF0cml4IgoKIyBTbW9rZS10ZXN0cyB0aGUgKnJlbGVhc2VkKiBjdWEtZHJpdmVyIGJpbmFyeSBpbnNpZGUgcmVhbCBkaXN0cm8gY29udGFpbmVycwojIHRvIGNhdGNoIGJ1Z3MgdGhhdCB0aGUgTml4T1MgdGVzdCBzdWl0ZSBjYW5ub3Q6IGdsaWJjIEFCSSBmbG9vciBpc3N1ZXMgYW5kCiMgZGlzdHJvLXBhY2thZ2luZyBnYXBzIChlLmcuIFF0NSBBVC1TUEkgYnJpZGdlIGFic2VudCBvbiBVYnVudHUpLgojCiMgV2hhdCB0aGlzIGNhdGNoZXMgKHRoZSBOaXhPUyBzdWl0ZSBDQU5OT1QgY2F0Y2gpOgojICAgMS4gZ2xpYmMgQUJJIGZsb29yIOKAlCB0aGUgcmVsZWFzZWQgYmluYXJ5IGlzIGJ1aWx0IGluIGEgZGViaWFuOjExCiMgICAgICBjb250YWluZXIgKGdsaWJjIDIuMzEpIHNvIGl0IHNob3VsZCBydW4gb24gYWxsIG9mIHRoZSBtYXRyaXggZGlzdHJvcy4KIyAgICAgIElmIHNvbWVvbmUgYWNjaWRlbnRhbGx5IGJ1bXBzIHRoZSBidWlsZCBjb250YWluZXIgdG8gYSBuZXdlciBkaXN0cm8gdGhlCiMgICAgICAtLXZlcnNpb24gc21va2UtdGVzdCBiZWxvdyB3aWxsIGZhaWwgb24gdGhlIG9sZGVyIGdsaWJjIGRpc3Ryb3MuCiMgICAyLiBSdW50aW1lIGxpYnJhcnkgZ2FwcyDigJQgYGRvY3RvcmAgcXVlcmllcyB0aGUgT1MgZm9yIHJlcXVpcmVkIGNhcGFiaWxpdGllcwojICAgICAgKFgxMSwgQVQtU1BJLCBldGMuKS4gSWYgYSBkaXN0cm8gaXMgbWlzc2luZyBhIHBhY2thZ2UgdGhlIGRvY3RvciBjb21tYW5kCiMgICAgICBleGl0cyBub24temVybyBhbmQgcHJpbnRzIGEgaHVtYW4tcmVhZGFibGUgZXJyb3IuCiMKIyBEZXNpZ24gcHJpbmNpcGxlczoKIyAgIC0gUnVuIHRoZSBSRUxFQVNFRCBiaW5hcnkgKGRvd25sb2FkZWQgZnJvbSBHaXRIdWIgUmVsZWFzZXMpLCBub3QgYSBmcmVzaGx5CiMgICAgIGJ1aWx0IG9uZS4gVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gY2F0Y2ggQUJJIG1pc21hdGNoZXMgYmVjYXVzZSB0aGUgTml4T1MKIyAgICAgQ0kgYnVpbGRzIGl0cyBvd24gYmluYXJ5IGFnYWluc3QgTml4T1MncyBvd24gZ2xpYmMuCiMgICAtIEtlZXAgdGhpcyBmYXN0IGFuZCBjaGVhcDogY29udGFpbmVycyArIC0tdmVyc2lvbi9kb2N0b3Igb25seS4gRnVsbCBHVUkKIyAgICAgaW50ZWdyYXRpb24gdGVzdHMgc3RheSBpbiBuaXgtYnVpbGQueW1sLgojICAgLSBOb24tYmxvY2tpbmcgYnkgZGVmYXVsdCAoY29udGludWUtb24tZXJyb3I6IHRydWUpIOKAlCB0aGUgcmVsZWFzZWQgYmluYXJ5CiMgICAgIG1heSBub3QgZXhpc3QgeWV0IG9uIGEgZnJlc2ggYnJhbmNoOyB0aGUgam9iIGlzIGluZm9ybWF0aW9uYWwgdW50aWwgdGhlCiMgICAgIGZpcnN0IGxpbnV4IHJlbGVhc2UgdGFnIGV4aXN0cy4KIwojIFRyaWdnZXI6IGFueSBQUiB0aGF0IHRvdWNoZXMgdGhlIFJ1c3QgY3VhLWRyaXZlciBvciB0aGlzIHdvcmtmbG93LgojIEFsc28gcnVucyBvbiBwdXNoIHRvIG1haW4gYW5kIG9uIHdvcmtmbG93X2Rpc3BhdGNoIHNvIGl0IHdvcmtzIGFzIGEKIyBwb3N0LXJlbGVhc2UgcmVncmVzc2lvbiBndWFyZC4KIwojIENvbXBhbmlvbiB0byBuaXgtYnVpbGQueW1sIOKAlCBkb2VzIE5PVCByZXBsYWNlIGl0LiBTZWUgQ1VBLTU5OS4KCm9uOgogIHB1bGxfcmVxdWVzdDoKICAgIHBhdGhzOgogICAgICAtICJsaWJzL2N1YS1kcml2ZXIvcnVzdC8qKiIKICAgICAgLSAiLmdpdGh1Yi93b3JrZmxvd3MvY2ktZGlzdHJvLWNvbXBhdC1jdWEtZHJpdmVyLnltbCIKICBwdXNoOgogICAgIyBSdW4gb24gbWFpbiAocGF0aC1maWx0ZXJlZCkgQU5EIG9uIHJlbGVhc2UgdGFncyBzbyBhIG5ld2x5LXB1Ymxpc2hlZAogICAgIyBiaW5hcnkgaXMgaW1tZWRpYXRlbHkgdmFsaWRhdGVkIGFnYWluc3QgdGhlIGRpc3RybyBtYXRyaXguCiAgICBicmFuY2hlczogW21haW5dCiAgICB0YWdzOgogICAgICAtICJjdWEtZHJpdmVyLXJzLXYqIgogICAgcGF0aHM6CiAgICAgIC0gImxpYnMvY3VhLWRyaXZlci9ydXN0LyoqIgogICAgICAtICIuZ2l0aHViL3dvcmtmbG93cy9jaS1kaXN0cm8tY29tcGF0LWN1YS1kcml2ZXIueW1sIgogIHdvcmtmbG93X2Rpc3BhdGNoOgogICAgaW5wdXRzOgogICAgICB2ZXJzaW9uOgogICAgICAgIGRlc2NyaXB0aW9uOiAiY3VhLWRyaXZlci1ycyB2ZXJzaW9uIHRvIHRlc3QgKHdpdGhvdXQgbGVhZGluZyB2KS4gTGVhdmUgYmxhbmsgdG8gYXV0by1kZXRlY3QgbGF0ZXN0LiIKICAgICAgICByZXF1aXJlZDogZmFsc2UKICAgICAgICBkZWZhdWx0OiAiIgoKcGVybWlzc2lvbnM6CiAgY29udGVudHM6IHJlYWQKCmpvYnM6CiAgIyDilIDilIAgUmVzb2x2ZSB0aGUgYmluYXJ5IHZlcnNpb24gdG8gdGVzdCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAjIEZldGNoIHRoZSBsYXRlc3QgcHVibGlzaGVkIGN1YS1kcml2ZXItcnMgcmVsZWFzZSB0YWcgc28gaW5kaXZpZHVhbCBtYXRyaXgKICAjIGpvYnMgZG9uJ3QgZWFjaCBoaXQgdGhlIEdpdEh1YiBBUEkuIElmIHdvcmtmbG93X2Rpc3BhdGNoIHN1cHBsaWVkIGEgdmVyc2lvbgogICMgd2UgdXNlIHRoYXQgaW5zdGVhZC4KICByZXNvbHZlLXZlcnNpb246CiAgICBuYW1lOiBSZXNvbHZlIHJlbGVhc2UgdmVyc2lvbgogICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAogICAgb3V0cHV0czoKICAgICAgdmVyc2lvbjogJHt7IHN0ZXBzLnBpY2sub3V0cHV0cy52ZXJzaW9uIH19CiAgICAgIGJpbmFyeV91cmw6ICR7eyBzdGVwcy5waWNrLm91dHB1dHMuYmluYXJ5X3VybCB9fQogICAgc3RlcHM6CiAgICAgIC0gbmFtZTogUGljayB2ZXJzaW9uCiAgICAgICAgaWQ6IHBpY2sKICAgICAgICBlbnY6CiAgICAgICAgICBHSF9UT0tFTjogJHt7IGdpdGh1Yi50b2tlbiB9fQogICAgICAgICAgSU5QVVRfVkVSU0lPTjogJHt7IGlucHV0cy52ZXJzaW9uIH19CiAgICAgICAgcnVuOiB8CiAgICAgICAgICBpZiBbWyAtbiAiJElOUFVUX1ZFUlNJT04iIF1dOyB0aGVuCiAgICAgICAgICAgIFZFUlNJT049IiRJTlBVVF9WRVJTSU9OIgogICAgICAgICAgZWxpZiBbWyAiJEdJVEhVQl9SRUYiID09IHJlZnMvdGFncy9jdWEtZHJpdmVyLXJzLXYqIF1dOyB0aGVuCiAgICAgICAgICAgIFZFUlNJT049IiR7R0lUSFVCX1JFRiNyZWZzL3RhZ3MvY3VhLWRyaXZlci1ycy12fSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIyBGZXRjaCB0aGUgbGF0ZXN0IHJlbGVhc2UgdGhhdCBtYXRjaGVzIHRoZSBjdWEtZHJpdmVyLXJzLXYqIHBhdHRlcm4uCiAgICAgICAgICAgICMgVGhlIHJlbGVhc2VzIGFyZSBtYXJrZWQgcHJlcmVsZWFzZT10cnVlIHNvIHdlIHVzZSAvcmVsZWFzZXMgaW5zdGVhZAogICAgICAgICAgICAjIG9mIC9yZWxlYXNlcy9sYXRlc3QgKHdoaWNoIHNraXBzIHByZS1yZWxlYXNlcykuCiAgICAgICAgICAgIFZFUlNJT049JChnaCBhcGkgcmVwb3MvdHJ5Y3VhL2N1YS9yZWxlYXNlcyBcCiAgICAgICAgICAgICAgLS1qcSAnWy5bXSB8IHNlbGVjdCgudGFnX25hbWUgfCBzdGFydHN3aXRoKCJjdWEtZHJpdmVyLXJzLXYiKSldIHwgZmlyc3QgfCAudGFnX25hbWUgfCBsdHJpbXN0cigiY3VhLWRyaXZlci1ycy12IiknIFwKICAgICAgICAgICAgICAyPi9kZXYvbnVsbCB8fCBlY2hvICIiKQogICAgICAgICAgZmkKICAgICAgICAgIGlmIFtbIC16ICIkVkVSU0lPTiIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiTm8gY3VhLWRyaXZlci1ycyByZWxlYXNlIGZvdW5kIHlldCDigJQgdGhpcyBpcyBleHBlY3RlZCBvbiBhIGZyZXNoIGJyYW5jaC4iCiAgICAgICAgICAgIGVjaG8gInZlcnNpb249bm9uZSIgPj4gIiRHSVRIVUJfT1VUUFVUIgogICAgICAgICAgICBlY2hvICJiaW5hcnlfdXJsPW5vbmUiID4+ICIkR0lUSFVCX09VVFBVVCIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgQklOQVJZX1VSTD0iaHR0cHM6Ly9naXRodWIuY29tL3RyeWN1YS9jdWEvcmVsZWFzZXMvZG93bmxvYWQvY3VhLWRyaXZlci1ycy12JHtWRVJTSU9OfS9jdWEtZHJpdmVyLXJzLSR7VkVSU0lPTn0tbGludXgteDg2XzY0LWJpbmFyeS50YXIuZ3oiCiAgICAgICAgICAgIGVjaG8gInZlcnNpb249JFZFUlNJT04iID4+ICIkR0lUSFVCX09VVFBVVCIKICAgICAgICAgICAgZWNobyAiYmluYXJ5X3VybD0kQklOQVJZX1VSTCIgPj4gIiRHSVRIVUJfT1VUUFVUIgogICAgICAgICAgICBlY2hvICJXaWxsIHRlc3QgdmVyc2lvbjogJFZFUlNJT04iCiAgICAgICAgICAgIGVjaG8gIkJpbmFyeSBVUkw6ICRCSU5BUllfVVJMIgogICAgICAgICAgZmkKCiAgIyDilIDilIAgUGVyLWRpc3RybyBzbW9rZS10ZXN0IG1hdHJpeCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAjIEVhY2ggam9iIHJ1bnMgaW4gYSByZWFsIGRpc3RybyBjb250YWluZXIsIGRvd25sb2FkcyB0aGUgcmVsZWFzZWQgYmluYXJ5LAogICMgYW5kIGFzc2VydHMgdGhhdDoKICAjICAgMS4gVGhlIGJpbmFyeSBleGVjdXRlcyBhdCBhbGwgKGNhdGNoZXMgZ2xpYmMgQUJJIGZsb29yIHJlZ3Jlc3Npb25zKS4KICAjICAgMi4gYC0tdmVyc2lvbmAgcHJpbnRzIGEgdmVyc2lvbiBzdHJpbmcuCiAgIyAgIDMuIGBkb2N0b3JgIGV4aXRzIDAgKG9yIGV4aXRzIG5vbi16ZXJvIHdpdGggYSBwYXJzZWFibGUgZGlhZ25vc3RpYyDigJQKICAjICAgICAgdGhlIGRvY3RvciBjb21tYW5kIHJlcG9ydHMgY2FwYWJpbGl0aWVzLCBzb21lIG1heSBiZSBhYnNlbnQgaW4gYQogICMgICAgICBoZWFkbGVzcyBjb250YWluZXI7IHdlIHRyZWF0IGEgY2xlYW4gZXhpdCBvciBhIGtub3duLW1pc3NpbmctZGlzcGxheQogICMgICAgICBleGl0IGFzIHN1Y2Nlc3MgZm9yIHRoZSBBQkkgdGVzdCkuCiAgIwogICMgV2h5IHRoZXNlIGRpc3Ryb3M/CiAgIyAgIGRlYmlhbjoxMiAg4oCUIGdsaWJjIDIuMzYsIHJlcHJlc2VudGF0aXZlIG9mIERlYmlhbiBzdGFibGUgdXNlcnMKICAjICAgdWJ1bnR1OjIyLjA0IOKAlCBnbGliYyAyLjM1LCBVYnVudHUgTFRTIG1vc3Qgd2lkZWx5IGRlcGxveWVkCiAgIyAgIHVidW50dToyNC4wNCDigJQgZ2xpYmMgMi4zOSwgYWxzbyB0ZXN0cyBRdDUgQVQtU1BJIGJyaWRnZSBnYXAgKHNlZSBDVUEtNTk5KQogICMgICByb2NreWxpbnV4Ojkg4oCUIGdsaWJjIDIuMzQsIFJIRUwvUm9ja3kvQWxtYUxpbnV4IHVzZXJzCiAgIyAgIGZlZG9yYTo0MSAg4oCUIGdsaWJjIDIuNDAsIGxlYWRpbmctZWRnZSBSUE0gdXNlcnMKICBkaXN0cm8tc21va2U6CiAgICBuYW1lOiAiJHt7IG1hdHJpeC5kaXN0cm8gfX0gKGdsaWJjICR7eyBtYXRyaXguZ2xpYmNfdmVyc2lvbiB9fSkiCiAgICBuZWVkczogcmVzb2x2ZS12ZXJzaW9uCiAgICAjIERvbid0IGJsb2NrIHRoZSBQUiBpZiBubyByZWxlYXNlIGJpbmFyeSBleGlzdHMgeWV0LgogICAgY29udGludWUtb24tZXJyb3I6IHRydWUKICAgIHJ1bnMtb246IHVidW50dS1sYXRlc3QKICAgIGNvbnRhaW5lcjoKICAgICAgaW1hZ2U6ICR7eyBtYXRyaXguaW1hZ2UgfX0KICAgIHN0cmF0ZWd5OgogICAgICBmYWlsLWZhc3Q6IGZhbHNlCiAgICAgIG1hdHJpeDoKICAgICAgICBpbmNsdWRlOgogICAgICAgICAgIyBEZWJpYW4gZmFtaWx5CiAgICAgICAgICAtIGRpc3RybzogImRlYmlhbjoxMiIKICAgICAgICAgICAgaW1hZ2U6ICJkZWJpYW46MTIiCiAgICAgICAgICAgIGdsaWJjX3ZlcnNpb246ICIyLjM2IgogICAgICAgICAgICBwa2dfaW5zdGFsbDogImFwdC1nZXQgdXBkYXRlIC1xcSAmJiBhcHQtZ2V0IGluc3RhbGwgLXkgLS1uby1pbnN0YWxsLXJlY29tbWVuZHMgY3VybCBjYS1jZXJ0aWZpY2F0ZXMiCiAgICAgICAgICAtIGRpc3RybzogInVidW50dToyMi4wNCIKICAgICAgICAgICAgaW1hZ2U6ICJ1YnVudHU6MjIuMDQiCiAgICAgICAgICAgIGdsaWJjX3ZlcnNpb246ICIyLjM1IgogICAgICAgICAgICBwa2dfaW5zdGFsbDogImFwdC1nZXQgdXBkYXRlIC1xcSAmJiBERUJJQU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCBpbnN0YWxsIC15IC0tbm8taW5zdGFsbC1yZWNvbW1lbmRzIGN1cmwgY2EtY2VydGlmaWNhdGVzIgogICAgICAgICAgLSBkaXN0cm86ICJ1YnVudHU6MjQuMDQiCiAgICAgICAgICAgIGltYWdlOiAidWJ1bnR1OjI0LjA0IgogICAgICAgICAgICBnbGliY192ZXJzaW9uOiAiMi4zOSIKICAgICAgICAgICAgcGtnX2luc3RhbGw6ICJhcHQtZ2V0IHVwZGF0ZSAtcXEgJiYgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgaW5zdGFsbCAteSAtLW5vLWluc3RhbGwtcmVjb21tZW5kcyBjdXJsIGNhLWNlcnRpZmljYXRlcyIKICAgICAgICAgICMgUlBNIGZhbWlseQogICAgICAgICAgLSBkaXN0cm86ICJyb2NreWxpbnV4OjkiCiAgICAgICAgICAgIGltYWdlOiAicm9ja3lsaW51eDo5IgogICAgICAgICAgICBnbGliY192ZXJzaW9uOiAiMi4zNCIKICAgICAgICAgICAgcGtnX2luc3RhbGw6ICJkbmYgaW5zdGFsbCAteSAtLXNldG9wdD1pbnN0YWxsX3dlYWtfZGVwcz1GYWxzZSBjdXJsIGNhLWNlcnRpZmljYXRlcyIKICAgICAgICAgIC0gZGlzdHJvOiAiZmVkb3JhOjQxIgogICAgICAgICAgICBpbWFnZTogImZlZG9yYTo0MSIKICAgICAgICAgICAgZ2xpYmNfdmVyc2lvbjogIjIuNDAiCiAgICAgICAgICAgIHBrZ19pbnN0YWxsOiAiZG5mIGluc3RhbGwgLXkgLS1zZXRvcHQ9aW5zdGFsbF93ZWFrX2RlcHM9RmFsc2UgY3VybCBjYS1jZXJ0aWZpY2F0ZXMiCgogICAgc3RlcHM6CiAgICAgIC0gbmFtZTogU2tpcCBpZiBubyByZWxlYXNlIGJpbmFyeQogICAgICAgIGlmOiBuZWVkcy5yZXNvbHZlLXZlcnNpb24ub3V0cHV0cy52ZXJzaW9uID09ICdub25lJwogICAgICAgIHJ1bjogfAogICAgICAgICAgZWNobyAiTm8gY3VhLWRyaXZlci1ycyByZWxlYXNlIGJpbmFyeSBleGlzdHMgeWV0LiBTa2lwcGluZyBkaXN0cm8gc21va2UtdGVzdC4iCiAgICAgICAgICBlY2hvICJUaGlzIGlzIGV4cGVjdGVkIG9uIGJyYW5jaGVzIGJlZm9yZSB0aGUgZmlyc3QgcmVsZWFzZSB0YWcuIgogICAgICAgICAgZXhpdCAwCgogICAgICAtIG5hbWU6IEluc3RhbGwgY3VybCArIGNhLWNlcnRpZmljYXRlcwogICAgICAgIGlmOiBuZWVkcy5yZXNvbHZlLXZlcnNpb24ub3V0cHV0cy52ZXJzaW9uICE9ICdub25lJwogICAgICAgIHJ1bjogJHt7IG1hdHJpeC5wa2dfaW5zdGFsbCB9fQoKICAgICAgLSBuYW1lOiBEb3dubG9hZCByZWxlYXNlZCBiaW5hcnkKICAgICAgICBpZjogbmVlZHMucmVzb2x2ZS12ZXJzaW9uLm91dHB1dHMudmVyc2lvbiAhPSAnbm9uZScKICAgICAgICBlbnY6CiAgICAgICAgICBCSU5BUllfVVJMOiAke3sgbmVlZHMucmVzb2x2ZS12ZXJzaW9uLm91dHB1dHMuYmluYXJ5X3VybCB9fQogICAgICAgIHJ1bjogfAogICAgICAgICAgZWNobyAiRG93bmxvYWRpbmc6ICRCSU5BUllfVVJMIgogICAgICAgICAgY3VybCAtZnNTTCAiJEJJTkFSWV9VUkwiIC1vIGN1YS1kcml2ZXIudGFyLmd6CiAgICAgICAgICB0YXIgLXh6ZiBjdWEtZHJpdmVyLnRhci5negogICAgICAgICAgY2htb2QgK3ggY3VhLWRyaXZlcgogICAgICAgICAgbHMgLWxoIGN1YS1kcml2ZXIKCiAgICAgIC0gbmFtZTogVmVyaWZ5IGdsaWJjIGZsb29yIChsZGQpCiAgICAgICAgaWY6IG5lZWRzLnJlc29sdmUtdmVyc2lvbi5vdXRwdXRzLnZlcnNpb24gIT0gJ25vbmUnCiAgICAgICAgcnVuOiB8CiAgICAgICAgICAjIFByaW50IGdsaWJjIHZlcnNpb24gb24gdGhpcyBob3N0IGFuZCB0aGUgbWluaW11bSB2ZXJzaW9uIHRoZSBiaW5hcnkKICAgICAgICAgICMgcmVxdWlyZXMuIFRoaXMgbWFrZXMgQ0kgbG9ncyBzZWxmLWV4cGxhbmF0b3J5IGlmIHRoZSBiaW5hcnkgZmFpbHMuCiAgICAgICAgICBlY2hvICI9PT0gSG9zdCBnbGliYyA9PT0iCiAgICAgICAgICBsZGQgLS12ZXJzaW9uIHwgaGVhZCAtMSB8fCB0cnVlCiAgICAgICAgICBlY2hvICI9PT0gQmluYXJ5IGdsaWJjIHJlcXVpcmVtZW50cyA9PT0iCiAgICAgICAgICAjIG9iamR1bXAgLyByZWFkZWxmIG1heSBub3QgYmUgaW5zdGFsbGVkIGluIG1pbmltYWwgY29udGFpbmVyczsKICAgICAgICAgICMgc3RyaW5ncyBpcyBtb3JlIHVuaXZlcnNhbGx5IGF2YWlsYWJsZS4KICAgICAgICAgIHN0cmluZ3MgY3VhLWRyaXZlciB8IGdyZXAgLUUgIl5HTElCQ19bMC05XSIgfCBzb3J0IC1WIHwgdGFpbCAtNSB8fCB0cnVlCgogICAgICAtIG5hbWU6IFNtb2tlLXRlc3QgLS12ZXJzaW9uCiAgICAgICAgaWY6IG5lZWRzLnJlc29sdmUtdmVyc2lvbi5vdXRwdXRzLnZlcnNpb24gIT0gJ25vbmUnCiAgICAgICAgcnVuOiB8CiAgICAgICAgICBlY2hvICI9PT0gY3VhLWRyaXZlciAtLXZlcnNpb24gPT09IgogICAgICAgICAgIyBUaGlzIGlzIHRoZSBwcmltYXJ5IEFCSS1mbG9vciBnYXRlOiBpZiB0aGUgYmluYXJ5IGNhbid0IGV2ZW4gcHJpbnQKICAgICAgICAgICMgaXRzIHZlcnNpb24gdGhlIGdsaWJjIHJlcXVpcmVtZW50IGlzIHRvbyBoaWdoIGZvciB0aGlzIGRpc3Ryby4KICAgICAgICAgIC4vY3VhLWRyaXZlciAtLXZlcnNpb24KICAgICAgICAgIFZFUlNJT05fT1VUPSQoLi9jdWEtZHJpdmVyIC0tdmVyc2lvbikKICAgICAgICAgIGVjaG8gIk91dHB1dDogJFZFUlNJT05fT1VUIgogICAgICAgICAgIyBTYW5pdHktY2hlY2sgdGhhdCB0aGUgb3V0cHV0IGNvbnRhaW5zIGEgdmVyc2lvbiBudW1iZXIuCiAgICAgICAgICBpZiAhIGVjaG8gIiRWRVJTSU9OX09VVCIgfCBncmVwIC1xRSAiWzAtOV0rXC5bMC05XStcLlswLTldKyI7IHRoZW4KICAgICAgICAgICAgZWNobyAiRVJST1I6IC0tdmVyc2lvbiBvdXRwdXQgZG9lcyBub3QgY29udGFpbiBhIHNlbXZlciBzdHJpbmciCiAgICAgICAgICAgIGV4aXQgMQogICAgICAgICAgZmkKICAgICAgICAgIGVjaG8gIlBBU1M6IC0tdmVyc2lvbiIKCiAgICAgIC0gbmFtZTogU21va2UtdGVzdCBkb2N0b3IKICAgICAgICBpZjogbmVlZHMucmVzb2x2ZS12ZXJzaW9uLm91dHB1dHMudmVyc2lvbiAhPSAnbm9uZScKICAgICAgICBydW46IHwKICAgICAgICAgIGVjaG8gIj09PSBjdWEtZHJpdmVyIGRvY3RvciA9PT0iCiAgICAgICAgICAjIGRvY3RvciBjaGVja3MgZm9yIHJ1bnRpbWUgY2FwYWJpbGl0aWVzIChkaXNwbGF5LCBBVC1TUEksIGV0Yy4pLgogICAgICAgICAgIyBJbiBhIGhlYWRsZXNzIGNvbnRhaW5lciBtYW55IGNhcGFiaWxpdGllcyB3aWxsIGJlIGFic2VudCDigJQgdGhhdCdzCiAgICAgICAgICAjIGV4cGVjdGVkIGFuZCBOT1QgYSBmYWlsdXJlLiBXaGF0IHdlIHRlc3QgaGVyZSBpcyB0aGF0OgogICAgICAgICAgIyAgIGEuIFRoZSBiaW5hcnkgbG9hZHMgYW5kIHJ1bnMgdGhlIGRvY3RvciBzdWJjb21tYW5kIGF0IGFsbC4KICAgICAgICAgICMgICBiLiBJdCBleGl0cyB3aXRoIGEgcGFyc2VhYmxlIHN0YXR1cyAobm90IGEgU0lHSUxMIC8gZ2xpYmMgc3ltYm9sCiAgICAgICAgICAjICAgICAgZXJyb3Igd2hpY2ggd291bGQgbWFuaWZzdCBhcyBleGl0IGNvZGUgMTI3IG9yIHNpbWlsYXIpLgogICAgICAgICAgc2V0ICtlCiAgICAgICAgICAuL2N1YS1kcml2ZXIgZG9jdG9yIDI+JjEKICAgICAgICAgIEVYSVRfQ09ERT0kPwogICAgICAgICAgc2V0IC1lCiAgICAgICAgICBlY2hvICJkb2N0b3IgZXhpdCBjb2RlOiAkRVhJVF9DT0RFIgogICAgICAgICAgIyBFeGl0IGNvZGVzIHRoYXQgaW5kaWNhdGUgZ2xpYmMvQUJJIGZhaWx1cmUgKGNvbW1hbmQgbm90IGZvdW5kIC8gYmFkIEVMRik6CiAgICAgICAgICBpZiBbWyAkRVhJVF9DT0RFIC1lcSAxMjcgfHwgJEVYSVRfQ09ERSAtZXEgMTI2IF1dOyB0aGVuCiAgICAgICAgICAgIGVjaG8gIkVSUk9SOiBjdWEtZHJpdmVyIGZhaWxlZCB0byBleGVjdXRlIChleGl0ICRFWElUX0NPREUpIOKAlCBsaWtlbHkgZ2xpYmMgQUJJIG1pc21hdGNoIgogICAgICAgICAgICBleGl0IDEKICAgICAgICAgIGZpCiAgICAgICAgICAjIFRyZWF0IDAgKGFsbCBjYXBhYmlsaXRpZXMgcHJlc2VudCkgb3IgMSAoY2FwYWJpbGl0aWVzIG1pc3NpbmcgYnV0CiAgICAgICAgICAjIGRvY3RvciByYW4pIGFzIHN1Y2Nlc3Mg4oCUIGJvdGggbWVhbiB0aGUgYmluYXJ5IGxvYWRlZCBjb3JyZWN0bHkuCiAgICAgICAgICBlY2hvICJQQVNTOiBkb2N0b3IgcmFuIHdpdGhvdXQgQUJJIGVycm9yIgoKICAjIOKUgOKUgCBTdW1tYXJ5IGpvYiDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAjIEEgc2luZ2xlIGpvYiB0aGF0IG90aGVyIHN0YXR1cyBjaGVja3MgY2FuIHJlcXVpcmUuIE1hcmtzIGdyZWVuIHdoZW4gYWxsCiAgIyBkaXN0cm8tc21va2Ugam9icyBwYXNzIChvciB3aGVuIHRoZSBiaW5hcnkgZG9lc24ndCBleGlzdCB5ZXQgYW5kIGFsbAogICMgY29udGludWUtb24tZXJyb3Igam9icyBza2lwcGVkKS4KICBkaXN0cm8tY29tcGF0LXN1bW1hcnk6CiAgICBuYW1lOiAiRGlzdHJvIGNvbXBhdCBzdW1tYXJ5IgogICAgbmVlZHM6IFtyZXNvbHZlLXZlcnNpb24sIGRpc3Ryby1zbW9rZV0KICAgIGlmOiBhbHdheXMoKQogICAgcnVucy1vbjogdWJ1bnR1LWxhdGVzdAogICAgc3RlcHM6CiAgICAgIC0gbmFtZTogQ2hlY2sgcmVzdWx0cwogICAgICAgIHJ1bjogfAogICAgICAgICAgZWNobyAicmVzb2x2ZS12ZXJzaW9uIHJlc3VsdDogJHt7IG5lZWRzLnJlc29sdmUtdmVyc2lvbi5yZXN1bHQgfX0iCiAgICAgICAgICBlY2hvICJkaXN0cm8tc21va2UgcmVzdWx0OiAgICAke3sgbmVlZHMuZGlzdHJvLXNtb2tlLnJlc3VsdCB9fSIKICAgICAgICAgICMgSWYgcmVzb2x2ZS12ZXJzaW9uIGZhaWxlZCAoQVBJIGVycm9yIGV0Yy4pIHRoYXQncyBhIHJlYWwgZmFpbHVyZS4KICAgICAgICAgIGlmIFtbICIke3sgbmVlZHMucmVzb2x2ZS12ZXJzaW9uLnJlc3VsdCB9fSIgPT0gImZhaWx1cmUiIF1dOyB0aGVuCiAgICAgICAgICAgIGVjaG8gIkVSUk9SOiByZXNvbHZlLXZlcnNpb24gam9iIGZhaWxlZCIKICAgICAgICAgICAgZXhpdCAxCiAgICAgICAgICBmaQogICAgICAgICAgIyBkaXN0cm8tc21va2UgaXMgY29udGludWUtb24tZXJyb3Igc28gaXRzIHJlc3VsdCBpcyBhbHdheXMKICAgICAgICAgICMgJ3N1Y2Nlc3MnIGV2ZW4gd2hlbiBpbmRpdmlkdWFsIGpvYnMgZmFpbC4gVGhlIGluZGl2aWR1YWwgam9iCiAgICAgICAgICAjIGxvZ3MgYXJlIHRoZSBzb3VyY2Ugb2YgdHJ1dGg7IHRoaXMgc3VtbWFyeSBqb2IganVzdCBnYXRlcwogICAgICAgICAgIyB0aGUgb3ZlcmFsbCB3b3JrZmxvdyBzdGF0dXMuCiAgICAgICAgICBlY2hvICJBbGwgZGlzdHJvIGNvbXBhdCBjaGVja3MgY29tcGxldGVkLiIK No newline at end of file | |||
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Verify the workflow file is valid YAML text instead of a base64 scalar.
# Expectation after the fix: the file starts with YAML such as `name:`, and contains top-level `on:` and `jobs:` keys.
python - <<'PY'
from pathlib import Path
import base64
import binascii
path = Path(".github/workflows/ci-distro-compat-cua-driver.yml")
data = path.read_text().strip()
print("First 120 chars:")
print(data[:120])
try:
decoded = base64.b64decode(data, validate=True).decode("utf-8")
except (binascii.Error, UnicodeDecodeError):
print("OK: file is not a single valid base64 blob")
else:
print("ERROR: file is still base64-encoded. Decoded preview:")
print(decoded[:500])
raise SystemExit(1)
text = path.read_text()
missing = [key for key in ("on:", "jobs:") if key not in text]
if missing:
print(f"ERROR: missing expected workflow keys: {missing}")
raise SystemExit(1)
print("OK: workflow appears to be plain YAML with expected keys")
PYRepository: trycua/cua
Length of output: 747
Decode the base64 blob before committing the workflow file.
The file contains base64-encoded YAML instead of plain YAML text. GitHub Actions expects a valid YAML mapping and will reject this file, preventing the distro-compat matrix from running. Replace the entire content with the decoded YAML.
🧰 Tools
🪛 actionlint (1.7.12)
[error] 1-1: "jobs" section is missing in workflow
(syntax-check)
[error] 1-1: "on" section is missing in workflow
(syntax-check)
[error] 1-1: "workflow" section is scalar node but mapping node is expected
(syntax-check)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/ci-distro-compat-cua-driver.yml at line 1, The
.github/workflows/ci-distro-compat-cua-driver.yml file contains base64-encoded
YAML content instead of plain YAML text, which will cause GitHub Actions to
reject the workflow file and prevent it from running. Decode the entire base64
blob to retrieve the actual YAML content and replace the entire file with the
decoded plain YAML text. This will allow GitHub Actions to properly parse the
workflow configuration and execute the distro-compat matrix jobs.
Source: Linters/SAST tools
Adds a GitHub Actions workflow that runs the *released* cua-driver binary inside real distro containers (debian:12, ubuntu:22.04, ubuntu:24.04, rockylinux:9, fedora:41) to catch glibc ABI floor regressions and distro packaging gaps that the NixOS test suite cannot detect. See CUA-599 for full context.
66b9342 to
2ef1d21
Compare
…, clarify push.tags+paths comment
✅ Review completeReview commit
Follow-up tickets documented in Linear (workspace at issue limit): debian:11 matrix, arm64 jobs, remove continue-on-error. Ready for merge. |
…t on rockylinux:9 The cua-driver binary dynamically links libX11, so running --version in a minimal container without libX11 fails with exit 127 (missing shared lib). Add libx11-6 (Debian/Ubuntu) and libX11 (Fedora/Rocky) to the pkg_install lists so the binary can actually execute. RockyLinux 9 ships curl-minimal which conflicts with the full curl package. Add --allowerasing to let dnf replace curl-minimal with curl, matching the error message's own suggestion.
* ci(cua-driver): add distro-compat smoke-test workflow with X11 runtime deps Add .github/workflows/ci-distro-compat-cua-driver.yml from PR #1959 (f/cua-599-nixos-cua-driver-test-suite-has-blind-spots-for-real-distro) with a fix for the X11 runtime dependency issue. The workflow smoke-tests the released cua-driver-rs binary across 5 distros (debian:12, ubuntu:22.04, ubuntu:24.04, rockylinux:9, fedora:41) to catch glibc ABI floor regressions. **Fix from original PR:** The pkg_install matrix entries now include the required X11 runtime libs (libx11-6 libxi6 libxtst6 libxext6 on Debian/Ubuntu; libX11 libXi libXtst libXext on Rocky/Fedora). Without these, the cua-driver binary fails with exit 127 (dynamic linker cannot resolve libXi.so.6 etc.) before main() even runs -- which the smoke-test correctly interprets as an ABI failure. The cua-driver-rs-v0.5.8 release (published 2026-06-21) provides the binary assets this workflow downloads. The binary URL pattern matches: https://github.com/trycua/cua/releases/download/cua-driver-rs-v{VERSION}/ cua-driver-rs-{VERSION}-linux-x86_64-binary.tar.gz Fixes: CUA-606 Related: CUA-599, PR #1959 * ci(cua-driver): fix rocky linux curl conflict in distro-compat workflow Rocky Linux 9 ships curl-minimal in the base image which conflicts with the full curl package. Use --allowerasing to let dnf replace curl-minimal with the full curl package transparently. * review: add libwayland-client0/libwayland-client runtime dep + fix manifest typo - Add libwayland-client0 (deb) and libwayland-client (rpm) to pkg_install because the CD workflow links against libwayland-dev (native Wayland backend, added in #1910); without the runtime lib the dynamic linker fails on any distro that doesn't install it by default. - Fix typo: 'manifst' -> 'manifest' in doctor smoke-test comment. - Update comment block to mention Wayland alongside X11 deps. --------- Co-authored-by: OpenClaw <openclaw@trycua.com>
cua-driver links against multiple X11 extension libraries at startup: libX11, libXi (XInput), libXtst (XTest), libXfixes, libXrandr, libXcomposite, libXext. Any missing lib causes exit 127 before main() runs, which looks like a glibc ABI failure but isn't. Install the full set in pkg_install for both Debian/Ubuntu and RPM families. Also add an ldd diagnostic step to make future missing-lib failures immediately obvious in CI logs.
The main branch landed its own fix for the same distro-compat issues (missing X11 + wayland libs, curl-minimal conflict on Rocky 9). This merge adopts main's version of those fixes and adds back our ldd diagnostic step and double-version-call cleanup.
🏔️ Hillclimb completeAll CI checks are now green on PR #1959. What was fixedThe
Additionally: removed a duplicate Final CI run: 27920632568
|
NixOS cua-driver test suite — distro-compat smoke tests
Adds a CI workflow that runs the cua-driver binary inside real Linux distribution containers to catch glibc ABI and dependency issues that NixOS CI misses.
Distros tested
Tests
cua-driver --versionsucceedscua-driver doctorexits without code 127/126 (ABI/linker guard)Review changes (commit 9a39bd7)
stringsrequires binutils; added to all 5 distros (apt/dnf)manifst→manifestFollow-up (Linear limit hit — tracked in comments)
continue-on-error: trueonce stable