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

provide AppImage release for arm / aarch64 #15143

Open
goshhhy opened this issue Jul 20, 2021 · 19 comments
Open

provide AppImage release for arm / aarch64 #15143

goshhhy opened this issue Jul 20, 2021 · 19 comments
Labels
build building and installing Neovim using the provided scripts ci automation for build, test, and release enhancement feature request status:blocked-external Needs a third-party / external change or fix
Milestone

Comments

@goshhhy
Copy link

goshhhy commented Jul 20, 2021

  • nvim --version: N/A
  • Operating system/version: Debian testing, arm64

Actual behaviour

there is no AppImage for aarch64 platforms. this means users like me who do not use x86_64 and run a distribution without the latest version in its repositories, will have to build it ourselves if we want the latest.

Expected behaviour

an AppImage for aarch64 is provided.

@goshhhy goshhhy added the enhancement feature request label Jul 20, 2021
@clason clason added ci automation for build, test, and release status:blocked-external Needs a third-party / external change or fix build building and installing Neovim using the provided scripts labels Jul 21, 2021
@clason
Copy link
Member

clason commented Jul 21, 2021

I believe that is blocked by not having ARM64 runners for GH Actions: actions/runner-images#2552

@rktjmp
Copy link
Contributor

rktjmp commented Jul 21, 2021

Looks like it's stuck as a wontfix for now too...

One solution is a self hosted GH runner, AWS has ARM instances, as well as a few others here and there.

I imagine this would need a benevolent user to donate an instance to happen though, and it's open to abuse by malicious PRs.

Also it's probably a nightmare to keep upright.

https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners.

@bfredl
Copy link
Member

bfredl commented Jul 21, 2021

Well we could use such a thing only for nightly builds, and not for PR runs (whose queue probably is going to be impossible anyway, unless we spinn up a lot of instances)

@ck3mp3r
Copy link

ck3mp3r commented Aug 15, 2021

Why don't you use docker buildx?
I'm able to compile and build docker images with neovim for both amd64 and arm64 using GitHub actions
I think the trick here is QUEMU...

@rktjmp
Copy link
Contributor

rktjmp commented Aug 16, 2021

Could you post an example action & docker file, if you have one already that is, save some ground work.

Edit: actually there are some provided in the linked issue:

actions/runner-images#2552 (comment)

@ArniDagur you definitely can or you can use official Docker actions for setting up qemu/buildx and building Dockerfiles
https://github.com/marketplace/actions/docker-setup-qemu
https://github.com/marketplace/actions/docker-setup-buildx
https://github.com/marketplace/actions/build-and-push-docker-images

I will try to look into this, but the linked issue also states builds take 5 times as long which might get killed by the CI warden? I think they cap out at 45min/action?

@justinmk justinmk added this to the unplanned milestone Aug 16, 2021
@ck3mp3r
Copy link

ck3mp3r commented Aug 16, 2021

Yeah, build time for amd64 and arm64 containers together take just over an hour... but still better than having nothing for arm64, especially as there are going to be more of them around...

@tororutsu
Copy link

Is this why I cant use the App Image? or the tar package. I get a "Exec format err" for both. I believe i am having an issue with the Ubuntu package(at least i think i am) the unstable build is version 5.01Lua and not LuaJIT. Unless this is not a problem. I am having issues with LuaRocks not being present, its affecting packer.nvim. Or im stupid and have no idea what I am talking about. I just want to program Svelte lol but I cant seem to get my LSP right lol.

@rktjmp
Copy link
Contributor

rktjmp commented Aug 31, 2021

Just noting down WIP here: https://github.com/rktjmp/neovim/tree/ci-arm

Don't use the released files in that repo yet, they are a mix of arm64 and amd64 because arm builds too slow for testing.

@rktjmp
Copy link
Contributor

rktjmp commented Sep 1, 2021

Draft PR #15542 which needs some testing by actual users.

