You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -67,7 +67,7 @@ changes incompatibly with the Go native wrapper.
67
67
68
68
## Native Libraries
69
69
70
-
The Rust crate under `rust/` builds `libdatafusion_go.a`. The default Go build links the platform-specific archive from `internal/native/lib/<goos>-<goarch>/libdatafusion_go.a`.
70
+
The Rust crate under `rust/` builds a static archive and a shared library. The default Go build loads the platform-specific shared library at runtime from `DATAFUSION_GO_LIBRARY`, from `internal/native/lib/<goos>-<goarch>` in source checkouts, or from the checksum-verified release-asset cache. The explicit `datafusion_use_bundled` mode links the platform-specific static archive from `internal/native/lib/<goos>-<goarch>/libdatafusion_go.a`.
71
71
72
72
Use `make bundle` only when you intend to copy the current host build into `internal/native/lib`. Release verification uses `make verify.release.downloaded` so downloaded matrix artifacts are not overwritten by the release runner.
73
73
@@ -81,5 +81,5 @@ Go/Rust/no-cgo tests, and runs a clean consumer-module smoke test without
81
81
tagging or creating a GitHub release.
82
82
83
83
When the dry run succeeds, rerun the same workflow with `publish=true`. It tags
84
-
the checked-out commit with the derived release tag and uploads the generated
85
-
native archives plus checksums.
84
+
commits the release-asset checksum manifest, tags that commit with the derived
85
+
release tag, and uploads the generated native libraries plus checksums.
Copy file name to clipboardExpand all lines: README.md
+8-5Lines changed: 8 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -29,7 +29,7 @@ Build and bundle the Rust shim before running Go tests:
29
29
make test
30
30
```
31
31
32
-
That target copies the generated native archive to `internal/native/lib/<goos>-<goarch>/libdatafusion_go.a`, which is the default static-link path. Native archives are build outputs and are not committed to Git.
32
+
That target copies the generated native archive and shared library to `internal/native/lib/<goos>-<goarch>/`. Native libraries are build outputs and are not committed to Git.
33
33
34
34
To link directly from `rust/target/release` during local development:
Default builds use a generated static library selected from `internal/native/lib/<goos>-<goarch>`. Source checkouts should run `make bundle` or `make test` before invoking `go test` directly.
55
+
Default builds use cgo but do not link a DataFusion native library at Go link time. At runtime, the driver loads a shared `libdatafusion_go` from `DATAFUSION_GO_LIBRARY`, from `internal/native/lib/<goos>-<goarch>` in source checkouts, or from the checksum-verified cache populated from the matching GitHub Release asset.
56
+
57
+
Source checkouts should run `make bundle` or `make test` before invoking Go tests that open the driver directly. To disable automatic release-asset downloads, set `DATAFUSION_GO_NO_DOWNLOAD=1`.
56
58
57
59
Development modes:
58
60
59
61
```sh
60
62
make rust
63
+
go test -tags=datafusion_use_bundled ./...
61
64
go test -tags=datafusion_use_source ./...
62
65
go test -tags=datafusion_use_static_lib ./...
63
66
```
64
67
65
-
`datafusion_use_source` and `datafusion_use_static_lib` link from `rust/target/release`, so run `make rust` first. On `windows-amd64`, `make rust` targets `x86_64-pc-windows-gnu` and the link path is `rust/target/x86_64-pc-windows-gnu/release`.
68
+
`datafusion_use_bundled` links the static archive from `internal/native/lib/<goos>-<goarch>`. `datafusion_use_source` and `datafusion_use_static_lib` link from `rust/target/release`, so run `make rust` first. On `windows-amd64`, `make rust` targets `x86_64-pc-windows-gnu` and the link path is `rust/target/x86_64-pc-windows-gnu/release`.
66
69
67
70
Shared-library mode links with `-ldatafusion_go` and requires `libdatafusion_go` to be on the system linker path:
68
71
@@ -200,6 +203,6 @@ Nested and complex Arrow values such as lists, structs, maps, unions, dictionari
200
203
201
204
## Current Distribution Status
202
205
203
-
Native archives are generated by the build and intentionally kept out of Git because the static archives exceed GitHub's normal file-size limits. Release automation builds archives for `darwin-arm64`, `darwin-amd64`, `linux-amd64`, `linux-arm64`, and `windows-amd64`, writes `internal/native/lib/SHA256SUMS`, verifies it without rebundling the current runner's local archive, and can run as a dry run before publishing. When `publish` is enabled, it tags the source commit and uploads the generated archives plus checksums to the GitHub release.
206
+
Native libraries are generated by the build and intentionally kept out of Git because the static archives exceed GitHub's normal file-size limits and Go module zips have a 500 MiB source limit. Release automation builds static archives and shared libraries for `darwin-arm64`, `darwin-amd64`, `linux-amd64`, `linux-arm64`, and `windows-amd64`, verifies them without rebundling the current runner's local output, writes the release-asset `SHA256SUMS` manifest into the tagged tree, and uploads the generated native files plus checksums to the GitHub release.
204
207
205
-
Windows arm64 is not currently a bundled target. Before a public release, run the release workflow once with `publish=false`, verify that all release-runner labels are available in GitHub Actions, and confirm the generated native archives link from a clean consumer module on each target platform.
208
+
Windows arm64 is not currently a bundled target. Before a public release, run the release workflow once with `publish=false`, verify that all release-runner labels are available in GitHub Actions, and confirm the generated native libraries load from a clean consumer module on each target platform.
0 commit comments