mirror of
https://github.com/logos-messaging/logos-messaging-go-bindings.git
synced 2026-01-07 16:33:09 +00:00
Revert "chore: use externally provided nwaku"
This commit is contained in:
parent
8360dbaa6b
commit
9f277e3842
3
.gitignore
vendored
3
.gitignore
vendored
@ -32,6 +32,3 @@ waku/store.sqlite3-wal
|
|||||||
waku/test_repeated_start_stop.log
|
waku/test_repeated_start_stop.log
|
||||||
|
|
||||||
third_party/
|
third_party/
|
||||||
|
|
||||||
# JetBrains IDEs
|
|
||||||
.idea/
|
|
||||||
87
README.md
87
README.md
@ -1,52 +1,51 @@
|
|||||||
# Waku Go Bindings
|
# Waku Go Bindings
|
||||||
|
|
||||||
Go bindings for the Waku library.
|
This repository provides Go bindings for the Waku library, enabling seamless integration with Go projects.
|
||||||
|
|
||||||
## Install
|
## Installation
|
||||||
|
|
||||||
|
To build the required dependencies for this module, the `make` command needs to be executed. If you are integrating this module into another project via `go get`, ensure that you navigate to the `waku-go-bindings` module directory and run `make`.
|
||||||
|
|
||||||
|
### Steps to Install
|
||||||
|
|
||||||
|
Follow these steps to install and set up the module:
|
||||||
|
|
||||||
|
1. Make sure your system has the [prerequisites](https://docs.waku.org/guides/nwaku/build-source#prerequisites) to run a local nwaku node
|
||||||
|
|
||||||
|
2. Retrieve the module using `go get`:
|
||||||
|
```
|
||||||
|
go get -u github.com/waku-org/waku-go-bindings
|
||||||
|
```
|
||||||
|
3. Navigate to the module's directory:
|
||||||
|
```
|
||||||
|
cd $(go list -m -f '{{.Dir}}' github.com/waku-org/waku-go-bindings)
|
||||||
|
```
|
||||||
|
4. Prepare third_party directory and clone nwaku
|
||||||
|
```
|
||||||
|
sudo mkdir third_party
|
||||||
|
sudo chown $USER third_party
|
||||||
|
```
|
||||||
|
5. Build the dependencies:
|
||||||
|
```
|
||||||
|
make -C waku
|
||||||
|
```
|
||||||
|
|
||||||
|
Now the module is ready for use in your project.
|
||||||
|
|
||||||
|
### Note
|
||||||
|
|
||||||
|
In order to easily build the libwaku library on demand, it is recommended to add the following target in your project's Makefile:
|
||||||
|
|
||||||
```
|
```
|
||||||
go get -u github.com/waku-org/waku-go-bindings
|
LIBWAKU_DEP_PATH=$(shell go list -m -f '{{.Dir}}' github.com/waku-org/waku-go-bindings)
|
||||||
|
|
||||||
|
buildlib:
|
||||||
|
cd $(LIBWAKU_DEP_PATH) &&\
|
||||||
|
sudo mkdir -p third_party &&\
|
||||||
|
sudo chown $(USER) third_party &&\
|
||||||
|
make -C waku
|
||||||
```
|
```
|
||||||
|
|
||||||
## Dependencies
|
## Example Usage
|
||||||
|
|
||||||
This repository doesn't download or build `nwaku`. You must provide `libwaku` and its headers.
|
For an example on how to use this package, please take a look at our [example-go-bindings](https://github.com/gabrielmer/example-waku-go-bindings) repo
|
||||||
|
|
||||||
To do so, you can:
|
|
||||||
- Build `libwaku` from https://github.com/waku-org/nwaku.
|
|
||||||
- Point `cgo` to the headers and compiled library when building your project.
|
|
||||||
|
|
||||||
Example environment setup (adjust paths to your nwaku checkout):
|
|
||||||
```
|
|
||||||
export NWAKU_DIR=/path/to/nwaku
|
|
||||||
export CGO_CFLAGS="-I${NWAKU_DIR}/library"
|
|
||||||
export CGO_LDFLAGS="-L${NWAKU_DIR}/build -lwaku -Wl,-rpath,${NWAKU_DIR}/build"
|
|
||||||
```
|
|
||||||
|
|
||||||
Such setup would look like this in a `Makefile`:
|
|
||||||
```Makefile
|
|
||||||
NWAKU_DIR ?= /path/to/nwaku
|
|
||||||
CGO_CFLAGS = -I$(NWAKU_DIR)/library
|
|
||||||
CGO_LDFLAGS = -L$(NWAKU_DIR)/build -lwaku -Wl,-rpath,$(NWAKU_DIR)/build
|
|
||||||
|
|
||||||
build: ## Your project build command
|
|
||||||
go build ./...
|
|
||||||
```
|
|
||||||
|
|
||||||
For a reference integration, see how `status-go` wires `CGO_CFLAGS` and `CGO_LDFLAGS` in its build setup.
|
|
||||||
|
|
||||||
NOTE: If your project is itself used as a Go dependency, all its clients will have to follow the same nwaku setup.
|
|
||||||
|
|
||||||
## Development
|
|
||||||
|
|
||||||
When working on this repository itself, `nwaku` is included as a git submodule for convenience.
|
|
||||||
|
|
||||||
- Initialize and update the submodule, then build `libwaku`
|
|
||||||
```sh
|
|
||||||
git submodule update --init --recursive
|
|
||||||
make -C waku build-libwaku
|
|
||||||
```
|
|
||||||
- Build the project. Submodule paths are used by default to find `libwaku`.
|
|
||||||
```shell
|
|
||||||
make -C waku build
|
|
||||||
```
|
|
||||||
|
|||||||
@ -1,25 +1,37 @@
|
|||||||
# Makefile for Waku Go Bindings
|
# Makefile for Waku Go Bindings
|
||||||
|
|
||||||
# Directories
|
# Directories
|
||||||
THIRD_PARTY_DIR := $(shell pwd)/../third_party
|
THIRD_PARTY_DIR := ../third_party
|
||||||
NWAKU_REPO := https://github.com/waku-org/nwaku
|
NWAKU_REPO := https://github.com/waku-org/nwaku
|
||||||
NWAKU_DIR := $(THIRD_PARTY_DIR)/nwaku
|
NWAKU_DIR := $(THIRD_PARTY_DIR)/nwaku
|
||||||
|
|
||||||
.PHONY: all clean build-libwaku build
|
.PHONY: all clean prepare build-libwaku build
|
||||||
|
|
||||||
# Default target
|
# Default target
|
||||||
all: build
|
all: build
|
||||||
|
|
||||||
|
# Prepare third_party directory and clone nwaku
|
||||||
|
prepare:
|
||||||
|
@echo "Creating third_party directory..."
|
||||||
|
@mkdir -p $(THIRD_PARTY_DIR)
|
||||||
|
|
||||||
|
@echo "Cloning nwaku repository..."
|
||||||
|
@if [ ! -d "$(NWAKU_DIR)" ]; then \
|
||||||
|
cd $(THIRD_PARTY_DIR) && \
|
||||||
|
git clone $(NWAKU_REPO) && \
|
||||||
|
cd $(NWAKU_DIR) && \
|
||||||
|
make update; \
|
||||||
|
else \
|
||||||
|
echo "nwaku repository already exists."; \
|
||||||
|
fi
|
||||||
|
|
||||||
# Build libwaku
|
# Build libwaku
|
||||||
build-libwaku:
|
build-libwaku: prepare
|
||||||
@echo "Building libwaku..."
|
@echo "Building libwaku..."
|
||||||
@cd $(NWAKU_DIR) && make libwaku
|
@cd $(NWAKU_DIR) && make libwaku
|
||||||
|
|
||||||
# Build Waku Go Bindings
|
# Build Waku Go Bindings
|
||||||
|
build: build-libwaku
|
||||||
build: export CGO_CFLAGS = "-I${NWAKU_DIR}/library/"
|
|
||||||
build: export CGO_LDFLAGS = "-L${NWAKU_DIR}/build/ -lwaku -L${NWAKU_DIR} -Wl,-rpath,${NWAKU_DIR}/build/"
|
|
||||||
build:
|
|
||||||
@echo "Building Waku Go Bindings..."
|
@echo "Building Waku Go Bindings..."
|
||||||
go build ./...
|
go build ./...
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,10 @@
|
|||||||
package waku
|
package waku
|
||||||
|
|
||||||
/*
|
/*
|
||||||
#include "libwaku.h"
|
#cgo LDFLAGS: -L../third_party/nwaku/build/ -lwaku
|
||||||
|
#cgo LDFLAGS: -L../third_party/nwaku -Wl,-rpath,../third_party/nwaku/build/
|
||||||
|
|
||||||
|
#include "../third_party/nwaku/library/libwaku.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
@ -345,7 +348,6 @@ import (
|
|||||||
"github.com/multiformats/go-multiaddr"
|
"github.com/multiformats/go-multiaddr"
|
||||||
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
|
"github.com/waku-org/go-waku/waku/v2/protocol/pb"
|
||||||
"github.com/waku-org/go-waku/waku/v2/utils"
|
"github.com/waku-org/go-waku/waku/v2/utils"
|
||||||
|
|
||||||
"github.com/waku-org/waku-go-bindings/waku/common"
|
"github.com/waku-org/waku-go-bindings/waku/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user