erigon-pulse/turbo/silkworm/silkworm_lib_path.sh
battlmonstr ce57b8f54f
silkworm: make install (#8985)
We've got a report from a user that erigon fails to run with this error:

```
/opt/erigon/releases/latest/bin/erigon: error while loading shared libraries: libsilkworm_capi.so: cannot open shared object file: No such file or directory
```

On this system erigon is executed using a service-account user which has
no permission to access the build user's $HOME where the
libsilkworm_capi.so resides (inside $GOPATH/pkg/mod).

This adds a support to silkworm-go to look for the library relative to
the executable path on Linux:

d4ec8a8bce

and a new `make DIST=<path> install` command which copies both the
library and erigon binary to any destination.
2023-12-14 21:45:18 +07:00

61 lines
1016 B
Bash
Executable File

#!/bin/bash
set -e
set -u
set -o pipefail
script_dir=$(dirname "${BASH_SOURCE[0]}")
project_dir=$(realpath "$script_dir/../..")
go_cmd=go
function os_name {
value=$(uname -s)
case $value in
Linux)
echo linux;;
Darwin)
echo macos;;
*)
echo "unsupported OS: $value"
exit 1;;
esac
}
function arch_name {
value=$(uname -m)
case $value in
arm64)
echo arm64;;
aarch64)
echo arm64;;
x86_64)
echo x64;;
*)
echo "unsupported CPU architecture: $value"
exit 1;;
esac
}
function lib_file_ext {
value=$(os_name)
case $value in
linux)
echo so;;
macos)
echo dylib;;
*)
echo "unsupported OS: $value"
exit 1;;
esac
}
function silkworm_go_version {
grep "silkworm-go" "$project_dir/go.mod" | awk '{ print $2 }'
}
function libsilkworm_path {
echo "$($go_cmd env GOMODCACHE)/github.com/erigontech/silkworm-go@$(silkworm_go_version)/lib/$(os_name)_$(arch_name)/libsilkworm_capi.$(lib_file_ext)"
}
libsilkworm_path