-
Notifications
You must be signed in to change notification settings - Fork 80
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
Linux/arm64 CI failing - Cannot find binary for platform linux with architecture arm64 #416
Comments
Running a Linux VM on my M1 Mac, I am unable to install pact on my local project due to this.
|
Thanks @alshdavid. I appreciate the problem, but don't have a straightforward solution. If you are running docker for that "VM", you could add the I think this package may need to be split, or the (non-Ruby based) code moved from here into Pact JS. Given that parts of this package (the parts that use the Ruby core) work in some architectures and others don't, I don't think we have much choice other than to state that this package doesn't work in a bunch of architectures, which I think is not right. |
Please follow this issue pact-foundation/pact-js#1067 for progress. TL;DR - the CLI which is the root cause of this compatibility issue, will be removed from this project as a dependency in the next major release. |
@mefellows is there a work around for this as it is currently blocking me from using pact in my project. |
The plan above is to move the ruby binaries out of this project. For now, there is a workaround listed here: #407 |
I've been making some changes to the travelling-ruby system that we use to package pact-ruby-standalone, in order to support arm64 on osx and linux, it also provides updates to Ruby 3.1.2 and windows 32 bit binaries (currently it only provides 64 bit) PR here phusion/traveling-ruby#132 Releases here https://github.com/YOU54F/pact-ruby-standalone/releases/tag/v3.1.2.2-alpha I've tested them out against pact-js-core https://www.npmjs.com/package/@you54f/pact-core/v/13.14.0?activeTab=code master...YOU54F:pact-js-core:master and against the old 9.x.x / pact-node branch https://www.npmjs.com/package/@you54f/pact-node/v/10.18.0?activeTab=code The size on the pact-core is concerning tho, it's a chonki boi as it contains the pact ruby standalone and the ffi for every platform, regardless of the downloading platform. I wondered how small we could make it if we could remove standalone, and ffi from the package and download on pre install with this janky script https://www.npmjs.com/package/@you54f/pact-core?activeTab=code 499 kB vs 401mb (it currently sits at 215mb https://www.npmjs.com/package/@pact-foundation/pact-core)
But these will suffer from all the problems users have of not being able to run pre/post install scripts, issues downloading binaries. I think the plan to split out the ruby binaries is properly wise, they can be packaged in a separate npm package, and the uplift for users should be quite small. |
👋 Hi! The 'smartbear-supported' label has just been added to this issue, which will create an internal tracking ticket in PactFlow's Jira (PACT-964). We will use this to prioritise and assign a team member to this task. All activity will be public on this ticket. For now, sit tight and we'll update this ticket once we have more information on the next steps. |
pact-js-core now supports linux arm64 for both the pact ruby standalone binaries, and the pact ffi you can find a version with support for both in https://www.npmjs.com/package/@pact-foundation/pact-core/v/13.15.0 |
Thank you for reporting a bug! We appreciate it very much. Issues are a big input into the priorities for Pact development
All italic text in this template is safe to remove before submitting
Thanks again!
Software versions
Please provide at least OS and version of pact-js
Issue Checklist
Please confirm the following:
Expected behaviour
No errors in CI machine
Actual behaviour
getting error
Error: Error while locating pact binary: Cannot find binary for platform 'linux' with architecture 'arm64'.
| at throwError (/workdir/node_modules/@pact-foundation/pact-core/standalone/install.ts:7:9)
| at Object.getBinaryEntry (/workdir/node_modules/@pact-foundation/pact-core/standalone/install.ts:51:9)
| at Object.standalone (/workdir/node_modules/@pact-foundation/pact-core/src/pact-standalone.ts:40:5)
| at Object. (/workdir/node_modules/@pact-foundation/pact-core/src/pact-standalone.ts:72:16)
| at Module._compile (node:internal/modules/cjs/loader:1155:14)
| at Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
| at Object.require.extensions. [as .js] (/workdir/node_modules/ts-node/src/index.ts:1608:43)
| at Module.load (node:internal/modules/cjs/loader:1033:32)
| at Function.Module._load (node:internal/modules/cjs/loader:868:12)
| at Module.require (node:internal/modules/cjs/loader:1057:19)
| at require (node:internal/modules/cjs/helpers:103:18)
| at Object. (/workdir/node_modules/@pact-foundation/pact-core/src/server.ts:2:1)
| at Module._compile (node:internal/modules/cjs/loader:1155:14)
| at Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
| at Object.require.extensions. [as .js] (/workdir/node_modules/ts-node/src/index.ts:1608:43)
| at Module.load (node:internal/modules/cjs/loader:1033:32)
| at Function.Module._load (node:internal/modules/cjs/loader:868:12)
| at Module.require (node:internal/modules/cjs/loader:1057:19)
| at require (node:internal/modules/cjs/helpers:103:18)
| at Object. (/workdir/node_modules/@pact-foundation/pact-core/src/pact.ts:2:1)
| at Module._compile (node:internal/modules/cjs/loader:1155:14)
| at Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
| at Object.require.extensions. [as .js] (/workdir/node_modules/ts-node/src/index.ts:1608:43)
| at Module.load (node:internal/modules/cjs/loader:1033:32)
| at Function.Module._load (node:internal/modules/cjs/loader:868:12)
| at Module.require (node:internal/modules/cjs/loader:1057:19)
| at require (node:internal/modules/cjs/helpers:103:18)
| at Object. (/workdir/node_modules/@pact-foundation/pact-core/src/index.ts:1:1)
| at Module._compile (node:internal/modules/cjs/loader:1155:14)
| at Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
| at Object.require.extensions. [as .js] (/workdir/node_modules/ts-node/src/index.ts:1608:43)
| at Module.load (node:internal/modules/cjs/loader:1033:32)
| at Function.Module._load (node:internal/modules/cjs/loader:868:12)
| at Module.require (node:internal/modules/cjs/loader:1057:19)
| at require (node:internal/modules/cjs/helpers:103:18)
| at Object. (/workdir/node_modules/@pact-foundation/src/httpPact/index.ts:2:1)
| at Module._compile (node:internal/modules/cjs/loader:1155:14)
| at Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
| at Object.require.extensions. [as .js] (/workdir/node_modules/ts-node/src/index.ts:1608:43)
| at Module.load (node:internal/modules/cjs/loader:1033:32)
| at Function.Module._load (node:internal/modules/cjs/loader:868:12)
| at Module.require (node:internal/modules/cjs/loader:1057:19)
| at require (node:internal/modules/cjs/helpers:103:18)
| at Object. (/workdir/node_modules/@pact-foundation/src/index.ts:25:1)
| at Module._compile (node:internal/modules/cjs/loader:1155:14)
| at Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
| at Object.require.extensions. [as .js] (/workdir/node_modules/ts-node/src/index.ts:1608:43)
| at Module.load (node:internal/modules/cjs/loader:1033:32)
| at Function.Module._load (node:internal/modules/cjs/loader:868:12)
| at Module.require (node:internal/modules/cjs/loader:1057:19)
| at require (node:internal/modules/cjs/helpers:103:18)
| at Object. (/workdir/src/create/create.test.ts:2:1)
| at Module._compile (node:internal/modules/cjs/loader:1155:14)
| at Module.m._compile (/workdir/node_modules/ts-node/src/index.ts:1618:23)
| at Module._extensions..js (node:internal/modules/cjs/loader:1209:10)
| at Object.require.extensions. [as .ts] (/workdir/node_modules/ts-node/src/index.ts:1621:12)
| at Module.load (node:internal/modules/cjs/loader:1033:32)
| at Function.Module._load (node:internal/modules/cjs/loader:868:12)
| at Module.require (node:internal/modules/cjs/loader:1057:19)
| at require (node:internal/modules/cjs/helpers:103:18)
| at Object.exports.requireOrImport (/workdir/node_modules/mocha/lib/nodejs/esm-utils.js:49:16)
| at async Object.exports.loadFilesAsync (/workdir/node_modules/mocha/lib/nodejs/esm-utils.js:91:20)
| at async singleRun (/workdir/node_modules/mocha/lib/cli/run-helpers.js:125:3)
| at async Object.exports.handler (/workdir/node_modules/mocha/lib/cli/run.js:370:5)
| 🚨 Error: The command exited with status 1
The text was updated successfully, but these errors were encountered: