This repository was archived by the owner on Oct 31, 2024. It is now read-only.
Update linux-arm64
native lib
#6
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The current native library built for
linux-arm64
was built on a system that supported thepmull
instruction, which is optional forARMv8
. Some CPUs, namely the BCM2711 used by the Raspberry Pi 4B, do not supportpmull
. This means that Nethermind doesn't work on Raspberry Pi's - it fails with an "Illegal Instruction" error as shown here:NethermindEth/nethermind#3247 (comment)
This PR replaces the native library with one that was built directly on a Raspberry Pi. It was built on Debian 9 with GCC 6 - as far as I can tell, that is what the original library was built against. It is a drop-in replacement; I can confirm that with this one file changed, Nethermind now works on a Raspberry Pi. You can pull and verify with my Docker image hosted here:
https://hub.docker.com/layers/nethermind/rocketpool/nethermind/1.12.8-pi/images/sha256-9c0263423eead15f633791ff0fd657bb81ffd6137433e8084ba5b07e4c3b03c3?context=explore
I don't have access to other
arm64
platforms so I can't verify whether or not this works with them, but I know the BCM2711's feature set is quite sparse so I would imagine if a Pi can run it, anything can run it.