Error relocating /root/.nimble/bin/nimble: __memcpy_chk: symbol not found
Error relocating /root/.nimble/bin/nimble: __longjmp_chk: symbol not found
I'm using Alpine Linux for the runner, for complicated reasons. If there is a better way to get Nim up and running, I'm eager to hear it.
From the CI where the error happens
# nim install
- ./scripts/nim-init.sh -y
# nim path
- export PATH=/root/.nimble/bin:$PATH
# nimble tests - jack be nimble jack flash sat on a candle stick ..
- cd ${CI_PROJECT_DIR}/tacen-exchange-common/common && /root/.nimble/bin/nimble check
And the full error
./scripts/nim-init.sh -y
choosenim-init: Downloading choosenim-0.7.4_linux_amd64
Prompt: Can choosenim record and send anonymised telemetry data? [y/n]
... Anonymous aggregate user analytics allow us to prioritise
... fixes and features based on how, where and when people use Nim.
... For more details see: https://goo.gl/NzUEPf.
Answer: Forced Yes
Downloading Nim 1.4.8 from nim-lang.org
[ ] 0.03814% 4kb/s[##################################################] 100.0% 0kb/s
Extracting nim-1.4.8-linux_x64.tar.xz
Building Nim 1.4.8
Compiler: Already built
Tools: Already built
Installed component 'nim'
Installed component 'nimble'
Installed component 'nimgrep'
Installed component 'nimpretty'
Installed component 'nimsuggest'
Installed component 'testament'
Installed component 'nim-gdb'
Switched to Nim 1.4.8
choosenim-init: ChooseNim installed in /root/.nimble/bin
choosenim-init: You must now ensure that the Nimble bin dir is in your PATH.
choosenim-init: Place the following line in the ~/.profile or ~/.bashrc file.
choosenim-init: export PATH=/root/.nimble/bin:$PATH
$ export PATH=/root/.nimble/bin:$PATH
$ cd ${CI_PROJECT_DIR}/tacen-exchange-common/common && /root/.nimble/bin/nimble check
Error relocating /root/.nimble/bin/nimble: __memcpy_chk: symbol not found
Error relocating /root/.nimble/bin/nimble: __longjmp_chk: symbol not found
Cleaning up file based variables 00:01
ERROR: Job failed: exit code 127
Alpine is meant to be very small. And so it uses musl, not glibc as a C library. And this library doesn't implement __memcpy_chk and __longjmp_chk. So you cannot execute programs meant for a full glibc (or compatible) library on Alpine.
Maybe installing alpine-pkg-glibc can help you. Never tried it, and it hasn't had commits recently: https://github.com/sgerrand/alpine-pkg-glibc