From 30aaddd3ae7c21701b68511de54cbeb0f7ea4ac0 Mon Sep 17 00:00:00 2001 From: Sonic Shih Date: Wed, 14 Oct 2026 13:52:16 +0800 Subject: [PATCH 01/10] fix(research): exclude offline diagnostic from CEX release image --- .../scripts/research-release-products.json | 11 +--- .../scripts/test-research-release-products.sh | 10 ++-- docs/research/CEX_IMAGE_BUILD_SCOPE.md | 56 +++++++++++++++++++ docs/research/OFFLINE_BASELINE.md | 3 + .../deployment/docker/Dockerfile.research | 6 -- 5 files changed, 65 insertions(+), 21 deletions(-) create mode 100644 docs/research/CEX_IMAGE_BUILD_SCOPE.md diff --git a/.github/scripts/research-release-products.json b/.github/scripts/research-release-products.json index 7e09900ed..3f5588a32 100644 --- a/.github/scripts/research-release-products.json +++ b/.github/scripts/research-release-products.json @@ -8,8 +8,7 @@ "binance-market-tape-slicer", "binance-replay-parquet-materializer", "clickhouse-analytics-materializer", - "monday-cex-prepare", - "monday-offline-baseline" + "monday-cex-prepare" ], "prediction-runner": [ "monday-prediction-research", @@ -39,14 +38,6 @@ "alpha-harness" ] }, - { - "manifest": "research-core/Cargo.toml", - "package": "alpha-harness", - "features": "offline-diagnostic", - "binaries": [ - "monday-offline-baseline" - ] - }, { "manifest": "research-core/Cargo.toml", "package": "hft-cex-research-worker", diff --git a/.github/scripts/test-research-release-products.sh b/.github/scripts/test-research-release-products.sh index 05b042811..816740b13 100755 --- a/.github/scripts/test-research-release-products.sh +++ b/.github/scripts/test-research-release-products.sh @@ -13,11 +13,11 @@ products="$root/.github/scripts/research-release-products.sh" bash "$products" recipes prediction-runner >"$work/prediction-recipes" jq -s -e 'length==3 and all(.[]; .manifest=="prediction-markets/Cargo.toml") and any(.[]; .package=="ploy-research" and (.binaries|length)==3) and any(.[]; .package=="hft-prediction-research-worker" and .binaries==["monday-prediction-worker"]) and any(.[]; .package=="hft-prediction-research-operator" and .binaries==["monday-prediction-operator"])' "$work/prediction-recipes" >/dev/null bash "$products" recipes cex-runner >"$work/cex-recipes" -jq -s -e 'length==6 and any(.[]; .package=="hft-cex-data-preparation" and .manifest=="data-pipelines/Cargo.toml" and .binaries==["monday-cex-prepare"]) and any(.[]; .package=="hft-cex-research-worker" and .binaries==["monday-cex-worker"]) and all(.[]; .package!="ploy-research" and .manifest!="prediction-markets/Cargo.toml")' "$work/cex-recipes" >/dev/null -jq -s -e 'any(.[]; .package=="alpha-harness" and .features=="offline-diagnostic" and .binaries==["monday-offline-baseline"]) and any(.[]; .package=="alpha-harness" and .features=="" and .binaries==["alpha-harness"])' "$work/cex-recipes" >/dev/null -[[ $(bash "$products" binaries cex-runner | wc -l) -eq 9 ]] -[[ $(bash "$products" binaries all | wc -l) -eq 14 ]] -[[ $(bash "$products" binaries cex-runner,controller | wc -l) -eq 9 ]] +jq -s -e 'length==5 and any(.[]; .package=="hft-cex-data-preparation" and .manifest=="data-pipelines/Cargo.toml" and .binaries==["monday-cex-prepare"]) and any(.[]; .package=="hft-cex-research-worker" and .binaries==["monday-cex-worker"]) and all(.[]; .package!="ploy-research" and .manifest!="prediction-markets/Cargo.toml")' "$work/cex-recipes" >/dev/null +jq -s -e 'all(.[]; (.binaries|index("monday-offline-baseline"))==null) and any(.[]; .package=="alpha-harness" and .features=="" and .binaries==["alpha-harness"])' "$work/cex-recipes" >/dev/null +[[ $(bash "$products" binaries cex-runner | wc -l) -eq 8 ]] +[[ $(bash "$products" binaries all | wc -l) -eq 13 ]] +[[ $(bash "$products" binaries cex-runner,controller | wc -l) -eq 8 ]] [[ $(bash "$products" merge controller prediction-runner) == controller,prediction-runner ]] for invalid in runner paired '' 'cex-runner,cex-runner' 'prediction-runner,unknown' 'all,controller'; do if bash "$products" normalize "$invalid" >"$work/rejection" 2>&1; then diff --git a/docs/research/CEX_IMAGE_BUILD_SCOPE.md b/docs/research/CEX_IMAGE_BUILD_SCOPE.md new file mode 100644 index 000000000..56db77d9c --- /dev/null +++ b/docs/research/CEX_IMAGE_BUILD_SCOPE.md @@ -0,0 +1,56 @@ +# CEX image build scope + +The production CEX image packages eight executables through five release recipes. +The offline diagnostic has a separate local build documented in [OFFLINE_BASELINE.md](OFFLINE_BASELINE.md). +Removing that executable removes its operator-plus-offline recipe from every CEX image build. +It does not remove the scientific worker's offline-diagnostic library feature. + +## Entry points and dependency boundaries + +| Entry | Build owner and features | Packaging decision | +| --- | --- | --- | +| `hft-backtest` | research-core; default | Retain the existing Docker entry point. | +| `alpha-harness` | research-core; default operator | Retain Campaign freeze, finalize and dispatch commands. Controller shares these exact bytes. | +| `monday-cex-worker` | research-core; scientific, without alpha-harness default features | Retain the admitted Campaign execution entry point. | +| `monday-offline-baseline` | Explicit local alpha-harness offline-diagnostic build, without defaults | Exclude from production images. No production entry point invokes it. | +| `lob-pit-materializer` | data-pipelines; collector | Retain materialization script dependency. | +| `binance-market-tape-slicer` | data-pipelines; collector | Retain materialization script dependency. | +| `binance-replay-parquet-materializer` | data-pipelines; collector | Retain materialization script dependency. | +| `clickhouse-analytics-materializer` | data-pipelines; collector | Retain data preparation tooling. | +| `monday-cex-prepare` | data-pipelines; preparation | Retain preparation and its source-version smoke check. | + +The catalog and both Docker build paths must agree. Product tests check the exact +prebuilt copies, producer archive, binary startup and compiler failure handling. +The existing dependency graph still propagates shared source changes conservatively. +No source path is excluded from CI by this change. + +## Reuse and identity + +Parameter-only experiments reuse an admitted immutable Build and verified prepared inputs. +Data semantics, including label windows, still invalidate prepared-input reuse. +See [CAMPAIGN_PREPARATION_REUSE.md](CAMPAIGN_PREPARATION_REUSE.md). + +The release profile, target, compiler, native environment and workspace inputs remain +bound to compilation provenance. Cargo targets stay isolated by owning workspace. +The changed recipe list remains part of exact build inputs and artifact validation. +Dependency cache reuse does not authenticate executable bytes: builds still produce, +hash and smoke-test the complete selected product at the admitted source revision. +No research-profile executable is presented as a release artifact. + +## Measurement and remaining scope + +The prior reference is Monorepo 38429350564 at 14m19s and Prediction 38429350500 +at 20m51s. Research job 115408859232 took about 15m57s, including 13m52s build. +The reported merge-to-ACR interval was 24m43s. These are historical observations, +not a controlled benchmark for this change. + +This change reduces nine executables and six recipes to eight and five. +It does not promise a proportional wall-time reduction: owners run concurrently, +and the scientific worker still compiles its fitting and offline library closure. +Use retained recipe timings, exact cache-hit state and runner identity to compare runs. +Report queue, compilation, packaging and publication separately; overlapping phases +must not be added together. A draft PR provides no merge-to-ACR measurement. + +Further separation of preparation, operator and scientific images requires a complete +consumer and signed-product protocol change. This patch preserves that boundary. +The 10–15 minute small-change target remains unproven until comparable CI measurements exist. diff --git a/docs/research/OFFLINE_BASELINE.md b/docs/research/OFFLINE_BASELINE.md index 2d095f0bb..4b7b7a5e1 100644 --- a/docs/research/OFFLINE_BASELINE.md +++ b/docs/research/OFFLINE_BASELINE.md @@ -2,6 +2,9 @@ The Rust `monday-offline-baseline` driver fits fixed Ridge folds on prepared native rows and evaluates their full rolling out-of-sample ledger. This diagnostic cannot complete a production Campaign or grant compute authority. +The production `cex-runner` image excludes this diagnostic executable. Build it explicitly with the recipe below. +Its local output is not a signed production Build or an admitted Campaign runner. + ## Reproduce a local synthetic run From the repository root: diff --git a/rust_hft/deployment/docker/Dockerfile.research b/rust_hft/deployment/docker/Dockerfile.research index 998f11fd6..6122ebb1e 100644 --- a/rust_hft/deployment/docker/Dockerfile.research +++ b/rust_hft/deployment/docker/Dockerfile.research @@ -44,10 +44,6 @@ RUN --mount=type=cache,target=/usr/local/cargo/registry,sharing=locked \ && MONDAY_SOURCE_REVISION="$SOURCE_REVISION" cargo --config 'build.rustc-wrapper=""' build \ --manifest-path data-pipelines/Cargo.toml --release --locked \ -p hft-cex-data-preparation --bin monday-cex-prepare \ - && MONDAY_SOURCE_REVISION="$SOURCE_REVISION" cargo --config 'build.rustc-wrapper=""' build \ - --manifest-path research-core/Cargo.toml --release --locked \ - -p alpha-harness --features offline-diagnostic --bin monday-offline-baseline \ - && install -D -m 0755 /work/target/release/monday-offline-baseline /out/bin/monday-offline-baseline \ && install -D -m 0755 /work/target/release/monday-cex-prepare /out/bin/monday-cex-prepare \ && install -D -m 0755 /work/target/release/hft-backtest /out/bin/hft-backtest \ && install -D -m 0755 /work/target/release/alpha-harness /out/bin/alpha-harness \ @@ -78,8 +74,6 @@ ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/hft-backtest"] FROM runtime-base AS prebuilt -COPY --chmod=0755 research-bin/monday-offline-baseline /usr/local/bin/monday-offline-baseline - COPY --chmod=0755 research-bin/monday-cex-prepare /usr/local/bin/monday-cex-prepare COPY --chmod=0755 research-bin/hft-backtest /usr/local/bin/hft-backtest From cda48413e0bdc2a910ac46217be3b2f847470df5 Mon Sep 17 00:00:00 2001 From: Sonic Shih Date: Wed, 14 Oct 2026 13:57:58 +0800 Subject: [PATCH 02/10] test(research): align publication inventory with CEX recipe subset --- .github/scripts/test-research-publication-budget.sh | 12 ++++++------ .../research-core/platform/src/release_publisher.rs | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/scripts/test-research-publication-budget.sh b/.github/scripts/test-research-publication-budget.sh index adbc6cbb1..47041d9e8 100644 --- a/.github/scripts/test-research-publication-budget.sh +++ b/.github/scripts/test-research-publication-budget.sh @@ -10,9 +10,9 @@ products=cex-runner,controller,prediction-runner bash "$script_dir/research-publication-budget.sh" estimate "$source_sha" "$products" 744 "$work/estimate.json" jq -e ' .basis=="catalog-static-upper-bound" and .source_archive.bytes>0 and - [.allocations[].executable_count]==[9,1,5] and [.allocations[].build_count]==[6,1,3] and - [.allocations[].native_requests]==[90,21,51] and - .total.object_count==48 and .total.oss_requests==150 and .total.native_requests==162 and + [.allocations[].executable_count]==[8,1,5] and [.allocations[].build_count]==[5,1,3] and + [.allocations[].native_requests]==[78,21,51] and + .total.object_count==44 and .total.oss_requests==138 and .total.native_requests==150 and .total.request_body_bytes==(.allocations|map(.request_body_bytes)|add) and .total.response_body_bytes==(.allocations|map(.response_body_bytes)|add) and .pricing.estimated_micro_cny==(.pricing.request_micro_cny+.pricing.egress_micro_cny+.pricing.storage_micro_cny) and @@ -46,7 +46,7 @@ run_admit() { run_admit "$work/policy.json" jq -e '.admission.single_run and .admission.publisher_run_id==456 and .admission.publisher_run_number==123' \ "$work/admission.json" >/dev/null -jq -e '.schema=="monday.oss-publication-budget.v1" and .limits.requests==162 and +jq -e '.schema=="monday.oss-publication-budget.v1" and .limits.requests==150 and .publisher_run_id==456 and .publisher_run_attempt==1 and .expires_at_ms==1791684000000 and .publication_namespaces==["research/builds/","research/sources/"] and .limits.requests==(.allocations|map(.limits.requests)|add) and @@ -150,7 +150,7 @@ jq --slurpfile estimate "$work/pair-estimate.json" ' .max_request_body_bytes=$estimate[0].total.request_body_bytes | .max_response_body_bytes=$estimate[0].total.response_body_bytes | .max_new_storage_bytes=$estimate[0].total.new_storage_bytes' "$work/operations.json" >"$work/pair-policy.json" -jq -e '.total.oss_requests==103' "$work/pair-estimate.json" >/dev/null +jq -e '.total.oss_requests==91' "$work/pair-estimate.json" >/dev/null for order in 'cex-runner controller' 'controller cex-runner'; do run=500 for product in $order; do @@ -182,7 +182,7 @@ done # Both single-product estimates individually fit these underfunded source caps; # neither may spend until the complete fixed set fits. A failed sibling does not # return its reserved share to the other product. -for expression in '.max_oss_requests=102' '.max_estimated_micro_cny-=1' \ +for expression in '.max_oss_requests=90' '.max_estimated_micro_cny-=1' \ '.max_request_body_bytes-=1' '.max_response_body_bytes-=1' '.max_new_storage_bytes-=1'; do jq "$expression" "$work/pair-policy.json" >"$work/undersized-pair-policy.json" for product in cex-runner controller; do diff --git a/rust_hft/research-core/platform/src/release_publisher.rs b/rust_hft/research-core/platform/src/release_publisher.rs index 443c77732..47fe6248e 100644 --- a/rust_hft/research-core/platform/src/release_publisher.rs +++ b/rust_hft/research-core/platform/src/release_publisher.rs @@ -2638,7 +2638,7 @@ mod tests { }; let mut calls = 0; for (product, programs, build_count, expected_calls) in [ - ("cex-runner", 9, 6, 90), + ("cex-runner", 8, 5, 78), ("controller", 1, 1, 21), ("prediction-runner", 5, 3, 51), ] { @@ -2668,7 +2668,7 @@ mod tests { assert_eq!(object.sha256, sha256(&bytes)); } } - assert_eq!(calls, 162); + assert_eq!(calls, 150); let names = BTreeSet::from(["alpha-harness".into()]); let builds = project_builds(&source(), &manifest.build_inputs, &names)?; std::fs::write( From 9d1b5d299750d252b158eca4bdd89d44739a345d Mon Sep 17 00:00:00 2001 From: Sonic Shih Date: Wed, 14 Oct 2026 14:01:41 +0800 Subject: [PATCH 03/10] fix(ci): separate product catalog from dependency cache identity --- .../scripts/capture-research-build-inputs.sh | 14 +++----------- .github/scripts/research-cache-layout.sh | 10 ++++++++++ .github/scripts/test-research-cache-layout.sh | 18 ++++++++++++++++++ docs/research/CEX_IMAGE_BUILD_SCOPE.md | 3 +++ 4 files changed, 34 insertions(+), 11 deletions(-) diff --git a/.github/scripts/capture-research-build-inputs.sh b/.github/scripts/capture-research-build-inputs.sh index ffcc600f4..4e0b62e3f 100755 --- a/.github/scripts/capture-research-build-inputs.sh +++ b/.github/scripts/capture-research-build-inputs.sh @@ -62,17 +62,9 @@ while IFS= read -r manifest; do done < <(jq -r '.workspaces[].manifest' "$root/rust_hft/workspaces.json") recipes=$(bash "$root/.github/scripts/research-release-products.sh" recipes "${2:-all}" | jq -s .) locks=$("$root/.github/scripts/research-workspace-locks.sh" "$root/rust_hft") -cat "$root/.github/scripts/build-research-release.sh" \ - "$root/.github/scripts/build-research-recipes.sh" \ - "$root/.github/scripts/research-cache-layout.sh" \ - "$root/.github/scripts/research-release-products.sh" \ - "$root/.github/scripts/research-release-products.json" \ - "$root/.github/scripts/research-release-source-sha.sh" \ - "$root/.github/scripts/research-workspace-locks.sh" \ - "$root/.github/scripts/verify-research-runtime-abi.sh" \ - "$root/.github/scripts/verify-research-runner-binaries.sh" >"$work/recipe" -# Bind the fixed CI parser implementation alongside the build recipe. -find "$root/.github/scripts/vendor/tomlrb/lib" -type f -name '*.rb' -print0 | LC_ALL=C sort -z | xargs -0 cat >>"$work/recipe" +# The selected recipes below bind catalog contents to exact provenance. +# Packaging-only catalog edits must not invalidate compatible dependencies. +bash "$root/.github/scripts/research-cache-layout.sh" recipe-inputs >"$work/recipe" jq -S -n --arg compiler "$(sha256sum "$work/compiler" | awk '{print $1}')" \ --arg native "$(sha256sum "$work/native" | awk '{print $1}')" \ --arg flags "$(sha256sum "$work/flags" | awk '{print $1}')" \ diff --git a/.github/scripts/research-cache-layout.sh b/.github/scripts/research-cache-layout.sh index d0cc44229..e1f42873d 100644 --- a/.github/scripts/research-cache-layout.sh +++ b/.github/scripts/research-cache-layout.sh @@ -38,6 +38,16 @@ validate_recipes() { (.binaries|type == "array" and length>0 and all(.[];name)))' "$1" >/dev/null } case ${1:?command required} in + recipe-inputs) + # Bind compiler orchestration and cleanup, independently of product selection. + # Exact selected recipes remain in compilation inputs and artifact admission. + for script in build-research-release.sh build-research-recipes.sh research-cache-layout.sh \ + research-release-products.sh research-release-source-sha.sh research-workspace-locks.sh \ + verify-research-runtime-abi.sh verify-research-runner-binaries.sh; do + cat "$root/.github/scripts/$script" + done + find "$root/.github/scripts/vendor/tomlrb/lib" -type f -name '*.rb' -print0 | LC_ALL=C sort -z | xargs -0 cat + ;; compatibility-inputs) # Keep local dependency choices in provenance and Cargo's exact cache suffix. # The restore prefix still binds every admitted compiler, native and profile input. diff --git a/.github/scripts/test-research-cache-layout.sh b/.github/scripts/test-research-cache-layout.sh index 866935b90..60b1d3f4a 100644 --- a/.github/scripts/test-research-cache-layout.sh +++ b/.github/scripts/test-research-cache-layout.sh @@ -23,6 +23,24 @@ while IFS= read -r manifest; do cp "$root/rust_hft/$manifest" "$compat_repo/rust_hft/$manifest" printf 'fixture lock\n' >"$compat_repo/rust_hft/${manifest%Cargo.toml}Cargo.lock" done < <(jq -r '.workspaces[].manifest' "$root/rust_hft/workspaces.json") +# Use the real compiler recipe input path, not a fabricated recipe digest. +for script in build-research-release.sh build-research-recipes.sh research-release-products.sh \ + research-release-source-sha.sh research-workspace-locks.sh verify-research-runtime-abi.sh \ + verify-research-runner-binaries.sh; do + cp "$root/.github/scripts/$script" "$compat_repo/.github/scripts/" +done +bash "$compat_repo/.github/scripts/research-cache-layout.sh" recipe-inputs >"$work/compiler-recipe" +jq '.products.controller=[] | .recipes[0].binaries=["changed-selection"]' \ + "$compat_repo/.github/scripts/research-release-products.json" >"$work/changed-catalog" +cp "$work/changed-catalog" "$compat_repo/.github/scripts/research-release-products.json" +bash "$compat_repo/.github/scripts/research-cache-layout.sh" recipe-inputs >"$work/catalog-recipe" +cmp "$work/compiler-recipe" "$work/catalog-recipe" +printf '\n# changed compiler orchestration\n' >>"$compat_repo/.github/scripts/build-research-recipes.sh" +bash "$compat_repo/.github/scripts/research-cache-layout.sh" recipe-inputs >"$work/changed-compiler-recipe" +if cmp -s "$work/compiler-recipe" "$work/changed-compiler-recipe"; then + echo 'compiler orchestration change reused recipe identity' >&2; exit 1 +fi +cp "$root/.github/scripts/research-release-products.json" "$compat_repo/.github/scripts/" printf '[features]\ndefault=[]\n' >"$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" git -C "$compat_repo" init -q git -C "$compat_repo" add rust_hft diff --git a/docs/research/CEX_IMAGE_BUILD_SCOPE.md b/docs/research/CEX_IMAGE_BUILD_SCOPE.md index 56db77d9c..3e99591a9 100644 --- a/docs/research/CEX_IMAGE_BUILD_SCOPE.md +++ b/docs/research/CEX_IMAGE_BUILD_SCOPE.md @@ -33,6 +33,9 @@ See [CAMPAIGN_PREPARATION_REUSE.md](CAMPAIGN_PREPARATION_REUSE.md). The release profile, target, compiler, native environment and workspace inputs remain bound to compilation provenance. Cargo targets stay isolated by owning workspace. The changed recipe list remains part of exact build inputs and artifact validation. +The dependency restore identity hashes compiler scripts separately from the product +catalog. Packaging-only selection changes can reuse compatible dependency bytes. +Changing compiler scripts still isolates the cache; this migration starts a new key. Dependency cache reuse does not authenticate executable bytes: builds still produce, hash and smoke-test the complete selected product at the admitted source revision. No research-profile executable is presented as a release artifact. From 4e64020efbda664eef46790de8373c4b6c5368aa Mon Sep 17 00:00:00 2001 From: Sonic Shih Date: Wed, 14 Oct 2026 14:16:01 +0800 Subject: [PATCH 04/10] test(research): verify catalog reuse and source image inventory --- .github/scripts/test-research-cache-layout.sh | 53 ++++++++++++++----- .../scripts/test-research-release-products.sh | 4 ++ 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/.github/scripts/test-research-cache-layout.sh b/.github/scripts/test-research-cache-layout.sh index 60b1d3f4a..28423ec39 100644 --- a/.github/scripts/test-research-cache-layout.sh +++ b/.github/scripts/test-research-cache-layout.sh @@ -29,18 +29,7 @@ for script in build-research-release.sh build-research-recipes.sh research-relea verify-research-runner-binaries.sh; do cp "$root/.github/scripts/$script" "$compat_repo/.github/scripts/" done -bash "$compat_repo/.github/scripts/research-cache-layout.sh" recipe-inputs >"$work/compiler-recipe" -jq '.products.controller=[] | .recipes[0].binaries=["changed-selection"]' \ - "$compat_repo/.github/scripts/research-release-products.json" >"$work/changed-catalog" -cp "$work/changed-catalog" "$compat_repo/.github/scripts/research-release-products.json" -bash "$compat_repo/.github/scripts/research-cache-layout.sh" recipe-inputs >"$work/catalog-recipe" -cmp "$work/compiler-recipe" "$work/catalog-recipe" -printf '\n# changed compiler orchestration\n' >>"$compat_repo/.github/scripts/build-research-recipes.sh" -bash "$compat_repo/.github/scripts/research-cache-layout.sh" recipe-inputs >"$work/changed-compiler-recipe" -if cmp -s "$work/compiler-recipe" "$work/changed-compiler-recipe"; then - echo 'compiler orchestration change reused recipe identity' >&2; exit 1 -fi -cp "$root/.github/scripts/research-release-products.json" "$compat_repo/.github/scripts/" +cp "$root/.github/scripts/research-image-release-artifact.sh" "$compat_repo/.github/scripts/" printf '[features]\ndefault=[]\n' >"$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" git -C "$compat_repo" init -q git -C "$compat_repo" add rust_hft @@ -58,10 +47,11 @@ fixture_inputs() { digest=$(printf 'compiler/native fixture\n' | sha256sum | awk '{print $1}') jq -Sn --arg digest "$digest" --arg profiles "$(sha256sum "$work/profiles" | awk '{print $1}')" \ --argjson owners "$profiles" \ + --arg recipe "$(bash "$compat_helper" recipe-inputs | sha256sum | awk '{print $1}')" \ --argjson locks "$(bash "$root/.github/scripts/research-workspace-locks.sh" "$compat_repo/rust_hft")" \ - --argjson recipes "$(bash "$root/.github/scripts/research-release-products.sh" recipes "${1:-cex-runner,controller}" | jq -s .)" \ + --argjson recipes "$(bash "$compat_repo/.github/scripts/research-release-products.sh" recipes "${1:-cex-runner,controller}" | jq -s .)" \ '{schema:"monday.compilation-inputs.v3",target:"x86_64-unknown-linux-gnu",profile:"release", - compiler:$digest,native:$digest,flags:$digest,profiles:$profiles,recipe:$digest, + compiler:$digest,native:$digest,flags:$digest,profiles:$profiles,recipe:$recipe, builder_image:("rust:fixture@sha256:"+$digest),recipes:$recipes,workspace_profiles:$owners,locks:$locks}' } fixture_inputs >"$work/full.json" @@ -77,6 +67,41 @@ check_identity_change() { actual=$(sha256sum "$work/changed-compat.json" | awk '{print $1}') if [[ $expected == reuse ]]; then [[ $actual == "$compat_sha" ]]; else [[ $actual != "$compat_sha" ]]; fi } +# A valid catalog edit changes exact provenance, not dependency compatibility. +# Both feature sets build the same operator binary; only the recipe identity differs. +catalog="$compat_repo/.github/scripts/research-release-products.json" +cp "$catalog" "$work/catalog-original" +release="$work/catalog-release" +mkdir -p "$release/research-bin" +while IFS= read -r binary; do + printf 'catalog fixture executable: %s\n' "$binary" >"$release/research-bin/$binary" + chmod 0755 "$release/research-bin/$binary" +done < <(bash "$compat_repo/.github/scripts/research-release-products.sh" binaries cex-runner,controller) +artifact="$compat_repo/.github/scripts/research-image-release-artifact.sh" +source_sha=1111111111111111111111111111111111111111 +MONDAY_BUILD_INPUTS_FILE="$work/full.json" bash "$artifact" create "$release" "$source_sha" 42 "$compat_repo/rust_hft" 1 7 cex-runner,controller +bash "$artifact" verify "$release" "$source_sha" 42 "$compat_repo/rust_hft" 1 7 cex-runner,controller +bash "$compat_helper" recipe-inputs >"$work/compiler-recipe" +jq '(.recipes[] | select(.package=="alpha-harness" and .binaries==["alpha-harness"]) | .features)="operator"' \ + "$work/catalog-original" >"$catalog" +fixture_inputs >"$work/changed.json" +check_identity_change reuse +bash "$compat_helper" recipe-inputs >"$work/catalog-recipe" +cmp "$work/compiler-recipe" "$work/catalog-recipe" +if bash "$artifact" verify "$release" "$source_sha" 42 "$compat_repo/rust_hft" 1 7 cex-runner,controller >"$work/rejection" 2>&1; then + echo 'old catalog recipes were accepted as current provenance' >&2; exit 1 +fi +# The same executable fixture with current provenance is valid. This isolates +# the rejection above to the recipe change, rather than an unrelated fixture error. +rm "$release/research-image-release.json" +MONDAY_BUILD_INPUTS_FILE="$work/changed.json" bash "$artifact" create "$release" "$source_sha" 42 "$compat_repo/rust_hft" 1 7 cex-runner,controller +bash "$artifact" verify "$release" "$source_sha" 42 "$compat_repo/rust_hft" 1 7 cex-runner,controller +cp "$work/catalog-original" "$catalog" +printf '\n# changed compiler orchestration\n' >>"$compat_repo/.github/scripts/build-research-recipes.sh" +fixture_inputs >"$work/changed.json" +check_identity_change isolate +cp "$root/.github/scripts/build-research-recipes.sh" "$compat_repo/.github/scripts/" +printf 'PASS: valid catalog edit preserves dependency identity, changes exact inputs and rejects old artifact recipes\n' # Local feature and lock changes remain in complete provenance, not the restore prefix. cp "$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" "$work/leaf-before" printf '[features]\ndefault=["scientific"]\n' >"$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" diff --git a/.github/scripts/test-research-release-products.sh b/.github/scripts/test-research-release-products.sh index 816740b13..e10f7b85d 100755 --- a/.github/scripts/test-research-release-products.sh +++ b/.github/scripts/test-research-release-products.sh @@ -33,6 +33,10 @@ catalog=JSON.parse(File.read(File.join(root,'.github/scripts/research-release-pr prebuilt=text.split(/^FROM runtime-base AS prebuilt\s*$/,2).fetch(1).split(/^FROM /,2).first copied=prebuilt.scan(/^COPY --chmod=0755 research-bin\/(\S+) \/usr\/local\/bin\/(\S+)$/) abort "unexpected prebuilt COPY: #{product}" unless copied.all? { |source,target| source==target } && copied.map(&:first).sort==catalog.fetch(product).sort + builder=text.split(/^FROM .* AS runtime-base\s*$/,2).first + installed=builder.scan(/install -D -m 0755 (\S+) \/out\/bin\/(\S+)/) + target=product=='cex-runner' ? '/work/target/release' : '/work/target/prediction-markets/release' + abort "unexpected source install: #{product}" unless installed.all? { |source,binary| source=="#{target}/#{binary}" } && installed.map(&:last).sort==catalog.fetch(product).sort foreign=catalog.fetch(product=='cex-runner' ? 'prediction-runner' : 'cex-runner') abort "source builder imports another domain: #{product}" if foreign.any? { |binary| text.include?(binary) } end From 4de8dc0f2ddd1ff333161b1f304e7726c551d126 Mon Sep 17 00:00:00 2001 From: Sonic Shih Date: Wed, 14 Oct 2026 15:45:26 +0800 Subject: [PATCH 05/10] fix(research): isolate native dependency compilation identity --- .github/scripts/build-research-recipes.sh | 6 +- .../scripts/capture-research-build-inputs.sh | 14 +++- .github/scripts/compile-research-recipe.sh | 13 ++++ .github/scripts/research-cache-layout.sh | 13 ++-- .../research-native-dependency-inputs.rb | 58 +++++++++++++++ .github/scripts/select-rust-ci-scope.sh | 2 +- .github/scripts/test-research-cache-layout.sh | 74 +++++++++++++++++-- .../scripts/test-research-release-products.sh | 2 +- .github/scripts/test-select-rust-ci-scope.sh | 6 ++ docs/research/CEX_IMAGE_BUILD_SCOPE.md | 22 +++++- 10 files changed, 188 insertions(+), 22 deletions(-) create mode 100644 .github/scripts/compile-research-recipe.sh create mode 100644 .github/scripts/research-native-dependency-inputs.rb diff --git a/.github/scripts/build-research-recipes.sh b/.github/scripts/build-research-recipes.sh index 73b6ebf0c..406d6c2cd 100755 --- a/.github/scripts/build-research-recipes.sh +++ b/.github/scripts/build-research-recipes.sh @@ -155,13 +155,9 @@ owner=${manifest%/Cargo.toml} timings="$work/$phase-${owner//\//--}.timings.jsonl" while IFS= read -r recipe; do package=$(jq -r .package <<<"$recipe") - args=(build --manifest-path "$manifest" --target x86_64-unknown-linux-gnu --release --locked --jobs "$cargo_jobs" -p "$package") - features=$(jq -r .features <<<"$recipe") - [[ -z $features ]] || args+=(--features "$features") - while IFS= read -r binary; do args+=(--bin "$binary"); done < <(jq -r '.binaries[]' <<<"$recipe") start=$(date +%s) recipe_target=$(bash "$root/.github/scripts/research-cache-layout.sh" target-dir "$(jq -r .manifest <<<"$recipe")") - CARGO_TARGET_DIR="$recipe_target" cargo "${args[@]}" --message-format json-render-diagnostics >"$work/$phase-$package.jsonl" + CARGO_TARGET_DIR="$recipe_target" bash "$root/.github/scripts/compile-research-recipe.sh" "$recipe" "$cargo_jobs" >"$work/$phase-$package.jsonl" jq -es 'any(.[]; .reason=="compiler-artifact") and any(.[]; .reason=="build-finished" and .success==true)' \ "$work/$phase-$package.jsonl" >/dev/null seconds=$(( $(date +%s) - start )) diff --git a/.github/scripts/capture-research-build-inputs.sh b/.github/scripts/capture-research-build-inputs.sh index 4e0b62e3f..1e993c156 100755 --- a/.github/scripts/capture-research-build-inputs.sh +++ b/.github/scripts/capture-research-build-inputs.sh @@ -29,9 +29,19 @@ for variable in CC CXX AR LD CFLAGS CXXFLAGS LDFLAGS RUSTC_BOOTSTRAP CARGO_BUILD LIBRARY_PATH LD_LIBRARY_PATH CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH \ PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR \ OPENSSL_DIR OPENSSL_LIB_DIR OPENSSL_INCLUDE_DIR OPENSSL_STATIC \ - BINDGEN_EXTRA_CLANG_ARGS PROTOC PROTOC_INCLUDE CMAKE_TOOLCHAIN_FILE; do + BINDGEN_EXTRA_CLANG_ARGS PROTOC PROTOC_INCLUDE CMAKE_TOOLCHAIN_FILE \ + DUCKDB_STATIC DUCKDB_LIB_DIR DUCKDB_INCLUDE_DIR DUCKDB_DOWNLOAD_LIB \ + RANLIB ARFLAGS CXXSTDLIB CRATE_CC_NO_DEFAULTS CC_SHELL_ESCAPED_FLAGS \ + CMAKE_GENERATOR CMAKE_MAKE_PROGRAM CMAKE_PREFIX_PATH; do printf '%s=%s\n' "$variable" "${!variable-}" >>"$work/native" done +# cc-rs also accepts target-specific compiler and flag overrides. +while IFS= read -r variable; do + printf '%s=%s\n' "$variable" "$(printenv "$variable")" >>"$work/native" +done < <(env | awk -F= '$1 ~ /^(CC|CXX|AR|RANLIB|CFLAGS|CXXFLAGS|ARFLAGS|CXXSTDLIB)_(x86_64|x86-64)/ || $1 ~ /^(HOST|TARGET)_(CC|CXX|AR|RANLIB|CFLAGS|CXXFLAGS|ARFLAGS|CXXSTDLIB)$/ {print $1}' | LC_ALL=C sort) +for command in cc c++ ar ld ranlib; do + sha256sum "$(command -v "$command")" >>"$work/native" +done for command in clang cmake mold pkg-config protoc zstd zstdmt unzstd; do "$command" --version >>"$work/native"; done # Bind relevant Cargo overrides without capturing registry or service secrets. for variable in RUSTC RUSTDOC RUSTC_WORKSPACE_WRAPPER CARGO_INCREMENTAL; do @@ -78,6 +88,8 @@ jq -S -n --arg compiler "$(sha256sum "$work/compiler" | awk '{print $1}')" \ if [[ -n ${GITHUB_OUTPUT:-} ]]; then printf 'cache_sha256=%s\n' "$(sha256sum "$output" | awk '{print $1}')" >>"$GITHUB_OUTPUT"; fi # This separate restore identity does not replace the complete v3 provenance. bash "$root/.github/scripts/research-cache-layout.sh" compatibility-inputs "$output" >"$work/dependency-cache-inputs.json" +# Retain a small, public native identity summary in the producer log. +jq -c '.native_dependencies.closures[] | {owner,duckdb:[.packages[] | select(.name=="libduckdb-sys") | {name,version,checksum,features}]}' "$work/dependency-cache-inputs.json" if [[ -n ${GITHUB_OUTPUT:-} ]]; then printf 'dependency_cache_sha256=%s\n' "$(sha256sum "$work/dependency-cache-inputs.json" | awk '{print $1}')" >>"$GITHUB_OUTPUT" fi diff --git a/.github/scripts/compile-research-recipe.sh b/.github/scripts/compile-research-recipe.sh new file mode 100644 index 000000000..c4e881703 --- /dev/null +++ b/.github/scripts/compile-research-recipe.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash +# Stable dependency compilation contract. Packaging and scheduling live outside it. +set -euo pipefail +recipe=${1:?recipe JSON required} +jobs=${2:?Cargo jobs required} +[[ $jobs =~ ^[1-9][0-9]*$ ]] +manifest=$(jq -er .manifest <<<"$recipe") +package=$(jq -er .package <<<"$recipe") +features=$(jq -er .features <<<"$recipe") +args=(build --manifest-path "$manifest" --target x86_64-unknown-linux-gnu --release --locked --jobs "$jobs" -p "$package") +[[ -z $features ]] || args+=(--features "$features") +while IFS= read -r binary; do args+=(--bin "$binary"); done < <(jq -er '.binaries[]' <<<"$recipe") +cargo "${args[@]}" --message-format json-render-diagnostics diff --git a/.github/scripts/research-cache-layout.sh b/.github/scripts/research-cache-layout.sh index e1f42873d..8462586b9 100644 --- a/.github/scripts/research-cache-layout.sh +++ b/.github/scripts/research-cache-layout.sh @@ -41,9 +41,9 @@ case ${1:?command required} in recipe-inputs) # Bind compiler orchestration and cleanup, independently of product selection. # Exact selected recipes remain in compilation inputs and artifact admission. - for script in build-research-release.sh build-research-recipes.sh research-cache-layout.sh \ + for script in build-research-release.sh build-research-recipes.sh capture-research-build-inputs.sh research-cache-layout.sh \ research-release-products.sh research-release-source-sha.sh research-workspace-locks.sh \ - verify-research-runtime-abi.sh verify-research-runner-binaries.sh; do + verify-research-runtime-abi.sh verify-research-runner-binaries.sh research-native-dependency-inputs.rb compile-research-recipe.sh; do cat "$root/.github/scripts/$script" done find "$root/.github/scripts/vendor/tomlrb/lib" -type f -name '*.rb' -print0 | LC_ALL=C sort -z | xargs -0 cat @@ -134,9 +134,12 @@ rescue StandardError => error exit 1 end RUBY - jq -Se --slurpfile owner_profiles "$work/owner-profiles.json" ' - {schema:"monday.dependency-cache-compat.v3",target,profile,compiler,native,flags, - builder_image,recipe,owner_profiles:$owner_profiles[0]}' "$work/validated.json" + ruby "$root/.github/scripts/research-native-dependency-inputs.rb" "$root" "$work/cache-recipes.json" >"$work/native-dependencies.json" + dependency_recipe=$(cat "$root/.github/scripts/compile-research-recipe.sh" "$root/.github/scripts/research-cache-layout.sh" \ + "$root/.github/scripts/research-native-dependency-inputs.rb" | sha256sum | awk '{print $1}') + jq -Se --arg dependency_recipe "$dependency_recipe" --slurpfile native_dependencies "$work/native-dependencies.json" --slurpfile owner_profiles "$work/owner-profiles.json" ' + {schema:"monday.dependency-cache-compat.v4",target,profile,compiler,native,flags, + builder_image,dependency_recipe:$dependency_recipe,owner_profiles:$owner_profiles[0],native_dependencies:$native_dependencies[0]}' "$work/validated.json" ;; manifest-inputs) # Include local path/patch/default-feature manifests beyond recipe roots. diff --git a/.github/scripts/research-native-dependency-inputs.rb b/.github/scripts/research-native-dependency-inputs.rb new file mode 100644 index 000000000..5506456b0 --- /dev/null +++ b/.github/scripts/research-native-dependency-inputs.rb @@ -0,0 +1,58 @@ +#!/usr/bin/env ruby +# Cargo resolves native features. This identity excludes application source and packaging scripts. +require 'json' +require 'open3' +require 'digest' + +root, recipes_file = ARGV +abort 'root and recipes required' unless root && recipes_file +$LOAD_PATH.unshift("#{root}/.github/scripts/vendor/tomlrb/lib") +require 'tomlrb' +records = JSON.parse(File.read(recipes_file)).flat_map do |recipe| + manifest = recipe.fetch('manifest') + args = ['cargo', 'metadata', '--manifest-path', "#{root}/rust_hft/#{manifest}", + '--locked', '--format-version', '1', '--filter-platform', 'x86_64-unknown-linux-gnu'] + lock = Tomlrb.load_file("#{root}/rust_hft/#{File.dirname(manifest)}/Cargo.lock").fetch('package') + features = recipe.fetch('features') + unless features.empty? + args += ['--features', features.split(',').map { |feature| "#{recipe.fetch('package')}/#{feature}" }.join(',')] + end + output, status = Open3.capture2(*args, chdir: "#{root}/rust_hft") + abort "native dependency resolution failed: #{manifest}" unless status.success? + metadata = JSON.parse(output) + packages = metadata.fetch('packages').to_h { |package| [package.fetch('id'), package] } + nodes = metadata.fetch('resolve').fetch('nodes').to_h { |node| [node.fetch('id'), node] } + native_roots = packages.values.select { |package| package.fetch('name') == 'libduckdb-sys' } + native_roots.map do |native| + pending = [native.fetch('id')] + visited = {} + until pending.empty? + id = pending.shift + next if visited.key?(id) + package = packages.fetch(id) + node = nodes.fetch(id) + source = package['source'] + checksum = nil + if source&.start_with?('registry+') + entry = lock.find { |item| item['name'] == package['name'] && item['version'] == package['version'] && item['source'] == source } + checksum = entry&.fetch('checksum', nil) + abort 'native registry source has no checksum' unless checksum&.match?(/\A[0-9a-f]{64}\z/) + end + # Registry versions and git revisions are immutable Cargo identities. + # Local overrides also bind source bytes, including the native build script. + local = nil + unless source + directory = File.dirname(package.fetch('manifest_path')) + files = Dir.glob("#{directory}/**/*", File::FNM_DOTMATCH).select { |file| File.file?(file) } + abort 'native local dependency contains a symlink' if files.any? { |file| File.symlink?(file) } + local = files.sort.to_h { |file| [file.delete_prefix(directory + '/'), Digest::SHA256.file(file).hexdigest] } + end + visited[id] = { 'name' => package.fetch('name'), 'version' => package.fetch('version'), + 'source' => source, 'checksum' => checksum, + 'features' => node.fetch('features').sort, 'local' => local } + pending.concat(node.fetch('dependencies')) + end + { 'owner' => manifest, 'packages' => visited.values.sort_by { |package| JSON.generate(package) } } + end +end +puts JSON.generate({ 'schema' => 'monday.native-dependencies.v1', 'closures' => records.uniq.sort_by { |record| JSON.generate(record) } }) diff --git a/.github/scripts/select-rust-ci-scope.sh b/.github/scripts/select-rust-ci-scope.sh index 2f147ae79..59d43a6c8 100755 --- a/.github/scripts/select-rust-ci-scope.sh +++ b/.github/scripts/select-rust-ci-scope.sh @@ -660,7 +660,7 @@ for path in "${paths[@]}"; do select_job ploy/workflow-lint continue ;; - .github/scripts/research-release-products.sh|.github/scripts/research-release-products.json|.github/scripts/test-research-release-products.sh|.github/scripts/research-release-bundle.rb|.github/scripts/research-release-source-sha.sh|.github/scripts/test-research-checkout-ownership.sh|.github/scripts/verify-research-runtime-abi.sh|.github/scripts/test-research-runtime-abi.sh|.github/scripts/research-cache-layout.sh|.github/scripts/test-research-cache-layout.sh|.github/scripts/build-research-release.sh|.github/scripts/build-research-recipes.sh|.github/scripts/capture-research-build-inputs.sh|.github/scripts/research-image-smoke.sh|.github/scripts/verify-research-product-image.sh|.github/scripts/test-research-product-image.sh|.github/scripts/verify-research-controller-image.sh|.github/scripts/test-research-controller-image.sh|.github/scripts/download-research-release.sh|.github/scripts/test-download-research-release.sh) + .github/scripts/research-release-products.sh|.github/scripts/research-release-products.json|.github/scripts/test-research-release-products.sh|.github/scripts/research-release-bundle.rb|.github/scripts/research-release-source-sha.sh|.github/scripts/test-research-checkout-ownership.sh|.github/scripts/verify-research-runtime-abi.sh|.github/scripts/test-research-runtime-abi.sh|.github/scripts/research-cache-layout.sh|.github/scripts/test-research-cache-layout.sh|.github/scripts/build-research-release.sh|.github/scripts/build-research-recipes.sh|.github/scripts/compile-research-recipe.sh|.github/scripts/research-native-dependency-inputs.rb|.github/scripts/capture-research-build-inputs.sh|.github/scripts/research-image-smoke.sh|.github/scripts/verify-research-product-image.sh|.github/scripts/test-research-product-image.sh|.github/scripts/verify-research-controller-image.sh|.github/scripts/test-research-controller-image.sh|.github/scripts/download-research-release.sh|.github/scripts/test-download-research-release.sh) select_research_image_jobs select_job ci/ci-contracts select_job ploy/workflow-lint diff --git a/.github/scripts/test-research-cache-layout.sh b/.github/scripts/test-research-cache-layout.sh index 28423ec39..c7c1bd763 100644 --- a/.github/scripts/test-research-cache-layout.sh +++ b/.github/scripts/test-research-cache-layout.sh @@ -24,9 +24,9 @@ while IFS= read -r manifest; do printf 'fixture lock\n' >"$compat_repo/rust_hft/${manifest%Cargo.toml}Cargo.lock" done < <(jq -r '.workspaces[].manifest' "$root/rust_hft/workspaces.json") # Use the real compiler recipe input path, not a fabricated recipe digest. -for script in build-research-release.sh build-research-recipes.sh research-release-products.sh \ +for script in build-research-release.sh build-research-recipes.sh capture-research-build-inputs.sh research-release-products.sh \ research-release-source-sha.sh research-workspace-locks.sh verify-research-runtime-abi.sh \ - verify-research-runner-binaries.sh; do + verify-research-runner-binaries.sh research-native-dependency-inputs.rb compile-research-recipe.sh; do cp "$root/.github/scripts/$script" "$compat_repo/.github/scripts/" done cp "$root/.github/scripts/research-image-release-artifact.sh" "$compat_repo/.github/scripts/" @@ -54,6 +54,33 @@ fixture_inputs() { compiler:$digest,native:$digest,flags:$digest,profiles:$profiles,recipe:$recipe, builder_image:("rust:fixture@sha256:"+$digest),recipes:$recipes,workspace_profiles:$owners,locks:$locks}' } +# Metadata fixtures exercise identity derivation without compiling DuckDB. +original_path=$PATH +mkdir -p "$work/native-bin" +cat >"$work/native-bin/cargo" <<'NATIVE_CARGO' +#!/usr/bin/env bash +set -euo pipefail +[[ $1 == metadata ]] +cat "$MONDAY_NATIVE_FIXTURE" +NATIVE_CARGO +chmod +x "$work/native-bin/cargo" +export MONDAY_NATIVE_FIXTURE="$work/native-metadata.json" +export PATH="$work/native-bin:$PATH" +cat >"$MONDAY_NATIVE_FIXTURE" <<'NATIVE_JSON' +{"packages":[{"id":"native","name":"libduckdb-sys","version":"1.10504.0","source":"registry+https://github.com/rust-lang/crates.io-index"},{"id":"cc","name":"cc","version":"1.2.0","source":"registry+https://github.com/rust-lang/crates.io-index"}],"resolve":{"nodes":[{"id":"native","features":["bundled"],"dependencies":["cc"]},{"id":"cc","features":[],"dependencies":[]}]}} +NATIVE_JSON +cp "$MONDAY_NATIVE_FIXTURE" "$work/native-original.json" +native_fixture_locks() { + ruby -rjson - "$MONDAY_NATIVE_FIXTURE" "$compat_repo/rust_hft" <<'NATIVE_LOCKS' +metadata, root = ARGV +lock = "version = 3\n" + JSON.parse(File.read(metadata)).fetch('packages').map do |package| + "[[package]]\nname=#{package.fetch('name').to_json}\nversion=#{package.fetch('version').to_json}\nsource=#{package.fetch('source').to_json}\nchecksum=\"#{'1' * 64}\"\n" +end.join +Dir.glob("#{root}/**/Cargo.lock").each { |path| File.write(path, lock) } +NATIVE_LOCKS +} +native_fixture_locks +cp "$compat_repo/rust_hft/research-core/Cargo.lock" "$work/original-fixture-lock" fixture_inputs >"$work/full.json" cp "$work/full.json" "$work/full-before.json" bash "$compat_helper" compatibility-inputs "$work/full.json" >"$work/compat.json" @@ -99,22 +126,56 @@ bash "$artifact" verify "$release" "$source_sha" 42 "$compat_repo/rust_hft" 1 7 cp "$work/catalog-original" "$catalog" printf '\n# changed compiler orchestration\n' >>"$compat_repo/.github/scripts/build-research-recipes.sh" fixture_inputs >"$work/changed.json" -check_identity_change isolate +check_identity_change reuse cp "$root/.github/scripts/build-research-recipes.sh" "$compat_repo/.github/scripts/" +for script in build-research-release.sh verify-research-runtime-abi.sh verify-research-runner-binaries.sh; do + printf '\n# packaging or validation text change\n' >>"$compat_repo/.github/scripts/$script" + fixture_inputs >"$work/changed.json" + check_identity_change reuse + cp "$root/.github/scripts/$script" "$compat_repo/.github/scripts/" +done +for script in compile-research-recipe.sh research-cache-layout.sh; do + printf '\n# changed actual compile or cleanup contract\n' >>"$compat_repo/.github/scripts/$script" + fixture_inputs >"$work/changed.json" + check_identity_change isolate + cp "$root/.github/scripts/$script" "$compat_repo/.github/scripts/" +done printf 'PASS: valid catalog edit preserves dependency identity, changes exact inputs and rejects old artifact recipes\n' +# Cargo-resolved native version/source/features and build dependencies must isolate. +for update in '.packages[0].version="1.10505.0"' '.packages[0].source="git+https://example.invalid/duckdb#1234"' \ + '.resolve.nodes[0].features=["bundled","json"]' '.packages[1].version="1.3.0"'; do + jq "$update" "$work/native-original.json" >"$MONDAY_NATIVE_FIXTURE" + native_fixture_locks + bash "$compat_helper" compatibility-inputs "$work/full.json" >"$work/native-changed.json" + [[ $(sha256sum "$work/native-changed.json" | awk '{print $1}') != "$compat_sha" ]] +done +cp "$work/native-original.json" "$MONDAY_NATIVE_FIXTURE" +native_fixture_locks +jq '.packages += [{id:"business",name:"unrelated-business",version:"2.0.0",source:null}]' \ + "$work/native-original.json" >"$MONDAY_NATIVE_FIXTURE" +bash "$compat_helper" compatibility-inputs "$work/full.json" >"$work/native-unrelated.json" +cmp "$work/compat.json" "$work/native-unrelated.json" +cp "$work/native-original.json" "$MONDAY_NATIVE_FIXTURE" +ruby - "$compat_repo/rust_hft/research-core/Cargo.lock" <<'NATIVE_CHECKSUM' +path = ARGV.fetch(0) +File.write(path, File.read(path).sub('1' * 64, '2' * 64)) +NATIVE_CHECKSUM +bash "$compat_helper" compatibility-inputs "$work/full.json" >"$work/native-checksum.json" +[[ $(sha256sum "$work/native-checksum.json" | awk '{print $1}') != "$compat_sha" ]] +native_fixture_locks # Local feature and lock changes remain in complete provenance, not the restore prefix. cp "$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" "$work/leaf-before" printf '[features]\ndefault=["scientific"]\n' >"$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" fixture_inputs >"$work/changed.json" check_identity_change reuse cp "$work/leaf-before" "$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" -printf 'new fixture lock\n' >"$compat_repo/rust_hft/research-core/Cargo.lock" +printf '\n# unrelated lock metadata\n' >>"$compat_repo/rust_hft/research-core/Cargo.lock" fixture_inputs >"$work/changed.json" check_identity_change reuse -printf 'fixture lock\n' >"$compat_repo/rust_hft/research-core/Cargo.lock" +cp "$work/original-fixture-lock" "$compat_repo/rust_hft/research-core/Cargo.lock" changed_digest=$(printf 'changed environment\n' | sha256sum | awk '{print $1}') -for field in compiler native flags recipe; do +for field in compiler native flags; do jq -S --arg field "$field" --arg digest "$changed_digest" '.[$field]=$digest' "$work/full.json" >"$work/changed.json" check_identity_change isolate done @@ -269,6 +330,7 @@ end abort 'producer cache namespaces drifted' unless restores.uniq.length == 1 RUBY printf 'PASS: dependency compatibility identity, provenance preservation and fail-closed input contracts\n' +export PATH="$original_path" [[ ${1:-} != --compatibility-key ]] || exit 0 bash "$root/.github/scripts/research-release-products.sh" recipes all | jq -s '{recipes:.}' >"$work/inputs" diff --git a/.github/scripts/test-research-release-products.sh b/.github/scripts/test-research-release-products.sh index e10f7b85d..734f2d8e6 100755 --- a/.github/scripts/test-research-release-products.sh +++ b/.github/scripts/test-research-release-products.sh @@ -92,7 +92,7 @@ bash "$root/.github/scripts/test-research-product-image.sh" # binaries. Only the target recorded by compiler inputs may reach the archive. fixture="$work/producer" mkdir -p "$fixture/.github/scripts" "$fixture/rust_hft" "$fixture/bin" "$fixture/output" -for script in research-cache-layout.sh build-research-release.sh build-research-recipes.sh research-release-source-sha.sh research-release-products.sh research-release-products.json research-workspace-locks.sh research-image-release-artifact.sh verify-research-runner-binaries.sh research-release-bundle.rb; do +for script in research-cache-layout.sh build-research-release.sh build-research-recipes.sh compile-research-recipe.sh research-release-source-sha.sh research-release-products.sh research-release-products.json research-workspace-locks.sh research-image-release-artifact.sh verify-research-runner-binaries.sh research-release-bundle.rb; do cp "$root/.github/scripts/$script" "$fixture/.github/scripts/$script" done cp "$root/rust_hft/workspaces.json" "$fixture/rust_hft/workspaces.json" diff --git a/.github/scripts/test-select-rust-ci-scope.sh b/.github/scripts/test-select-rust-ci-scope.sh index e1065a073..6e5506797 100755 --- a/.github/scripts/test-select-rust-ci-scope.sh +++ b/.github/scripts/test-select-rust-ci-scope.sh @@ -700,6 +700,12 @@ manual_scope=$(run_case production-manual workflow_dispatch dev-input.txt "$prod assert_flag "$manual_scope" research_product cex-runner,controller,prediction-runner assert_flag "$manual_scope" production_trading_image true assert_flag "$manual_scope" production_collector_image true +for helper in compile-research-recipe.sh research-native-dependency-inputs.rb; do + printf '%s\n' ".github/scripts/$helper" >"$tmp_dir/native-compile-helper.txt" + native_output=$(run_case native-compile-helper pull_request native-compile-helper.txt) + assert_jobs "$native_output" 'ploy/commit-hygiene,ploy/research-image-binaries,ploy/research-image-smoke,ploy/safety-scans,ci/ci-contracts,ploy/workflow-lint' +done + if [[ ${1:-} == --production-scope ]]; then printf 'production dependency scope contracts passed\n' exit 0 diff --git a/docs/research/CEX_IMAGE_BUILD_SCOPE.md b/docs/research/CEX_IMAGE_BUILD_SCOPE.md index 3e99591a9..e986d1357 100644 --- a/docs/research/CEX_IMAGE_BUILD_SCOPE.md +++ b/docs/research/CEX_IMAGE_BUILD_SCOPE.md @@ -33,9 +33,15 @@ See [CAMPAIGN_PREPARATION_REUSE.md](CAMPAIGN_PREPARATION_REUSE.md). The release profile, target, compiler, native environment and workspace inputs remain bound to compilation provenance. Cargo targets stay isolated by owning workspace. The changed recipe list remains part of exact build inputs and artifact validation. -The dependency restore identity hashes compiler scripts separately from the product -catalog. Packaging-only selection changes can reuse compatible dependency bytes. -Changing compiler scripts still isolates the cache; this migration starts a new key. +The dependency restore identity binds the small compiler helper, cache cleanup, +compiler, native environment, flags and owning-workspace profiles. +Cargo metadata resolves DuckDB's version, immutable source, features and dependency +closure. Native closure changes isolate the dependency cache. +Business source, unrelated resolved packages, packaging and smoke scripts remain +outside this identity. Complete recipe provenance still binds those scripts. +This migration starts a new key. Branch CI cannot populate trusted main caches. +The historical main run restored dependencies and marked DuckDB artifacts fresh; +its 13m48s recipe phase does not establish that every main build was cold. Dependency cache reuse does not authenticate executable bytes: builds still produce, hash and smoke-test the complete selected product at the admitted source revision. No research-profile executable is presented as a release artifact. @@ -57,3 +63,13 @@ must not be added together. A draft PR provides no merge-to-ACR measurement. Further separation of preparation, operator and scientific images requires a complete consumer and signed-product protocol change. This patch preserves that boundary. The 10–15 minute small-change target remains unproven until comparable CI measurements exist. + +The existing diagnostic run 38525297670 tested commit +`4e64020efbda664eef46790de8373c4b6c5368aa` on one EPYC 9V45 runner with four CPUs. +Its cold recipe phase took 1481s. Full local reuse took 2s. +After removing local compilation bytes, serial rebuilding took 568s and parallel +rebuilding took 502s. DuckDB artifacts stayed fresh in both dependency-warm phases; +local packages rebuilt and the binary hashes agreed. +These are recipe timings, not full CI or publication timings. +The runner differs from the historical EPYC 7763 baseline. This is not an old/new +code speedup estimate. The dependency identity patch still needs its own CI validation. From 0733963572c52f2d6606dd8eb0e1732b0235aa29 Mon Sep 17 00:00:00 2001 From: Sonic Shih Date: Fri, 16 Oct 2026 08:42:44 +0800 Subject: [PATCH 06/10] perf(ci): reuse identical native metadata resolutions --- .../research-native-dependency-inputs.rb | 11 +++++++--- .github/scripts/test-research-cache-layout.sh | 22 +++++++++++++++++++ docs/research/CEX_IMAGE_BUILD_SCOPE.md | 13 +++++++++++ 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/.github/scripts/research-native-dependency-inputs.rb b/.github/scripts/research-native-dependency-inputs.rb index 5506456b0..81e5cda30 100644 --- a/.github/scripts/research-native-dependency-inputs.rb +++ b/.github/scripts/research-native-dependency-inputs.rb @@ -8,6 +8,9 @@ abort 'root and recipes required' unless root && recipes_file $LOAD_PATH.unshift("#{root}/.github/scripts/vendor/tomlrb/lib") require 'tomlrb' +# Cargo metadata resolves the workspace. Reuse only identical command arguments. +# Keep feature selections separate; never union them across recipe invocations. +resolutions = {} records = JSON.parse(File.read(recipes_file)).flat_map do |recipe| manifest = recipe.fetch('manifest') args = ['cargo', 'metadata', '--manifest-path', "#{root}/rust_hft/#{manifest}", @@ -17,9 +20,11 @@ unless features.empty? args += ['--features', features.split(',').map { |feature| "#{recipe.fetch('package')}/#{feature}" }.join(',')] end - output, status = Open3.capture2(*args, chdir: "#{root}/rust_hft") - abort "native dependency resolution failed: #{manifest}" unless status.success? - metadata = JSON.parse(output) + metadata = resolutions[args] ||= begin + output, status = Open3.capture2(*args, chdir: "#{root}/rust_hft") + abort "native dependency resolution failed: #{manifest}" unless status.success? + JSON.parse(output) + end packages = metadata.fetch('packages').to_h { |package| [package.fetch('id'), package] } nodes = metadata.fetch('resolve').fetch('nodes').to_h { |node| [node.fetch('id'), node] } native_roots = packages.values.select { |package| package.fetch('name') == 'libduckdb-sys' } diff --git a/.github/scripts/test-research-cache-layout.sh b/.github/scripts/test-research-cache-layout.sh index c7c1bd763..b3190eb95 100644 --- a/.github/scripts/test-research-cache-layout.sh +++ b/.github/scripts/test-research-cache-layout.sh @@ -61,6 +61,7 @@ cat >"$work/native-bin/cargo" <<'NATIVE_CARGO' #!/usr/bin/env bash set -euo pipefail [[ $1 == metadata ]] +if [[ -n ${MONDAY_NATIVE_CALLS:-} ]]; then printf '%s\n' "$*" >>"$MONDAY_NATIVE_CALLS"; fi cat "$MONDAY_NATIVE_FIXTURE" NATIVE_CARGO chmod +x "$work/native-bin/cargo" @@ -80,6 +81,27 @@ Dir.glob("#{root}/**/Cargo.lock").each { |path| File.write(path, lock) } NATIVE_LOCKS } native_fixture_locks +# Repeated recipes share resolution only when the full Cargo command is identical. +export MONDAY_NATIVE_CALLS="$work/native-calls" +bash "$compat_repo/.github/scripts/research-release-products.sh" recipes all | jq -s . >"$work/native-recipes.json" +ruby "$compat_repo/.github/scripts/research-native-dependency-inputs.rb" "$compat_repo" "$work/native-recipes.json" >"$work/native-deduplicated.json" +[[ $(wc -l <"$MONDAY_NATIVE_CALLS") -eq 4 ]] +# Running each recipe separately is the prior behavior and identity oracle. +: >"$work/native-separate.jsonl" +while IFS= read -r recipe; do + printf '[%s]\n' "$recipe" >"$work/native-single.json" + ruby "$compat_repo/.github/scripts/research-native-dependency-inputs.rb" "$compat_repo" "$work/native-single.json" >>"$work/native-separate.jsonl" +done < <(jq -c '.[]' "$work/native-recipes.json") +jq -sS '{schema:.[0].schema,closures:([.[].closures[]]|unique)}' "$work/native-separate.jsonl" >"$work/native-expected.json" +jq -S '.closures |= sort' "$work/native-deduplicated.json" >"$work/native-actual.json" +cmp "$work/native-expected.json" "$work/native-actual.json" +# Different package-qualified feature arguments must not share resolution. +jq '[.[0], (.[0] + {features:"extra"}), (.[1] + {features:"extra"}), .[0]]' "$work/native-recipes.json" >"$work/native-features.json" +: >"$MONDAY_NATIVE_CALLS" +ruby "$compat_repo/.github/scripts/research-native-dependency-inputs.rb" "$compat_repo" "$work/native-features.json" >/dev/null +[[ $(wc -l <"$MONDAY_NATIVE_CALLS") -eq 3 ]] +unset MONDAY_NATIVE_CALLS +printf 'PASS: native metadata resolves four distinct commands instead of eight recipes; identity matches separate resolution\n' cp "$compat_repo/rust_hft/research-core/Cargo.lock" "$work/original-fixture-lock" fixture_inputs >"$work/full.json" cp "$work/full.json" "$work/full-before.json" diff --git a/docs/research/CEX_IMAGE_BUILD_SCOPE.md b/docs/research/CEX_IMAGE_BUILD_SCOPE.md index e986d1357..82ec6c82c 100644 --- a/docs/research/CEX_IMAGE_BUILD_SCOPE.md +++ b/docs/research/CEX_IMAGE_BUILD_SCOPE.md @@ -73,3 +73,16 @@ local packages rebuilt and the binary hashes agreed. These are recipe timings, not full CI or publication timings. The runner differs from the historical EPYC 7763 baseline. This is not an old/new code speedup estimate. The dependency identity patch still needs its own CI validation. + +## Native resolution deduplication + +The catalog repeats Cargo metadata requests for recipes with identical workspace and feature arguments. +Resolve each distinct command once per identity capture. Keep package-qualified feature requests separate. +This reduces eight catalog requests to four, before adding the independent publisher request. +Regression tests compare the resulting native identity with separate per-recipe resolution. +The memo exists only inside one process. It cannot reuse metadata after source or lockfile changes. + +This reduces metadata overhead, not Rust compilation. The helper remains part of the compatibility key. +Its first CI execution therefore needs a new cache identity. Only successful main builds save trusted bytes. +A PR rerun cannot establish cross-run warm-cache performance before that identity exists on main. +Do not interpret same-run diagnostic phases as cross-run cache evidence. From 22c909b727c3f7f5e365b304925844e3f14dcf81 Mon Sep 17 00:00:00 2001 From: Sonic Shih Date: Fri, 16 Oct 2026 09:34:52 +0800 Subject: [PATCH 07/10] diagnostics(ci): retain native Cargo fingerprint reasons --- .github/scripts/build-research-recipes.sh | 11 ++++++++++- .github/scripts/test-research-release-products.sh | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/.github/scripts/build-research-recipes.sh b/.github/scripts/build-research-recipes.sh index 406d6c2cd..2e57ec960 100755 --- a/.github/scripts/build-research-recipes.sh +++ b/.github/scripts/build-research-recipes.sh @@ -157,17 +157,26 @@ while IFS= read -r recipe; do package=$(jq -r .package <<<"$recipe") start=$(date +%s) recipe_target=$(bash "$root/.github/scripts/research-cache-layout.sh" target-dir "$(jq -r .manifest <<<"$recipe")") - CARGO_TARGET_DIR="$recipe_target" bash "$root/.github/scripts/compile-research-recipe.sh" "$recipe" "$cargo_jobs" >"$work/$phase-$package.jsonl" + # Cargo emits dirty reasons to stderr; keep stdout as compiler JSON only. + # Logging belongs to orchestration, not the dependency compilation identity. + fingerprint_log="$work/$phase-$package.fingerprint.log" + status=0 + { CARGO_LOG=cargo::core::compiler::fingerprint=info CARGO_TERM_COLOR=never \ + CARGO_TARGET_DIR="$recipe_target" bash "$root/.github/scripts/compile-research-recipe.sh" "$recipe" "$cargo_jobs" \ + >"$work/$phase-$package.jsonl"; } 2>&1 | tee "$fingerprint_log" >&2 || status=$? + (( status == 0 )) || exit "$status" jq -es 'any(.[]; .reason=="compiler-artifact") and any(.[]; .reason=="build-finished" and .success==true)' \ "$work/$phase-$package.jsonl" >/dev/null seconds=$(( $(date +%s) - start )) jq -s -c --arg cache_match "$cache_match" --arg phase "$phase" --arg source "$source_sha" --arg inputs "$inputs_sha" \ --argjson requested_concurrency "${MONDAY_RESEARCH_BUILD_CONCURRENCY:-2}" \ --argjson cargo_jobs "$cargo_jobs" --argjson concurrency "$concurrency" \ + --rawfile diagnostics "$fingerprint_log" \ --argjson runner "$runner_context" --arg recipe_target "$recipe_target" --argjson recipe "$recipe" --argjson seconds "$seconds" \ '{phase:$phase,runner:$runner,recipe_target:$recipe_target,cache_exact_match:$cache_match,source_sha:$source,compilation_inputs_sha256:$inputs,recipe:$recipe,seconds:$seconds, scheduler:{requested_owner_concurrency:$requested_concurrency,owner_concurrency:$concurrency,cargo_jobs:$cargo_jobs}, compiler_artifacts:([.[]|select(.reason=="compiler-artifact")]|length), + native_fingerprint_diagnostics:[$diagnostics|split("\n")[]|select(contains("fingerprint") and contains("libduckdb"))], native_artifacts:[.[]|select(.reason=="compiler-artifact" and (.package_id|contains("libduckdb-sys")))|{package_id,target:.target.name,fresh}], fresh:([.[]|select(.reason=="compiler-artifact" and .fresh==true)]|length), rebuilt:([.[]|select(.reason=="compiler-artifact" and .fresh==false)]|length)}' \ diff --git a/.github/scripts/test-research-release-products.sh b/.github/scripts/test-research-release-products.sh index 734f2d8e6..e2b941422 100755 --- a/.github/scripts/test-research-release-products.sh +++ b/.github/scripts/test-research-release-products.sh @@ -147,6 +147,9 @@ if [[ $1 == metadata ]]; then jq -n --arg root "$PWD" '{packages:[{name:"alpha-harness",manifest_path:($root+"/alpha-harness/Cargo.toml"),targets:[{name:"alpha_harness"}]}]}' exit fi +[[ ${CARGO_LOG:-} == cargo::core::compiler::fingerprint=info ]] +[[ ${CARGO_TERM_COLOR:-} == never ]] +printf ' INFO cargo::core::compiler::fingerprint: fingerprint error for libduckdb-sys: missing fixture fingerprint\n' >&2 printf 'build\n' >>"${MONDAY_TEST_CARGO_BUILD_LOG:?}" [[ ${FAIL_RECIPE:-0} != 1 ]] || exit 37 target='' manifest='' package='' features='' jobs='' binaries=() @@ -222,6 +225,7 @@ jq --argjson count "$(bash "$products" recipes controller | jq -s length)" -es ' and ([.[].phase]|unique)==["after-cache-lookup","dependency-warm-parallel","dependency-warm-serial","warm-local"] and ([.[].compilation_inputs_sha256]|unique|length)==1 and ([.[].build_inputs]|unique|length)==1 + and all(.[]; (.native_fingerprint_diagnostics|length)==1 and (.native_fingerprint_diagnostics[0]|contains("libduckdb-sys"))) and all(.[]; .build_inputs.profile=="release" and .build_inputs.target=="x86_64-unknown-linux-gnu" and .phase_seconds>=0) and all(.[]|select(.phase=="dependency-warm-serial"); .scheduler.requested_owner_concurrency==1 and .scheduler.owner_concurrency==1 and .scheduler.cargo_jobs==8) and all(.[]|select(.phase=="dependency-warm-parallel"); .scheduler.requested_owner_concurrency==2 and .scheduler.owner_concurrency==1 and .scheduler.cargo_jobs==8) From f82a1ad254d6ebf7615f895efc235e4ebf4be796 Mon Sep 17 00:00:00 2001 From: Wild Card <126853606+proerror77@users.noreply.github.com> Date: Thu, 15 Oct 2026 20:39:07 -0700 Subject: [PATCH 08/10] fix(ci): reclaim idle CPUs between research recipes --- .github/scripts/build-research-recipes.sh | 29 +++- .../scripts/test-research-release-products.sh | 47 +++++- docs/research/DUCKDB_CACHE_AUDIT_20261016.md | 150 ++++++++++++++++++ 3 files changed, 221 insertions(+), 5 deletions(-) create mode 100644 docs/research/DUCKDB_CACHE_AUDIT_20261016.md diff --git a/.github/scripts/build-research-recipes.sh b/.github/scripts/build-research-recipes.sh index 2e57ec960..4962b327c 100755 --- a/.github/scripts/build-research-recipes.sh +++ b/.github/scripts/build-research-recipes.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Compile owners concurrently. Keep each owner's recipes and target writes serial. set -euo pipefail -[[ $# == 2 || $# == 5 ]] || exit 2 +[[ $# == 2 || $# == 6 ]] || exit 2 product=${1:?product required} phase=${2:?recipe measurement phase required} [[ $phase == after-cache-lookup || $phase == warm-local || $phase == dependency-warm-serial || $phase == dependency-warm-parallel ]] || exit 2 @@ -58,7 +58,7 @@ if [[ $# == 2 ]]; then trap 'cancel_scheduler 143' TERM # Background execution lets Bash handle a signal sent only to its own PID. # The Ruby supervisor receives that signal and reaps its owned process groups. - ruby -rjson - "$root/.github/scripts/build-research-recipes.sh" "$product" "$phase" "$inputs" "$cpus" "$memory_mib" <<'RUBY' & + ruby -rjson -rtmpdir -rfileutils - "$root/.github/scripts/build-research-recipes.sh" "$product" "$phase" "$inputs" "$cpus" "$memory_mib" <<'RUBY' & script, product, phase, inputs, cpus, memory = ARGV cpus, memory = Integer(cpus), Integer(memory) requested = ENV.fetch('MONDAY_RESEARCH_BUILD_CONCURRENCY', '2') @@ -71,6 +71,8 @@ owners = JSON.parse(File.read(inputs)).fetch('recipes').map { |recipe| recipe.fe concurrency = [Integer(requested), owners.length, budget, [memory / 4096, 1].max].min jobs = budget / concurrency pending, active = owners.dup, {} +lease_root = Dir.mktmpdir('research-recipe-jobs.', ENV.fetch('RUNNER_TEMP')) +leases = {} failed_groups = [] status = 0 interrupted = nil @@ -85,13 +87,25 @@ begin until pending.empty? && active.empty? while !interrupted && active.length < concurrency && !pending.empty? owner = pending.shift - pid = Process.spawn('bash', script, product, phase, owner, jobs.to_s, concurrency.to_s, pgroup: true) + lease = File.join(lease_root, owner.delete_suffix('/Cargo.toml').tr('/', '-') + '.jobs') + File.write(lease, jobs.to_s) + pid = Process.spawn('bash', script, product, phase, owner, jobs.to_s, concurrency.to_s, lease, pgroup: true) active[pid] = owner + leases[pid] = lease end if interrupted status = 128 + Signal.list.fetch(interrupted) break end + # Increase only the final owner's next recipe. No pending or sibling owner + # can claim these CPUs. An in-flight Cargo/cc jobserver keeps its old budget. + if pending.empty? && active.length == 1 + lease = leases.fetch(active.keys.first) + unless File.read(lease) == budget.to_s + File.write(lease + '.next', budget.to_s) + File.rename(lease + '.next', lease) + end + end completed = Process.wait2(-1, Process::WNOHANG) unless completed IO.select([wake_read]) @@ -114,6 +128,7 @@ ensure sleep 0.2 unless groups.empty? groups.each { |pid| Process.kill('KILL', -pid) rescue Errno::ESRCH } groups.each { |pid| Process.wait(pid) rescue Errno::ECHILD } + FileUtils.remove_entry(lease_root) wake_read.close wake_write.close end @@ -147,13 +162,19 @@ RUBY [[ $(sha256sum "$inputs" | awk '{print $1}') == "$inputs_sha" ]] exit "$status" fi -manifest=$3 cargo_jobs=$4 concurrency=$5 +manifest=$3 cargo_jobs=$4 concurrency=$5 lease=$6 [[ $cargo_jobs =~ ^[1-9][0-9]*$ && $concurrency =~ ^[12]$ ]] (( cargo_jobs * concurrency <= cpus )) jq -e --arg manifest "$manifest" 'any(.[]; .manifest==$manifest)' <<<"$recipes" >/dev/null owner=${manifest%/Cargo.toml} timings="$work/$phase-${owner//\//--}.timings.jsonl" while IFS= read -r recipe; do + # The supervisor grants a larger budget only after all other owners exit. + # Read once per recipe; never change Cargo's budget during compilation. + next_jobs=$(cat "$lease") + [[ $next_jobs =~ ^[1-9][0-9]*$ ]] + (( next_jobs >= cargo_jobs && next_jobs <= cpus )) + cargo_jobs=$next_jobs package=$(jq -r .package <<<"$recipe") start=$(date +%s) recipe_target=$(bash "$root/.github/scripts/research-cache-layout.sh" target-dir "$(jq -r .manifest <<<"$recipe")") diff --git a/.github/scripts/test-research-release-products.sh b/.github/scripts/test-research-release-products.sh index e2b941422..725fb747d 100755 --- a/.github/scripts/test-research-release-products.sh +++ b/.github/scripts/test-research-release-products.sh @@ -178,6 +178,17 @@ File.open(file, 'a') { |out| out.flock(File::LOCK_EX); out.puts(JSON.generate(re RUBY } event start + if [[ ${MONDAY_TEST_CARGO_MODE:-} == reclaim && $package == alpha-harness ]]; then + # Hold the slow owner until the supervisor observes both fast owners exit. + # Its current invocation keeps two jobs; only its next recipe may use four. + released=0 + for ((wait_count=0; wait_count<200; wait_count++)); do + leases=("$RUNNER_TEMP"/research-recipe-jobs.*/research-core.jobs) + if [[ ${#leases[@]} == 1 && -f ${leases[0]} && $(cat "${leases[0]}") == 4 ]]; then released=1; break; fi + sleep 0.05 + done + (( released == 1 )) || { echo 'final owner never reclaimed idle CPUs' >&2; exit 95; } + fi if [[ ${MONDAY_TEST_CARGO_MODE:-} == fail-and-cancel || ${MONDAY_TEST_CARGO_MODE:-} == interrupted ]]; then if [[ $package == hft-collector ]]; then ruby -e 'Signal.trap("TERM") {}; File.write(ARGV[0], Process.pid.to_s); sleep 30' "${MONDAY_TEST_COMPILER_PID:?}" & @@ -291,9 +302,41 @@ events.sort_by { |event| event.fetch('at') }.each do |event| end abort 'independent owners never overlapped' unless maximum == 2 && active.empty? RUBY -jq --argjson count "$(bash "$products" recipes all | jq -s length)" -es 'length==$count and all(.[]; .scheduler.owner_concurrency==2 and .scheduler.cargo_jobs==2)' \ +jq --argjson count "$(bash "$products" recipes all | jq -s length)" -es 'length==$count and all(.[]; .scheduler.owner_concurrency==2 and (.scheduler.cargo_jobs==2 or .scheduler.cargo_jobs==4))' \ "$fixture/parallel-output/research-recipe-probe/timings.jsonl" >/dev/null +# Reclaim only after both other owners exit, without changing an in-flight build. +rm -f "$MONDAY_TEST_CARGO_EVENTS" +mkdir -p "$fixture/reclaim-output" +MONDAY_TEST_CARGO_MODE=reclaim PATH="$fixture/bin:$PATH" RUNNER_TEMP="$fixture/reclaim-output" MONDAY_SOURCE_REVISION="$sha" \ + MONDAY_BUILD_INPUTS_FILE="$fixture/all-inputs.json" CARGO_BUILD_JOBS=4 \ + bash "$fixture/.github/scripts/build-research-recipes.sh" all after-cache-lookup >"$work/reclaim.log" +ruby -rjson - "$MONDAY_TEST_CARGO_EVENTS" <<'RUBY' +events = File.readlines(ARGV[0]).map { |line| JSON.parse(line) }.sort_by { |event| event.fetch('at') } +active = {} +reclaimed = false +events.each do |event| + owner = event.fetch('manifest') + if event.fetch('event') == 'start' + abort 'overlapping owner target writes' if active.key?(owner) + if event.fetch('package') == 'alpha-harness' + abort 'in-flight budget changed' unless event.fetch('jobs') == 2 + elsif event.fetch('package') == 'hft-cex-research-worker' + abort 'idle CPUs were not reclaimed' unless event.fetch('jobs') == 4 && active.empty? + reclaimed = true + end + active[owner] = event.fetch('jobs') + else + abort 'completion without owner' unless active.delete(owner) + end + abort 'CPU or owner budget exceeded' unless active.length <= 2 && active.values.sum <= 4 +end +abort 'reclaim evidence incomplete' unless reclaimed && active.empty? +RUBY +jq -es 'any(.[]; .recipe.package=="hft-cex-research-worker" and .scheduler.cargo_jobs==4)' \ + "$fixture/reclaim-output/research-recipe-probe/timings.jsonl" >/dev/null +[[ -z $(find "$fixture/reclaim-output" -name 'research-recipe-jobs.*' -print) ]] + # Low available memory reduces overlap. Explicit serial mode uses the same recipes. printf 'MemAvailable: 4194304 kB\n' >"$MONDAY_TEST_MEMINFO_FILE" for mode in memory serial; do @@ -314,6 +357,7 @@ MONDAY_TEST_CARGO_MODE=fail-and-cancel PATH="$fixture/bin:$PATH" RUNNER_TEMP="$f GITHUB_REPOSITORY=fixture/monday GITHUB_RUN_ID=42 MONDAY_BUILD_INPUTS_FILE="$fixture/all-inputs.json" \ bash "$fixture/.github/scripts/build-research-release.sh" all >"$work/cancel.log" 2>&1 || code=$? [[ $code == 37 && ! -e $fixture/cancel-output/research-image-release.tar ]] +[[ -z $(find "$fixture/cancel-output" -name 'research-recipe-jobs.*' -print) ]] for pid_file in "$MONDAY_TEST_COMPILER_PID" "$MONDAY_TEST_FAILED_COMPILER_PID"; do compiler_pid=$(cat "$pid_file") # PID 1 may retain an exited orphan as a zombie; it cannot execute anymore. @@ -364,6 +408,7 @@ ensure end RUBY [[ ! -e $fixture/interrupted-output/research-image-release.tar ]] +[[ -z $(find "$fixture/interrupted-output" -name 'research-recipe-jobs.*' -print) ]] # Invalid resource requests fail before starting a compiler. for request in cpu concurrency; do diff --git a/docs/research/DUCKDB_CACHE_AUDIT_20261016.md b/docs/research/DUCKDB_CACHE_AUDIT_20261016.md new file mode 100644 index 000000000..738918e78 --- /dev/null +++ b/docs/research/DUCKDB_CACHE_AUDIT_20261016.md @@ -0,0 +1,150 @@ +# DuckDB cache and build budget audit + +Evidence date: 2026-10-16. Times below are durations. GitHub timestamps use UTC. +PR: [#1430](https://github.com/proerror77/monday/pull/1430). +Reviewed branch head: `22c909b727c3f7f5e365b304925844e3f14dcf81`. +This includes the fingerprint diagnostics added after `073396357`. + +## Actual run evidence + +| Run | Source tested | Cache result | Recipe phase | Complete Prediction CI | +| --- | --- | --- | --- | --- | +| [38429350500](https://github.com/proerror77/monday/actions/runs/38429350500) | main `08b98142` | Previous-run cache restored; DuckDB build script and library fresh | 13m48s | 20m51s | +| [38767757268](https://github.com/proerror77/monday/actions/runs/38767757268) | main `7de64784` | Previous-run cache restored; first DuckDB recipe not fresh | 26m17s | 30m14s | +| [38831045248](https://github.com/proerror77/monday/actions/runs/38831045248) | PR merge `0be6aab8`, head `07339635` | Exact and compatible keys absent | 36m30s | 39m35s | +| [38836120877](https://github.com/proerror77/monday/actions/runs/38836120877) | PR merge `70eccba8`, head `22c909b7` | Exact and compatible keys absent | 26m01s | 29m19s | + +The last run used EPYC 9V45 with four CPUs. Its image job took 27m24s. +The build step took 26m04s. The operator recipe took 19m21s. +The scientific worker took 4m49s and marked both DuckDB artifacts fresh. +The offline smoke step took 48s. Steps overlap or nest; do not add their durations. +The preceding PR run used EPYC 7763. These are not controlled speed comparisons. + +## What directly caused the latest native compilation + +Run 38836120877 logged failed reads for all three DuckDB fingerprints: + +```text +target/research-core/x86_64-unknown-linux-gnu/release/.fingerprint/libduckdb-sys-52f9d69926e21174/lib-libduckdb_sys +target/research-core/x86_64-unknown-linux-gnu/release/.fingerprint/libduckdb-sys-bdeb33e435cea0fa/run-build-script-build-script-build +target/research-core/release/.fingerprint/libduckdb-sys-e0e6c3cde5c60cd6/build-script-build-script-build +``` + +The restore log also says `Cache not found`. This directly establishes a cold +target, rather than a dirty fingerprint caused by a dependency update. +Both PR runs requested compatibility identity +`11f7e6516ebdf509e52dba420622288cdae7e4546fb6ffa5ab64c3b01e7adf49`. +The instrumentation-only change preserved that identity. + +Historical main runs used compatibility identity +`875c4a7d72813afb1feadc78bb76e0876d08ac727ec9f1ad648ef51ff634c37c`. +The identity migration intentionally separates those caches. +Successful main builds alone save cleaned dependency bytes. PR runs do not save them. +Therefore repeated PR runs cannot populate the new trusted identity. +Do not broaden writes to untrusted PR contexts to obtain a warm measurement. + +## Build dependencies and real Cargo units + +The downloaded `libduckdb-sys 1.10504.0` registry archive matched the lock checksum: +`94e67523a40ee3da30411e00e243990b3760d91877202ab2f39c03ab34f8dbfc`. +Its manifest unconditionally declares reqwest with blocking and rustls-tls features. +Only the non-bundled source module uses the download client. + +Locked metadata at tested source `70eccba8` contains the dependency chain: + +```text +libduckdb-sys 1.10504.0 build script -> reqwest 0.12.28 -> rustls 0.23.46 +``` + +A read-only Cargo 1.98.1 unit graph confirms a host reqwest/rustls build beneath +the bundled DuckDB build script. This is an actual build dependency, not only +an unused lockfile entry. The graph command used `RUSTC_BOOTSTRAP=1` only for +the diagnostic `-Z unstable-options --unit-graph` operation. It compiled no +production bytes and changed no workflow, lockfile, cache admission or compiler flags. +Production builds continue to use the existing stable Cargo command. + +Security commit `7fbeb700` changes rustls from 0.23.45 to 0.23.46. +That identity change can legitimately invalidate the DuckDB build script and its native outputs. +Run 38767757268 restored the exact cache saved by run 38429350500, then rebuilt DuckDB. +However, it did not retain Cargo dirty reasons. The dependency change supports +this explanation; the historical invalidation reason cannot be recovered from those logs. +Do not claim it was the sole reason. + +A separate three-package Cargo 1.98.1 experiment tested this mechanism. +A bundled C archive had a download build dependency referenced only under the disabled cfg branch. +Cold build: native build script/library fresh=false. Unchanged build: both fresh=true. +Changing only the unused build dependency made both fresh=false and reran the C build. +Cargo reported `StaleDepFingerprint`; the archive hash stayed identical across all three phases. +The consumer executed successfully each time. This is a small mechanism reproduction, +not a DuckDB compilation benchmark or historical-run fingerprint evidence. + +## Conservative boundaries + +The exact suffix binds full provenance. Source and packaging changes can alter it +without preventing compatible dependency restoration. +The compatible prefix binds the compiler, builder digest, native environment, +flags, profiles, compiler helper, cleanup contract and native dependency identities. +Final executable hashes, source admission, ABI checks and offline smoke remain separate. + +There is still excess scope: + +- Native environment capture hashes every installed dpkg package, including packaging tools. +- One combined prefix covers the cached owners. A native change can prevent restoration for all owners. +- Cargo metadata resolves workspace feature unions rather than exact host compilation units. + At `70eccba8`, metadata adds reqwest json, stream, h2 and http2 features. + The DuckDB host reqwest unit uses blocking/rustls without those extra features. + The metadata closure contains 137 package identities; the host build closure contains 113. + The excess includes quinn, h2 and their dependencies. This proves excess key scope, + not an observed cache miss caused by any one of those packages. +- The native identity helper and cache-layout script bytes enter the compiler contract hash. + A semantics-preserving helper edit still migrates the identity. + +These are potential miss amplifiers. They are not dirty reasons for the latest cold run. +Removing rustls from the identity alone would not stop Cargo from rebuilding it. +It would also discard a real build-dependency identity boundary. +This change therefore retains the native key, checksum and feature controls. + +Safe future narrowing needs either an authenticated native artifact boundary or +a reviewed upstream change that makes download dependencies conditional. +The latter must preserve non-bundled behavior and regenerate every owning lockfile. +Exact host-unit projection also needs a supported producer interface and regression evidence. +The diagnostic unstable Cargo interface is not added to production key generation. + +## CPU allocation correction + +The old scheduler assigned two jobs to each owner on a four-CPU runner. +That allocation remained fixed after both faster owners exited. +In run 38831045248, Prediction finished at 00:59:59 UTC. +The research-core owner then ran alone until 01:21:07 UTC with two jobs. +This is 21m08s of nominal two-job capacity left unassigned. +It does not prove the CPUs were physically idle or quantify recoverable time. + +The correction grants the final owner the admitted total budget only after every +sibling exits and the pending owner queue is empty. Each recipe reads its budget +once before Cargo starts. An atomic file replacement prevents partial reads. +Current Cargo/cc jobservers retain their initial allocation. +Therefore this correction does not accelerate an already-running DuckDB build. +It can reclaim CPUs for the following scientific-worker recipe. + +The global CPU budget, memory overlap limit and one writer per owning target remain enforced. +Regression tests exercise a delayed owner, reclaim on its next recipe, total active +jobs, failure cancellation, TERM-ignoring descendants and removal of budget files. +The compiler helper and native compatibility identity remain unchanged. +These tests establish scheduling behavior, not elapsed-time improvement. + +## Remaining 10–15 minute conditions + +1. Obtain a compatible, successful trusted producer cache and verify restoration + in a different run. Do not label same-run reuse as cross-run evidence. +2. Capture dirty reasons on a genuine restored-but-rebuilt case. Distinguish + missing files, build-dependency units, features, compiler/environment and file freshness. +3. Measure the CPU correction on comparable hardware and cache state. It cannot + reclaim CPUs inside an already-running native build. +4. Budget the full critical path: admission, setup, build, archive transfer, smoke + and final CI gate. Historical warm Prediction CI still exceeded 15 minutes. +5. Measure publication separately only under an authorized publication task. + A successful PR CI run does not establish merge-to-registry or production latency. + +Cold native compilation already exceeds the complete target on the measured runners. +The existing 8m22s same-run dependency-warm recipe result is not complete CI. +No measured result here establishes a 10–15 minute full delivery outcome. From 2d803fdd5a766c0839bb181f7a50bea07fa100b3 Mon Sep 17 00:00:00 2001 From: proerror Date: Fri, 16 Oct 2026 19:44:17 +0800 Subject: [PATCH 09/10] Isolate DuckDB download dependencies from bundled builds --- .../scripts/capture-research-build-inputs.sh | 1 + .github/scripts/ci-owner-cache.sh | 17 +- .../scripts/prepare-research-native-source.sh | 22 + .github/scripts/research-cache-layout.sh | 10 +- .github/scripts/select-rust-ci-scope.sh | 2 +- .github/scripts/test-ci-owner-cache.sh | 9 +- .github/scripts/test-duckdb-build-modes.sh | 53 + .github/scripts/test-loop-nextest.sh | 22 +- .github/scripts/test-research-cache-layout.sh | 21 +- .../scripts/test-rust-docker-workspaces.rb | 6 + .github/scripts/test-select-rust-ci-scope.sh | 2 +- .github/workflows/ci.yml | 46 +- docs/research/DUCKDB_CACHE_AUDIT_20261016.md | 35 + rust_hft/data-pipelines/Cargo.lock | 4 - rust_hft/data-pipelines/Cargo.toml | 1 + rust_hft/native/libduckdb-sys/Cargo.toml | 155 + rust_hft/native/libduckdb-sys/LICENSE | 7 + rust_hft/native/libduckdb-sys/MONDAY-PATCH.md | 22 + rust_hft/native/libduckdb-sys/README.md | 342 + rust_hft/native/libduckdb-sys/build.rs | 659 + .../native/libduckdb-sys/build_bundled_cc.rs | 147 + .../libduckdb-sys/build_bundled_cmake.rs | 496 + rust_hft/native/libduckdb-sys/duckdb.tar.gz | Bin 0 -> 6102955 bytes .../native/libduckdb-sys/src/arrow_c_data.rs | 134 + .../src/bindgen_bundled_version.rs | 3579 ++++ .../src/bindgen_bundled_version_loadable.rs | 14117 ++++++++++++++++ rust_hft/native/libduckdb-sys/src/error.rs | 92 + rust_hft/native/libduckdb-sys/src/lib.rs | 212 + rust_hft/native/libduckdb-sys/src/string.rs | 93 + rust_hft/native/libduckdb-sys/wrapper.h | 1 + rust_hft/native/libduckdb-sys/wrapper_ext.h | 6 + rust_hft/research-core/Cargo.lock | 4 - rust_hft/research-core/Cargo.toml | 1 + 33 files changed, 20274 insertions(+), 44 deletions(-) create mode 100755 .github/scripts/prepare-research-native-source.sh create mode 100755 .github/scripts/test-duckdb-build-modes.sh create mode 100644 rust_hft/native/libduckdb-sys/Cargo.toml create mode 100644 rust_hft/native/libduckdb-sys/LICENSE create mode 100644 rust_hft/native/libduckdb-sys/MONDAY-PATCH.md create mode 100644 rust_hft/native/libduckdb-sys/README.md create mode 100644 rust_hft/native/libduckdb-sys/build.rs create mode 100644 rust_hft/native/libduckdb-sys/build_bundled_cc.rs create mode 100644 rust_hft/native/libduckdb-sys/build_bundled_cmake.rs create mode 100644 rust_hft/native/libduckdb-sys/duckdb.tar.gz create mode 100644 rust_hft/native/libduckdb-sys/src/arrow_c_data.rs create mode 100644 rust_hft/native/libduckdb-sys/src/bindgen_bundled_version.rs create mode 100644 rust_hft/native/libduckdb-sys/src/bindgen_bundled_version_loadable.rs create mode 100644 rust_hft/native/libduckdb-sys/src/error.rs create mode 100644 rust_hft/native/libduckdb-sys/src/lib.rs create mode 100644 rust_hft/native/libduckdb-sys/src/string.rs create mode 100644 rust_hft/native/libduckdb-sys/wrapper.h create mode 100644 rust_hft/native/libduckdb-sys/wrapper_ext.h diff --git a/.github/scripts/capture-research-build-inputs.sh b/.github/scripts/capture-research-build-inputs.sh index 1e993c156..3e8696be4 100755 --- a/.github/scripts/capture-research-build-inputs.sh +++ b/.github/scripts/capture-research-build-inputs.sh @@ -4,6 +4,7 @@ set -euo pipefail output=${1:?output JSON required} root=$(cd "$(dirname "$0")/../.." && pwd) +bash "$root/.github/scripts/prepare-research-native-source.sh" work=$(mktemp -d) trap 'rm -rf "$work"' EXIT test "$(uname -s)" = Linux diff --git a/.github/scripts/ci-owner-cache.sh b/.github/scripts/ci-owner-cache.sh index fb1b1d6e8..accf1dd7b 100644 --- a/.github/scripts/ci-owner-cache.sh +++ b/.github/scripts/ci-owner-cache.sh @@ -130,14 +130,18 @@ begin "rust_hft/workspaces.json", ".github/scripts/ci-owner-cache.sh", ".github/scripts/test-rust-workspaces.sh", ".github/scripts/check-collector-test-presence.sh", ".github/workflows/ci.yml", ".github/scripts/select-rust-ci-scope.sh", - "deployment/aliyun/test-polymarket-raw-ops-control-plane.sh"] + "deployment/aliyun/test-polymarket-raw-ops-control-plane.sh", ".github/scripts/prepare-research-native-source.sh"] parser = Dir.glob("#{root}/.github/scripts/vendor/tomlrb/lib/**/*.rb").sort.to_h do |path| [path.delete_prefix("#{root}/"), file_digest(path)] end abort 'missing Cargo TOML parser' if parser.empty? - compatibility = {schema: 'monday.ci-owner-cache-compat.v2', compiler: compiler, target: host, + native_root = "#{root}/rust_hft/native/libduckdb-sys" + native_files = Dir.glob("#{native_root}/**/*", File::FNM_DOTMATCH).select { |path| File.file?(path) }.sort + abort 'native patch contains symlinks' if native_files.any? { |path| File.symlink?(path) } + native_patch = native_files.to_h { |path| [path.delete_prefix(native_root + '/'), file_digest(path)] } + compatibility = {native_patch: native_patch, native_preparation: file_digest("#{root}/.github/scripts/prepare-research-native-source.sh"), schema: 'monday.ci-owner-cache-compat.v3', compiler: compiler, target: host, profile: 'dev-test', native: native, flags: flags, configs: configs, profiles: profiles, owners: admitted, parser: parser} - prefix = "rust_hft-ci-owner-v2-#{digest(compatibility)}-" + prefix = "rust_hft-ci-owner-v3-#{digest(compatibility)}-" exact = {coverage: coverage, manifests: manifests, configs: configs, helpers: helpers.to_h { |path| [path, file_digest("#{root}/#{path}")] }} puts "compat_prefix=#{prefix}" @@ -188,7 +192,8 @@ if [[ $mode == native-input ]]; then CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH PKG_CONFIG PKG_CONFIG_PATH \ PKG_CONFIG_LIBDIR PKG_CONFIG_SYSROOT_DIR BINDGEN_EXTRA_CLANG_ARGS \ OPENSSL_DIR OPENSSL_LIB_DIR OPENSSL_INCLUDE_DIR OPENSSL_STATIC \ - PROTOC PROTOC_INCLUDE CMAKE_TOOLCHAIN_FILE; do + PROTOC PROTOC_INCLUDE CMAKE_TOOLCHAIN_FILE \ + DUCKDB_STATIC DUCKDB_LIB_DIR DUCKDB_INCLUDE_DIR DUCKDB_DOWNLOAD_LIB; do printf '%s=%s\n' "$variable" "${!variable-}" done } >"$work/native" @@ -205,11 +210,11 @@ while IFS= read -r manifest; do --locked --all-features --format-version 1 >>"$work/metadata.jsonl" done <<<"$manifests" jq -se --arg root "$root/" \ - '[.[].packages[]|select(.source == null or (.manifest_path|startswith($root)))|.name,.targets[].name]|unique| + '[.[].packages[]|select((.source == null or (.manifest_path|startswith($root))) and (.manifest_path != ($root+"rust_hft/native/libduckdb-sys/Cargo.toml")))|.name,.targets[].name]|unique| if length>0 then . else error("no repository-local compilation packages") end' \ "$work/metadata.jsonl" >"$work/local-names.json" jq -s --arg root "$root/" \ - '[.[].packages[]|select(.source != null and (.manifest_path|startswith($root)|not))|.name,.targets[].name]|unique' \ + '[.[].packages[]|select((.source != null and (.manifest_path|startswith($root)|not)) or (.name == "libduckdb-sys" and .manifest_path == ($root+"rust_hft/native/libduckdb-sys/Cargo.toml")))|.name,.targets[].name]|unique' \ "$work/metadata.jsonl" >"$work/external-names.json" ruby -rjson -rfileutils - "$root" "$work/local-names.json" "$work/external-names.json" <<'RUBY' root, names_file, external_file = ARGV diff --git a/.github/scripts/prepare-research-native-source.sh b/.github/scripts/prepare-research-native-source.sh new file mode 100755 index 000000000..ac9f02e02 --- /dev/null +++ b/.github/scripts/prepare-research-native-source.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Cache lookup binds all native bytes. Normalize only a fresh CI source tree. +set -euo pipefail +root=$(cd "$(dirname "$0")/../.." && pwd) +[[ ${GITHUB_ACTIONS:-false} == true ]] || exit 0 +cd "$root" +source=rust_hft/native/libduckdb-sys +[[ -z $(git -c safe.directory="$root" status --porcelain --untracked-files=all -- "$source") ]] || { + echo 'native source must be committed and clean in CI' >&2; exit 1; +} +# Never hide an input change from an existing local or restored Cargo target. +for target in rust_hft/target rust_hft/research-core/target rust_hft/data-pipelines/target; do + [[ ! -e $target ]] || { echo "native timestamp preparation must precede target creation: $target" >&2; exit 1; } +done +ruby -ropen3 - "$source" <<'RUBY' +files, status = Open3.capture2('git', '-c', "safe.directory=#{Dir.pwd}", 'ls-files', '-z', '--', ARGV.fetch(0)) +abort 'native source inventory failed' unless status.success? && !files.empty? +files.split("\0").each do |file| + abort 'native source must contain regular files' unless File.file?(file) && !File.symlink?(file) + File.utime(Time.at(946684800), Time.at(946684800), file) +end +RUBY diff --git a/.github/scripts/research-cache-layout.sh b/.github/scripts/research-cache-layout.sh index 8462586b9..4a47f7452 100644 --- a/.github/scripts/research-cache-layout.sh +++ b/.github/scripts/research-cache-layout.sh @@ -43,7 +43,7 @@ case ${1:?command required} in # Exact selected recipes remain in compilation inputs and artifact admission. for script in build-research-release.sh build-research-recipes.sh capture-research-build-inputs.sh research-cache-layout.sh \ research-release-products.sh research-release-source-sha.sh research-workspace-locks.sh \ - verify-research-runtime-abi.sh verify-research-runner-binaries.sh research-native-dependency-inputs.rb compile-research-recipe.sh; do + verify-research-runtime-abi.sh verify-research-runner-binaries.sh research-native-dependency-inputs.rb compile-research-recipe.sh prepare-research-native-source.sh; do cat "$root/.github/scripts/$script" done find "$root/.github/scripts/vendor/tomlrb/lib" -type f -name '*.rb' -print0 | LC_ALL=C sort -z | xargs -0 cat @@ -136,7 +136,7 @@ end RUBY ruby "$root/.github/scripts/research-native-dependency-inputs.rb" "$root" "$work/cache-recipes.json" >"$work/native-dependencies.json" dependency_recipe=$(cat "$root/.github/scripts/compile-research-recipe.sh" "$root/.github/scripts/research-cache-layout.sh" \ - "$root/.github/scripts/research-native-dependency-inputs.rb" | sha256sum | awk '{print $1}') + "$root/.github/scripts/research-native-dependency-inputs.rb" "$root/.github/scripts/prepare-research-native-source.sh" | sha256sum | awk '{print $1}') jq -Se --arg dependency_recipe "$dependency_recipe" --slurpfile native_dependencies "$work/native-dependencies.json" --slurpfile owner_profiles "$work/owner-profiles.json" ' {schema:"monday.dependency-cache-compat.v4",target,profile,compiler,native,flags, builder_image,dependency_recipe:$dependency_recipe,owner_profiles:$owner_profiles[0],native_dependencies:$native_dependencies[0]}' "$work/validated.json" @@ -211,8 +211,10 @@ RUBY fi cargo metadata --manifest-path "$root/rust_hft/$manifest" --locked --format-version 1 "${metadata_args[@]}" >>"$work/local.jsonl" done <<<"$recipes" - jq -s --arg root "$root/" '[.[].packages[]|select(.source == null or (.manifest_path|startswith($root)))|.name, .targets[].name]|unique|if length>0 then . else error("no local compilation packages") end' "$work/local.jsonl" >"$work/names.json" - jq -s --arg root "$root/" '[.[].packages[]|select(.source != null and (.manifest_path|startswith($root)|not))|.name, .targets[].name]|unique' "$work/local.jsonl" >"$work/external.json" + # The reviewed native patch is a dependency. Its complete source enters the + # native compatibility identity; application path packages remain excluded. + jq -s --arg root "$root/" '[.[].packages[]|select((.source == null or (.manifest_path|startswith($root))) and (.manifest_path != ($root+"rust_hft/native/libduckdb-sys/Cargo.toml")))|.name, .targets[].name]|unique|if length>0 then . else error("no local compilation packages") end' "$work/local.jsonl" >"$work/names.json" + jq -s --arg root "$root/" '[.[].packages[]|select((.source != null and (.manifest_path|startswith($root)|not)) or (.name == "libduckdb-sys" and .manifest_path == ($root+"rust_hft/native/libduckdb-sys/Cargo.toml")))|.name, .targets[].name]|unique' "$work/local.jsonl" >"$work/external.json" ruby -rjson -rfileutils - "$root" "$work/names.json" "$work/external.json" "$work/cache-recipes.json" <<'RUBY' root, names_file, external_file, recipes_file = ARGV names = JSON.parse(File.read(names_file)).flat_map { |n| [n, n.tr('-', '_'), "lib#{n.tr('-', '_')}"] }.uniq diff --git a/.github/scripts/select-rust-ci-scope.sh b/.github/scripts/select-rust-ci-scope.sh index 2b4cac07c..222800062 100755 --- a/.github/scripts/select-rust-ci-scope.sh +++ b/.github/scripts/select-rust-ci-scope.sh @@ -660,7 +660,7 @@ for path in "${paths[@]}"; do select_job ploy/workflow-lint continue ;; - .github/scripts/research-release-products.sh|.github/scripts/research-release-products.json|.github/scripts/test-research-release-products.sh|.github/scripts/research-release-bundle.rb|.github/scripts/research-release-source-sha.sh|.github/scripts/test-research-checkout-ownership.sh|.github/scripts/verify-research-runtime-abi.sh|.github/scripts/test-research-runtime-abi.sh|.github/scripts/research-cache-layout.sh|.github/scripts/test-research-cache-layout.sh|.github/scripts/build-research-release.sh|.github/scripts/build-research-recipes.sh|.github/scripts/compile-research-recipe.sh|.github/scripts/research-native-dependency-inputs.rb|.github/scripts/capture-research-build-inputs.sh|.github/scripts/research-image-smoke.sh|.github/scripts/verify-research-product-image.sh|.github/scripts/test-research-product-image.sh|.github/scripts/verify-research-controller-image.sh|.github/scripts/test-research-controller-image.sh|.github/scripts/download-research-release.sh|.github/scripts/test-download-research-release.sh) + rust_hft/native/libduckdb-sys/*|.github/scripts/prepare-research-native-source.sh|.github/scripts/test-duckdb-build-modes.sh|.github/scripts/research-release-products.sh|.github/scripts/research-release-products.json|.github/scripts/test-research-release-products.sh|.github/scripts/research-release-bundle.rb|.github/scripts/research-release-source-sha.sh|.github/scripts/test-research-checkout-ownership.sh|.github/scripts/verify-research-runtime-abi.sh|.github/scripts/test-research-runtime-abi.sh|.github/scripts/research-cache-layout.sh|.github/scripts/test-research-cache-layout.sh|.github/scripts/build-research-release.sh|.github/scripts/build-research-recipes.sh|.github/scripts/compile-research-recipe.sh|.github/scripts/research-native-dependency-inputs.rb|.github/scripts/capture-research-build-inputs.sh|.github/scripts/research-image-smoke.sh|.github/scripts/verify-research-product-image.sh|.github/scripts/test-research-product-image.sh|.github/scripts/verify-research-controller-image.sh|.github/scripts/test-research-controller-image.sh|.github/scripts/download-research-release.sh|.github/scripts/test-download-research-release.sh) select_research_image_jobs select_job ci/ci-contracts select_job ploy/workflow-lint diff --git a/.github/scripts/test-ci-owner-cache.sh b/.github/scripts/test-ci-owner-cache.sh index 35e601690..d2a797a85 100644 --- a/.github/scripts/test-ci-owner-cache.sh +++ b/.github/scripts/test-ci-owner-cache.sh @@ -52,6 +52,8 @@ fi native_before=$(PATH="$work/native-bin:$PATH" bash "$root/.github/scripts/ci-owner-cache.sh" native-input) native_after=$(PATH="$work/native-bin:$PATH" CXXFLAGS=-DFIXTURE_NATIVE_INPUT_CHANGED bash "$root/.github/scripts/ci-owner-cache.sh" native-input) [[ $native_before != "$native_after" ]] +native_duckdb=$(PATH="$work/native-bin:$PATH" DUCKDB_LIB_DIR=/fixture/other-duckdb bash "$root/.github/scripts/ci-owner-cache.sh" native-input) +[[ $native_before != "$native_duckdb" ]] # A narrow first save must not become an exact hit for wider coverage. plan=$(jq -cn '{handoff:"false",json:"false",ondo:"false",collector:"false",control:"false",focused:"true",loop:"false",owning_packages:",,",focused_packages:",hft-live,",loop_packages:""}') coverage() { MONDAY_CI_CACHE_PLAN="$1" bash "$root/.github/scripts/ci-owner-cache.sh" coverage-input; } @@ -98,7 +100,7 @@ if [[ $1 == metadata ]]; then {id:"hft-data",name:"hft-data",manifest_path:($root+"/rust_hft/data-pipelines/core/Cargo.toml"),targets:[{name:"data"}]}] + if $extra then [{id:"vendor",name:"hidden-local",manifest_path:($root+"/vendor/hidden/Cargo.toml"),targets:[{name:"hidden_local"}]}, {id:"outside",name:"external-local",source:null,manifest_path:"/external/path/Cargo.toml",targets:[{name:"external_local"}]}, - {id:"registry",name:"libduckdb-sys",source:"registry+https://github.com/rust-lang/crates.io-index",manifest_path:"/registry/libduckdb/Cargo.toml",targets:[{name:"libduckdb_sys"}]}, + {id:"registry",name:"libduckdb-sys",source:null,manifest_path:($root+"/rust_hft/native/libduckdb-sys/Cargo.toml"),targets:[{name:"libduckdb_sys"}]}, {id:"encoding",name:"data-encoding",source:"registry+https://github.com/rust-lang/crates.io-index",manifest_path:"/registry/data-encoding/Cargo.toml",targets:[{name:"data_encoding"}]}] else [] end)}' else [[ ${FAIL_CARGO:-0} != 1 ]] || exit 19 @@ -312,6 +314,11 @@ Dir.mktmpdir('ci-cache-coverage') do |fixture| _, _, status = Open3.capture3('git', '-C', fixture, 'add', '.') abort 'fixture git add failed' unless status.success? baseline = cache_inputs.call(fixture) + native_file = "#{fixture}/rust_hft/native/libduckdb-sys/build.rs" + FileUtils.mkdir_p(File.dirname(native_file)) + File.write(native_file, 'changed native source fixture') + abort 'native source bytes crossed compatibility boundary' if cache_inputs.call(fixture)['compat_prefix'] == baseline['compat_prefix'] + FileUtils.rm_f(native_file) wide = cache_inputs.call(fixture, plan.merge('focused_packages' => 'hft-live,hft-cex-research-worker')) abort 'coverage changed compatible restore prefix' unless wide['compat_prefix'] == baseline['compat_prefix'] abort 'coverage changed no exact key' if wide['key'] == baseline['key'] diff --git a/.github/scripts/test-duckdb-build-modes.sh b/.github/scripts/test-duckdb-build-modes.sh new file mode 100755 index 000000000..a1a326d5e --- /dev/null +++ b/.github/scripts/test-duckdb-build-modes.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +# Run the patched build script in each mode. Bundled native linking remains in +# the image producer and offline smoke, with their admitted compiler and ABI. +set -euo pipefail +root=$(cd "$(dirname "$0")/../.." && pwd) +work=$(mktemp -d) +trap 'rm -rf "$work"' EXIT +mkdir -p "$work/src" +cat >"$work/Cargo.toml" <"$work/src/main.rs" +# Reuse the admitted dependency versions. Do not resolve a new latest baseline. +cp "$root/rust_hft/research-core/Cargo.lock" "$work/Cargo.lock" +export CARGO_TARGET_DIR="${MONDAY_NATIVE_TEST_TARGET:-$work/target}" +cargo check --manifest-path "$work/Cargo.toml" +if DUCKDB_DOWNLOAD_LIB=1 cargo check --manifest-path "$work/Cargo.toml" >"$work/rejected" 2>&1; then + echo 'download without its feature was accepted' >&2; exit 1 +fi +grep -q 'requires the libduckdb-sys/download feature' "$work/rejected" +# Explicit feature must compile the original downloader. Keep network fetching +# disabled here; the download itself is a separately reported integration check. +cargo check --manifest-path "$work/Cargo.toml" --features download +cargo tree --manifest-path "$work/Cargo.toml" --features bundled --edges build,normal >"$work/bundled-tree" +if grep -Eq 'reqwest|rustls|zip v' "$work/bundled-tree"; then + echo 'bundled native dependency still includes the downloader' >&2; exit 1 +fi +# A fresh CI checkout uses stable mtimes, and refuses to normalize dirty source +# or an existing target. These fixtures do not establish Cargo artifact freshness. +fixture="$work/fixture" +mkdir -p "$fixture/.github/scripts" "$fixture/rust_hft/native/libduckdb-sys" +cp "$root/.github/scripts/prepare-research-native-source.sh" "$fixture/.github/scripts/" +printf 'native fixture' >"$fixture/rust_hft/native/libduckdb-sys/build.rs" +git -C "$fixture" init -q +git -C "$fixture" add . +git -C "$fixture" -c user.name=fixture -c user.email=fixture@example.invalid commit -qm fixture +GITHUB_ACTIONS=true bash "$fixture/.github/scripts/prepare-research-native-source.sh" +ruby -e 'abort "unstable mtime" unless File.mtime(ARGV[0]).to_i == 946684800' "$fixture/rust_hft/native/libduckdb-sys/build.rs" +mkdir -p "$fixture/rust_hft/target/research-core" +if GITHUB_ACTIONS=true bash "$fixture/.github/scripts/prepare-research-native-source.sh"; then exit 1; fi +rmdir "$fixture/rust_hft/target/research-core" +printf 'dirty' >>"$fixture/rust_hft/native/libduckdb-sys/build.rs" +if GITHUB_ACTIONS=true bash "$fixture/.github/scripts/prepare-research-native-source.sh"; then exit 1; fi +printf 'PASS: system and downloader compile, missing feature rejects, bundled graph excludes download dependencies, timestamp guards reject stale/dirty preparation\n' diff --git a/.github/scripts/test-loop-nextest.sh b/.github/scripts/test-loop-nextest.sh index 09719e019..65216dc85 100755 --- a/.github/scripts/test-loop-nextest.sh +++ b/.github/scripts/test-loop-nextest.sh @@ -247,16 +247,18 @@ abort 'loop step still runs cargo test' if loop.fetch('run').include?('cargo-sco abort 'loop step does not wait for shards' unless loop.fetch('run').include?('loop-nextest-wait.sh') archive = jobs.fetch('rust_loop_nextest_archive') abort 'archive must depend only on scope' unless archive.fetch('needs') == 'scope' -cache = archive.fetch('steps').find { |step| step['uses'].to_s.include?('Swatinem/rust-cache@') } -abort 'archive cache key drifted' unless cache && cache.dig('with', 'key') == 'loop-nextest-research-owner-v2-${{ steps.cache-info.outputs.rust }}' -cache_pairs = cache.dig('with', 'workspaces').lines.map(&:strip).reject(&:empty?).map { |line| line.split(/\s*->\s*/) } -abort 'archive cleanup must use only the research owner' unless cache_pairs.length == 1 && cache_pairs[0][0] == 'rust_hft/research-core' -cache_source, cache_target = cache_pairs.fetch(0) -abort 'archive cache target is missing' unless cache_target -target = Pathname.new(cache_source).join(cache_target).cleanpath.to_s -build_target = archive.fetch('env').fetch('CARGO_TARGET_DIR').delete_prefix('${{ github.workspace }}/') -abort 'archive cache does not cover its Cargo target' unless target == build_target -abort 'archive cache save drifted' unless cache.dig('with', 'save-if') == "${{ github.ref == 'refs/heads/main' }}" +archive_steps = archive.fetch('steps') +cache = archive_steps.find { |step| step['uses'].to_s.start_with?('actions/cache/restore@') } +save = archive_steps.find { |step| step['uses'].to_s.start_with?('actions/cache/save@') } +abort 'archive must retain its path native dependency' unless cache && save && archive.dig('env', 'MONDAY_CARGO_TARGET_LAYOUT') == 'owning-workspace-v1' +abort 'archive cache key drifted' unless cache.dig('with', 'key') == 'loop-nextest-${{ steps.cache-info.outputs.key }}' +abort 'archive restore/save identities differ' unless %w[key path].all? { |key| cache.dig('with',key) == save.dig('with',key) } +abort 'archive compatible restore missing' unless cache.dig('with','restore-keys') == 'loop-nextest-${{ steps.cache-info.outputs.compat_prefix }}' +cleanup = archive_steps.index { |step| step['run'].to_s.include?('ci-owner-cache.sh" cleanup') } +abort 'archive cache must clean local application bytes before save' unless cleanup && cleanup < archive_steps.index(save) +abort 'archive cache is not main/success bound' unless save.fetch('if').include?("github.ref == 'refs/heads/main' && success()") +prepare = archive_steps.index { |step| step['run'].to_s.include?('prepare-research-native-source.sh') } +abort 'archive native source preparation must precede restore' unless prepare && prepare < archive_steps.index(cache) shard = jobs.fetch('rust_loop_nextest_shard') abort 'shard must depend only on the archive' unless shard.fetch('needs') == 'rust_loop_nextest_archive' abort 'shard fail-fast must stay off' unless shard.dig('strategy', 'fail-fast') == false diff --git a/.github/scripts/test-research-cache-layout.sh b/.github/scripts/test-research-cache-layout.sh index b3190eb95..9c1aed346 100644 --- a/.github/scripts/test-research-cache-layout.sh +++ b/.github/scripts/test-research-cache-layout.sh @@ -26,7 +26,7 @@ done < <(jq -r '.workspaces[].manifest' "$root/rust_hft/workspaces.json") # Use the real compiler recipe input path, not a fabricated recipe digest. for script in build-research-release.sh build-research-recipes.sh capture-research-build-inputs.sh research-release-products.sh \ research-release-source-sha.sh research-workspace-locks.sh verify-research-runtime-abi.sh \ - verify-research-runner-binaries.sh research-native-dependency-inputs.rb compile-research-recipe.sh; do + verify-research-runner-binaries.sh research-native-dependency-inputs.rb compile-research-recipe.sh prepare-research-native-source.sh; do cp "$root/.github/scripts/$script" "$compat_repo/.github/scripts/" done cp "$root/.github/scripts/research-image-release-artifact.sh" "$compat_repo/.github/scripts/" @@ -156,7 +156,7 @@ for script in build-research-release.sh verify-research-runtime-abi.sh verify-re check_identity_change reuse cp "$root/.github/scripts/$script" "$compat_repo/.github/scripts/" done -for script in compile-research-recipe.sh research-cache-layout.sh; do +for script in compile-research-recipe.sh research-cache-layout.sh prepare-research-native-source.sh; do printf '\n# changed actual compile or cleanup contract\n' >>"$compat_repo/.github/scripts/$script" fixture_inputs >"$work/changed.json" check_identity_change isolate @@ -185,6 +185,21 @@ NATIVE_CHECKSUM bash "$compat_helper" compatibility-inputs "$work/full.json" >"$work/native-checksum.json" [[ $(sha256sum "$work/native-checksum.json" | awk '{print $1}') != "$compat_sha" ]] native_fixture_locks +# A path patch binds native archive and build script bytes, not checkout mtimes. +mkdir -p "$compat_repo/rust_hft/native/libduckdb-sys" +printf 'native archive fixture' >"$compat_repo/rust_hft/native/libduckdb-sys/duckdb.tar.gz" +printf 'native build fixture' >"$compat_repo/rust_hft/native/libduckdb-sys/build.rs" +jq --arg path "$compat_repo/rust_hft/native/libduckdb-sys/Cargo.toml" \ + '.packages[0].source=null | .packages[0].manifest_path=$path' \ + "$work/native-original.json" >"$MONDAY_NATIVE_FIXTURE" +bash "$compat_helper" compatibility-inputs "$work/full.json" >"$work/native-local-before.json" +for file in duckdb.tar.gz build.rs; do + printf 'changed bytes' >>"$compat_repo/rust_hft/native/libduckdb-sys/$file" + bash "$compat_helper" compatibility-inputs "$work/full.json" >"$work/native-local-after.json" + ! cmp -s "$work/native-local-before.json" "$work/native-local-after.json" + cp "$work/native-local-after.json" "$work/native-local-before.json" +done +cp "$work/native-original.json" "$MONDAY_NATIVE_FIXTURE" # Local feature and lock changes remain in complete provenance, not the restore prefix. cp "$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" "$work/leaf-before" printf '[features]\ndefault=["scientific"]\n' >"$compat_repo/rust_hft/alpha-harness/app/Cargo.toml" @@ -381,7 +396,7 @@ jq -n --arg root "$FIXTURE/repo" --argjson extra "$extra" '{packages:([ {name:"hidden-local",manifest_path:($root+"/vendor/hidden-local/Cargo.toml"),targets:[{name:"hidden_local"}]}, {name:"outside-local",source:null,manifest_path:"/external/local/Cargo.toml",targets:[{name:"outside_local"}]}, {name:"data-encoding",source:"registry+https://example.invalid",manifest_path:"/external/registry/data-encoding/Cargo.toml",targets:[{name:"data_encoding"}]}, - {name:"libduckdb-sys",source:"registry+https://example.invalid",manifest_path:"/external/registry/libduckdb-sys/Cargo.toml",targets:[{name:"libduckdb_sys"}]}, + {name:"libduckdb-sys",source:null,manifest_path:($root+"/rust_hft/native/libduckdb-sys/Cargo.toml"),targets:[{name:"libduckdb_sys"}]}, {name:"local-code",source:"registry+https://example.invalid",manifest_path:"/external/registry/local-code/Cargo.toml",targets:[{name:"local_code"}]} ] else [] end)}' MOCK diff --git a/.github/scripts/test-rust-docker-workspaces.rb b/.github/scripts/test-rust-docker-workspaces.rb index f21ab055b..2be89d199 100644 --- a/.github/scripts/test-rust-docker-workspaces.rb +++ b/.github/scripts/test-rust-docker-workspaces.rb @@ -30,6 +30,12 @@ def tracked(pattern) block = block.split(/^\[/, 2)[0] name = block[/^name\s*=\s*"([^"]+)"/, 1] next unless name + # This checksum-documented native dependency is not an application owner. + if relative == 'rust_hft/native/libduckdb-sys/Cargo.toml' + abort 'unexpected native patch package' unless name == 'libduckdb-sys' && + block.match?(/^version\s*=\s*"1\.10504\.0"/) && text.match?(/^\[workspace\]/) + next + end declared = block[/^workspace\s*=\s*"([^"]+)"/, 1] owner = if declared File.expand_path(File.join(declared, 'Cargo.toml'), File.dirname(file)) diff --git a/.github/scripts/test-select-rust-ci-scope.sh b/.github/scripts/test-select-rust-ci-scope.sh index 836f5036c..b72e1db3f 100755 --- a/.github/scripts/test-select-rust-ci-scope.sh +++ b/.github/scripts/test-select-rust-ci-scope.sh @@ -708,7 +708,7 @@ manual_scope=$(run_case production-manual workflow_dispatch dev-input.txt "$prod assert_flag "$manual_scope" research_product cex-runner,controller,prediction-runner assert_flag "$manual_scope" production_trading_image true assert_flag "$manual_scope" production_collector_image true -for helper in compile-research-recipe.sh research-native-dependency-inputs.rb; do +for helper in compile-research-recipe.sh research-native-dependency-inputs.rb prepare-research-native-source.sh test-duckdb-build-modes.sh; do printf '%s\n' ".github/scripts/$helper" >"$tmp_dir/native-compile-helper.txt" native_output=$(run_case native-compile-helper pull_request native-compile-helper.txt) assert_jobs "$native_output" 'ploy/commit-hygiene,ploy/research-image-binaries,ploy/research-image-smoke,ploy/safety-scans,ci/ci-contracts,ploy/workflow-lint' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e4d51a74..9a23c7dd2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -209,6 +209,10 @@ jobs: uses: dtolnay/rust-toolchain@89b12181fb390509a0842a86cc55eeb8eb928c1d # stable with: toolchain: 1.98.1 + - name: Verify DuckDB build modes and source freshness guards + env: + MONDAY_NATIVE_TEST_TARGET: ${{ runner.temp }}/native-mode-target + run: bash .github/scripts/test-duckdb-build-modes.sh - name: Verify selection, cancellation and aggregate admission run: | bash .github/scripts/test-collector-control-scheduling.sh @@ -259,6 +263,7 @@ jobs: CARGO_TERM_COLOR: always CARGO_TARGET_DIR: ${{ github.workspace }}/rust_hft/target CARGO_INCREMENTAL: "0" + MONDAY_CARGO_TARGET_LAYOUT: owning-workspace-v1 CARGO_PROFILE_DEV_DEBUG: "0" CARGO_PROFILE_TEST_DEBUG: "0" steps: @@ -275,21 +280,27 @@ jobs: - name: Install Linux build tools run: bash "$GITHUB_WORKSPACE/.github/workflows/install-ubuntu-packages.sh" clang mold protobuf-compiler ruby + - name: Prepare committed native source before cache restore + run: bash "$GITHUB_WORKSPACE/.github/scripts/prepare-research-native-source.sh" + - name: Record cache dimensions id: cache-info - shell: bash - run: echo "rust=$(rustc -Vv | awk '/^release:/ {print $2}')" >> "$GITHUB_OUTPUT" + env: + MONDAY_CI_CACHE_PLAN: ${{ toJSON(needs.scope.outputs) }} + run: | + native=$(bash "$GITHUB_WORKSPACE/.github/scripts/ci-owner-cache.sh" native-input) + coverage=$(bash "$GITHUB_WORKSPACE/.github/scripts/ci-owner-cache.sh" coverage-input) + export MONDAY_CI_CACHE_NATIVE=${native#native=} + export MONDAY_CI_CACHE_COVERAGE=${coverage#coverage=} + bash "$GITHUB_WORKSPACE/.github/scripts/ci-owner-cache.sh" cache-input >> "$GITHUB_OUTPUT" - name: Cache Rust - uses: Swatinem/rust-cache@6323deb102c322ba6fcbdcafc7e3dddab59af2b6 # v2 + id: owner-cache + uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: - # The archive builds research-core. Cleanup must use that owner's - # dependency graph, including native DuckDB compilation outputs. - workspaces: | - rust_hft/research-core -> ../target - key: loop-nextest-research-owner-v2-${{ steps.cache-info.outputs.rust }} - cache-all-crates: false - save-if: ${{ github.ref == 'refs/heads/main' }} + path: ${{ steps.cache-info.outputs.cache_paths }} + key: loop-nextest-${{ steps.cache-info.outputs.key }} + restore-keys: loop-nextest-${{ steps.cache-info.outputs.compat_prefix }} - name: Install cargo-nextest run: bash "$GITHUB_WORKSPACE/.github/scripts/install-cargo-nextest.sh" @@ -322,6 +333,17 @@ jobs: if-no-files-found: error retention-days: 7 + - name: Retain dependencies for the trusted archive cache + if: success() + run: bash "$GITHUB_WORKSPACE/.github/scripts/ci-owner-cache.sh" cleanup + + - name: Save trusted archive dependencies + if: ${{ github.ref == 'refs/heads/main' && success() && steps.owner-cache.outputs.cache-hit != 'true' }} + uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 + with: + path: ${{ steps.cache-info.outputs.cache_paths }} + key: loop-nextest-${{ steps.cache-info.outputs.key }} + rust_loop_nextest_shard: name: Loop nextest shard (${{ matrix.shard }}) needs: rust_loop_nextest_archive @@ -424,6 +446,10 @@ jobs: if: ${{ (needs.scope.outputs.toolchain == 'true') }} run: bash "$GITHUB_WORKSPACE/.github/workflows/install-ubuntu-packages.sh" clang mold protobuf-compiler + - name: Prepare committed native source before cache restore + if: ${{ needs.scope.outputs.toolchain == 'true' }} + run: bash "$GITHUB_WORKSPACE/.github/scripts/prepare-research-native-source.sh" + - name: Record cache dimensions if: ${{ (needs.scope.outputs.toolchain == 'true') }} id: cache-info diff --git a/docs/research/DUCKDB_CACHE_AUDIT_20261016.md b/docs/research/DUCKDB_CACHE_AUDIT_20261016.md index 738918e78..daa1e9204 100644 --- a/docs/research/DUCKDB_CACHE_AUDIT_20261016.md +++ b/docs/research/DUCKDB_CACHE_AUDIT_20261016.md @@ -148,3 +148,38 @@ These tests establish scheduling behavior, not elapsed-time improvement. Cold native compilation already exceeds the complete target on the measured runners. The existing 8m22s same-run dependency-warm recipe result is not complete CI. No measured result here establishes a 10–15 minute full delivery outcome. + +## Download isolation implementation + +The continuation starts from PR head `f82a1ad2` and merges main `4310dc7e`. +The patch vendors the checksum-verified `libduckdb-sys 1.10504.0` package at +`rust_hft/native/libduckdb-sys`. Its C++ archive and native compiler backends match upstream bytes. Bindings keep +upstream code with one trailing blank line removed. The functional changes affect +only its manifest and downloader cfg gates. +The license and patch provenance remain beside the source. + +Research-core and data-pipelines select this patch. Their lockfiles retain all +other package versions. Bundled and system linking exclude reqwest and zip. +The `download` feature retains the upstream downloader and requires the existing +`DUCKDB_DOWNLOAD_LIB` switch. Requesting a download without that feature fails. +Prediction retains its independently locked upstream `1.10501.0` package. + +Research cache identities hash every native patch file and the resolved native +closure. The dev/test owner cache also binds patch bytes and source preparation. +Both cleaners retain this exact native path while deleting application artifacts. +Loop nextest uses the same owner-cache contract, with its own namespace. This +avoids Swatinem removing the newly local native dependency before a trusted save. +PR jobs still cannot save trusted dependency caches. + +Fresh CI checkouts normalize native source mtimes before any target restore. +Preparation rejects dirty source or existing owning targets. Local builds retain +actual mtimes. This handles local-path freshness without hiding changed source +bytes from the compatibility identity. Native library ABI, flags, compiler, +profiles, artifact hashing and offline smoke remain enforced. + +Focused checks cover system/downloader compilation, rejection without the +feature, bundled dependency exclusion, source-byte cache invalidation, cleanup +retention and source timestamp guards. Actual macOS integration checks use +`SELECT 42` with the explicit downloader and system linking. The bundled native +build and complete existing CI are reported separately; fixture and dependency +graph checks do not establish a 10–15 minute full pipeline. diff --git a/rust_hft/data-pipelines/Cargo.lock b/rust_hft/data-pipelines/Cargo.lock index 01b473709..568a96fb2 100644 --- a/rust_hft/data-pipelines/Cargo.lock +++ b/rust_hft/data-pipelines/Cargo.lock @@ -4014,18 +4014,14 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libduckdb-sys" version = "1.10504.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e67523a40ee3da30411e00e243990b3760d91877202ab2f39c03ab34f8dbfc" dependencies = [ "cc", "flate2", "pkg-config", - "reqwest 0.12.28", "serde", "serde_json", "tar", "vcpkg", - "zip", ] [[package]] diff --git a/rust_hft/data-pipelines/Cargo.toml b/rust_hft/data-pipelines/Cargo.toml index 62c0a01e3..3ef23c4f3 100644 --- a/rust_hft/data-pipelines/Cargo.toml +++ b/rust_hft/data-pipelines/Cargo.toml @@ -57,4 +57,5 @@ codegen-units = 1 debug = false [patch.crates-io] +libduckdb-sys = { path = "../native/libduckdb-sys" } rust_decimal = { git = "https://github.com/proerror77/monday-rust-decimal-security-694", rev = "4f7bc6f02d7920b6416988914ae86d25f6670b22" } diff --git a/rust_hft/native/libduckdb-sys/Cargo.toml b/rust_hft/native/libduckdb-sys/Cargo.toml new file mode 100644 index 000000000..44abbe03f --- /dev/null +++ b/rust_hft/native/libduckdb-sys/Cargo.toml @@ -0,0 +1,155 @@ +# THIS FILE IS AUTOMATICALLY GENERATED BY CARGO +# +# When uploading crates to the registry Cargo will automatically +# "normalize" Cargo.toml files for maximal compatibility +# with all versions of Cargo and also rewrite `path` dependencies +# to registry (e.g., crates.io) dependencies. +# +# If you are reading this file be aware that the original Cargo.toml +# will likely look very different (and much more reasonable). +# See Cargo.toml.orig for the original contents. + +[package] +edition = "2024" +rust-version = "1.85.1" +name = "libduckdb-sys" +version = "1.10504.0" +authors = [ + "DuckDB Labs and contributors", + "wangfenjin ", +] +build = "build.rs" +links = "duckdb" +exclude = ["duckdb-sources"] +autolib = false +autobins = false +autoexamples = false +autotests = false +autobenches = false +description = "Native bindings to the libduckdb library, C API" +homepage = "https://github.com/duckdb/duckdb-rs" +readme = "README.md" +keywords = [ + "duckdb", + "database", + "ffi", +] +categories = [ + "external-ffi-bindings", + "database", +] +license = "MIT" +repository = "https://github.com/duckdb/duckdb-rs" + +[workspace] + +[features] +download = ["dep:reqwest", "dep:zip"] +autocomplete = ["bundled-cmake"] +buildtime_bindgen = [ + "bindgen", + "pkg-config", + "vcpkg", +] +bundled = ["cc"] +bundled-cmake = [ + "bundled", + "dep:cmake", + "dep:which", + "parquet", +] +default = [ + "vcpkg", + "pkg-config", +] +extensions-full = [ + "json", + "parquet", +] +icu = ["bundled-cmake"] +json = ["bundled"] +loadable-extension = [ + "prettyplease", + "quote", + "syn", +] +parquet = ["bundled"] +tpcds = ["bundled-cmake"] +tpch = ["bundled-cmake"] +winduckdb = [] + +[lib] +name = "libduckdb_sys" +path = "src/lib.rs" + +[dev-dependencies.arrow] +version = "58" +features = ["ffi"] +default-features = false + +[build-dependencies.bindgen] +version = "0.72.1" +features = ["runtime"] +optional = true +default-features = false + +[build-dependencies.cc] +version = "1.0" +features = ["parallel"] +optional = true + +[build-dependencies.cmake] +version = "0.1" +optional = true + +[build-dependencies.flate2] +version = "1.0" + +[build-dependencies.pkg-config] +version = "0.3.24" +optional = true + +[build-dependencies.prettyplease] +version = "0.2.20" +optional = true + +[build-dependencies.quote] +version = "1.0.21" +optional = true + +[build-dependencies.reqwest] +optional = true +version = "0.12" +features = [ + "blocking", + "rustls-tls", +] +default-features = false + +[build-dependencies.serde] +version = "1.0" +features = ["derive"] + +[build-dependencies.serde_json] +version = "1.0" + +[build-dependencies.syn] +version = "2.0.15" +optional = true + +[build-dependencies.tar] +version = "0.4.38" + +[build-dependencies.vcpkg] +version = "0.2" +optional = true + +[build-dependencies.which] +version = "8" +optional = true + +[build-dependencies.zip] +optional = true +version = "6" +features = ["deflate"] +default-features = false diff --git a/rust_hft/native/libduckdb-sys/LICENSE b/rust_hft/native/libduckdb-sys/LICENSE new file mode 100644 index 000000000..ccccdf5f0 --- /dev/null +++ b/rust_hft/native/libduckdb-sys/LICENSE @@ -0,0 +1,7 @@ +Copyright 2021-2026 Stichting DuckDB Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/rust_hft/native/libduckdb-sys/MONDAY-PATCH.md b/rust_hft/native/libduckdb-sys/MONDAY-PATCH.md new file mode 100644 index 000000000..118d47b76 --- /dev/null +++ b/rust_hft/native/libduckdb-sys/MONDAY-PATCH.md @@ -0,0 +1,22 @@ +# Monday download dependency isolation + +Upstream: `libduckdb-sys 1.10504.0`, MIT, from crates.io. +Registry archive SHA-256: +`94e67523a40ee3da30411e00e243990b3760d91877202ab2f39c03ab34f8dbfc`. + +The native source archive and compiler backends are unchanged. +Bindings retain upstream code; one generated file loses a trailing blank line. +`download` explicitly enables reqwest and zip. System linking and bundled +compilation do not compile these dependencies. Set both the feature and +`DUCKDB_DOWNLOAD_LIB=1` to use the original upstream downloader. Without the +feature, that environment variable fails with an actionable error. +Bundled mode retains precedence over the download environment variable. + +The owning research-core and data-pipelines manifests select this patch. +Prediction keeps its distinct locked upstream version. +The native cache identity binds every patch file, features, dependency checksums, +compiler, ABI, flags and profiles. Only this exact native path is retained during +cache cleanup. Application path dependencies are still removed. +Fresh CI checkouts normalize committed native source timestamps before cache +lookup. Complete source hashes isolate changed bytes. Preparation rejects dirty +source and existing owning targets. Local builds retain actual timestamps. diff --git a/rust_hft/native/libduckdb-sys/README.md b/rust_hft/native/libduckdb-sys/README.md new file mode 100644 index 000000000..020d7d093 --- /dev/null +++ b/rust_hft/native/libduckdb-sys/README.md @@ -0,0 +1,342 @@ +# duckdb-rs + +[![Latest Version](https://img.shields.io/crates/v/duckdb.svg)](https://crates.io/crates/duckdb) +[![Documentation](https://img.shields.io/badge/docs.rs-duckdb-orange)](https://docs.rs/duckdb) +[![MIT License](https://img.shields.io/crates/l/duckdb.svg)](LICENSE) +[![Downloads](https://img.shields.io/crates/d/duckdb.svg)](https://crates.io/crates/duckdb) +[![CI](https://github.com/duckdb/duckdb-rs/workflows/CI/badge.svg)](https://github.com/duckdb/duckdb-rs/actions) + +duckdb-rs is an ergonomic Rust wrapper for [DuckDB](https://github.com/duckdb/duckdb). + +You can use it to: + +- Query DuckDB with type-safe bindings and an API inspired by [rusqlite](https://github.com/rusqlite/rusqlite). +- Read and write Arrow, Parquet, JSON, and CSV formats natively. +- Create DuckDB extensions in Rust with custom scalar and table functions. + +## Quickstart + +Create a new project and add the `duckdb` crate: + +```shell +cargo new quack-in-rust +cd quack-in-rust +cargo add duckdb -F bundled +``` + +Update `src/main.rs` with the following code: + +```rust +use duckdb::{params, Connection, Result}; + +struct Duck { + id: i32, + name: String, +} + +fn main() -> Result<()> { + let conn = Connection::open_in_memory()?; + + conn.execute( + "CREATE TABLE ducks (id INTEGER PRIMARY KEY, name TEXT)", + [], // empty list of parameters + )?; + + conn.execute_batch( + r#" + INSERT INTO ducks (id, name) VALUES (1, 'Donald Duck'); + INSERT INTO ducks (id, name) VALUES (2, 'Scrooge McDuck'); + "#, + )?; + + conn.execute( + "INSERT INTO ducks (id, name) VALUES (?, ?)", + params![3, "Darkwing Duck"], + )?; + + let ducks = conn + .prepare("FROM ducks")? + .query_map([], |row| { + Ok(Duck { + id: row.get(0)?, + name: row.get(1)?, + }) + })? + .collect::>>()?; + + for duck in ducks { + println!("{}) {}", duck.id, duck.name); + } + + Ok(()) +} +``` + +Execute the program with `cargo run` and watch DuckDB in action! + +## Examples + +The following [examples](crates/duckdb/examples) demonstrate various features and use cases of duckdb-rs: + +- **basic** - Basic usage including creating tables, inserting data, and querying with and without Arrow. +- **appender** - Bulk data insertion using the appender API with transactions. +- **parquet** - Reading Parquet files directly using DuckDB's Parquet extension. +- **vscalar** - Defining and registering a custom scalar function (requires the `vscalar` feature). +- **vtab** - Defining a custom table function returning primitive, LIST, and STRUCT columns (requires the `vtab` feature). +- **repl** - Interactive SQL REPL. +- **hello-ext** - A DuckDB extension written in Rust (see [Building and loading extensions](#building-and-loading-extensions)). + +Run any example with `cargo run --example `. + +## Feature flags + +The `duckdb` crate provides a number of Cargo features that can be enabled to add functionality: + +### Virtual tables and functions + +- `vtab` - Base support for creating custom table functions and virtual tables. +- `vtab-arrow` - Apache Arrow integration for virtual tables. Enables conversion between Arrow RecordBatch and DuckDB data chunks. +- `vtab-excel` - Deprecated no-op retained for feature compatibility. +- `vscalar` - Create custom scalar functions that operate on individual values or rows. +- `vscalar-arrow` - Arrow-optimized scalar functions for vectorized operations. + +### File formats + +- `json` - Enables reading and writing JSON files. Implies `bundled`. +- `parquet` - Enables reading and writing Parquet files. Implies `bundled`. + +### Bundled DuckDB extensions + +These extensions are only available through the CMake build backend and imply `bundled-cmake`. + +- `autocomplete` - DuckDB's autocomplete extension. +- `icu` - DuckDB's ICU extension for locale-aware operations. +- `tpch` - DuckDB's TPC-H benchmark extension. +- `tpcds` - DuckDB's TPC-DS benchmark extension. + +### Data integration + +- `appender-arrow` - Efficient bulk insertion of Arrow data into DuckDB tables. +- `polars` - Integration with Polars DataFrames. + +### Convenience features + +- `vtab-full` - Enables virtual table features: `vtab-arrow` and `appender-arrow`; retains the deprecated `vtab-excel` compatibility flag. +- `extensions-full` - Enables all major extensions: `json`, `parquet`, and `vtab-full`. +- `modern-full` - Enables modern Rust ecosystem integrations: `chrono`, `serde_json`, `url`, `r2d2`, `uuid`, and `polars`. + +### Build configuration + +- `bundled` - Uses a bundled version of DuckDB's source code and compiles it during build. This is the simplest way to get started and avoids needing DuckDB system libraries. +- `bundled-cmake` - _Experimental_. Builds DuckDB via its upstream CMake build system instead of `cc`. Requires a duckdb-rs checkout (not available from crates.io). See [step 2](#notes-on-building-duckdb-and-libduckdb-sys) below for details. +- `buildtime_bindgen` - Use bindgen at build time to generate fresh bindings instead of using pre-generated ones. +- `loadable-extension` - _Experimental_ support for creating loadable DuckDB extensions. Includes procedural macros for extension development. Only enable this when building an extension, never for a client application - see [Database client or extension?](#database-client-or-extension) + +## Installation + +### Versioning + +Starting with DuckDB `v1.5.0`, the duckdb-rs version encodes the DuckDB version in its second semver component. +The format is `1.MAJOR_MINOR_PATCH.x`, e.g., DuckDB `v1.5.0` maps to duckdb-rs `1.10500.x`. +Use a tilde requirement to receive duckdb-rs patch releases without automatically moving to a different bundled DuckDB version. + +### Using stable releases from crates.io + +The recommended way to use duckdb-rs is to add it from crates.io: + +```shell +cargo add duckdb -F bundled +``` + +Or manually add it to your `Cargo.toml`: + +```toml +[dependencies] +duckdb = { version = "~1.10504.0", features = ["bundled"] } +``` + +### Using the development version from git + +To use the latest development version from the main branch, you can specify a git dependency in your `Cargo.toml`: + +```toml +# Use a specific branch +duckdb = { git = "https://github.com/duckdb/duckdb-rs", branch = "main", features = ["bundled"] } + +# Use a specific commit +duckdb = { git = "https://github.com/duckdb/duckdb-rs", rev = "abc123def", features = ["bundled"] } +``` + +Note: Using the main branch of duckdb-rs means you'll get the latest Rust bindings and features, but you'll still be using whatever version of DuckDB core is bundled with that commit (when using the `bundled` feature). + +## Notes on building duckdb and libduckdb-sys + +`libduckdb-sys` is a separate crate from `duckdb-rs` that provides the Rust +declarations for DuckDB's C API. By default, `libduckdb-sys` attempts to find a DuckDB library that already exists on your system using pkg-config, or a +[Vcpkg](https://github.com/Microsoft/vcpkg) installation for MSVC ABI builds. + +You can adjust this behavior in a number of ways: + +1. If you use the `bundled` feature, `libduckdb-sys` will use the + [cc](https://crates.io/crates/cc) crate to compile DuckDB from source and + link against that. This source is embedded in the `libduckdb-sys` crate and + tracks the DuckDB version vendored for that duckdb-rs release. + This is probably the simplest solution to any build problems. You can enable this by adding the following in your `Cargo.toml` file: + + ```bash + cargo add duckdb --features bundled + ``` + + `Cargo.toml` will be updated. + + ```toml + [dependencies] + duckdb = { version = "~1.10504.0", features = ["bundled"] } + ``` + +2. If you use the `bundled-cmake` feature, `libduckdb-sys` will build DuckDB from the local checkout in `crates/libduckdb-sys/duckdb-sources` using upstream CMake. This keeps plain `bundled` unchanged while allowing CMake-only extensions such as `icu`. + + Example: + + ```toml + [dependencies] + duckdb = { git = "https://github.com/duckdb/duckdb-rs", branch = "main", features = ["bundled-cmake", "icu"] } + ``` + + Notes: + - `bundled-cmake` is _experimental_ and requires a git/workspace checkout. Published crates omit the full `duckdb-sources` tree. + - It implies `bundled` for conditional-compilation gates, but uses CMake instead of the `cc` backend. Any CMake-only extension feature (e.g. `icu`) enables it automatically. + - It always links DuckDB's default static extensions (`core_functions` and `parquet`) and therefore implies the `parquet` Cargo feature. + - Plain `bundled` uses DuckDB's standard allocator and skips jemalloc. `bundled-cmake` enables upstream jemalloc on supported 64-bit, non-musl Linux targets. Other targets follow DuckDB's CMake checks. Set `DUCKDB_DISABLE_JEMALLOC=1` to force the standard allocator. + - Extension autoload/autoinstall are enabled to match `bundled`, despite upstream CMake defaults. Set `DUCKDB_DISABLE_EXTENSION_LOAD=1` or `DISABLE_EXTENSION_LOAD=1` to disable external extension install/load support and force autoload/autoinstall off. Statically linked extensions remain available. + - If `ninja` is on `PATH`, the build uses Ninja by default. Set `CMAKE_GENERATOR` to override. + - DuckDB builds in `Release` mode by default, even for Rust debug builds, avoiding DuckDB's much slower debug/sanitizer profile. Override with `DUCKDB_CMAKE_BUILD_TYPE` or `CMAKE_BUILD_TYPE`. `DUCKDB_CMAKE_BUILD_TYPE` takes precedence. + - `DUCKDB_EXTENSION_CONFIGS` is unsupported. Setting it fails fast. + - Use `cargo build -vv -F bundled-cmake` for CMake configure/build logs. + +3. When linking against a DuckDB library already on the system (so _not_ using any of the `bundled` features), you can set the `DUCKDB_LIB_DIR` environment variable to point to a directory containing the library. You can also set the `DUCKDB_INCLUDE_DIR` variable to point to the directory containing `duckdb.h`. + + Linux example: + + ```shell + wget https://github.com/duckdb/duckdb/releases/download/v1.5.4/libduckdb-linux-arm64.zip + unzip libduckdb-linux-arm64.zip -d libduckdb + + export DUCKDB_LIB_DIR=$PWD/libduckdb + export DUCKDB_INCLUDE_DIR=$DUCKDB_LIB_DIR + export LD_LIBRARY_PATH=$DUCKDB_LIB_DIR + + cargo build --examples + ``` + + macOS example: + + ```shell + wget https://github.com/duckdb/duckdb/releases/download/v1.5.4/libduckdb-osx-universal.zip + unzip libduckdb-osx-universal.zip -d libduckdb + + export DUCKDB_LIB_DIR=$PWD/libduckdb + export DUCKDB_INCLUDE_DIR=$DUCKDB_LIB_DIR + export DYLD_FALLBACK_LIBRARY_PATH=$DUCKDB_LIB_DIR + + cargo build --examples + ``` + +4. Setting `DUCKDB_DOWNLOAD_LIB=1` makes the build script download pre-built DuckDB binaries from GitHub Releases. This always links against the dynamic library in the archive (setting `DUCKDB_STATIC` has no effect), and it effectively automates the manual steps above. The archives are cached in `target/duckdb-download//` and that directory is automatically added to the linker search path. The downloaded version always matches the DuckDB version encoded in the `libduckdb-sys` crate version. + + ```shell + DUCKDB_DOWNLOAD_LIB=1 cargo test + ``` + +5. Installing the DuckDB development packages will usually be all that is required, but + the build helpers for [pkg-config](https://github.com/alexcrichton/pkg-config-rs) + and [vcpkg](https://github.com/mcgoo/vcpkg-rs) have some additional configuration + options. The default when using vcpkg is to dynamically link, + which must be enabled by setting `VCPKGRS_DYNAMIC=1` environment variable before build. + +When none of the options above are used, the build script falls back to this discovery path and will emit the appropriate `cargo:rustc-link-lib` directives if DuckDB is found on your system. + +Cross-compiling with `bundled` is best-effort (not covered by CI): it compiles DuckDB from C++ source and so needs a working C++ cross-compiler for the target, not just the Rust toolchain. If you can't get one working, prefer one of the non-`bundled` options above (e.g. `DUCKDB_LIB_DIR` or `DUCKDB_DOWNLOAD_LIB=1`) and link a pre-built library for the target instead. + +### ICU extension and the bundled features + +When using the `bundled` feature, the ICU extension is not included due to crates.io's 10MB package size limit. This means some date/time operations (like `now() - interval '1 day'` or `ts::date` casts) will fail. You can load ICU at runtime: + +```rust,ignore +conn.execute_batch("INSTALL icu; LOAD icu;")?; +``` + +Alternatively, link against a system libduckdb that was compiled with ICU (see build instructions above). + +If you are working from a duckdb-rs checkout, you can also use `bundled-cmake,icu` to compile ICU in through DuckDB's CMake build. + +### Binding generation + +We use [bindgen](https://crates.io/crates/bindgen) to generate the Rust +declarations from DuckDB's C header file. `bindgen` +[recommends](https://github.com/servo/rust-bindgen#library-usage-with-buildrs) +running this as part of the build process for libraries that use it. We tried +this briefly (`duckdb` 0.10.0, specifically), but it had some annoyances: + +- The build time for `libduckdb-sys` (and therefore `duckdb`) increased + dramatically. +- Running `bindgen` requires a relatively recent version of Clang, which many + systems do not have installed by default. +- Running `bindgen` also requires the DuckDB header file to be present. + +So we try to avoid running `bindgen` at build time by shipping +pregenerated bindings for DuckDB. + +If you use the `bundled` feature, you will get pregenerated bindings for the +bundled version of DuckDB. If you want to run `bindgen` at build time to +produce your own bindings, use the `buildtime_bindgen` Cargo feature. + +## Thread safety + +A `Connection` is `Send` but not `Sync`: you may move it between threads, but you cannot share a single connection across threads at the same time. DuckDB does support concurrent access through _multiple_ connections to the same database (see [DuckDB's concurrency docs](https://duckdb.org/docs/current/connect/concurrency). + +For multi-threaded applications, give each thread its own connection. The simplest way is a connection pool via the `r2d2` feature: + +```rust,ignore +use duckdb::{DuckdbConnectionManager, params}; + +let manager = DuckdbConnectionManager::file("file.db")?; +let pool = r2d2::Pool::new(manager)?; + +// Each worker checks out its own connection from the pool. +let conn = pool.get()?; +conn.execute("INSERT INTO foo (bar) VALUES (?)", params![1])?; +``` + +## Database client or extension? + +duckdb-rs covers two distinct use cases, and you normally pick exactly one: + +- **As a database client** (most common): embed DuckDB in your Rust application to run queries, as shown in the [Quickstart](#quickstart). +- **For writing DuckDB extensions**: build a loadable `.duckdb_extension` that DuckDB loads at runtime. Enable the `loadable-extension` feature. + +Do **not** enable `loadable-extension` for a regular client application. It replaces DuckDB's normal C API functions with extension wrappers that are only initialized when DuckDB loads your extension. Outside an extension context, calls such as `Connection::open_in_memory()` then panic with `DuckDB API not initialized or DuckDB feature omitted`. + +## Building and loading extensions + +The [`hello-ext`](crates/duckdb/examples/hello-ext) example shows the extension API in action: it registers a `hello(name)` table function via the `loadable-extension` feature and the `duckdb_entrypoint_c_api` macro. + +`cargo build` alone does **not** produce a loadable extension though. DuckDB only loads files ending in `.duckdb_extension` that carry a metadata footer matching the target DuckDB version. A bare shared library fails with _The file is not a DuckDB extension. The metadata at the end of the file is invalid_. Appending that footer requires DuckDB's extension build tooling. + +So rather than wiring this up by hand, start from the official [extension-template-rs](https://github.com/duckdb/extension-template-rs) template for a complete, ready-to-build Rust extension. It handles the metadata step, platform/version detection, tests, and CI. Its `make debug` builds the shared library and then appends the footer, producing a `.duckdb_extension` you load with `duckdb -unsigned`. + +## Rust version compatibility + +duckdb-rs is built and tested with stable Rust, and keeps a rolling MSRV (minimum supported Rust version) that may only be updated when the encoded DuckDB major/minor version changes, on a need basis (e.g. project dependencies bump their MSRV or a particular Rust feature is useful for us). The new MSRV will be at least 6 months old. DuckDB patch updates and crate patch releases (e.g. `1.10500.0` to `1.10500.1`) are guaranteed to keep the same MSRV. + +## Contributing + +We welcome contributions! Take a look at [CONTRIBUTING.md](CONTRIBUTING.md) for more information. + +Join our [Discord](https://discord.gg/tcvwpjfnZx) to chat with the community in the #rust channel. + +## License + +Copyright (c) Stichting DuckDB Foundation + +Licensed under the [MIT license](LICENSE). diff --git a/rust_hft/native/libduckdb-sys/build.rs b/rust_hft/native/libduckdb-sys/build.rs new file mode 100644 index 000000000..325fe8a13 --- /dev/null +++ b/rust_hft/native/libduckdb-sys/build.rs @@ -0,0 +1,659 @@ +use std::{ + env, + path::{Path, PathBuf}, +}; + +/// Tells whether we're building for Windows. This is more suitable than a plain +/// `cfg!(windows)`, since the latter does not properly handle cross-compilation +/// +/// Note that there is no way to know at compile-time which system we'll be +/// targeting, and this test must be made at run-time (of the build script) See +/// https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-build-scripts +fn win_target() -> bool { + std::env::var("CARGO_CFG_WINDOWS").is_ok() +} + +/// Tells whether a given compiler will be used `compiler_name` is compared to +/// the content of `CARGO_CFG_TARGET_ENV` (and is always lowercase) +/// +/// See [`win_target`] +fn is_compiler(compiler_name: &str) -> bool { + std::env::var("CARGO_CFG_TARGET_ENV").is_ok_and(|v| v == compiler_name) +} + +fn main() { + let out_dir = env::var("OUT_DIR").unwrap(); + let out_path = Path::new(&out_dir).join("bindgen.rs"); + #[cfg(feature = "bundled")] + build_bundled_backend::main(&out_dir, &out_path); + #[cfg(not(feature = "bundled"))] + build_linked::main(&out_dir, &out_path) +} + +#[cfg(all(feature = "bundled", not(feature = "bundled-cmake")))] +mod build_bundled_cc; +#[cfg(all(feature = "bundled", feature = "bundled-cmake"))] +mod build_bundled_cmake; + +#[cfg(all(feature = "bundled", not(feature = "bundled-cmake")))] +use crate::build_bundled_cc as build_bundled_backend; +#[cfg(all(feature = "bundled", feature = "bundled-cmake"))] +use crate::build_bundled_cmake as build_bundled_backend; + +#[cfg(feature = "bundled")] +pub(crate) fn write_bindings(header_dir: &Path, out_path: &Path) { + #[cfg(feature = "buildtime_bindgen")] + { + use crate::{HeaderLocation, bindings}; + let header = HeaderLocation::IncludeDir(header_dir.to_path_buf()); + bindings::write_to_out_dir(header, out_path); + } + + #[cfg(not(feature = "buildtime_bindgen"))] + { + let _ = header_dir; + copy_pregenerated_bindings(out_path); + } +} + +/// Link the Windows system libraries DuckDB needs but that neither `cc` nor a +/// static CMake link adds automatically. Mirrors DuckDB's `DUCKDB_SYSTEM_LIBS` +/// (duckdb-sources/src/CMakeLists.txt) — keep in sync on submodule bumps. +/// Callers apply their own `win_target()` gate. +#[cfg(feature = "bundled")] +pub(crate) fn link_windows_system_libs() { + println!("cargo:rustc-link-lib=dylib=ws2_32"); + println!("cargo:rustc-link-lib=dylib=rstrtmgr"); + if is_compiler("msvc") { + println!("cargo:rustc-link-lib=dylib=bcrypt"); + } else { + println!("cargo:rustc-link-lib=dylib=stdc++"); + } +} + +#[cfg(not(feature = "buildtime_bindgen"))] +fn copy_pregenerated_bindings(out_path: &Path) { + let bindings_path = if is_loadable_extension() { + "src/bindgen_bundled_version_loadable.rs" + } else { + "src/bindgen_bundled_version.rs" + }; + println!("cargo:rerun-if-changed={bindings_path}"); + std::fs::copy(bindings_path, out_path).expect("Could not copy bindings to output directory"); +} + +pub enum HeaderLocation { + IncludeDir(PathBuf), + HeaderPath(PathBuf), + Wrapper, +} + +#[allow(dead_code)] +fn is_loadable_extension() -> bool { + cfg!(feature = "loadable-extension") +} + +#[allow(dead_code)] +fn header_filename() -> &'static str { + if is_loadable_extension() { + "duckdb_extension.h" + } else { + "duckdb.h" + } +} + +#[allow(dead_code)] +impl HeaderLocation { + fn from_env(lib_dir: &Path) -> Self { + if let Ok(include_dir) = env::var("DUCKDB_INCLUDE_DIR") { + return HeaderLocation::IncludeDir(PathBuf::from(include_dir)); + } + let header_path = lib_dir.join(header_filename()); + if header_path.exists() { + HeaderLocation::IncludeDir(lib_dir.to_path_buf()) + } else { + HeaderLocation::HeaderPath(header_path) + } + } + + #[cfg(feature = "buildtime_bindgen")] + fn header_path(&self) -> PathBuf { + match self { + HeaderLocation::IncludeDir(path) => path.join(header_filename()), + HeaderLocation::HeaderPath(path) => path.clone(), + HeaderLocation::Wrapper => PathBuf::from(if is_loadable_extension() { + "wrapper_ext.h" + } else { + "wrapper.h" + }), + } + } + + fn include_dir(&self) -> Option<&Path> { + match self { + HeaderLocation::IncludeDir(path) => Some(path), + HeaderLocation::HeaderPath(_) | HeaderLocation::Wrapper => None, + } + } +} + +#[cfg(not(feature = "bundled"))] +mod build_linked { + #[cfg(feature = "vcpkg")] + extern crate vcpkg; + + #[cfg(feature = "buildtime_bindgen")] + use super::bindings; + + use super::{HeaderLocation, is_compiler, is_loadable_extension, win_target}; + use std::{env, path::Path}; + #[cfg(feature = "download")] + use std::{fs, io, path::PathBuf}; + + pub fn main(out_dir: &str, out_path: &Path) { + // We need this to config the LD_LIBRARY_PATH + let header = find_duckdb(out_dir); + + // Publish the resolved include directory so downstream crates + // that compile their own C/C++ code can read it from + // `DEP_DUCKDB_INCLUDE`. Wrapper-only mode (no explicit dir + // from env / vcpkg / pkg-config / download) intentionally + // skips the emission — there's no single directory to point + // at; the system header is on the default search path already. + if let Some(include_dir) = header.include_dir() { + println!("cargo:include={}", include_dir.display()); + } + + #[cfg(not(feature = "buildtime_bindgen"))] + super::copy_pregenerated_bindings(out_path); + + #[cfg(feature = "buildtime_bindgen")] + bindings::write_to_out_dir(header, out_path); + } + + fn link_directive() -> &'static str { + // If the user specifies DUCKDB_STATIC, do static + // linking, unless it's explicitly set to 0. + match env::var("DUCKDB_STATIC") { + Ok(v) if v != "0" => "static=duckdb_static", + _ => "dylib=duckdb", + } + } + + fn emit_link_lib(link_directive: &str) { + if !is_loadable_extension() { + println!("cargo:rustc-link-lib={link_directive}"); + } + } + + #[cfg(feature = "pkg-config")] + fn duckdb_pkg_config() -> pkg_config::Config { + let mut config = pkg_config::Config::new(); + if is_loadable_extension() { + config.cargo_metadata(false); + } + config + } + + // Prints the necessary cargo link commands and returns the path to the header. + fn find_duckdb(_out_dir: &str) -> HeaderLocation { + println!("cargo:rerun-if-env-changed=DUCKDB_DOWNLOAD_LIB"); + if !is_loadable_extension() { + println!("cargo:rerun-if-env-changed=DUCKDB_INCLUDE_DIR"); + println!("cargo:rerun-if-env-changed=DUCKDB_LIB_DIR"); + println!("cargo:rerun-if-env-changed=DUCKDB_STATIC"); + if cfg!(feature = "vcpkg") && is_compiler("msvc") { + println!("cargo:rerun-if-env-changed=VCPKGRS_DYNAMIC"); + } + + // dependents can access `DEP_DUCKDB_LINK_TARGET` (`duckdb` being the + // `links=` value in our Cargo.toml) to get this value. This might be + // useful if you need to ensure whatever crypto library sqlcipher relies + // on is available, for example. + println!("cargo:link-target=duckdb"); + } + + if win_target() && cfg!(feature = "winduckdb") { + emit_link_lib("dylib=duckdb"); + return HeaderLocation::Wrapper; + } + // Allow users to specify where to find DuckDB. + if let Ok(dir) = env::var("DUCKDB_LIB_DIR") { + println!("cargo:rustc-env=LD_LIBRARY_PATH={dir}"); + // Try to use pkg-config to determine link commands + let pkgconfig_path = Path::new(&dir).join("pkgconfig"); + unsafe { env::set_var("PKG_CONFIG_PATH", pkgconfig_path) }; + + #[cfg(feature = "pkg-config")] + let lib_found = duckdb_pkg_config().probe("duckdb").is_ok(); + #[cfg(not(feature = "pkg-config"))] + let lib_found = false; + + if !lib_found { + // Otherwise just emit the bare minimum link commands. + emit_link_lib(link_directive()); + println!("cargo:rustc-link-search={dir}"); + } + + return HeaderLocation::from_env(Path::new(&dir)); + } + + if should_download_libduckdb() { + #[cfg(feature = "download")] + return download_libduckdb(_out_dir).unwrap_or_else(|err| panic!("Failed to download libduckdb: {err}")); + #[cfg(not(feature = "download"))] + panic!("DUCKDB_DOWNLOAD_LIB requires the libduckdb-sys/download feature"); + } + + if let Some(header) = try_vcpkg() { + return header; + } + + // See if pkg-config can do everything for us. + #[cfg(feature = "pkg-config")] + { + match duckdb_pkg_config().print_system_libs(false).probe("duckdb") { + Ok(mut lib) => { + if let Some(header) = lib.include_paths.pop() { + HeaderLocation::IncludeDir(header) + } else { + HeaderLocation::Wrapper + } + } + Err(_) => { + // No env var set and pkg-config couldn't help; just output the link-lib + // request and hope that the library exists on the system paths. We used to + // output /usr/lib explicitly, but that can introduce other linking problems; + // see https://github.com/rusqlite/rusqlite/issues/207. + emit_link_lib(link_directive()); + HeaderLocation::Wrapper + } + } + } + #[cfg(not(feature = "pkg-config"))] + { + // No pkg-config available; just output the link-lib request and hope + // that the library exists on the system paths. + emit_link_lib(link_directive()); + HeaderLocation::Wrapper + } + } + + fn try_vcpkg() -> Option { + #[cfg(feature = "vcpkg")] + if is_compiler("msvc") { + // See if vcpkg can find it. + if let Ok(mut lib) = vcpkg::Config::new().probe("duckdb") { + if let Some(header) = lib.include_paths.pop() { + return Some(HeaderLocation::IncludeDir(header)); + } + } + } + None + } + + fn should_download_libduckdb() -> bool { + env::var("DUCKDB_DOWNLOAD_LIB") + .map(|value| matches!(value.to_ascii_lowercase().as_str(), "1" | "true")) + .unwrap_or(false) + } + + #[cfg(feature = "download")] + fn download_libduckdb(out_dir: &str) -> Result> { + let target = env::var("TARGET")?; + let archive = LibduckdbArchive::for_target(&target) + .ok_or_else(|| format!("No pre-built libduckdb available for target '{target}'"))?; + + let version = duckdb_version_from_pkg_version(env!("CARGO_PKG_VERSION")); + + // Cache downloads in target/duckdb-download// so successive builds reuse them + let download_dir = workspace_download_dir(out_dir)?.join(&target).join(&version); + fs::create_dir_all(&download_dir)?; + + let archive_path = download_dir.join(archive.archive_name); + let lib_marker = download_dir.join(archive.dynamic_lib); + + if lib_marker.exists() { + println!("cargo:warning=Reusing libduckdb from {}", download_dir.display()); + } else { + let client = http_client()?; + let url = archive.download_url(&version); + ensure_libduckdb(&client, &url, &archive_path)?; + extract_libduckdb(&archive_path, &download_dir)?; + if !lib_marker.exists() { + return Err(format!( + "Downloaded archive did not contain expected library '{}'", + archive.dynamic_lib + ) + .into()); + } + } + + configure_link_search(&download_dir); + + copy_libduckdb(&download_dir, archive.dynamic_lib, out_dir)?; + + Ok(HeaderLocation::IncludeDir(download_dir)) + } + + #[cfg(feature = "download")] + fn configure_link_search(lib_dir: &Path) { + println!("cargo:rustc-link-search=native={}", lib_dir.display()); + emit_link_lib(link_directive()); + if !win_target() { + println!("cargo:rustc-link-arg=-Wl,-rpath,{}", lib_dir.display()); + } + } + + // Ensures the libduckdb archive exists: reuses an existing zip or + // downloads it into a temp file and atomically renames it into place. + #[cfg(feature = "download")] + fn ensure_libduckdb( + client: &reqwest::blocking::Client, + url: &str, + archive_path: &Path, + ) -> Result<(), Box> { + if archive_path.exists() { + println!("cargo:warning=libduckdb already present at {}", archive_path.display()); + return Ok(()); + } + let tmp_path = archive_path.with_extension("download"); + if let Some(parent) = archive_path.parent() { + fs::create_dir_all(parent)?; + } + let mut response = client.get(url).send()?.error_for_status()?; + let mut tmp_file = fs::File::create(&tmp_path)?; + io::copy(&mut response, &mut tmp_file)?; + fs::rename(&tmp_path, archive_path)?; + println!("cargo:warning=Downloaded libduckdb from {url}"); + Ok(()) + } + + #[cfg(feature = "download")] + fn extract_libduckdb(archive_path: &Path, destination: &Path) -> Result<(), Box> { + let file = fs::File::open(archive_path)?; + let mut archive = zip::ZipArchive::new(file)?; + archive.extract(destination)?; + println!("cargo:warning=Extracted libduckdb to {}", destination.display()); + Ok(()) + } + + // Copy libduckdb into target//deps so executables/tests can load it via + // the default Cargo rpath, just like when DUCKDB_LIB_DIR is set. + #[cfg(feature = "download")] + fn copy_libduckdb( + download_dir: &Path, + lib_filename: &str, + out_dir: &str, + ) -> Result<(), Box> { + let Some(deps_dir) = profile_deps_dir(out_dir) else { + return Err("Could not determine target/deps directory for runtime lib copy".into()); + }; + fs::create_dir_all(&deps_dir)?; + let source = download_dir.join(lib_filename); + let dest = deps_dir.join(lib_filename); + if dest.exists() { + fs::remove_file(&dest)?; + } + fs::copy(&source, &dest)?; + println!("cargo:warning=Copied libduckdb to {}", dest.display()); + Ok(()) + } + + // Finds target/ so downloads survive rebuilds. Respects CARGO_TARGET_DIR if set. + #[cfg(feature = "download")] + fn workspace_download_dir(out_dir: &str) -> Result> { + if let Ok(dir) = env::var("CARGO_TARGET_DIR") { + return Ok(PathBuf::from(dir).join("duckdb-download")); + } + let target_root = Path::new(out_dir) + .ancestors() + .find(|ancestor| { + ancestor + .file_name() + .and_then(|name| name.to_str()) + .is_some_and(|name| name == "target") + }) + .map(Path::to_path_buf) + .unwrap_or_else(|| PathBuf::from("target")); + Ok(target_root.join("duckdb-download")) + } + + #[cfg(feature = "download")] + fn duckdb_version_from_pkg_version(pkg_version: &str) -> String { + // duckdb-rs uses 1.MAJOR_MINOR_PATCH.x, e.g. DuckDB 1.5.0 => duckdb-rs 1.10500.x. + let encoded = pkg_version + .split('.') + .nth(1) + .expect("CARGO_PKG_VERSION should use the documented 1.MAJOR_MINOR_PATCH.x format") + .parse::() + .expect("CARGO_PKG_VERSION should encode the DuckDB version as an integer in its second component"); + let duckdb_major = encoded / 10_000; + let duckdb_minor = (encoded / 100) % 100; + let duckdb_patch = encoded % 100; + format!("{duckdb_major}.{duckdb_minor}.{duckdb_patch}") + } + + // Mirrors Cargo's actual target///deps (or target//deps) + // layout by deriving it from OUT_DIR. + #[cfg(feature = "download")] + fn profile_deps_dir(out_dir: &str) -> Option { + let build_dir = Path::new(out_dir).ancestors().find(|ancestor| { + ancestor + .file_name() + .and_then(|name| name.to_str()) + .is_some_and(|name| name == "build") + })?; + let profile_dir = build_dir.parent()?; + Some(profile_dir.join("deps")) + } + + #[cfg(feature = "download")] + struct LibduckdbArchive { + archive_name: &'static str, + dynamic_lib: &'static str, + } + + #[cfg(feature = "download")] + impl LibduckdbArchive { + fn for_target(target: &str) -> Option { + match target { + t if t.ends_with("apple-darwin") => Some(Self { + archive_name: "libduckdb-osx-universal.zip", + dynamic_lib: "libduckdb.dylib", + }), + "x86_64-unknown-linux-gnu" => Some(Self { + archive_name: "libduckdb-linux-amd64.zip", + dynamic_lib: "libduckdb.so", + }), + "aarch64-unknown-linux-gnu" => Some(Self { + archive_name: "libduckdb-linux-arm64.zip", + dynamic_lib: "libduckdb.so", + }), + "x86_64-pc-windows-msvc" => Some(Self { + archive_name: "libduckdb-windows-amd64.zip", + dynamic_lib: "duckdb.dll", + }), + "aarch64-pc-windows-msvc" => Some(Self { + archive_name: "libduckdb-windows-arm64.zip", + dynamic_lib: "duckdb.dll", + }), + _ => None, + } + } + + fn download_url(&self, version: &str) -> String { + format!( + "https://github.com/duckdb/duckdb/releases/download/v{version}/{}", + self.archive_name + ) + } + } + + #[cfg(feature = "download")] + fn http_client() -> Result { + let timeout = env::var("CARGO_HTTP_TIMEOUT") + .or_else(|_| env::var("HTTP_TIMEOUT")) + .ok() + .and_then(|value| value.parse().ok()) + .unwrap_or(90); + reqwest::blocking::Client::builder() + .timeout(std::time::Duration::from_secs(timeout)) + .build() + } +} + +#[cfg(feature = "buildtime_bindgen")] +mod bindings { + use super::{HeaderLocation, is_loadable_extension}; + + use std::{fs::OpenOptions, io::Write, path::Path}; + + #[cfg(feature = "loadable-extension")] + fn extract_method(ty: &syn::Type) -> Option<&syn::TypeBareFn> { + let syn::Type::Path(type_path) = ty else { + return None; + }; + let segment = type_path.path.segments.last()?; + let syn::PathArguments::AngleBracketed(args) = &segment.arguments else { + return None; + }; + let Some(syn::GenericArgument::Type(ty)) = args.args.first() else { + return None; + }; + let syn::Type::BareFn(method) = ty else { + return None; + }; + Some(method) + } + + #[cfg(feature = "loadable-extension")] + fn generate_functions(mut output: String) -> String { + // (1) parse sqlite3_api_routines fields from bindgen output + let ast: syn::File = syn::parse_str(&output).expect("could not parse bindgen output"); + let duckdb_ext_api_v1: syn::ItemStruct = ast + .items + .into_iter() + .find_map(|i| { + if let syn::Item::Struct(s) = i { + if s.ident == "duckdb_ext_api_v1" { Some(s) } else { None } + } else { + None + } + }) + .expect("could not find duckdb_ext_api_v1"); + + let p_api = quote::format_ident!("p_api"); + let mut stores = Vec::new(); + + for field in duckdb_ext_api_v1.fields { + let ident = field.ident.expect("unnamed field"); + let span = ident.span(); + let function_name = ident.to_string(); + let ptr_name = syn::Ident::new(format!("__{}", function_name.to_uppercase()).as_ref(), span); + + // Create syntax name + let duckdb_fn_name = syn::Ident::new(&function_name, span); + + let method = extract_method(&field.ty).unwrap_or_else(|| panic!("unexpected type for {function_name}")); + + let arg_names: syn::punctuated::Punctuated<&syn::Ident, syn::token::Comma> = + method.inputs.iter().map(|i| &i.name.as_ref().unwrap().0).collect(); + + let args = &method.inputs; + + let ty = &method.output; + + let tokens = quote::quote! { + static #ptr_name: ::std::sync::atomic::AtomicPtr<()> = ::std::sync::atomic::AtomicPtr::new(::std::ptr::null_mut()); + pub unsafe fn #duckdb_fn_name(#args) #ty { + let function_ptr = #ptr_name.load(::std::sync::atomic::Ordering::Acquire); + assert!(!function_ptr.is_null(), "DuckDB API not initialized or DuckDB feature omitted"); + let fun: unsafe extern "C" fn(#args) #ty = ::std::mem::transmute(function_ptr); + (fun)(#arg_names) + } + }; + + output.push_str(&prettyplease::unparse( + &syn::parse2(tokens).expect("could not parse quote output"), + )); + + output.push('\n'); + + stores.push(quote::quote! { + if let Some(fun) = (*#p_api).#ident { + #ptr_name.store( + fun as usize as *mut (), + ::std::sync::atomic::Ordering::Release, + ); + } + }); + } + + // (3) generate rust code similar to DUCKDB_EXTENSION_API_INIT macro + let tokens = quote::quote! { + /// Like DUCKDB_EXTENSION_API_INIT macro + pub unsafe fn duckdb_rs_extension_api_init(info: duckdb_extension_info, access: *const duckdb_extension_access, version: &str) -> ::std::result::Result { + let version_c_string = std::ffi::CString::new(version).unwrap(); + let #p_api = (*access).get_api.unwrap()(info, version_c_string.as_ptr()) as *const duckdb_ext_api_v1; + if #p_api.is_null() { + // get_api can return a nullptr when the version is not matched. In this case, we don't need to set + // an error, but can instead just stop the initialization process and let duckdb handle things + return Ok(false); + } + #(#stores)* + Ok(true) + } + }; + output.push_str(&prettyplease::unparse( + &syn::parse2(tokens).expect("could not parse quote output"), + )); + output.push('\n'); + output + } + + pub fn write_to_out_dir(header: HeaderLocation, out_path: &Path) { + let header = header.header_path().to_string_lossy().into_owned(); + let mut output = Vec::new(); + let mut builder = bindgen::builder(); + + if is_loadable_extension() { + builder = builder.ignore_functions(); + } + + // ONLY generate bindings for symbols containing "duckdb" in their name + // and for the type `idx_t` + // We have to pass DDUCKDB_EXTENSION_API_VERSION_UNSTABLE for now, + // until we figure out how to feature gate the generated API + builder + .trust_clang_mangling(false) + .header(header.clone()) + .allowlist_item(r#"(\w*duckdb\w*)"#) + .allowlist_type("idx_t") + // Use the concrete ABI layouts from src/arrow_c_data.rs. + .blocklist_type("ArrowArray") + .blocklist_type("ArrowSchema") + .layout_tests(false) // causes problems on WASM builds + .clang_arg("-DDUCKDB_EXTENSION_API_VERSION_UNSTABLE") + .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) + .generate() + .unwrap_or_else(|_| panic!("could not run bindgen on header {header}")) + .write(Box::new(&mut output)) + .expect("could not write output of bindgen"); + + let output = String::from_utf8(output).expect("bindgen output was not UTF-8?!"); + + #[cfg(feature = "loadable-extension")] + let output = generate_functions(output); + + let mut file = OpenOptions::new() + .write(true) + .truncate(true) + .create(true) + .open(out_path) + .unwrap_or_else(|_| panic!("Could not write to {out_path:?}")); + + file.write_all(output.as_bytes()) + .unwrap_or_else(|_| panic!("Could not write to {out_path:?}")); + } +} diff --git a/rust_hft/native/libduckdb-sys/build_bundled_cc.rs b/rust_hft/native/libduckdb-sys/build_bundled_cc.rs new file mode 100644 index 000000000..7c9e0e22a --- /dev/null +++ b/rust_hft/native/libduckdb-sys/build_bundled_cc.rs @@ -0,0 +1,147 @@ +use crate::{is_compiler, link_windows_system_libs, win_target, write_bindings}; +use std::{ + collections::{HashMap, HashSet}, + path::Path, +}; + +#[derive(serde::Deserialize)] +struct Sources { + cpp_files: HashSet, + include_dirs: HashSet, +} + +#[derive(serde::Deserialize)] +struct Manifest { + base: Sources, + extensions: HashMap, +} + +fn add_extension( + manifest: &Manifest, + extension: &str, + cpp_files: &mut HashSet, + include_dirs: &mut HashSet, +) { + let sources = manifest.extensions.get(extension).unwrap_or_else(|| { + let mut available = manifest.extensions.keys().cloned().collect::>(); + available.sort(); + panic!( + "extension `{extension}` is missing from duckdb manifest; available extensions: {}", + available.join(", ") + ); + }); + cpp_files.extend(sources.cpp_files.clone()); + include_dirs.extend(sources.include_dirs.clone()); +} + +fn extension_enabled(extension: &str) -> bool { + // Review build_bundled_cmake::enabled_extensions when changing this gate; + // the backend mechanisms and supported extension sets intentionally differ. + extension == "core_functions" + || (extension == "parquet" && cfg!(feature = "parquet")) + || (extension == "json" && cfg!(feature = "json")) +} + +fn untar_archive(out_dir: &str) { + let path = "duckdb.tar.gz"; + + let tar_gz = std::fs::File::open(path).expect("archive file"); + let tar = flate2::read::GzDecoder::new(tar_gz); + let mut archive = tar::Archive::new(tar); + // These archives are generated for reproducibility, not source mtimes. + // Skipping mtime restoration also avoids Windows SetFileTime failures on + // filesystems such as FAT32, which cannot represent Unix epoch mtimes. + archive.set_preserve_mtime(false); + archive.unpack(out_dir).expect("archive"); +} + +pub fn main(out_dir: &str, out_path: &Path) { + untar_archive(out_dir); + + let include_path = Path::new(out_dir).join("duckdb/src/include"); + write_bindings(&include_path, out_path); + + // Publish the include directory so downstream crates that compile + // their own C/C++ code (e.g. extension shims that #include + // "duckdb.hpp") can pick it up from `DEP_DUCKDB_INCLUDE` without + // having to glob the target tree. Requires `links = "duckdb"` in + // the package manifest. + println!("cargo:include={}", include_path.display()); + + let manifest_file = std::fs::File::open(format!("{out_dir}/duckdb/manifest.json")).expect("manifest file"); + let manifest: Manifest = serde_json::from_reader(manifest_file).expect("reading manifest file"); + + let mut cpp_files = HashSet::new(); + let mut include_dirs = HashSet::new(); + let mut extensions = manifest + .extensions + .keys() + .filter(|name| extension_enabled(name)) + .cloned() + .collect::>(); + extensions.sort(); + + cpp_files.extend(manifest.base.cpp_files.clone()); + include_dirs.extend(manifest.base.include_dirs.iter().cloned()); + + let mut cfg = cc::Build::new(); + + for extension in &extensions { + add_extension(&manifest, extension, &mut cpp_files, &mut include_dirs); + cfg.define( + &format!("DUCKDB_EXTENSION_{}_LINKED", extension.to_uppercase()), + Some("1"), + ); + } + cfg.define("DUCKDB_EXTENSION_AUTOINSTALL_DEFAULT", "1"); + cfg.define("DUCKDB_EXTENSION_AUTOLOAD_DEFAULT", "1"); + + println!("cargo:rerun-if-changed=duckdb.tar.gz"); + + cfg.include("duckdb"); + cfg.includes(include_dirs.iter().map(|dir| format!("{out_dir}/duckdb/{dir}"))); + + let mut cpp_files_vec: Vec = cpp_files.into_iter().collect(); + cpp_files_vec.sort(); + for f in cpp_files_vec.into_iter().map(|file| format!("{out_dir}/{file}")) { + cfg.file(f); + } + + cfg.cpp(true) + .flag_if_supported("-std=c++11") + .flag_if_supported("/utf-8") + .flag_if_supported("/bigobj") + .warnings(false) + .flag_if_supported("-w"); + + // Enable C++ exceptions on MSVC: without /EHsc, exception handling is off, the + // C API's try/catch blocks are inert, and a thrown exception (e.g. invalid-UTF-8 + // CSV read) aborts with STATUS_STACK_BUFFER_OVERRUN (#774). Hard flag, not + // flag_if_supported, so a spurious probe miss can't silently drop it. gcc/clang + // enable exceptions by default and reject /EHsc, so gate on MSVC. Mirrors + // build_bundled_cmake.rs. + if win_target() && is_compiler("msvc") { + cfg.flag("/EHsc"); + } + + let is_debug = match std::env::var("DEBUG") { + Ok(v) => v != "false" && v != "0", + Err(_) => false, + }; + if !is_debug { + cfg.define("NDEBUG", None); + } + + if win_target() { + cfg.define("DUCKDB_BUILD_LIBRARY", None); + } + cfg.compile("duckdb"); + + // `cc` does not link DuckDB's Windows system libs automatically (e.g. unresolved + // `RmStartSession` from the Restart Manager). See link_windows_system_libs. + if win_target() { + link_windows_system_libs(); + } + + println!("cargo:lib_dir={out_dir}"); +} diff --git a/rust_hft/native/libduckdb-sys/build_bundled_cmake.rs b/rust_hft/native/libduckdb-sys/build_bundled_cmake.rs new file mode 100644 index 000000000..49194d0ec --- /dev/null +++ b/rust_hft/native/libduckdb-sys/build_bundled_cmake.rs @@ -0,0 +1,496 @@ +use crate::{is_compiler, link_windows_system_libs, win_target, write_bindings}; +use std::{ + collections::BTreeSet, + env::{self, VarError}, + fs, io, + path::{Path, PathBuf}, +}; + +struct Generator { + name: Option, + out_dir: PathBuf, + make_program: Option, +} + +pub fn main(out_dir: &str, out_path: &Path) { + let source_dir = Path::new("duckdb-sources"); + let cmake_lists = source_dir.join("CMakeLists.txt"); + if !cmake_lists.exists() { + panic!( + "`bundled-cmake` requires a duckdb-rs checkout with DuckDB sources at {}", + cmake_lists.display() + ); + } + + println!("cargo:rerun-if-changed={}", source_dir.display()); + println!("cargo:rerun-if-env-changed=DUCKDB_EXTENSION_CONFIGS"); + println!("cargo:rerun-if-env-changed=DUCKDB_CMAKE_BUILD_TYPE"); + println!("cargo:rerun-if-env-changed=DUCKDB_DISABLE_UNITY"); + println!("cargo:rerun-if-env-changed=DUCKDB_DISABLE_JEMALLOC"); + println!("cargo:rerun-if-env-changed=DUCKDB_DISABLE_EXTENSION_LOAD"); + println!("cargo:rerun-if-env-changed=DISABLE_EXTENSION_LOAD"); + println!("cargo:rerun-if-env-changed=CMAKE_BUILD_TYPE"); + println!("cargo:rerun-if-env-changed=CMAKE_GENERATOR"); + println!("cargo:rerun-if-env-changed=CMAKE_C_COMPILER_LAUNCHER"); + println!("cargo:rerun-if-env-changed=CMAKE_CXX_COMPILER_LAUNCHER"); + println!("cargo:rerun-if-env-changed=MACOSX_DEPLOYMENT_TARGET"); + + let include_path = source_dir.join("src/include").canonicalize().unwrap(); + write_bindings(&include_path, out_path); + + // Publish the include directory so downstream crates that compile + // their own C/C++ code can read it from `DEP_DUCKDB_INCLUDE`. + // See the matching emission in build_bundled_cc.rs. + println!("cargo:include={}", include_path.display()); + + if let Some(configs) = env_var("DUCKDB_EXTENSION_CONFIGS") { + if !configs.trim().is_empty() { + panic!( + "DUCKDB_EXTENSION_CONFIGS is not yet supported by bundled-cmake because additional static extension libraries are not auto-linked" + ); + } + } + + let cmake_build_type = cmake_build_type(); + let generator = select_generator(out_dir); + let mut config = cmake::Config::new(source_dir); + config.out_dir(&generator.out_dir); + if let Some(generator_name) = generator.name.as_deref() { + config.generator(generator_name); + } + if let Some(make_program) = generator.make_program.as_deref() { + config.define("CMAKE_MAKE_PROGRAM", make_program); + } + configure_macos_deployment_target(&mut config); + config + .profile(&cmake_build_type) + .define("BUILD_UNITTESTS", "0") + .define("BUILD_SHELL", "0") + .define("CMAKE_INSTALL_LIBDIR", "lib") + .define("CMAKE_C_FLAGS_INIT", warning_suppression_flag()) + .define("CMAKE_CXX_FLAGS_INIT", warning_suppression_flag()); + + // Re-enable C++ exceptions on MSVC. The cmake crate makes its `cxxflag`s the + // source of -DCMAKE_CXX_FLAGS, replacing CMake's default (which includes /EHsc), + // so exception handling ends up effectively off: a thrown exception (e.g. + // invalid-UTF-8 CSV read) then aborts with STATUS_STACK_BUFFER_OVERRUN (#774). + // + // Don't `config.define("CMAKE_CXX_FLAGS", ..)` here: it overrides the cxxflag + // above and silently drops /EHsc, reintroducing #774. + // Mirrors build_bundled_cc.rs; gcc/clang enable exceptions by default. + if win_target() && is_compiler("msvc") { + config.cxxflag("/EHsc"); + } + + // Unity builds (DuckDB's default) combine .cpp files into fewer translation + // units and compile significantly faster. Allow opting out for debugging. + // Always set explicitly so the CMake cache doesn't keep a stale value. + let disable_unity = env_flag("DUCKDB_DISABLE_UNITY"); + config.define("DISABLE_UNITY", if disable_unity { "1" } else { "0" }); + + // Always set explicitly so the CMake cache does not keep a stale value when + // the environment variable changes between builds. + let disable_extension_load = env_flag_aliases(&["DUCKDB_DISABLE_EXTENSION_LOAD", "DISABLE_EXTENSION_LOAD"]); + config.define("DISABLE_EXTENSION_LOAD", if disable_extension_load { "1" } else { "0" }); + + // Forward compiler launcher for sccache/ccache integration. + for var in ["CMAKE_C_COMPILER_LAUNCHER", "CMAKE_CXX_COMPILER_LAUNCHER"] { + if let Some(launcher) = env_var(var) { + config.define(var, &launcher); + } + } + + let enabled_extensions = enabled_extensions(); + if !enabled_extensions.is_empty() { + config.define("BUILD_EXTENSIONS", enabled_extensions.join(";")); + } + + // Always set explicitly so old CMake caches do not keep stale allocator + // state. By default this enables jemalloc on DuckDB's supported 64-bit, + // non-musl Linux targets and remains a no-op elsewhere. The env var is an + // escape hatch back to DuckDB's standard allocator. + let disable_jemalloc = env_flag("DUCKDB_DISABLE_JEMALLOC"); + config.define("SKIP_EXTENSIONS", ""); + config.define("ENABLE_JEMALLOC", if disable_jemalloc { "OFF" } else { "ON" }); + + // Upstream CMake defaults these to OFF, but duckdb-rs `bundled` has historically + // shipped with both enabled. Keep `bundled-cmake` aligned with `bundled` unless + // extension loading is compiled out entirely. + config + .define( + "ENABLE_EXTENSION_AUTOLOADING", + if disable_extension_load { "0" } else { "1" }, + ) + .define( + "ENABLE_EXTENSION_AUTOINSTALL", + if disable_extension_load { "0" } else { "1" }, + ); + + // Windows MAX_PATH caveat: this build emits very deep object paths (Ninja ignores + // CMAKE_OBJECT_PATH_MAX), so a deep OUT_DIR can exceed 260 chars and fail late with + // `C1083: Cannot open compiler generated file: ''`. The build script can't move + // OUT_DIR — shorten the path (short CARGO_TARGET_DIR, drop `--target`, or check out + // nearer the drive root). + let dst = config.build(); + let lib_dir = dst.join("lib"); + validate_extension_libraries(&lib_dir, &cmake_build_type, &enabled_extensions); + println!("cargo:rustc-link-search=native={}", lib_dir.display()); + // Emit in dependents-before-dependencies order for single-pass linkers: + // loader → extensions → duckdb_static (which satisfies all core symbols). + link_static_library(&lib_dir, &cmake_build_type, "duckdb_generated_extension_loader"); + link_static_library(&lib_dir, &cmake_build_type, "core_functions_extension"); + for extension in enabled_extensions { + link_static_library(&lib_dir, &cmake_build_type, &format!("{extension}_extension")); + } + link_static_library(&lib_dir, &cmake_build_type, "duckdb_static"); + link_system_libs(); + println!("cargo:lib_dir={}", lib_dir.display()); +} + +fn cmake_build_type() -> String { + for var in ["DUCKDB_CMAKE_BUILD_TYPE", "CMAKE_BUILD_TYPE"] { + if let Some(value) = env_var(var).filter(|v| !v.trim().is_empty()) { + let value = validate_cmake_build_type(&value); + cargo_warning(&format!("bundled-cmake build type: {value} (from {var})")); + return value; + } + } + cargo_warning("bundled-cmake build type: Release (default)"); + "Release".to_owned() +} + +fn validate_cmake_build_type(value: &str) -> String { + match value { + "Debug" | "Release" | "RelWithDebInfo" | "MinSizeRel" => value.to_owned(), + _ => { + panic!("unsupported CMake build type `{value}`; expected one of Debug, Release, RelWithDebInfo, MinSizeRel") + } + } +} + +fn select_generator(out_dir: &str) -> Generator { + let out_dir = PathBuf::from(out_dir); + if let Some(generator) = env_var("CMAKE_GENERATOR").filter(|value| !value.trim().is_empty()) { + let needs_ninja = generator.contains("Ninja"); + let (make_program, probe_error) = if needs_ninja { + find_program(&["ninja", "ninja-build"]) + } else { + (None, None) + }; + if needs_ninja && make_program.is_none() { + let suffix = probe_error + .map(|error| format!(" (probe error: {error})")) + .unwrap_or_default(); + panic!( + "CMAKE_GENERATOR={generator} requires `ninja` or `ninja-build` on PATH, but neither was found{suffix}" + ); + } + cargo_warning(&format!("bundled-cmake generator: {generator} (from CMAKE_GENERATOR)")); + return Generator { + out_dir: out_dir.join(format!("cmake-{}", sanitize_path_component(&generator))), + name: Some(generator), + make_program, + }; + } + + let (ninja_program, probe_error) = find_program(&["ninja", "ninja-build"]); + if let Some(ninja) = ninja_program { + cargo_warning(&format!("bundled-cmake generator: Ninja (autodetected via {ninja})")); + Generator { + out_dir: out_dir.join("cmake-ninja"), + name: Some("Ninja".to_string()), + make_program: Some(ninja), + } + } else { + if let Some(probe_error) = probe_error { + cargo_warning(&format!( + "failed to probe for bundled-cmake generator detection (`ninja`/`ninja-build`): {probe_error}" + )); + } + cargo_warning("bundled-cmake generator: default CMake generator (ninja not detected)"); + Generator { + out_dir: out_dir.join("cmake-default"), + name: None, + make_program: None, + } + } +} + +fn warning_suppression_flag() -> &'static str { + if win_target() && is_compiler("msvc") { + "/w" + } else { + "-w" + } +} + +fn configure_macos_deployment_target(config: &mut cmake::Config) { + if env::var("CARGO_CFG_TARGET_OS").as_deref() != Ok("macos") { + return; + } + + let target_arch_env = + env::var("CARGO_CFG_TARGET_ARCH").expect("Cargo should set CARGO_CFG_TARGET_ARCH for macOS builds"); + let (target_arch, default_deployment_target) = match target_arch_env.as_str() { + "aarch64" => ("arm64", "11.0"), + "x86_64" => ("x86_64", "10.15"), + other => { + panic!("bundled-cmake: unsupported macOS CARGO_CFG_TARGET_ARCH `{other}`; expected `aarch64` or `x86_64`") + } + }; + + let deployment_target = env_var("MACOSX_DEPLOYMENT_TARGET") + .filter(|value| !value.trim().is_empty()) + .unwrap_or_else(|| default_deployment_target.to_string()); + cargo_warning(&format!( + "bundled-cmake macOS deployment target: {deployment_target} ({target_arch})" + )); + config.define("CMAKE_OSX_DEPLOYMENT_TARGET", &deployment_target); + config.define("CMAKE_OSX_ARCHITECTURES", target_arch); +} + +fn find_program(candidates: &[&str]) -> (Option, Option) { + let mut last_error = None; + for candidate in candidates { + match which::which(candidate) { + Ok(path) => return (Some(path.display().to_string()), None), + Err(which::Error::CannotFindBinaryPath) => {} + Err(err) => { + last_error = Some(err); + } + } + } + (None, last_error) +} + +fn env_var(name: &str) -> Option { + match env::var(name) { + Ok(value) => Some(value), + Err(VarError::NotPresent) => None, + Err(VarError::NotUnicode(_)) => { + panic!("bundled-cmake expects a valid UTF-8 value for environment variable `{name}`") + } + } +} + +fn parse_env_flag(name: &str) -> Option { + match env_var(name).as_deref() { + Some("1" | "true" | "on" | "yes") => Some(true), + Some("0" | "false" | "off" | "no") => Some(false), + Some(other) => { + cargo_warning(&format!( + "Ignoring unsupported {name} value {other:?}; expected true/false or 1/0, yes/no, on/off" + )); + None + } + None => None, + } +} + +fn env_flag(name: &str) -> bool { + parse_env_flag(name).unwrap_or(false) +} + +fn env_flag_aliases(names: &[&str]) -> bool { + let mut values = Vec::new(); + for name in names { + if let Some(value) = parse_env_flag(name) { + values.push((*name, value)); + } + } + let Some((selected_name, selected_value)) = values.first().copied() else { + return false; + }; + if values.iter().any(|(_, value)| *value != selected_value) { + let sources = values + .iter() + .map(|(name, value)| format!("{name}={}", if *value { 1 } else { 0 })) + .collect::>() + .join(", "); + cargo_warning(&format!( + "Conflicting values for equivalent environment variables ({sources}); using {selected_name}" + )); + } + selected_value +} + +fn sanitize_path_component(input: &str) -> String { + input + .chars() + .map(|ch| { + if ch.is_ascii_alphanumeric() || ch == '-' || ch == '_' { + ch + } else { + '_' + } + }) + .collect() +} + +fn validate_extension_libraries(lib_dir: &Path, cmake_build_type: &str, enabled_extensions: &[&str]) { + // Missing extensions are already caught by link_static_library's panic; + // this check only guards against CMake producing extensions we did not + // ask for (e.g. upstream extension-config drift). + let actual = list_static_extension_libraries(lib_dir, cmake_build_type).unwrap_or_else(|err| { + panic!( + "failed to inspect bundled-cmake extension libraries in {}: {err}", + lib_dir.display() + ) + }); + let mut expected: BTreeSet = enabled_extensions + .iter() + .map(|ext| format!("{ext}_extension")) + .collect(); + // CMake always builds this base extension through extension_config.cmake. + expected.insert("core_functions_extension".to_string()); + + let unexpected: Vec = actual.difference(&expected).cloned().collect(); + if !unexpected.is_empty() { + panic!( + "bundled-cmake produced unexpected static extension libraries: {}", + unexpected.join(", ") + ); + } +} + +fn link_static_library(lib_dir: &Path, cmake_build_type: &str, name: &str) { + let Some(library_path) = resolve_static_library(lib_dir, cmake_build_type, name) else { + let filename = static_library_filename(name); + let searched = candidate_library_dirs(lib_dir, cmake_build_type) + .into_iter() + .map(|dir| dir.join(&filename).display().to_string()) + .collect::>() + .join(", "); + panic!("expected bundled-cmake to produce static library `{name}`; looked in [{searched}]"); + }; + if let Some(parent) = library_path.parent() { + if parent != lib_dir { + println!("cargo:rustc-link-search=native={}", parent.display()); + } + } + println!("cargo:rustc-link-lib=static={name}"); +} + +fn static_library_filename(name: &str) -> String { + if win_target() { + format!("{name}.lib") + } else { + format!("lib{name}.a") + } +} + +fn list_static_extension_libraries(lib_dir: &Path, cmake_build_type: &str) -> io::Result> { + let mut extension_libraries = BTreeSet::new(); + for candidate_dir in candidate_library_dirs(lib_dir, cmake_build_type) { + for entry in fs::read_dir(&candidate_dir)? { + let entry = entry?; + let file_type = entry.file_type()?; + if !file_type.is_file() { + continue; + } + let file_name = entry.file_name(); + let Some(file_name) = file_name.to_str() else { + cargo_warning(&format!( + "bundled-cmake ignored non-UTF-8 library filename in {}: {}", + candidate_dir.display(), + entry.path().display() + )); + continue; + }; + let Some(name) = normalized_static_library_name(file_name) else { + continue; + }; + if name.ends_with("_extension") && !name.ends_with("_loadable_extension") { + extension_libraries.insert(name); + } + } + } + Ok(extension_libraries) +} + +fn normalized_static_library_name(filename: &str) -> Option { + if let Some(name) = filename.strip_suffix(".lib") { + return Some(name.to_string()); + } + let name = filename.strip_prefix("lib")?.strip_suffix(".a")?; + Some(name.to_string()) +} + +fn resolve_static_library(lib_dir: &Path, cmake_build_type: &str, name: &str) -> Option { + let filename = static_library_filename(name); + candidate_library_dirs(lib_dir, cmake_build_type) + .into_iter() + .map(|dir| dir.join(&filename)) + .find(|path| path.exists()) +} + +fn candidate_library_dirs(lib_dir: &Path, cmake_build_type: &str) -> Vec { + // Single-config generators (Ninja, Make) write directly into lib/. + // Multi-config generators (MSVC, Xcode) write into lib//. + // Restricting to these two avoids picking up stale extension libraries + // from a previous build that used a different CMAKE_BUILD_TYPE. + let mut candidates = vec![lib_dir.to_path_buf()]; + let build_type_dir = lib_dir.join(cmake_build_type); + if build_type_dir.is_dir() { + candidates.push(build_type_dir); + } + candidates +} + +fn cargo_warning(message: &str) { + println!("cargo:warning={message}"); +} + +fn enabled_extensions() -> Vec<&'static str> { + // Match DuckDB's upstream CMake defaults for quasi-core extensions rather + // than trying to reproduce the cc backend's finer-grained selection. + // Review build_bundled_cc::extension_enabled when changing this list; the + // backend mechanisms and supported extension sets intentionally differ. + let mut extensions = vec!["parquet"]; + if cfg!(feature = "json") { + extensions.push("json"); + } + if cfg!(feature = "autocomplete") { + extensions.push("autocomplete"); + } + if cfg!(feature = "icu") { + extensions.push("icu"); + } + if cfg!(feature = "tpcds") { + extensions.push("tpcds"); + } + if cfg!(feature = "tpch") { + extensions.push("tpch"); + } + extensions +} + +fn link_system_libs() { + // Keep the per-OS lists below in sync with DuckDB's current linker requirements in + // duckdb-sources/src/CMakeLists.txt. If upstream drifts after a submodule bump, + // update every branch here alongside it. + let target_os = env::var("CARGO_CFG_TARGET_OS").expect("Cargo should set CARGO_CFG_TARGET_OS"); + + match target_os.as_str() { + "linux" => { + let target_env = env::var("CARGO_CFG_TARGET_ENV").unwrap_or_default(); + if target_env != "gnu" { + panic!( + "bundled-cmake on linux is currently only supported with the `gnu` target env (libstdc++); got `{target_env}`" + ); + } + println!("cargo:rustc-link-lib=dylib=dl"); + println!("cargo:rustc-link-lib=dylib=pthread"); + println!("cargo:rustc-link-lib=dylib=stdc++"); + } + "macos" => { + println!("cargo:rustc-link-lib=dylib=c++"); + } + "windows" => link_windows_system_libs(), + other => { + panic!( + "bundled-cmake is currently supported only on Linux, macOS, and Windows; unsupported target OS `{other}`" + ) + } + } +} diff --git a/rust_hft/native/libduckdb-sys/duckdb.tar.gz b/rust_hft/native/libduckdb-sys/duckdb.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..7ce59da44a8d5ae83ddfa48395c60d572ef0a933 GIT binary patch literal 6102955 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%0DvE> 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

1t_aKfzBX|)TM(x=|ezS5YU}~V1lb~2y*Vc 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%0D-vr)^`F2~=-=;e^F`NFl5S7eEz`FZsw22j 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