This is an automated email from the ASF dual-hosted git repository. hgruszecki pushed a commit to branch fix-windows-sdk-build in repository https://gitbox.apache.org/repos/asf/iggy.git
commit 52fddfc90b21888955e90ce4e329f93636b47cd7 Author: Hubert Gruszecki <[email protected]> AuthorDate: Wed Mar 18 14:30:37 2026 +0100 fix(sdk): fix broken Windows build for SDK and CLI The Rust SDK and CLI are cross-platform but were never compiled on Windows, allowing regressions to go undetected. iggy-server does not support Windows (it requires Linux io_uring), so only -p iggy -p iggy-cli are built. The posix_fadvise cfg guard was #[cfg(not(target_os = "macos"))], which is true on Windows. Since the nix crate is absent on Windows (unix-only dep), this caused an unresolved crate error. Changed to #[cfg(unix)]. The new build-windows-sdk task follows the same pattern as build-aarch64-gnu and build-macos-aarch64: listed in components.yml, routed to windows-latest in _test.yml, and handled in the pre-merge action. The disk cleanup step is guarded to Linux-only since it uses sudo and Linux-specific paths. Bumps iggy, iggy_common, iggy_binary_protocol to 0.9.3-edge.1 and iggy-cli to 0.11.3-edge.1. --- .github/actions/rust/pre-merge/action.yml | 7 +++++++ .github/config/components.yml | 1 + .github/workflows/_test.yml | 1 + Cargo.lock | 8 ++++---- Cargo.toml | 8 ++++---- DEPENDENCIES.md | 8 ++++---- core/binary_protocol/Cargo.toml | 2 +- core/cli/Cargo.toml | 2 +- core/common/Cargo.toml | 2 +- core/common/src/types/segment_storage/messages_reader.rs | 4 ++-- core/sdk/Cargo.toml | 2 +- foreign/python/Cargo.toml | 2 +- 12 files changed, 28 insertions(+), 19 deletions(-) diff --git a/.github/actions/rust/pre-merge/action.yml b/.github/actions/rust/pre-merge/action.yml index 1f544183e..071ce5804 100644 --- a/.github/actions/rust/pre-merge/action.yml +++ b/.github/actions/rust/pre-merge/action.yml @@ -31,6 +31,7 @@ runs: using: "composite" steps: - name: Cleanup disk space + if: runner.os == 'Linux' run: | echo "Disk space before cleanup:" df -h @@ -201,3 +202,9 @@ runs: if: inputs.task == 'build-macos-aarch64' run: cargo build --locked shell: bash + + # Windows builds (SDK and CLI only - iggy-server does not support Windows) + - name: Build Windows SDK and CLI + if: inputs.task == 'build-windows-sdk' + run: cargo build --locked -p iggy -p iggy-cli + shell: bash diff --git a/.github/config/components.yml b/.github/config/components.yml index e77ca3b7d..96422ed77 100644 --- a/.github/config/components.yml +++ b/.github/config/components.yml @@ -114,6 +114,7 @@ components: - "build-aarch64-gnu" - "build-aarch64-musl" - "build-macos-aarch64" + - "build-windows-sdk" # CLI component rust-cli: diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml index 4a713d3ca..88e311f8a 100644 --- a/.github/workflows/_test.yml +++ b/.github/workflows/_test.yml @@ -42,6 +42,7 @@ jobs: runs-on: ${{ (inputs.task == 'build-aarch64-gnu' || inputs.task == 'build-aarch64-musl') && 'ubuntu-24.04-arm' || inputs.task == 'build-macos-aarch64' && 'macos-14' || + inputs.task == 'build-windows-sdk' && 'windows-latest' || 'ubuntu-latest' }} timeout-minutes: 60 diff --git a/Cargo.lock b/Cargo.lock index dffee4844..5421abad9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5124,7 +5124,7 @@ checksum = "cd62e6b5e86ea8eeeb8db1de02880a6abc01a397b2ebb64b5d74ac255318f5cb" [[package]] name = "iggy" -version = "0.9.2-edge.1" +version = "0.9.3-edge.1" dependencies = [ "async-broadcast", "async-dropper", @@ -5212,7 +5212,7 @@ dependencies = [ [[package]] name = "iggy-cli" -version = "0.11.2-edge.1" +version = "0.11.3-edge.1" dependencies = [ "ahash 0.8.12", "anyhow", @@ -5325,7 +5325,7 @@ dependencies = [ [[package]] name = "iggy_binary_protocol" -version = "0.9.2-edge.1" +version = "0.9.3-edge.1" dependencies = [ "bytemuck", "bytes", @@ -5335,7 +5335,7 @@ dependencies = [ [[package]] name = "iggy_common" -version = "0.9.2-edge.1" +version = "0.9.3-edge.1" dependencies = [ "aes-gcm", "ahash 0.8.12", diff --git a/Cargo.toml b/Cargo.toml index 539251436..bd6fb22a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -158,10 +158,10 @@ humantime = "2.3.0" hwlocality = "1.0.0-alpha.11" iceberg = "0.8.0" iceberg-catalog-rest = "0.8.0" -iggy = { path = "core/sdk", version = "0.9.2-edge.1" } -iggy-cli = { path = "core/cli", version = "0.11.2-edge.1" } -iggy_binary_protocol = { path = "core/binary_protocol", version = "0.9.2-edge.1" } -iggy_common = { path = "core/common", version = "0.9.2-edge.1" } +iggy = { path = "core/sdk", version = "0.9.3-edge.1" } +iggy-cli = { path = "core/cli", version = "0.11.3-edge.1" } +iggy_binary_protocol = { path = "core/binary_protocol", version = "0.9.3-edge.1" } +iggy_common = { path = "core/common", version = "0.9.3-edge.1" } iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.2.1-edge.1" } integration = { path = "core/integration" } journal = { path = "core/journal" } diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index a4069999c..ca963183c 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -446,14 +446,14 @@ ident_case: 1.0.1, "Apache-2.0 OR MIT", idna: 1.1.0, "Apache-2.0 OR MIT", idna_adapter: 1.2.1, "Apache-2.0 OR MIT", if_chain: 1.0.3, "Apache-2.0 OR MIT", -iggy: 0.9.2-edge.1, "Apache-2.0", +iggy: 0.9.3-edge.1, "Apache-2.0", iggy-bench: 0.4.1-edge.1, "Apache-2.0", iggy-bench-dashboard-server: 0.6.3-edge.1, "Apache-2.0", -iggy-cli: 0.11.2-edge.1, "Apache-2.0", +iggy-cli: 0.11.3-edge.1, "Apache-2.0", iggy-connectors: 0.3.2-edge.1, "Apache-2.0", iggy-mcp: 0.3.2-edge.1, "Apache-2.0", -iggy_binary_protocol: 0.9.2-edge.1, "Apache-2.0", -iggy_common: 0.9.2-edge.1, "Apache-2.0", +iggy_binary_protocol: 0.9.3-edge.1, "Apache-2.0", +iggy_common: 0.9.3-edge.1, "Apache-2.0", iggy_connector_elasticsearch_sink: 0.3.2-edge.1, "Apache-2.0", iggy_connector_elasticsearch_source: 0.3.2-edge.1, "Apache-2.0", iggy_connector_iceberg_sink: 0.3.2-edge.1, "Apache-2.0", diff --git a/core/binary_protocol/Cargo.toml b/core/binary_protocol/Cargo.toml index 12ed184fd..e3ec5ecdd 100644 --- a/core/binary_protocol/Cargo.toml +++ b/core/binary_protocol/Cargo.toml @@ -17,7 +17,7 @@ [package] name = "iggy_binary_protocol" -version = "0.9.2-edge.1" +version = "0.9.3-edge.1" description = "Wire protocol types and codec for the Iggy binary protocol. Shared between server and SDK." edition = "2024" license = "Apache-2.0" diff --git a/core/cli/Cargo.toml b/core/cli/Cargo.toml index cbd35a625..2a631cb24 100644 --- a/core/cli/Cargo.toml +++ b/core/cli/Cargo.toml @@ -17,7 +17,7 @@ [package] name = "iggy-cli" -version = "0.11.2-edge.1" +version = "0.11.3-edge.1" edition = "2024" authors = ["[email protected]"] repository = "https://github.com/apache/iggy" diff --git a/core/common/Cargo.toml b/core/common/Cargo.toml index 74d9dab1e..d3d3794ba 100644 --- a/core/common/Cargo.toml +++ b/core/common/Cargo.toml @@ -16,7 +16,7 @@ # under the License. [package] name = "iggy_common" -version = "0.9.2-edge.1" +version = "0.9.3-edge.1" description = "Iggy is the persistent message streaming platform written in Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing millions of messages per second." edition = "2024" license = "Apache-2.0" diff --git a/core/common/src/types/segment_storage/messages_reader.rs b/core/common/src/types/segment_storage/messages_reader.rs index e17092670..7cd4c11b2 100644 --- a/core/common/src/types/segment_storage/messages_reader.rs +++ b/core/common/src/types/segment_storage/messages_reader.rs @@ -52,8 +52,8 @@ impl MessagesReader { .error(|e: &std::io::Error| format!("Failed to open messages file: {file_path}. {e}")) .map_err(|_| IggyError::CannotReadFile)?; - // posix_fadvise() doesn't exist on MacOS - #[cfg(not(target_os = "macos"))] + // posix_fadvise() is Linux-only in the nix crate + #[cfg(target_os = "linux")] { let _ = nix::fcntl::posix_fadvise( &file, diff --git a/core/sdk/Cargo.toml b/core/sdk/Cargo.toml index 6bee2175f..ab8953b24 100644 --- a/core/sdk/Cargo.toml +++ b/core/sdk/Cargo.toml @@ -17,7 +17,7 @@ [package] name = "iggy" -version = "0.9.2-edge.1" +version = "0.9.3-edge.1" description = "Iggy is the persistent message streaming platform written in Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing millions of messages per second." edition = "2024" license = "Apache-2.0" diff --git a/foreign/python/Cargo.toml b/foreign/python/Cargo.toml index 5b6ee40ed..d4ac12165 100644 --- a/foreign/python/Cargo.toml +++ b/foreign/python/Cargo.toml @@ -31,7 +31,7 @@ repository = "https://github.com/apache/iggy" [dependencies] bytes = "1.11.1" futures = "0.3.32" -iggy = { path = "../../core/sdk", version = "0.9.2-edge.1" } +iggy = { path = "../../core/sdk", version = "0.9.3-edge.1" } pyo3 = "0.28.2" pyo3-async-runtimes = { version = "0.28.0", features = [ "attributes",
