Skip to content

Commit b1dbb06

Browse files
committed
Reproducible builds: WASM
1 parent b412095 commit b1dbb06

File tree

3 files changed

+55
-3
lines changed

3 files changed

+55
-3
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,8 @@ wasm-client.wasm
1919
# Mobile build output
2020
build/
2121

22+
# Reproducible build output
23+
reproducible-builds/
24+
2225
# Misc
2326
*.DS_Store

Dockerfile-wasm

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#Get golang 1.17.3-buster as a base image
2+
FROM golang:1.17.3-buster@sha256:ee3a388a872237ddb600de3ab9512e73df0043f8878f0f355baeb5b723ef16ec as builder
3+
4+
#Define the working directory in the container
5+
WORKDIR /app
6+
7+
#Copy all files from root into the container
8+
COPY . ./
9+
10+
#Use go mod tidy to handle dependencies
11+
RUN go mod tidy
12+
13+
#Run the make task
14+
RUN make wasm

Makefile

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ GOLIST := go list $(PKG)/... | grep -v '/vendor/'
2020
XARGS := xargs -L 1
2121

2222
LDFLAGS := -s -w -buildid=
23-
LDFLAGS_MOBILE := -ldflags "$(call make_ldflags, ${tags}, -s -w)"
23+
LDFLAGS_MOBILE := -ldflags "$(call make_ldflags, ${tags}, -s -w -buildid=)"
2424

2525
RM := rm -f
2626
CP := cp
@@ -66,7 +66,7 @@ build:
6666
wasm:
6767
# The appengine build tag is needed because of the jessevdk/go-flags library
6868
# that has some OS specific terminal code that doesn't compile to WASM.
69-
cd cmd/wasm-client; GOOS=js GOARCH=wasm go build -trimpath -ldflags="$(LDFLAGS)" -tags="$(RPC_TAGS)" -v -o wasm-client.wasm .
69+
cd cmd/wasm-client; CGO_ENABLED=0 GOOS=js GOARCH=wasm go build -trimpath -ldflags="$(LDFLAGS)" -tags="$(RPC_TAGS)" -v -o wasm-client.wasm .
7070
$(CP) cmd/wasm-client/wasm-client.wasm example/wasm-client.wasm
7171

7272
apple:
@@ -87,10 +87,45 @@ macos:
8787
android:
8888
@$(call print, "Building Android library ($(ANDROID_BUILD)).")
8989
mkdir -p $(ANDROID_BUILD_DIR)
90-
GOOS=js $(GOMOBILE_BIN) bind -target=android -tags="mobile $(DEV_TAGS) $(RPC_TAGS)" -androidapi 21 $(LDFLAGS_MOBILE) -v -o $(ANDROID_BUILD) $(MOBILE_PKG)
90+
CGO_ENABLED=0 GO386=softfloat GOOS=js $(GOMOBILE_BIN) bind -target=android -tags="mobile $(DEV_TAGS) $(RPC_TAGS)" -androidapi 21 $(LDFLAGS_MOBILE) -v -o $(ANDROID_BUILD) -trimpath $(MOBILE_PKG)
9191

9292
mobile: ios android
9393

94+
repro-wasm:
95+
#Build the repro-wasm image
96+
docker build -f Dockerfile-wasm -t repro-wasm-image --no-cache .
97+
98+
#Run the repro-wasm-image in a new container called repro-wasm
99+
docker run --name repro-wasm repro-wasm-image
100+
101+
#Copy the compiled WASM file to the host machine
102+
mkdir -p reproducible-builds
103+
docker cp repro-wasm:/app/cmd/wasm-client/wasm-client.wasm ./reproducible-builds/
104+
105+
#Remove the repro-wasm container
106+
docker rm repro-wasm
107+
108+
#Remove the repro-wasm-image
109+
docker image rm repro-wasm-image
110+
111+
repro-android:
112+
#Build the repro-android image
113+
docker build -f Dockerfile-android -t repro-android-image --no-cache .
114+
115+
#Run the repro-android-image in a new container called repro-android
116+
docker run --name repro-android repro-android-image
117+
118+
#Copy the built Android library files to the host machine
119+
mkdir -p reproducible-builds/android
120+
docker cp repro-android:/gomobile/src/github.com/lightninglabs/lightning-node-connect/build/android/lnc-mobile.aar ./reproducible-builds/android
121+
docker cp repro-android:/gomobile/src/github.com/lightninglabs/lightning-node-connect/build/android/lnc-mobile-sources.jar ./reproducible-builds/android
122+
123+
#Remove the repro-android container
124+
docker rm repro-android
125+
126+
#Remove the repro-android-image
127+
docker image rm repro-android-image
128+
94129
# =======
95130
# TESTING
96131
# =======

0 commit comments

Comments
 (0)