diff --git a/nixos/tests/clickhouse/ui.nix b/nixos/tests/clickhouse/ui.nix index f6a645272856..73050910d25b 100644 --- a/nixos/tests/clickhouse/ui.nix +++ b/nixos/tests/clickhouse/ui.nix @@ -29,6 +29,7 @@ from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.firefox.options import Options + from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait options = Options() @@ -41,33 +42,53 @@ wait = WebDriverWait(driver, 60) - assert len(driver.find_elements( - By.ID, "query_div")) == 1 + wait.until(EC.presence_of_element_located( + (By.ID, "query_div"))) + + version = "${lib.strings.replaceStrings [ "-stable" "-lts" ] [ "" "" ] package.version}" + wait.until(EC.text_to_be_present_in_element( + (By.XPATH, "//span[@id='server_info']"), version)) + + # Determine if a shadow DOM is used for query-result and + # query-progress + result_els = driver.find_elements(By.ID, "query-result") + uses_shadow = len(result_els) > 0 + if uses_shadow: + result_shadow = result_els[0].shadow_root + progress_shadow = driver.find_element( + By.ID, "query-progress").shadow_root + + + def find_rows(): + root = result_shadow if uses_shadow else driver + return root.find_elements( + By.CSS_SELECTOR, ".row-number") + + + def find_check_mark(): + root = progress_shadow if uses_shadow else driver + return root.find_elements( + By.CSS_SELECTOR, "#check-mark") - server_info_element = driver.find_element( - By.XPATH, "//span[@id='server_info']") - assert "${ - lib.strings.replaceStrings [ "-stable" "-lts" ] [ "" "" ] package.version - }" in server_info_element.text # Shouldn't show before query done - assert len(driver.find_elements( - By.CSS_SELECTOR, ".row-number")) == 0 + assert len(find_rows()) == 0 query_box = driver.find_element( By.XPATH, "//textarea[@id='query']") query_box.click() query_box.send_keys("SELECT 1") - query_run_button = driver.find_element( + driver.find_element( By.XPATH, "//button[@id='run']").click() - # Now verify results shown - assert len(driver.find_elements( - By.XPATH, "//div[@id='check-mark']")) == 1 + # Wait for query to complete + WebDriverWait(driver, 60).until( + lambda d: len(find_check_mark()) > 0) - assert len(driver.find_elements( - By.CSS_SELECTOR, ".row-number")) == 2 + # Wait for results to render + WebDriverWait(driver, 60).until( + lambda d: len(find_rows()) > 0) driver.close() ''; diff --git a/pkgs/by-name/cl/clickhouse/generic.nix b/pkgs/by-name/cl/clickhouse/generic.nix index 9f99eb11325a..cac17f4fc466 100644 --- a/pkgs/by-name/cl/clickhouse/generic.nix +++ b/pkgs/by-name/cl/clickhouse/generic.nix @@ -9,6 +9,7 @@ lib, stdenv, llvmPackages_19, + llvmPackages_21, fetchFromGitHub, fetchpatch, cmake, @@ -30,7 +31,8 @@ versionCheckHook, }: let - llvmStdenv = llvmPackages_19.stdenv; + llvmPackages = if lib.versionAtLeast version "26" then llvmPackages_21 else llvmPackages_19; + llvmStdenv = llvmPackages.stdenv; in llvmStdenv.mkDerivation (finalAttrs: { pname = "clickhouse"; @@ -99,7 +101,7 @@ llvmStdenv.mkDerivation (finalAttrs: { ninja python3 perl - llvmPackages_19.lld + llvmPackages.lld removeReferencesTo ] ++ lib.optionals stdenv.hostPlatform.isx86_64 [ @@ -107,7 +109,7 @@ llvmStdenv.mkDerivation (finalAttrs: { yasm ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ - llvmPackages_19.bintools + llvmPackages.bintools findutils darwin.bootstrap_cmds ] @@ -193,6 +195,7 @@ llvmStdenv.mkDerivation (finalAttrs: { "-DENABLE_CHDIG=OFF" "-DENABLE_TESTS=OFF" "-DENABLE_DELTA_KERNEL_RS=0" + "-DENABLE_XRAY=OFF" "-DCOMPILER_CACHE=disabled" ] ++ lib.optional ( @@ -212,7 +215,10 @@ llvmStdenv.mkDerivation (finalAttrs: { }; # https://github.com/ClickHouse/ClickHouse/issues/49988 - hardeningDisable = [ "fortify" ]; + hardeningDisable = [ + "fortify" + "libcxxhardeningfast" + ]; nativeInstallCheckInputs = [ versionCheckHook ]; doInstallCheck = true; diff --git a/pkgs/by-name/cl/clickhouse/lts.nix b/pkgs/by-name/cl/clickhouse/lts.nix index fcc816d71fb9..1cbd1eca961f 100644 --- a/pkgs/by-name/cl/clickhouse/lts.nix +++ b/pkgs/by-name/cl/clickhouse/lts.nix @@ -1,6 +1,6 @@ import ./generic.nix { - version = "25.8.15.35-lts"; - rev = "7a0b36cf8934881236312e9fea094baaf5c709a4"; - hash = "sha256-zCMqZaw+QO/MAdJhgyrZYvdFPO8o11EXbuGHS5++dZw="; + version = "25.8.18.1-lts"; + rev = "557fdf60f81c4370867dff464de7f4b1064d39a7"; + hash = "sha256-6QBejA0GdhjHVcqHVqjZkiJ1tmPglvIaFffBWyseYX8="; lts = true; } diff --git a/pkgs/by-name/cl/clickhouse/package.nix b/pkgs/by-name/cl/clickhouse/package.nix index f02241164921..e842b99ebbe9 100644 --- a/pkgs/by-name/cl/clickhouse/package.nix +++ b/pkgs/by-name/cl/clickhouse/package.nix @@ -1,6 +1,6 @@ import ./generic.nix { - version = "26.1.3.52-stable"; - rev = "5549f2acae95c6d627654f50e212a85d059a55f9"; - hash = "sha256-7Ww7vQNjvR65Ycw2jnetyy6s8KkHOylzFey+K2xBLjM="; + version = "26.2.3.2-stable"; + rev = "ba231782911b5f53713dc4a9ad6a7fcf5ac4bf89"; + hash = "sha256-252cNixB1ca8m4AvtB2097+OhlSmG7Diz0MMyqxvExc="; lts = false; } diff --git a/pkgs/by-name/cl/clickhouse/update.sh b/pkgs/by-name/cl/clickhouse/update.sh index 7ca2b419d322..9f55634789b5 100755 --- a/pkgs/by-name/cl/clickhouse/update.sh +++ b/pkgs/by-name/cl/clickhouse/update.sh @@ -15,9 +15,11 @@ echoerr "Working on $fname" shift # Fetch latest tags from the repo, leave only stable and lts, use version sort in reverse order. -all_tags=$(curl -L -s ${GITHUB_TOKEN:+-u ":${GITHUB_TOKEN}"} https://api.github.com/repos/ClickHouse/ClickHouse/tags \ +all_tags=$({ for page in 1 2 3; do + curl -L -s ${GITHUB_TOKEN:+-u ":${GITHUB_TOKEN}"} "https://api.github.com/repos/ClickHouse/ClickHouse/tags?per_page=100&page=$page" + done; } \ | jq -r '.[].name | select(test("-(stable|lts)$"))' \ - | sort -Vr) + | sort -Vr | uniq) # Fail if no tags found if [[ -z "$all_tags" ]]; then @@ -27,7 +29,11 @@ fi pname="clickhouse" if [[ "$fname" == *lts.nix ]]; then - all_tags=$(echo "$all_tags" | grep -- "-lts$") + all_tags=$(echo "$all_tags" | grep -- "-lts$" || true) + if [[ -z "$all_tags" ]]; then + echoerr "Error: no LTS tags found in fetched tags" + exit 1 + fi pname="clickhouse-lts" fi