Skip to content

Conversation

@matheusaaguiar
Copy link
Collaborator

@matheusaaguiar matheusaaguiar commented Dec 3, 2025

Currently we have ARM releases but we only run bytecode equivalence tests.
This PR adds a job in the CI to run soltest and cli tests on ARM binary.
Closes #11351.
Closes #16321.

depends on #16328.

@cameel
Copy link
Collaborator

cameel commented Dec 3, 2025

I thought you went to sleep already so I actually also started a quick PR for this :) #16321

I got through yaml syntax errors, but still not sure if the tests will actually pass. If you're working on it now, please take a look and feel free to pull the missing parts into yours if you need them. I'll just focus on other things I wanted to do in the meantime.

@matheusaaguiar
Copy link
Collaborator Author

I thought you went to sleep already so I actually also started a quick PR for this :) #16321

I also thought you went to sleep and didn't check to see if there was already work in that direction :D

I got through yaml syntax errors, but still not sure if the tests will actually pass. If you're working on it now, please take a look and feel free to pull the missing parts into yours if you need them. I'll just focus on other things I wanted to do in the meantime.

Ok, will do.

@matheusaaguiar matheusaaguiar changed the title Run tests on ARM binary Run soltest and cli tests on Linux ARM Dec 3, 2025
@cameel
Copy link
Collaborator

cameel commented Dec 3, 2025

CLI tests fail with:

Incorrect output on stderr received. Expected:
Error: "file_not_found.sol" is not found.
But got:
test/cmdlineTests.sh: line 208: /root/project/build/solc/solc: No such file or directory

I'd check if the binary the build job saves to the workspace is under the same path as in the b_ubu job. I suspect it's not.

The soltest job is probably failing for a similar reason.

@matheusaaguiar
Copy link
Collaborator Author

I'd check if the binary the build job saves to the workspace is under the same path as in the b_ubu job. I suspect it's not.

The soltest job is probably failing for a similar reason.

Yes, this is the reason. The build job saves the binaries with prefix linux-arm.
I will try to see if I can find a good way of adjusting for that.

Comment on lines 1382 to 1380
- run:
name: Create symbolic link with expected solc binary name
command: |
ln -s build/solc/solc-static-linux-arm build/solc/solc
- cmdline_tests
Copy link
Collaborator

Choose a reason for hiding this comment

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

Nice solution. We probably should do it with macOS as well (not necessarily in this PR). There we instead use run_soltest (which is an internal detail of the soltest command) because the executable name is different.

cameel
cameel previously approved these changes Dec 3, 2025
Copy link
Collaborator

@cameel cameel left a comment

Choose a reason for hiding this comment

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

If the CI passes this is good enough, though it could also use a few small tweaks (see my comments). If you want to merge this already, they could be done in a separate PR as well.

@cameel
Copy link
Collaborator

cameel commented Dec 3, 2025

Argh, it actually did fail.

@nikola-matic
Copy link
Collaborator

There's no libevmone.so in /usr/local/lib at all - no mention of evmone anywhere on the VM in fact. It could be an issue with the actual container.

I SSH-ed into the failed job VM earlier today and installed it manually by following every step from the dockerfile, but that did indeed work and installed evmone properly.

@nikola-matic
Copy link
Collaborator

Ah, looks like the buildpack dep is the culprit - we're not copying /usr/local/ from libraries into the final build.

@matheusaaguiar matheusaaguiar added the has dependencies The PR depends on other PRs that must be merged first label Dec 4, 2025
@matheusaaguiar matheusaaguiar force-pushed the run-tests-on-linux-arm branch 2 times, most recently from b295469 to 0a02511 Compare December 4, 2025 20:25
@matheusaaguiar
Copy link
Collaborator Author

There are 3 smt tests which are failing:
smtCheckerTests/external_calls/external_call_indirect_2.sol
smtCheckerTests/external_calls/external_call_indirect_5.sol
smtCheckerTests/functions/functions_external_2.sol

The message changes from "violations happens" to "violation might happen", e.g. (smtCheckerTests/external_calls/external_call_indirect_2.sol):

