48 lines
1.1 KiB
Markdown
Raw Normal View History

# logos-delivery Go Bindings
2024-11-27 12:08:50 +02:00
Go bindings for the Waku library.
2024-11-27 12:08:50 +02:00
## Install
2024-11-27 12:08:50 +02:00
```
go get -u github.com/logos-messaging/logos-delivery-go-bindings
```
2024-11-27 12:08:50 +02:00
2025-12-19 14:43:52 +05:30
## Building & Dependencies
2024-11-27 12:08:50 +02:00
`libwaku` (from `logos-delivery`) is required at compile-time.
2025-12-22 14:29:52 +05:30
### Building with Makefile
If you have `logos-delivery` checked out, point the build to it:
2025-12-22 14:29:52 +05:30
```bash
# path to your existing logos-delivery clone
ci: add PR-gate workflow + fix module path (#109) * chore: rename module path to logos-delivery-go-bindings The module path still read `logos-messaging-go-bindings`, mismatching the repository name. Rename it to `github.com/logos-messaging/logos-delivery-go-bindings` and update all in-repo imports. gofmt re-sorts a few import blocks as a result (plus two files that were already unformatted on master). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: add PR-gate workflow and golangci-lint config The repo had no `on: pull_request` CI (only workflow_dispatch + nightly schedule), so nothing validated PRs. Add `.github/workflows/pr.yml` that builds libwaku and runs `go build`, `go vet`, golangci-lint, and a test-compile pass on every PR. Add a baseline `.golangci.yml` (standard linters + gofmt). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: scope golangci-lint to new code via new-from-merge-base Run the full `standard` linter set but only report findings introduced since the merge-base with master, so the legacy kernel wrapper's pre-existing issues (unchecked defer-Close, dead helpers) don't drown the gate while new code still gets full coverage. Fetch origin/master so the base ref is available in CI. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: clone logos-delivery outside vendor/ and build in module mode `go build` failed in CI because cloning logos-delivery into `vendor/` put Go into vendor mode against an inconsistent `vendor/modules.txt`. Clone the checkout into `.logos-delivery` instead and set `GOFLAGS=-mod=mod` so the gate always builds in module mode. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: use golangci-lint-action@v7 for golangci-lint v2 v6 of the action rejects golangci-lint v2 versions ("v2 is not supported by golangci-lint-action v6"). Bump to v7. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * ci: cache libwaku, gate go mod tidy, rename LMN_DIR - Rename LMN_DIR -> LOGOS_DELIVERY_DIR across the PR-gate and nightly workflows, the waku Makefile, and the build docs. - Cache the built logos-delivery kernel keyed on its upstream HEAD SHA, skipping the clone + libwaku build while that commit is unchanged. - Add a "go mod tidy is clean" step that fails if go.mod/go.sum drift. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 23:04:57 +01:00
export LOGOS_DELIVERY_DIR=/absolute/path/to/logos-delivery
export CGO_CFLAGS="-I${LOGOS_DELIVERY_DIR}/library"
export CGO_LDFLAGS="-L${LOGOS_DELIVERY_DIR}/build -lwaku -Wl,-rpath,${LOGOS_DELIVERY_DIR}/build"
2025-12-22 14:29:52 +05:30
# compile all packages
make -C pkg/kernel build
2025-12-22 14:29:52 +05:30
# run all tests
make -C pkg/kernel test
2025-12-22 14:29:52 +05:30
# run a specific test
make -C pkg/kernel test TEST=TestConnectedPeersInfo
2025-12-22 14:29:52 +05:30
```
2025-03-13 15:22:58 +02:00
## Development
When working on this repository itself, `logos-delivery` is included as a git submodule for convenience.
- Initialize and update the submodule, then build `libwaku`
```sh
git submodule update --init --recursive
make -C pkg/kernel build-libwaku
```
- Build the project. Submodule paths are used by default to find `libwaku`.
```shell
make -C pkg/kernel build
```