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

Support ARM operating systems #37

Open
colearendt opened this issue Mar 21, 2023 · 12 comments
Open

Support ARM operating systems #37

colearendt opened this issue Mar 21, 2023 · 12 comments
Labels
enhancement New feature or request

Comments

@colearendt
Copy link

@heath-r and I are having trouble getting TinyTeX installed on an ARM jammy (22.04) instance. It looks like the install script tries to install from source. Do we ship ARM binaries?

@yihui
Copy link
Member

yihui commented Mar 21, 2023

We don't, mainly because Github Actions doesn't support these operating systems

It's beyond my expertise to figure out how to build TinyTeX binaries for ARM operating systems on x84 platforms. If anyone can help, I'll be eager to work on it.

@colearendt
Copy link
Author

Nice, thanks! actions/runner-images#2187 suggested that buildjet.com may have an option, and we also do have some self-hosted runners internally that could potentially help (although I believe it is mostly used for private repos at present). I'm definitely hopeful we can make progress on this as we add ARM support for our R, Python, and product builds 😄 I'll do some poking internally

@yihui
Copy link
Member

yihui commented Mar 22, 2023

Thanks! If we have self-hosted runners and I can use them, I'd definitely love to build more types of TinyTeX binaries!

@vk496
Copy link

vk496 commented May 23, 2023

you can do that directly on any x86 host!

Using Docker and https://github.com/multiarch/qemu-user-static you can easily buid & run on any architecture without the need of native host (or cross compiling)

@yihui
Copy link
Member

yihui commented May 23, 2023

@vk496 That sounds like exactly what we need! Thanks a lot for the tip!

@yihui yihui moved this from Backlog to To discuss / To plan in R Markdown Team Projects May 23, 2023
@vk496
Copy link

vk496 commented May 23, 2023

Sorry, I was not able to find a example that I did before. But essentially, you can do a basic Dockerfile that build as expected and then some script to enforce the architecture in some well-supported base image that have that architecture (ubuntu, debian, alpine, ....)

I think I did that with Travis, but can be done easily anywhere (maybe someone already did the work in the github workflows). If I found it, I will post it here

Salu2

@vk496
Copy link

vk496 commented May 23, 2023

Yep, found it!

https://github.com/nfc-tools/mfoc-hardnested/blob/master/.github/workflows/build.yml

Hope it's useful :)

@cderv
Copy link
Contributor

cderv commented Jun 1, 2023

Really interesting ! thanks for sharing !

@cderv
Copy link
Contributor

cderv commented Nov 23, 2023

@cderv cderv moved this from Backlog to To discuss / To plan in R Markdown Team Projects Nov 23, 2023
@cderv cderv added the enhancement New feature or request label Nov 23, 2023
@yihui
Copy link
Member

yihui commented Dec 5, 2023

The M1 macOS runner won't help, since TeX Live only has the universal-darwin version for macOS:

> tinytex:::.tl_platforms
 [1] "aarch64-linux"       "amd64-freebsd"       "amd64-netbsd"        "armhf-linux"        
 [5] "i386-freebsd"        "i386-linux"          "i386-netbsd"         "i386-solaris"       
 [9] "universal-darwin"    "windows"             "x86_64-cygwin"       "x86_64-darwinlegacy"
[13] "x86_64-linux"        "x86_64-linuxmusl"    "x86_64-solaris"   

What we need is ARM Linux runners, which I don't know if Github Action will ever support. The emulator mentioned by @vk496 is probably the best way to go.

@cderv cderv moved this from To discuss / To plan to Backlog in R Markdown Team Projects Dec 5, 2023
@cderv
Copy link
Contributor

cderv commented Jul 23, 2024

It seems Linux ARM64 environment are available now (per actions/runner-images#5631)

Not sure it is deployed yet, but probably soon to be available.

It was in private beta in January: https://github.blog/changelog/2023-10-30-accelerate-your-ci-cd-with-arm-based-hosted-runners-in-github-actions/

@yihui
Copy link
Member

yihui commented Jul 23, 2024

https://github.blog/ai-and-ml/product-ai-and-ml/arm64-on-github-actions-powering-faster-more-efficient-build-systems/#get-started-using-arm-hosted-runners-today

These runners are available to our customers on our GitHub Team and Enterprise Cloud plans. We expect to begin offering Arm runners for open source projects by the end of the year.

I just took a look at this repo's settings and it seems we can indeed enable arm-based runners (which are available to our rstudio org), but it involves with some manual download/config. Perhaps we can just wait for them to become publicly available by the end of the year.

As we are thinking about TinyTeX releases for different architectures, I think we also need to think more about our naming scheme for the release assets. In retrospect, I regret using filename extensions zip, tgz, and tar.gz to differentiate between operating systems. I should have added OS and architecture names to the filenames, e.g., TinyTeX-1-linux-arm64.tar.gz. It may be too late to make this change now (we would have to update our installation scripts and other people would have to do the same thing if they have their own installation scripts). For the possible new arm-based TinyTeX releases, we can probably just add arm64 to the filenames, e.g., TinyTeX-1-arm64.tar.gz.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: Backlog
Development

No branches or pull requests

4 participants