From 45320c6e863d2a045d5d45c6c57f02de355de71b Mon Sep 17 00:00:00 2001 From: Mohamed Laradji Date: Sat, 9 May 2020 13:10:08 -0700 Subject: [PATCH] fix(install.sh): skip checking for sse4 2 flag if kvm was detected (#485) This PR disables checking for the SSE4.2 flag, which may not be present if the server is running in a VM even if SSE4.2 is in fact available to use (ClickHouse/ClickHouse#20). The KVM check was obtained from a [comment](https://github.com/ClickHouse/ClickHouse/issues/20#issuecomment-226849297) in that issue. If SSE4.2 is not actually available in the VM, then the installation script may fail in an unpredictable way. Perhaps we can add a keyword argument to the script to let the user decide if they want to skip the check. --- install.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index eee2209..7185220 100755 --- a/install.sh +++ b/install.sh @@ -65,10 +65,14 @@ if [ "$RAM_AVAILABLE_IN_DOCKER" -lt "$MIN_RAM" ]; then fi #SSE4.2 required by Clickhouse (https://clickhouse.yandex/docs/en/operations/requirements/) -SUPPORTS_SSE42=$(docker run --rm busybox grep -c sse4_2 /proc/cpuinfo || :); -if (($SUPPORTS_SSE42 == 0)); then +# On KVM, cpuinfo could falsely not report SSE 4.2 support, so skip the check. https://github.com/ClickHouse/ClickHouse/issues/20#issuecomment-226849297 +IS_KVM=$(docker run --rm busybox grep -c 'Common KVM processor' /proc/cpuinfo || :) +if (($IS_KVM == 0)); then + SUPPORTS_SSE42=$(docker run --rm busybox grep -c sse4_2 /proc/cpuinfo || :) + if (($SUPPORTS_SSE42 == 0)); then echo "FAIL: The CPU your machine is running on does not support the SSE 4.2 instruction set, which is required for one of the services Sentry uses (Clickhouse). See https://git.io/JvLDt for more info." exit 1 + fi fi # Clean up old stuff and ensure nothing is working while we install/update