From 30728b75e946ec190ce40d6a39fca551c49f0982 Mon Sep 17 00:00:00 2001 From: 0g-wh Date: Mon, 5 Aug 2024 23:11:18 +0800 Subject: [PATCH] fix wasm static link (#57) --- .github/workflows/upload-release-assets.yml | 4 ++-- Makefile | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/upload-release-assets.yml b/.github/workflows/upload-release-assets.yml index 2e4fd0ad..3d0915f9 100644 --- a/.github/workflows/upload-release-assets.yml +++ b/.github/workflows/upload-release-assets.yml @@ -14,9 +14,9 @@ jobs: with: go-version: '1.21' - name: Build - run: make build + run: sudo LINK_STATICALLY=true make build-release - name: Rename file - run: mv ./out/linux/0gchaind ./out/linux/0gchaind-linux-${{ github.ref_name }} + run: sudo mv ./out/linux/0gchaind ./out/linux/0gchaind-linux-${{ github.ref_name }} - name: Upload Release Asset uses: softprops/action-gh-release@v2 with: diff --git a/Makefile b/Makefile index 29caf943..f556645c 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,8 @@ BINARY_NAME := 0gchaind MAIN_ENTRY := ./cmd/$(BINARY_NAME) DOCKER_IMAGE_NAME := 0glabs/$(PROJECT_NAME) GO_BIN ?= go +ARCH := $(shell uname -m) +WASMVM_VERSION := $(shell $(GO_BIN) list -m github.com/CosmWasm/wasmvm | sed 's/.* //') GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD) GIT_COMMIT := $(shell git rev-parse HEAD) @@ -174,8 +176,9 @@ endif ifeq (,$(findstring nostrip,$(COSMOS_BUILD_OPTIONS))) ldflags += -w -s endif + ifeq ($(LINK_STATICALLY),true) - ldflags += -linkmode=external -extldflags "-Wl,-z,muldefs -static" + ldflags += -linkmode=external -extldflags "-Wl,-z,muldefs -static -lm" endif ldflags += $(LDFLAGS) ldflags := $(strip $(ldflags)) @@ -198,6 +201,10 @@ else $(GO_BIN) build -mod=readonly $(BUILD_FLAGS) -o out/$(shell $(GO_BIN) env GOOS)/$(BINARY_NAME) $(MAIN_ENTRY) endif +build-release: go.sum + wget -q https://github.com/CosmWasm/wasmvm/releases/download/$(WASMVM_VERSION)/libwasmvm_muslc.$(ARCH).a -O /lib/libwasmvm.$(ARCH).a + $(GO_BIN) build -mod=readonly $(BUILD_FLAGS) -o out/$(shell $(GO_BIN) env GOOS)/$(BINARY_NAME) $(MAIN_ENTRY) + build-linux: go.sum LEDGER_ENABLED=false GOOS=linux GOARCH=amd64 $(MAKE) build