Repository navigation
fix(cube-cli): Link the MSVC runtime statically on Windows - #12395
Open
MikeNitsenko wants to merge 3 commits into
Open
MikeNitsenko wants to merge 3 commits into
MikeNitsenko wants to merge 3 commits into
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
MikeNitsenko
marked this pull request as ready for review
October 23, 2026 12:27
Contributor
|
Claude finished @MikeNitsenko's task in 1m 12s —— View job Looks good to merge. 0 high, 0 medium, 1 low. Review details
Findings
Checked, no issues
Review threadsThe listing returned no prior threads from me (0 resolved, 0 re-affirmed). I posted 1 new inline comment. |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
|
Claude finished @MikeNitsenko's task in 41s —— View job No issues found. The previous round's low finding (the version check ran after the copy) is fixed: 0 high, 0 medium, 0 low. Review details
Re-check of the latest commit
Unchanged from last round, no issues
Review threadsThe listing returned 0 unresolved threads from me, so I resolved none and re-affirmed none. The previous round's thread no longer appears in the unresolved list. I posted no new inline comments. |
3 tasks done
MikeNitsenko
added a commit
that referenced
this pull request
Oct 23, 2026
…12397) ## Summary Adds a step-by-step PowerShell section to the [Kerberos page](https://docs.cube.dev/reference/core-data-apis/dax-api/kerberos) for Microsoft Entra Domain Services. From a Windows Server machine joined to the managed domain, it creates the keytab account, registers the SPN, generates the keytab with `ktpass /pass +rndPass`, and uploads it with `cube variables set` (the same env var the Settings → Power BI upload writes). Fixes to the existing text, found while testing: - The generic `ktpass` example now passes `/mapuser CUBE\account`. A bare name fails with `DsCrackNames returned 0x2` when the account has no display name (e.g., created with `New-ADUser`). - `ktpass` resets the account's password, so each deployment needs its own keytab account; the generic prompt text no longer implies the existing password. - Windows Server is required: `ktpass` isn't part of RSAT on Windows 10. - `method=kerberos` / `method=ntlm` log lines only appear with `CUBEJS_LOG_LEVEL=trace`. ## Test plan - [x] Ran every step end to end on a Windows Server 2019 VM joined to an Entra Domain Services managed domain (RC4 disabled), against a GCP deployment; Power BI Desktop on a domain-joined client connected with Kerberos. - [x] `yarn broken-links` reports no new broken links (3 pre-existing ones in `api-reference/introduction.mdx` and `docs.json` reproduce without this change). - [x] Rendered the page with `mintlify dev`: 6 steps, all code blocks intact. ## Merge note Safe to merge before the CLI release. Until #12395 ships, the Windows `cube.exe` needs the VC++ runtime, which stock Windows Server doesn't have; the CLI step has a short note with the two commands that install it. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Check List
Description of Changes Made
On a fresh Windows Server 2019 machine,
cube.exeinstalled withinstall-cli.ps1doesn't start:cube --versionprints nothing and exits with-1073741515(0xC0000135, STATUS_DLL_NOT_FOUND). Thex86_64-pc-windows-msvcbuild links the C runtime dynamically, so it needsVCRUNTIME140.dllfrom the Visual C++ redistributable, which a stock Windows Server doesn't have.rust/cube-cli/.cargo/config.tomlsets-C target-feature=+crt-staticforx86_64-pc-windows-msvc. Both the CI build (cube-cli.yml) and the release build (publish.yml) run cargo fromrust/cube-cli, so both pick it up, and so do local Windows builds.actions-rust-lang/setup-rust-toolchainsetsRUSTFLAGS=-D warningsby default, and aRUSTFLAGSenv var overridestarget.<triple>.rustflagsfrom the config file. Both cube-cli jobs now passrustflags: "", as the other Rust jobs in this repo do. Thelintjob'scargo clippy -- -D warningsstill denies warnings.dumpbin /dependentson the releasecube.exeand fails if it importsvcruntime*/msvcp*. On the first commit of this PR (the check alone), it failed as expected, listingVCRUNTIME140.dll: failed run.install-cli.ps1used to printInstalled to …with an empty version when the binary couldn't run. It now runs the downloadedcube.exe --versionbefore copying it over an existing install, checks$LASTEXITCODE, and throws with the exit code in decimal and hex (throw, notexit, so anirm | iexsession isn't closed).Testing
dumpbinlists only OS DLLs (kernel32,advapi32,bcrypt,ws2_32, …): noVCRUNTIME140.dll, and theapi-ms-win-crt-*imports are gone too. The Windows tests ran against the static CRT build, and every other target is green.install-cli.ps1: ran the changed lines underpwshwith a binary that exits non-zero (throws with the exit code and leaves the existingcube.exein place) and one that prints a version (printsInstalled <version> to …).-1073741515formats as0xC0000135.actionlint(same version as theLint CI Workflowsjob) passes on the changed workflows.🤖 Generated with Claude Code