@tigerinus
Copy link

With the understanding that there might not be a ARM device for building the ARM package, is cross-compiling something open for discussion here?

There are many aged ARM devices re-enabled for regular work scenarios (e.g. thin-terminal, IoT controller, file/printer sharing, etc.) by Linux.

@rktjmp
Copy link
Contributor

rktjmp commented Sep 29, 2021

The PR above would support any platform QEMU does, just have to add the arch to the matrix. That may be simpler than setting up cross compilation toolchains in "normal" builds.

I imagine the core team would have to weigh up potential support costs (issue triage, platform quirks, etc) if they were to provide separate binaries for many platforms, but an industrious user could probably:

  • fork neovim, update the builder with whatever platforms they wanted and create a new action to rebase those changes onto the latest HEAD every day and act as a 3rd party unsupported, unofficial release provider, or
  • use the dockerfiles to build whatever platform they wanted locally.

@remiconnesson
Copy link

Looks like it's stuck as a wontfix for now too...
[...]
I imagine this would need a benevolent user to donate an instance to happen though, and it's open to abuse by malicious PRs.

Maybe that will help: https://www.oracle.com/cloud/free/

Oracle Cloud provide a Free Tier which include an instance always free with an ARM CPU and 24GB of RAM

@krmbzds
Copy link

krmbzds commented Sep 14, 2022

I believe that is blocked by not having ARM64 runners for GH Actions: actions/runner-images#2552

GitHub ARM64 runner issue is now tracked here: actions/runner-images#5631

@afifurrohman-id
Copy link

afifurrohman-id commented Apr 5, 2024

I believe that is blocked by not having ARM64 runners for GH Actions: actions/runner-images#2552

GitHub ARM64 runner issue is now tracked here: actions/runner-images#5631

Now MacOS M1 is GA: https://github.blog/changelog/2024-01-30-github-actions-introducing-the-new-m1-macos-runner-available-to-open-source

Sadly, M1 doesn't support nested virtualization due to architectural issue:
actions/runner-images#9460

But, if just need for runner, is good to open PR now.

@clason
Copy link
Member

clason commented Apr 5, 2024

Sadly, M1 doesn't support nested virtualization due to architectural issue:
actions/runner-images#9460

Yes, and that is why we are still blocked. No native ARM linux runners == no official native ARM linux releases.

@afifurrohman-id

This comment was marked as duplicate.

@xnzac
Copy link

xnzac commented May 7, 2024

Just to chime in, to build on your own machine(tested on Ubuntu 22.04 via UTM on Mac M1):

  1. sudo apt-get install ninja-build \
    gettext libtool libtool-bin \
    autoconf automake cmake g++ \
    pkg-config unzip

  2. git clone https://github.com/neovim/neovim.git

  3. git checkout stable

  4. sudo make CMAKE_BUILD_TYPE=Release
    CMAKE_INSTALL_PREFIX=<NEOVIM_LOCATION> install

I used /opt/nvim for <NEOVIM_LOCATION>

  1. Add the following line to your .bashrc/.zshrc file: export PATH=”<NEOVIM_LOCATION>/bin:$PATH”

Credit: https://carlosahs.medium.com/how-to-install-neovim-from-source-on-ubuntu-20-04-lts-524b3a91b4c4

@Spuxy
Copy link

Spuxy commented May 30, 2024

@xnzac i get that point, but again, u have tested on Mac M1. Try on rpi or some linux based os with cpu arch of arm.

  • If you are going to build that by their doc BUILD.md, it would be simple (i was compiling but i lost interested to finish that :) ) even for arm64 on unix-like systems.

Link on their official doc

@mpriscella
Copy link

ARM based instances are now in public beta. Hopefully this unblocks this issue now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build building and installing Neovim using the provided scripts ci automation for build, test, and release enhancement feature request status:blocked-external Needs a third-party / external change or fix
Projects
Status: Enhancements
Development

No branches or pull requests