-
Notifications
You must be signed in to change notification settings - Fork 21
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
ci: add Linux aarch64 build #15
Conversation
Hi @asabil! Thank you for your pull request and welcome to our community. Action RequiredIn order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you. ProcessIn order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA. Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with If you have received this in error or have any questions, please contact us at cla@meta.com. Thanks! |
Looks like |
Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Meta Open Source project. Thanks! |
c877002
to
3c5e78c
Compare
bc70980
to
11d61f1
Compare
Hi @asabil Thanks for working on this. Maybe it would be a good idea to split the refactoring into smaller PRs, to avoid a single PR that modifies the whole CI pipeline and to reduce/speed up the review process, making it more incremental. |
Yes of course, what I have here is more of a draft. I initially opened this PR thinking I was mostly done, until I realized that Life would have been easier if GraalVM's Before I head into thinking about how to split this into multiple PRs, there are few points that I would very much appreciate feedback/opinion on the following: 1. Pipeline architectureThe pipeline architecture in this PR is much more involved, which makes it more flexible, but also more complex: The build makes use separate workflows and jobs, sharing artifacts between the jobs using This inevitably slows down the build in exchange for flexibility (with some minor effort we should also be able to support windows). 2. eqwalizer on macOS/arm64 is actually built for macOS/x86_64This is not new to this PR, but was also an issue in the previous PR. The binary works thanks to Rosetta. This can only be resolved by using a macos building running arm64. 3. eqwalizer build for linux/arm64 takes 1.5h on the standard GitHub runnerThis is due using 4. Change in naming conventionI chose to using standardized triplets and arch names such as Thank you. |
1. Pipeline architectureThe CI pipeline originally started as multiple workflows, but that led to various discrepancies so unifying was also a way to avoid code duplication and keep everything consistent. The easier the better. 2. eqwalizer on macOS/arm64 is actually built for macOS/x86_643. eqwalizer build for linux/arm64 takes 1.5h on the standard GitHub runnerCorrect. This is because (as far as I know) GitHub public runners do not include a arm variant. 4. Change in naming conventionThat should already be the case when it comes to
I like the existing kind of structure since it allows us to provide "aliases" for the target which we can use in different contexts (e.g. when you publish to the marketplace you need to map the standard target to something like
Which can distract from what the action is trying to do and are more error prone (in my view). |
As an additional consideration, it is now be possible to run ELP without eqwalizer (see #14), so for Linux Arm we could simply publish a version of ELP which does not include eqwalizer and report the issue in whatsapp/eqwalizer. You can still build eqwalizer from source (yes, it's inconvenient). |
Thank you for the feedback. It has been a bit of a busy week for me, but I will try to pick this up again soon and open a new set of PRs. |
No description provided.