Skip to content

ci: build Windows test leg in Debug#806

Open
abnobdoss wants to merge 2 commits into
apache:mainfrom
abnobdoss:ci/windows-debug-test-leg
Open

ci: build Windows test leg in Debug#806
abnobdoss wants to merge 2 commits into
apache:mainfrom
abnobdoss:ci/windows-debug-test-leg

Conversation

@abnobdoss

Copy link
Copy Markdown
Contributor

What

Let the CMake CI scripts use ICEBERG_BUILD_TYPE and default to Debug, including on Windows. MSVC builds with debug info now use embedded /Z7 debug info through CMP0141 and CMAKE_MSVC_DEBUG_INFORMATION_FORMAT so Debug objects remain cacheable by sccache.

The build scripts also use the same single-config Ninja build path on every platform. Since these jobs pass -G Ninja, CMAKE_BUILD_TYPE controls the build and --config Release / ctest -C Release were not needed.

Why

Windows was the only main Test workflow leg still forcing the helper scripts through Release. After this change, the helper-script CMake test jobs default to Debug on pull requests and main; ICEBERG_BUILD_TYPE remains available if the project wants an override. Release verification and the SQL Catalog workflow's explicit Windows Release matrix entry are unchanged.

The original Windows Debug blocker in #39 was an IMPORTED_LOCATION failure from a multi-config CMake path. That specific failure no longer applies because the helper scripts now use Ninja single-config builds. The remaining Debug-only blocker was MSVC rejecting a constexpr static PartitionValues test helper: PartitionValues owns a std::vector, and MSVC Debug's checked-iterator mode (_ITERATOR_DEBUG_LEVEL != 0) makes that construction fail constant evaluation. This PR constructs the empty PartitionValues at the call site instead.

This follows the CI direction discussed in #799.

Validation

Fork validation passed:

The Windows Debug test job reported 45% sccache hits, 385 hits, 477 misses, and 0 errors. The first post-merge Apache main run will reseed Windows cache entries because the previous entries were built from Release objects.

Closes #39.

@wgtmac wgtmac left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is nice and clean! Thanks! Please resolve the conflict.

Release verification and the SQL Catalog workflow's explicit Windows Release matrix entry are unchanged.

Should we fix them altogether?

Abanoub Doss added 2 commits July 13, 2026 14:26
Flip the SQL Catalog workflow's Windows matrix entry from Release to
Debug so every SQL Catalog leg builds Debug. This relies on the MSVC
sccache handling from the previous commit, which makes Debug objects
cacheable via embedded /Z7 debug info.
@abnobdoss abnobdoss force-pushed the ci/windows-debug-test-leg branch from e072b11 to baaab05 Compare July 13, 2026 19:32
@abnobdoss

Copy link
Copy Markdown
Contributor Author

Thank you for reviewing @wgtmac! I resolved the conflict and applied the change to SQL Catalog as well. I assume we don't want the change on the Release verification workflow, but let me know if we do want it applied there too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CI] Debug build in the Windows CI reported error with IMPORTED_LOCATION not set

2 participants