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

Enable runs on linux aarch64 #144

Draft
wants to merge 10 commits into
base: master
Choose a base branch
from

Conversation

IanButterworth
Copy link
Member

@IanButterworth IanButterworth commented Oct 17, 2022

With help from @DilumAluthge

Copy link
Member

@DilumAluthge DilumAluthge left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From a brief test locally, it looks like TOML will parse the . correctly as long as we put the artifact name in double quotes.

Artifacts.toml Outdated Show resolved Hide resolved
Artifacts.toml Outdated Show resolved Hide resolved
src/julia.jl Outdated Show resolved Hide resolved
Artifacts.toml Outdated Show resolved Hide resolved
Artifacts.toml Outdated Show resolved Hide resolved
@gbaraldi
Copy link
Member

Xref #97

@IanButterworth
Copy link
Member Author

Can we get a AWS aarch64 instance started up and added as a repo self-hosted runner, so we can add that to CI here? Who's good to ping for that?

@DilumAluthge
Copy link
Member

For CI here, we should just use one of the Buildkite aarch64-linux-gnu agents in the juliaecosystem queue. I've already created the Buildkite pipeline (https://buildkite.com/julialang/pkgeval-dot-jl). An example of the Buildkite pipeline.yml file for aarch64 in the juliaecosystem queue is available here: https://github.com/rr-debugger/rr/tree/master/.buildkite

When it's time to actually run the PkgEval job, then we can spin up the AWS instances.

@DilumAluthge DilumAluthge marked this pull request as draft October 17, 2022 19:48
@DilumAluthge DilumAluthge marked this pull request as ready for review October 17, 2022 19:49
@DilumAluthge
Copy link
Member

@maleadt Do you need me to add xvfb inside the package_linux rootfs image?

@maleadt
Copy link
Member

maleadt commented Oct 18, 2022

xvfb runs on the host, so we'd need Xvfb_jll.

src/julia.jl Outdated Show resolved Hide resolved
@DilumAluthge
Copy link
Member

xvfb runs on the host, so we'd need Xvfb_jll.

JuliaPackaging/Yggdrasil#5707

@DilumAluthge
Copy link
Member

Alternatively, we can make a rootfs image for Buildkite that has xvfb in it.

@DilumAluthge
Copy link
Member

Alternatively, we can make a rootfs image for Buildkite that has xvfb in it.

JuliaCI/rootfs-images#236

@maleadt
Copy link
Member

maleadt commented Oct 19, 2022

Alternatively, we can make a rootfs image for Buildkite that has xvfb in it.

I'm not sure it's that simple. We should only launch a single xvfb instance, and it has to be accessible to each sandbox by mounting/exposing the necessary sockets and environment flags. Not impossible, just a bit of work. FWIW, running a virtual X server in each container is possible but probably generates quite a bit of overhead.

For aarch64 testing it's probably easier to disable xvfb for now and just fail tests of the (couple of) packages that require an active display server.

@IanButterworth
Copy link
Member Author

IanButterworth commented Oct 19, 2022

For aarch64 testing it's probably easier to disable xvfb for now and just fail tests of the (couple of) packages that require an active display server.

Sounds good for a first run.

Following that, perhaps PkgEval could first check for the presence of xvfb in any .yml files in the repo under test, and if so run with it

@IanButterworth
Copy link
Member Author

IanButterworth commented Oct 19, 2022

Probably good to LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 etc. too until that issue is fixed

@maleadt
Copy link
Member

maleadt commented Oct 19, 2022

check for the presence of xvfb in any .yml files in the repo under test

I'm not sure I understand. The requirement is implicit because, e.g., libcairo.so accessing X11 libraries. No package currently explicitly requests a display server.

@IanButterworth
Copy link
Member Author

No package currently explicitly requests a display server.

AFAIK quite a few do during CI testing

@maleadt
Copy link
Member

maleadt commented Oct 19, 2022

Oh wait, was the rootfs change intended for the buildkite runners and not for use by PkgEval? I guess so, but was confused since PkgEval uses those images too. Let's try restarting the job.

@DilumAluthge
Copy link
Member

Oh wait, was the rootfs change intended for the buildkite runners and not for use by PkgEval?

Yeah, sorry for the confusion. I was proposing to change the rootfs that the Buildkite agent is running inside. PkgEval will continue to use the package_linux rootfs, as it is doing currently.

@maleadt
Copy link
Member

maleadt commented Oct 19, 2022

I was proposing to change the rootfs that the Buildkite agent is running inside.

Do the runners automatically pick up the new image? It's still reporting:

IOError: could not spawn Xvfb :1 -screen 0 1024x768x16: no such file or directory (ENOENT)

@DilumAluthge
Copy link
Member

I was proposing to change the rootfs that the Buildkite agent is running inside.

Do the runners automatically pick up the new image? It's still reporting:

No, I have to change it manually. I'll push to this branch.

@DilumAluthge
Copy link
Member

@staticfloat What have I done wrong here?

@DilumAluthge
Copy link
Member

It works with a dummy command (e.g. ls), but fails if I stick another invocation of the julia plugin after I invoke the sandbox plugin.

@maleadt maleadt marked this pull request as draft November 7, 2022 12:28
@maleadt maleadt changed the title [WIP] Enable runs on linux aarch64 Enable runs on linux aarch64 Nov 7, 2022
@maleadt
Copy link
Member

maleadt commented Nov 7, 2022

I've disabled the pipeline (emptied the steps) since it otherwise marks all builds, even outside of this PR, as broken.

@staticfloat
Copy link
Member

It works with a dummy command (e.g. ls), but fails if I stick another invocation of the julia plugin after I invoke the sandbox plugin.

It's telling you, via the error at the top of the buildkite page:

image

You have two options:

  1. Provide a download agent (e.g. curl, wget, etc...) within your rootfs image
  2. Re-use the Julia installed as part of the outside environment by mounting /cache into the sandbox.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants