From b4e12524743fa88068871ce51f5dac56fdd6278f Mon Sep 17 00:00:00 2001 From: Razvan-Liviu Varzaru Date: Mon, 19 Jan 2026 13:49:02 +0200 Subject: [PATCH] Reapply "MDBF-1136: add vcpkg setup and HashiCorp Vault tests Windows MSI builds" This reapplies commit 670c087. Building the HashiCorp Management plugin will cause the client and the server to be dynamically linked to `zlib1.dll`. See: https://jira.mariadb.org/browse/MDBF-1136?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel#:~:text=This%20is%20dependency,vcpkg%27s%20zlib1.dll One solution to the problem is to configure the server with `-DWITH_ZLIB=bundled`. A fix was pushed in the server codebase (MDEV-37997) in HashiCorp CMakeLists.txt to work around a `vcpkg` find_package overwrite. --- master-nonlatent/master.cfg | 73 ++++++++++++++++++++++++++++++++- scripts/windows/start-vault.ps1 | 27 ++++++++++++ 2 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 scripts/windows/start-vault.ps1 diff --git a/master-nonlatent/master.cfg b/master-nonlatent/master.cfg index 858df60a6..9b1302b18 100644 --- a/master-nonlatent/master.cfg +++ b/master-nonlatent/master.cfg @@ -283,6 +283,9 @@ f_windows.addStep( ) ## f_windows_msi +WIN_MSI_VCPKG_ROOT = "C:\\vcpkg" +WIN_MSI_VAULT_ROOT = "C:\\vault" + f_windows_msi = util.BuildFactory() f_windows_msi.addStep( steps.ShellCommand( @@ -351,6 +354,23 @@ f_windows_msi.addStep( ], ) ) + +f_windows_msi.addStep( + steps.ShellCommand( + name="Setup vcpkg in manifest mode", + env={ + "VCPKG_ROOT": WIN_MSI_VCPKG_ROOT, + "PATH": [WIN_MSI_VCPKG_ROOT, "${PATH}"], + }, + command=[ + "dojob", + '"', + util.Interpolate("vcpkg new --application && vcpkg add port curl"), + '"', + ], + ) +) + f_windows_msi.addStep( steps.Compile( name="cmake", @@ -359,9 +379,21 @@ f_windows_msi.addStep( "dojob", '"', util.Interpolate( - '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat" -arch=%(kw:arch)s && cmake . -G "Visual Studio 17 2022" -A %(kw:arch_cmake)s -DBUILD_CONFIG=mysql_release -DWITH_THIRD_PARTY=HeidiSQL -DWITH_EMBEDDED_SERVER=0 -DWITH_SSL=bundled -DSIGNCODE=OFF -DWITH_UNIT_TESTS=0 -DMYSQL_MAINTAINER_MODE=ERR', + '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\Common7\\Tools\\VsDevCmd.bat" ' + '-arch=%(kw:arch)s && cmake . -G "Visual Studio 17 2022" ' + "-A %(kw:arch_cmake)s " + '-DCMAKE_TOOLCHAIN_FILE="%(kw:vcpkg_path)s/scripts/buildsystems/vcpkg.cmake" ' + "-DBUILD_CONFIG=mysql_release " + "-DWITH_THIRD_PARTY=HeidiSQL " + "-DWITH_EMBEDDED_SERVER=0 " + "-DWITH_SSL=bundled " + "-DWITH_ZLIB=bundled " + "-DSIGNCODE=OFF " + "-DWITH_UNIT_TESTS=0 " + "-DMYSQL_MAINTAINER_MODE=ERR", arch=util.Property("arch", default="x64"), arch_cmake=util.Property("arch_cmake", default="x64"), + vcpkg_path=WIN_MSI_VCPKG_ROOT, ), '"', ], @@ -451,6 +483,45 @@ for typ in windows_msi_tests: create_scripts=windows_msi_tests[typ].get("create_scripts", False), ) +f_windows_msi.addStep( + steps.ShellCommand( + name="Kill and restart HashiCorp Vault", + command=[ + "dojob", + '"', + util.Interpolate( + ( + f"powershell.exe -ExecutionPolicy Bypass -File {WIN_MSI_VAULT_ROOT}\\start-vault.ps1" + ) + ), + '"', + ], + doStepIf=lambda step: "10.6" not in str(step.getProperty("master_branch")), + ) +) + +f_windows_msi.addStep( + steps.ShellCommand( + name="MTR - HashiCorp Vault", + env={ + "VAULT_ADDR": "http://127.0.0.1:8200", + "VAULT_TOKEN": "MTR", + "PATH": [WIN_MSI_VAULT_ROOT, "${PATH}"], + }, + command=[ + "dojob", + '"', + util.Interpolate( + ( + "vault status && cd mysql-test && perl mysql-test-run.pl --mem --suite=vault --big --parallel=1" + ) + ), + '"', + ], + doStepIf=lambda step: "10.6" not in str(step.getProperty("master_branch")), + ) +) + f_windows_msi.addStep(windows_save_logs_step()) # create package and upload to master diff --git a/scripts/windows/start-vault.ps1 b/scripts/windows/start-vault.ps1 new file mode 100644 index 000000000..ba257d295 --- /dev/null +++ b/scripts/windows/start-vault.ps1 @@ -0,0 +1,27 @@ +# Deploy in WIN_MSI_VAULT_ROOT +try { + # Kill any existing Vault processes + Get-Process vault -ErrorAction SilentlyContinue | ForEach-Object { + Stop-Process -Id $_.Id -Force + Write-Host "Killed Vault process $($_.Id)" + } + + # Set environment variables for dev mode + $env:VAULT_DEV_ROOT_TOKEN_ID = "MTR" + $env:VAULT_ADDR = "http://127.0.0.1:8200" + + + Start-Sleep -Seconds 1 # For old Vault process to exit + + # Start Vault in detached mode using Start-Process + Start-Process -FilePath "C:\vault\vault.exe" ` + -ArgumentList "server -dev" ` + -WindowStyle Hidden ` + + Write-Host "Vault started in dev mode. PID: $((Get-Process vault).Id)" + exit 0 +} +catch { + Write-Host "Failed to start Vault: $_" + exit 1 +} \ No newline at end of file