From 1395365422a7fc25dd3d13c9577e4ca1a3a9400b Mon Sep 17 00:00:00 2001 From: Gabor Pali Date: Tue, 25 Nov 2025 16:15:25 +0100 Subject: [PATCH 1/4] chore(`clouseau`): bump to 3.0.0 Chase the release of the brand new 3.0.0 version of Clouseau aka. ZIOSE (ZIO "Search Engine") and make it the default onwards. While this is a drop-in replacement for 2.x, note that it is based on completely different foundation, libraries and build system, as well as Java 21 and G1 as the default garbage collector -- update the `dev/run` script to make it work with both 2.x and 3.x in response to that. This warrants that Clouseau 2.x will keep working from both binary and source, albeit it has now been deprecated. --- README-DEV.rst | 48 +++++----- build-aux/Jenkinsfile | 4 +- configure | 36 ++++--- configure.ps1 | 38 +++++--- dev/run | 218 ++++++++++++++++++++++++++++++------------ 5 files changed, 233 insertions(+), 111 deletions(-) diff --git a/README-DEV.rst b/README-DEV.rst index d6dcc4a5588..a2eec4b44f3 100644 --- a/README-DEV.rst +++ b/README-DEV.rst @@ -278,31 +278,32 @@ suites, and let Clouseau automatically manage them. Although the ``./configure`` and the ``./dev/run`` scripts try to take care of the details of the Clouseau deployment, it is still the responsibility of the user to provide a suitable Java environment for -running. Clouseau can run with JRE 1.7 and 1.8 only. Also, when -Nouveau is in use, which uses a more recent Java environment, the old -JDK has to be installed separately and the ``CLOUSEAU_JAVA_HOME`` -environment variable has to be set to point its location. +running. Depending on the version, Clouseau can run with either JRE +1.7 and 1.8 only, when 2.x is selected, or JRE 21 for 3.x. Also, when +Nouveau is installed, which might require a different Java +environment, the one specific for Clouseau has to be installed +separately and the ``CLOUSEAU_JAVA_HOME`` environment variable has to +be set to point its location. Fortunately, the ```asdf`` tool ` provides a -convenient way to install old versions of JDK through its ```java`` -plugin `:: +convenient way to install different versions of JDK through its +```java`` plugin `:: asdf plugin add java -Then use ``asdf`` to install it:: +Then use ``asdf`` to install it, for example:: - asdf install java zulu-jre-8.74.0.17 + asdf install java openjdk-21 Finally, use ``asdf`` to set the ``CLOUSEAU_JAVA_HOME`` environment variable:: - export CLOUSEAU_JAVA_HOME=$(asdf where java zulu-jre-8.74.0.17) + export CLOUSEAU_JAVA_HOME=$(asdf where java openjdk-21) -If the use of ``asdf`` is not an option, `the Zulu site -` could be used directly to get the -distribution package for the appropriate JRE version. But this is -just one of the possibilities to access installers for old Java -environments. +If the use of ``asdf`` is not an option, any standard Java installer +would do it, and the Zulu site ` could +be used directly to get the distribution package for the older JRE and +JDK versions, for example. Once both Clouseau and the corresponding Java environment are set, they are not put in use automatically. In order to do so, the @@ -333,15 +334,16 @@ respective test targets, e.g. ``mango-test``:: This can even be done if there was no local Clouseau deployment configured previously. Mind that this will require building Clouseau from source, which causes the nodes start up somewhat slower. It also -requires JDK 1.7 and Apache Maven 3.8 to be present, that is why it is -important the set the ``CLOUSEAU_JAVA_HOME`` and the -``CLOUSEAU_M2_HOME`` environment variables accordingly, for instance:: - - asdf install java zulu-7.56.0.11 - asdf plugin add maven - asdf install maven 3.8.8 - export CLOUSEAU_JAVA_HOME=$(asdf where java zulu-7.56.0.11) - export CLOUSEAU_M2_HOME=$(asdf where maven 3.8.8) +requires JDK 11 (or later) and SBT 1.10 (or later) to be present. +That is why it is important the set the ``CLOUSEAU_JAVA_HOME`` and the +``CLOUSEAU_SBT_HOME`` environment variables accordingly, for +instance:: + + asdf install java openjdk-21 + asdf plugin add sbt + asdf install sbt 1.11.7 + export CLOUSEAU_JAVA_HOME=$(asdf where java openjdk-21) + export CLOUSEAU_SBT_HOME=$(asdf where sbt 1.11.7) Static Code Analysis ~~~~~~~~~~~~~~~~~~~~ diff --git a/build-aux/Jenkinsfile b/build-aux/Jenkinsfile index 27c2cee1e44..a633362ec32 100644 --- a/build-aux/Jenkinsfile +++ b/build-aux/Jenkinsfile @@ -173,7 +173,7 @@ meta = [ name: 'FreeBSD x86_64', spidermonkey_vsn: '91', with_clouseau: true, - clouseau_java_home: '/usr/local/openjdk8-jre', + clouseau_java_home: '/usr/local/openjdk21-jre', quickjs_test262: false, gnu_make: 'gmake' ], @@ -184,7 +184,7 @@ meta = [ name: 'FreeBSD ARM64 QuickJS', disable_spidermonkey: true, with_clouseau: true, - clouseau_java_home: '/usr/local/openjdk8-jre', + clouseau_java_home: '/usr/local/openjdk21-jre', quickjs_test262: false, gnu_make: 'gmake' ], diff --git a/configure b/configure index 30ad40c24a7..f0433f5153b 100755 --- a/configure +++ b/configure @@ -30,6 +30,7 @@ WITH_FAUXTON="true" WITH_DOCS="true" WITH_NOUVEAU="false" WITH_CLOUSEAU="false" +WITH_ZIOSE="true" ERLANG_MD5="false" SKIP_DEPS="false" WITH_SPIDERMONKEY="true" @@ -43,7 +44,7 @@ JS_ENGINE=${JS_ENGINE:-"spidermonkey"} SM_VSN=${SM_VSN:-"91"} CLOUSEAU_MTH=${CLOUSEAU_MTH:-"dist"} CLOUSEAU_URI=${CLOUSEAU_URI:-"https://github.com/cloudant-labs/clouseau/releases/download/%s/clouseau-%s-dist.zip"} -CLOUSEAU_VSN=${CLOUSEAU_VSN:-"2.25.0"} +CLOUSEAU_VSN=${CLOUSEAU_VSN:-"3.0.0"} CLOUSEAU_DIR="$(pwd)"/clouseau ARCH="$(uname -m)" MULTIARCH_NAME="$(command -v dpkg-architecture > /dev/null && dpkg-architecture -q DEB_HOST_MULTIARCH || true)" @@ -314,6 +315,10 @@ parse_opts() { parse_opts $@ +if [ "$(echo "$CLOUSEAU_VSN" | cut -d '.' -f 1)" -lt "3" ]; then + WITH_ZIOSE="false" +fi + if [ "${WITH_SPIDERMONKEY}" = "true" ] && [ "${ARCH}" = "aarch64" ] && [ "${SM_VSN}" = "60" ]; then echo "ERROR: SpiderMonkey 60 is known broken on ARM 64 (aarch64). Use another version instead." exit 1 @@ -488,14 +493,17 @@ install_local_clouseau() { case "$CLOUSEAU_MTH" in dist) _DIST_URL=$(printf "$CLOUSEAU_URI" "$CLOUSEAU_VSN" "$CLOUSEAU_VSN") - _MAVEN_BASE_URI=https://repo1.maven.org/maven2 - _LOGBACK_DIST_URL="$_MAVEN_BASE_URI"/ch/qos/logback - : "${LOGBACK_VERSION:=1.2.13}" - _LOGBACK_CORE_JAR=logback-core-"$LOGBACK_VERSION".jar - _LOGBACK_CORE_URL="$_LOGBACK_DIST_URL"/logback-core/"$LOGBACK_VERSION"/"$_LOGBACK_CORE_JAR" - _LOGBACK_CLASSIC_JAR=logback-classic-"$LOGBACK_VERSION".jar - _LOGBACK_CLASSIC_URL="$_LOGBACK_DIST_URL"/logback-classic/"$LOGBACK_VERSION"/"$_LOGBACK_CLASSIC_JAR" + if [ "${WITH_ZIOSE}" = "false" ]; then + _MAVEN_BASE_URI=https://repo1.maven.org/maven2 + _LOGBACK_DIST_URL="$_MAVEN_BASE_URI"/ch/qos/logback + + : "${LOGBACK_VERSION:=1.2.13}" + _LOGBACK_CORE_JAR=logback-core-"$LOGBACK_VERSION".jar + _LOGBACK_CORE_URL="$_LOGBACK_DIST_URL"/logback-core/"$LOGBACK_VERSION"/"$_LOGBACK_CORE_JAR" + _LOGBACK_CLASSIC_JAR=logback-classic-"$LOGBACK_VERSION".jar + _LOGBACK_CLASSIC_URL="$_LOGBACK_DIST_URL"/logback-classic/"$LOGBACK_VERSION"/"$_LOGBACK_CLASSIC_JAR" + fi check_local_clouseau_dir "$CLOUSEAU_DIR" mkdir -p "$CLOUSEAU_DIR" @@ -511,10 +519,16 @@ install_local_clouseau() { rm clouseau.zip - echo "Fetching Logback $LOGBACK_VERSION from $_LOGBACK_DIST_URL..." + if [ "${WITH_ZIOSE}" = "false" ]; then + echo "Fetching Logback $LOGBACK_VERSION from $_LOGBACK_DIST_URL..." - fetch_file "$CLOUSEAU_DIR"/"$_LOGBACK_CORE_JAR" "$_LOGBACK_CORE_URL" - fetch_file "$CLOUSEAU_DIR"/"$_LOGBACK_CLASSIC_JAR" "$_LOGBACK_CLASSIC_URL" + fetch_file "$CLOUSEAU_DIR"/"$_LOGBACK_CORE_JAR" "$_LOGBACK_CORE_URL" + fetch_file "$CLOUSEAU_DIR"/"$_LOGBACK_CLASSIC_JAR" "$_LOGBACK_CLASSIC_URL" + fi + + if [ "${WITH_ZIOSE}" = "true" ]; then + touch "$CLOUSEAU_DIR"/.ziose + fi ;; git) diff --git a/configure.ps1 b/configure.ps1 index c7c730c70d3..886136071f6 100644 --- a/configure.ps1 +++ b/configure.ps1 @@ -66,7 +66,7 @@ Param( [ValidateNotNullOrEmpty()] [string]$ClouseauMethod = "dist", # method for Clouseau to deploy: git or dist (default dist) [ValidateNotNullOrEmpty()] - [string]$ClouseauVersion = "2.25.0", # select the version of Clouseau to use (default 2.25.0) + [string]$ClouseauVersion = "3.0.0", # select the version of Clouseau to use (default 3.0.0) [ValidateNotNullOrEmpty()] [string]$ClouseauUri = "https://github.com/cloudant-labs/clouseau/releases/download/{0}/clouseau-{0}-dist.zip", # location for retrieving Clouseau (default https://github.com/cloudant-labs/clouseau/releases/download/2.25.0/clouseau-2.25.0-dist.zip) [ValidateNotNullOrEmpty()] @@ -150,6 +150,7 @@ $BuildDocs = (-not $DisableDocs).ToString().ToLower() $WithProper = (-not $DisableProper).ToString().ToLower() $ErlangMD5 = ($EnableErlangMD5).ToString().ToLower() $WithSpiderMonkey = (-not $DisableSpiderMonkey).ToString().ToLower() +$WithZIOSE = [int]($ClouseauVersion.Split('.')[0]) -ge 3 if ($JSEngine -eq "quickjs") { $WithSpiderMonkey = "false" @@ -333,12 +334,15 @@ if ($WithClouseau) New-Item -Path $ClouseauDir -ItemType Directory | Out-Null - $LogbackVersion = "1.2.13" $ClouseauDistUrl = $ClouseauUri -f $ClouseauVersion - $LogbackCoreJar = "logback-core-$LogbackVersion.jar" - $LogbackCoreJarUrl = "https://repo1.maven.org/maven2/ch/qos/logback/logback-core/$LogbackVersion/$LogbackCoreJar" - $LogbackClassicJar = "logback-classic-$LogbackVersion.jar" - $LogbackClassicJarUrl = "https://repo1.maven.org/maven2/ch/qos/logback/logback-classic/$LogbackVersion/$LogbackClassicJar" + + If (-not $WithZIOSE) { + $LogbackVersion = "1.2.13" + $LogbackCoreJar = "logback-core-$LogbackVersion.jar" + $LogbackCoreJarUrl = "https://repo1.maven.org/maven2/ch/qos/logback/logback-core/$LogbackVersion/$LogbackCoreJar" + $LogbackClassicJar = "logback-classic-$LogbackVersion.jar" + $LogbackClassicJarUrl = "https://repo1.maven.org/maven2/ch/qos/logback/logback-classic/$LogbackVersion/$LogbackClassicJar" + } Set-Variable ProgressPreference SilentlyContinue Invoke-WebRequest -MaximumRedirection 1 -OutFile clouseau.zip $ClouseauDistUrl @@ -356,16 +360,22 @@ if ($WithClouseau) Remove-Item "$ClouseauDir\clouseau-$ClouseauVersion" Remove-Item clouseau.zip - Invoke-WebRequest -MaximumRedirection 1 -OutFile "$ClouseauDir\$LogbackCoreJar" $LogbackCoreJarUrl - If ($LASTEXITCODE -ne 0) { - Write-Output "ERROR: $LogbackCoreJarUrl could not be downloaded." - exit 1 + If (-not $WithZIOSE) { + Invoke-WebRequest -MaximumRedirection 1 -OutFile "$ClouseauDir\$LogbackCoreJar" $LogbackCoreJarUrl + If ($LASTEXITCODE -ne 0) { + Write-Output "ERROR: $LogbackCoreJarUrl could not be downloaded." + exit 1 + } + + Invoke-WebRequest -MaximumRedirection 1 -OutFile "$ClouseauDir\$LogbackClassicJar" $LogbackClassicJarUrl + If ($LASTEXITCODE -ne 0) { + Write-Output "ERROR: $LogbackClassicJarUrl could not be downloaded." + exit 1 + } } - Invoke-WebRequest -MaximumRedirection 1 -OutFile "$ClouseauDir\$LogbackClassicJar" $LogbackClassicJarUrl - If ($LASTEXITCODE -ne 0) { - Write-Output "ERROR: $LogbackClassicJarUrl could not be downloaded." - exit 1 + If ($WithZIOSE) { + New-Item -ItemType File -Path "$ClouseauDir\.ziose" } } elseif ($ClouseauMethod -eq "git") { diff --git a/dev/run b/dev/run index 478fb2ae9a0..640d15d22ff 100755 --- a/dev/run +++ b/dev/run @@ -583,13 +583,42 @@ class StartupError(Exception): super().__init__(self.message) -def generate_default_clouseau_ini(path): - print("(generate default clouseau.ini)") - with open(path, "w") as handle: - handle.write( - """[clouseau] +DEFAULT_CLOUSEAU_INI = """[clouseau] """ - ) + +# Currently it does not support more than 3 concurrent nodes +DEFAULT_CLOUSEAU_CONF = """logger: { + format: Raw + output: Stdout + level: debug +} +config: [ + { + node: { + name: clouseau1 + domain: 127.0.0.1 + } + } + { + node: { + name: clouseau2 + domain: 127.0.0.1 + } + } + { + node: { + name: clouseau3 + domain: 127.0.0.1 + } + } +] +""" + + +def generate_default_clouseau_config(path, config_file, body): + print(f"(generate default {config_file})") + with open(path, "w") as handle: + handle.write(body) def generate_default_logback_properties(path): @@ -635,23 +664,41 @@ def boot_clouseau(ctx, idx): clouseau_java_home + "/bin/java" if clouseau_java_home else shutil.which("java") ) java_version = get_java_version(java) - - pom_file = os.path.join(clouseau_dir, "pom.xml") - method = "src" if os.path.isfile(pom_file) else "dist" + file_exists = lambda f: os.path.isfile(os.path.join(clouseau_dir, f)) + + if file_exists("build.sbt"): + is_ziose = True + method = "src" + elif file_exists("pom.xml"): + is_ziose = False + method = "src" + else: + is_ziose = file_exists(".ziose") + method = "dist" if not java_version: print( "Warning: Java version could not be determined, Clouseau may not be able to run" ) else: - if method == "src" and (java_version < 1.7 or 1.7 < java_version): - raise StartupError( - "Java is not suitable to run Clouseau. Please use JDK 1.7 and configure its (root) path in `CLOUSEAU_JAVA_HOME`" - ) - elif java_version < 1.7 or 1.8 < java_version: - raise StartupError( - "Java is not suitable to run Clouseau. Please use JRE 1.7 or 1.8 and configure its (root) path in `CLOUSEAU_JAVA_HOME`" - ) + if is_ziose: + if method == "src" and (java_version < 11): + raise StartupError( + "Java is not suitable to build and run Clouseau. Please use JDK 11 or higher and configure its (root) path in `CLOUSEAU_JAVA_HOME`" + ) + elif method == "dist" and (java_version < 21): + raise StartupError( + "Java is not suitable to run Clouseau. Please use JRE 21 or higher configure its (root) path in `CLOUSEAU_JAVA_HOME`" + ) + else: + if method == "src" and (java_version < 1.7 or 1.7 < java_version): + raise StartupError( + "Java is not suitable to run Clouseau. Please use JDK 1.7 and configure its (root) path in `CLOUSEAU_JAVA_HOME`" + ) + elif method == "dist" and (java_version < 1.7 or 1.8 < java_version): + raise StartupError( + "Java is not suitable to run Clouseau. Please use JRE 1.7 or 1.8 and configure its (root) path in `CLOUSEAU_JAVA_HOME`" + ) logfname = os.path.join(log_dir(ctx), "clouseau{}.log".format(idx)) log = open(logfname, "w") @@ -666,30 +713,53 @@ def boot_clouseau(ctx, idx): env = os.environ.copy() if clouseau_java_home: env["JAVA_HOME"] = clouseau_java_home + env["PATH"] = f"{clouseau_java_home}/bin:{env['PATH']}" + + if is_ziose: + clouseau_sbt_home = os.environ.get( + "CLOUSEAU_SBT_HOME" + ) or os.environ.get("SBT_HOME") + sbt = ( + clouseau_sbt_home + "/bin/sbt" + if clouseau_sbt_home + else shutil.which("sbt") + ) - clouseau_mvn_home = os.environ.get("CLOUSEAU_M2_HOME") or os.environ.get( - "M2_HOME" - ) - mvn = ( - clouseau_mvn_home + "/bin/mvn" - if clouseau_mvn_home - else shutil.which("mvn") - ) + if not sbt: + raise StartupError( + "Scala Built Tool (SBT) could not be found. Please install SBT 1.10 or later and configure its (root) path in `CLOUSEAU_SBT_HOME`" + ) - if not mvn: - raise StartupError( - "Maven could not be found. Please install Maven 3.8 and configure its (root) path in `CLOUSEAU_M2_HOME`" + sbt_java_home = ( + ["-java-home", clouseau_java_home] if clouseau_java_home else [] + ) + cmd = [sbt] + sbt_java_home + ["assembly"] + else: + clouseau_mvn_home = os.environ.get( + "CLOUSEAU_M2_HOME" + ) or os.environ.get("M2_HOME") + mvn = ( + clouseau_mvn_home + "/bin/mvn" + if clouseau_mvn_home + else shutil.which("mvn") ) + if not mvn: + raise StartupError( + "Maven could not be found. Please install Maven 3.8 and configure its (root) path in `CLOUSEAU_M2_HOME`" + ) + + cmd = [ + mvn, + "-B", + "compile", + "dependency:build-classpath", + "-Dmdep.outputFile={}".format(cp_file), + ] + try: sp.check_call( - [ - mvn, - "-B", - "compile", - "dependency:build-classpath", - "-Dmdep.outputFile={}".format(cp_file), - ], + cmd, cwd=clouseau_dir, env=env, stdin=sp.PIPE, @@ -700,42 +770,70 @@ def boot_clouseau(ctx, idx): log.write(str(exc)) raise StartupError("Could not build Clouseau from sources.") - with open(cp_file, "r") as handle: - classpath_deps = handle.read().rstrip() + if is_ziose: + clouseau_jars = glob.glob( + os.path.join(clouseau_dir, "clouseau", "target", "**", "*.jar"), + recursive=True, + ) - targets = os.path.join(clouseau_dir, "target", "classes") - classpath = separator.join([classpath_deps, targets]) + if not clouseau_jars: + raise StartupError("No JAR files could be built for Clouseau") + + classpath = separator.join(clouseau_jars) + else: + with open(cp_file, "r") as handle: + classpath_deps = handle.read().rstrip() + + targets = os.path.join(clouseau_dir, "target", "classes") + classpath = separator.join([classpath_deps, targets]) else: - clouseau_jars = [ - os.path.join(clouseau_dir, fname) - for fname in os.listdir(clouseau_dir) - if fname.endswith(".jar") - ] + clouseau_jars = glob.glob(os.path.join(clouseau_dir, "*.jar")) if not clouseau_jars: raise StartupError("Clouseau has no JAR files") classpath = separator.join(clouseau_jars) - clouseau_ini = os.path.join(clouseau_dir, "clouseau.ini") - if not os.path.exists(clouseau_ini): - generate_default_clouseau_ini(clouseau_ini) + if is_ziose: + name_property = "node" + cookie_property = "cookie" + clouseau_name_format = "clouseau{}" + gc_config = [ + "-XX:+HeapDumpOnOutOfMemoryError", + "-XX:+UseG1GC", + "-XX:+ParallelRefProcEnabled", + ] + main_class = "com.cloudant.ziose.clouseau.Main" + config_file = "clouseau.conf" + config_body = DEFAULT_CLOUSEAU_CONF + else: + name_property = "clouseau.name" + cookie_property = "clouseau.cookie" + clouseau_name_format = "clouseau{}@127.0.0.1" + gc_config = ["-XX:+UseConcMarkSweepGC", "-XX:+CMSParallelRemarkEnabled"] + main_class = "com.cloudant.clouseau.Main" + config_file = "clouseau.ini" + config_body = DEFAULT_CLOUSEAU_INI - logback_properties = os.path.join(clouseau_dir, "logback.xml") - if not os.path.exists(logback_properties): - generate_default_logback_properties(logback_properties) + config_path = os.path.join(clouseau_dir, config_file) + if not os.path.exists(config_path): + generate_default_clouseau_config(config_path, config_file, config_body) - classpath = separator.join([classpath, clouseau_dir]) # for logback.xml + if not is_ziose: + logback_properties = os.path.join(clouseau_dir, "logback.xml") + if not os.path.exists(logback_properties): + generate_default_logback_properties(logback_properties) + + classpath = separator.join([classpath, clouseau_dir]) # for logback.xml - clouseau_name = "clouseau{}@127.0.0.1".format(idx) clouseau_indexes_dir = os.path.join(ctx["devdir"], "clouseau{}".format(idx), "data") if ctx["erlang_cookie"]: - clouseau_cookie = ["-Dclouseau.cookie={}".format(ctx["erlang_cookie"])] + clouseau_cookie = ["-D{}={}".format(cookie_property, ctx["erlang_cookie"])] else: clouseau_cookie = [] - # `HOME` must be set for Scalang to find the Erlang cookie + # `HOME` must be set for finding the Erlang cookie (when not specified) if not os.environ.get("HOME"): # This is usually `USERPROFILE` on Windows alternativeHome = os.environ.get("USERPROFILE") @@ -750,18 +848,16 @@ def boot_clouseau(ctx, idx): "-Dsun.net.inetaddr.ttl=30", "-Dsun.net.inetaddr.negative.ttl=30", '-XX:OnOutOfMemoryError="kill -9 %p"', - "-XX:+UseConcMarkSweepGC", - "-XX:+CMSParallelRemarkEnabled", + ] + + gc_config + + [ "-cp", classpath, - "-Dclouseau.name={}".format(clouseau_name), + "-D{}={}".format(name_property, clouseau_name_format.format(idx)), "-Dclouseau.dir={}".format(clouseau_indexes_dir), ] + clouseau_cookie - + [ - "com.cloudant.clouseau.Main", - clouseau_ini, - ] + + [main_class, config_path] ) try: From c43ce255e9fcc844b873fb55af16d0386ae5a78f Mon Sep 17 00:00:00 2001 From: Gabor Pali Date: Tue, 25 Nov 2025 17:55:03 +0100 Subject: [PATCH 2/4] [DEBUG] increase debug verbosity for Windows --- Makefile.win | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.win b/Makefile.win index d510ee51df4..6d2aa83e0f1 100644 --- a/Makefile.win +++ b/Makefile.win @@ -261,7 +261,7 @@ endif elixir-search: export MIX_ENV=integration elixir-search: elixir-init devclean ifneq ($(_WITH_CLOUSEAU), ) - @dev\run -n 1 -q -a adm:pass \ + @dev\run -n 1 -a adm:pass \ "$(_WITH_CLOUSEAU)" \ "$(TEST_OPTS)" \ --locald-config test/config/test-config.ini \ From 31647770f42627468e53b6787d7b9046cfcfe257 Mon Sep 17 00:00:00 2001 From: Gabor Pali Date: Tue, 25 Nov 2025 23:27:05 +0100 Subject: [PATCH 3/4] Use a custom version of apache/couchdb-glazier --- build-aux/Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-aux/Jenkinsfile b/build-aux/Jenkinsfile index a633362ec32..019fc05423d 100644 --- a/build-aux/Jenkinsfile +++ b/build-aux/Jenkinsfile @@ -298,7 +298,7 @@ def generateNativeStage(platform) { // deleteDir is OK here because we're not inside of a Docker container! deleteDir() unstash 'tarball' - powershell( script: "git clone https://github.com/apache/couchdb-glazier", label: 'Cloning couchdb-glazier repository' ) + powershell( script: "git clone https://github.com/pgj/couchdb-glazier -b support-clouseau-3.x", label: 'Cloning couchdb-glazier repository' ) powershell( script: "New-Item -ItemType Directory -Path '${platform}/build' -Force", label: 'Create build directories' ) powershell( script: "tar -xf (Get-Item apache-couchdb-*.tar.gz) -C '${platform}/build' --strip-components=1", label: 'Unpack release' ) dir( "${platform}/build" ) { From 77285b207238353fab0769a93cb6e6fa10c6b17d Mon Sep 17 00:00:00 2001 From: Gabor Pali Date: Tue, 25 Nov 2025 23:48:31 +0100 Subject: [PATCH 4/4] DEBUG: show more information about Java --- build-aux/Jenkinsfile | 3 ++- dev/run | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/build-aux/Jenkinsfile b/build-aux/Jenkinsfile index 019fc05423d..5d326bcefe6 100644 --- a/build-aux/Jenkinsfile +++ b/build-aux/Jenkinsfile @@ -298,7 +298,7 @@ def generateNativeStage(platform) { // deleteDir is OK here because we're not inside of a Docker container! deleteDir() unstash 'tarball' - powershell( script: "git clone https://github.com/pgj/couchdb-glazier -b support-clouseau-3.x", label: 'Cloning couchdb-glazier repository' ) + powershell( script: "git clone https://github.com/pgj/couchdb-glazier -b support-clouseau-3.x", label: 'Cloning couchdb-glazier repository (pgj fork)' ) powershell( script: "New-Item -ItemType Directory -Path '${platform}/build' -Force", label: 'Create build directories' ) powershell( script: "tar -xf (Get-Item apache-couchdb-*.tar.gz) -C '${platform}/build' --strip-components=1", label: 'Unpack release' ) dir( "${platform}/build" ) { @@ -317,6 +317,7 @@ def generateNativeStage(platform) { powershell( script: """ .\\..\\..\\couchdb-glazier\\bin\\shell.ps1 Set-Item -Path env:GRADLE_OPTS -Value '-Dorg.gradle.daemon=false' + gci env:* | sort-object name make -f Makefile.win elixir-search ERLANG_COOKIE=crumbles """, label: 'Clouseau tests') diff --git a/dev/run b/dev/run index 640d15d22ff..6bf4cc6a369 100755 --- a/dev/run +++ b/dev/run @@ -664,6 +664,11 @@ def boot_clouseau(ctx, idx): clouseau_java_home + "/bin/java" if clouseau_java_home else shutil.which("java") ) java_version = get_java_version(java) + + print(f"DEBUG: clouseau_java_home = {clouseau_java_home}") + print(f"DEBUG: java = {java}") + print(f"DEBUG: java_version = {java_version}") + file_exists = lambda f: os.path.isfile(os.path.join(clouseau_dir, f)) if file_exists("build.sbt"):