diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c7f26841e4..8bab10f7e5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -138,7 +138,7 @@ jobs: USE_PRELOAD: 1,4 SAVE_BRANCH_LAUNCH_DEPTH: 1 run: | - cat pkgs.txt.part.${{ matrix.part }} | xargs go test -mod=readonly -timeout 30m -coverprofile=${{ matrix.part }}profile.out -covermode=atomic -tags='norace ledger test_ledger_mock goleveldb' + cat pkgs.txt.part.${{ matrix.part }} | xargs go test -mod=readonly -timeout 30m -coverprofile=${{ matrix.part }}profile.out -covermode=atomic -tags='norace ledger test_ledger_mock goleveldb libsodium' if: env.GIT_DIFF - uses: actions/upload-artifact@v3 with: @@ -219,7 +219,7 @@ jobs: USE_PRELOAD: 1,4 SAVE_BRANCH_LAUNCH_DEPTH: 1 run: | - xargs --arg-file=pkgs.txt.part.${{ matrix.part }} go test -mod=readonly -timeout 30m -race -tags='cgo ledger test_ledger_mock goleveldb' + xargs --arg-file=pkgs.txt.part.${{ matrix.part }} go test -mod=readonly -timeout 30m -race -tags='cgo ledger test_ledger_mock goleveldb libsodium' if: env.GIT_DIFF - uses: actions/upload-artifact@v3 with: diff --git a/.gitignore b/.gitignore index ba30e1e40b..99e40be93e 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,5 @@ dependency-graph.png *.out *.synctex.gz +# tools +tools/sodium diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000000..d1f648c8f9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tools/libsodium"] + path = tools/libsodium + url = https://github.com/algorand/libsodium.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 06b33ccaea..259282ba00 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ## [Unreleased](https://github.com/line/lbm-sdk/compare/v0.46.0-rc9...HEAD) ### Features +(build) [\#793](https://github.com/line/lbm-sdk/pull/793) enable to use libsodium version ostracon ### Improvements * (x/auth) [\#776](https://github.com/line/lbm-sdk/pull/776) remove unused MsgEmpty diff --git a/Makefile b/Makefile index 76ba1cabf5..145be45a96 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,15 @@ else endif endif +# VRF library selection +ifeq (libsodium,$(findstring libsodium,$(LBM_BUILD_OPTIONS))) + CGO_ENABLED=1 + BUILD_TAGS += gcc libsodium + LIBSODIUM_TARGET = libsodium + CGO_CFLAGS += "-I$(LIBSODIUM_OS)/include" + CGO_LDFLAGS += "-L$(LIBSODIUM_OS)/lib -lsodium" +endif + # secp256k1 implementation selection ifeq (libsecp256k1,$(findstring libsecp256k1,$(LBM_BUILD_OPTIONS))) CGO_ENABLED=1 @@ -115,7 +124,6 @@ include contrib/devtools/Makefile BUILD_TARGETS := build install build: BUILD_ARGS=-o $(BUILDDIR)/ - CGO_CFLAGS=$(CGO_CFLAGS) CGO_LDFLAGS=$(CGO_LDFLAGS) CGO_ENABLED=$(CGO_ENABLED) go build -mod=readonly $(BUILD_FLAGS) $(BUILD_ARGS) ./... build-docker: go.sum $(BUILDDIR)/ docker build -t simapp:latest . --platform="linux/amd64" --build-arg ARCH=$(ARCH) @@ -124,8 +132,8 @@ build-docker: go.sum $(BUILDDIR)/ build-linux: GOOS=linux GOARCH=$(if $(findstring aarch64,$(shell uname -m)) || $(findstring arm64,$(shell uname -m)),arm64,amd64) LEDGER_ENABLED=false $(MAKE) build -$(BUILD_TARGETS): go.sum $(BUILDDIR)/ - go $@ -mod=readonly $(BUILD_FLAGS) $(BUILD_ARGS) ./... +$(BUILD_TARGETS): go.sum $(BUILDDIR)/ $(LIBSODIUM_TARGET) + CGO_CFLAGS=$(CGO_CFLAGS) CGO_LDFLAGS=$(CGO_LDFLAGS) CGO_ENABLED=$(CGO_ENABLED) go $@ -mod=readonly $(BUILD_FLAGS) $(BUILD_ARGS) ./... $(BUILDDIR)/: mkdir -p $(BUILDDIR)/ @@ -536,3 +544,27 @@ rosetta-data: docker container rm data_dir_build .PHONY: rosetta-data + +############################################################################### +### tools ### +############################################################################### + +VRF_ROOT = $(shell pwd)/tools +LIBSODIUM_ROOT = $(VRF_ROOT)/libsodium +LIBSODIUM_OS = $(VRF_ROOT)/sodium/$(shell go env GOOS)_$(shell go env GOARCH) +ifneq ($(TARGET_HOST), "") +LIBSODIUM_HOST = "--host=$(TARGET_HOST)" +endif + +libsodium: + @if [ ! -f $(LIBSODIUM_OS)/lib/libsodium.a ]; then \ + rm -rf $(LIBSODIUM_ROOT) && \ + mkdir $(LIBSODIUM_ROOT) && \ + git submodule update --init --recursive && \ + cd $(LIBSODIUM_ROOT) && \ + ./autogen.sh && \ + ./configure --disable-shared --prefix="$(LIBSODIUM_OS)" $(LIBSODIUM_HOST) && \ + $(MAKE) && \ + $(MAKE) install; \ + fi +.PHONY: libsodium diff --git a/tools/libsodium b/tools/libsodium new file mode 160000 index 0000000000..004952bb57 --- /dev/null +++ b/tools/libsodium @@ -0,0 +1 @@ +Subproject commit 004952bb57b2a6d2c033969820c80255e8362615