Expected result:
  Warning 6328: (434-455): CHC: Assertion violation happens here.
  Warning 6328: (1270-1291): CHC: Assertion violation happens here.
  Info 1391: CHC: 2 verification condition(s) proved safe! Enable the model checker option "show proved safe" to see all of them.
Obtained result:
  Warning 6328: (434-455): CHC: Assertion violation happens here.
  Warning 6328: (1270-1291): CHC: Assertion violation might happen here.
  Info 1391: CHC: 2 verification condition(s) proved safe! Enable the model checker option "show proved safe" to see all of them.

Not sure if this happens because of ARM.
@blishko, can you take a look, please? What do you think?

@blishko
Copy link
Collaborator

blishko commented Dec 4, 2025

What I see now is that soltest is failing because it could not load evmone: libevmone.so: cannot open shared object file: No such file or directory.

I would need to see the failures.
It's possible that z3 behaves differently on arm.
Let me know when you fix the missing evmone problem.

@blishko
Copy link
Collaborator

blishko commented Dec 4, 2025

OK, I see. I'll take a look at those tests tomorrow.

@blishko
Copy link
Collaborator

blishko commented Dec 5, 2025

@matheusaaguiar : #16330 is my proposed solution

@nikola-matic
Copy link
Collaborator

@matheusaaguiar : #16330 is my proposed solution

Rebasing now, let's hope it helps.

@nikola-matic nikola-matic force-pushed the run-tests-on-linux-arm branch from e7c65bb to cbde3f7 Compare December 5, 2025 11:17
@nikola-matic nikola-matic removed the has dependencies The PR depends on other PRs that must be merged first label Dec 5, 2025
@nikola-matic
Copy link
Collaborator

@matheusaaguiar : #16330 is my proposed solution

Looks like that did it - but bytecode compare is not unfortunately failing - luckily - not because of the actual bytecode comparison, but rather due to the run files persisted having the same name. @cameel do you have any ideas, as I can't really see anything wrong in config.yml?

@cameel
Copy link
Collaborator

cameel commented Dec 5, 2025

@cameel do you have any ideas, as I can't really see anything wrong in config.yml?

Is it still an issue or did you solve it? I see all the jobs passing now in CI.

@nikola-matic
Copy link
Collaborator

@cameel do you have any ideas, as I can't really see anything wrong in config.yml?

Is it still an issue or did you solve it? I see all the jobs passing now in CI.

Oh nice, @matheusaaguiar fixed it. What did you do?

name: Create symbolic link with expected solc and solfuzzer binaries name
command: |
ln --symbolic --relative build/solc/solc-static-linux-arm build/solc/solc
ln --symbolic --relative build/test/tools/solfuzzer-linux-arm build/test/tools/solfuzzer
Copy link
Collaborator

Choose a reason for hiding this comment

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

Any reason #16322 (comment) was reverted?

@matheusaaguiar
Copy link
Collaborator Author

matheusaaguiar commented Dec 5, 2025

@cameel, We were getting this error (which @nikola-matic mentioned) when running bytecode compare:

Applying workspace layers
  0fff5a7b-a1ab-40c2-bf18-2531188c1769
  e6fd50ab-8077-45f8-b97b-3715cef3635b
  4cc2f52f-5512-4ef9-908b-81e6028a1956
  588dd45a-fe9d-4c8f-83d7-3e28f21a8657
Concurrent upstream jobs persisted the same file(s) into the workspace:
  - test/tools/solfuzzer
  - test/soltest

Error applying workspace layer for job 588dd45a-fe9d-4c8f-83d7-3e28f21a8657: Concurrent upstream jobs persisted the same file(s)

So I reverted #16322 (comment) and updated the test jobs to use more fine-grained steps (instead of calling the templates run_soltest and run_cmdline_tests), so we can make symbolic links with the expected binaries names before running soltest and cli tests.

@matheusaaguiar matheusaaguiar marked this pull request as ready for review December 6, 2025 19:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ARM builds for Linux

6 participants