From 24e03b127bdc368098d46c0ef416c8140c7a6d85 Mon Sep 17 00:00:00 2001 From: battlmonstr Date: Mon, 4 Dec 2023 12:49:14 +0100 Subject: [PATCH] silkworm: disable on incompatible Linux versions --- Makefile | 5 ++ turbo/silkworm/silkworm_compat_check.sh | 69 +++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100755 turbo/silkworm/silkworm_compat_check.sh diff --git a/Makefile b/Makefile index 01c7b21c152..44b292cbbb2 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,11 @@ CGO_CFLAGS += -Wno-unknown-warning-option -Wno-enum-int-mismatch -Wno-strict-pro # about netgo see: https://github.com/golang/go/issues/30310#issuecomment-471669125 and https://github.com/golang/go/issues/57757 BUILD_TAGS = nosqlite,noboltdb + +ifneq ($(shell "$(CURDIR)/turbo/silkworm/silkworm_compat_check.sh"),) + BUILD_TAGS := "$(BUILD_TAGS),nosilkworm" +endif + PACKAGE = github.com/ledgerwatch/erigon GO_FLAGS += -trimpath -tags $(BUILD_TAGS) -buildvcs=false diff --git a/turbo/silkworm/silkworm_compat_check.sh b/turbo/silkworm/silkworm_compat_check.sh new file mode 100755 index 00000000000..664d3f6db54 --- /dev/null +++ b/turbo/silkworm/silkworm_compat_check.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +set -e +set -u +set -o pipefail + +OS_RELEASE_PATH=/etc/os-release + +function glibc_version { + cmd="ldd --version" + $cmd | head -1 | awk '{ print $NF }' +} + +function version_major { + IFS='.' read -a components <<< "$1" + echo "${components[0]}" +} + +function version_minor { + IFS='.' read -a components <<< "$1" + echo "${components[1]}" +} + +case $(uname -s) in + Linux) + if [[ ! -f "$OS_RELEASE_PATH" ]] + then + echo "not supported Linux without $OS_RELEASE_PATH" + exit 2 + fi + + source "$OS_RELEASE_PATH" + + if [[ -n "$ID" ]] && [[ -n "$VERSION_ID" ]] + then + version=$(version_major "$VERSION_ID") + case "$ID" in + "debian") + if (( version < 12 )) + then + echo "not supported Linux version: $ID $VERSION_ID" + exit 3 + fi + ;; + "ubuntu") + if (( version < 22 )) + then + echo "not supported Linux version: $ID $VERSION_ID" + exit 3 + fi + ;; + esac + fi + + version=$(version_minor "$(glibc_version)") + if (( version < 34 )) + then + echo "not supported glibc version: $version" + exit 4 + fi + + ;; + Darwin) + ;; + *) + echo "unsupported OS" + exit 1 + ;; +esac