1515 build :
1616 strategy :
1717 matrix :
18- runs-on : [ubuntu-latest] # TODO add macos-latest when builds are possible on macs
18+ runs-on : [ubuntu-latest, macos-13, macos-13-xlarge]
1919 runs-on : ${{ matrix.runs-on }}
2020 name : Build
2121 steps :
@@ -45,21 +45,23 @@ jobs:
4545 GOOS=$(go env GOOS)
4646 GOARCH=$(go env GOARCH)
4747 GOPATH=$(go env GOPATH)
48- ARCHIVE="multiversx_""$APP_VER_SHORT""_""$GOOS""_""$GOARCH"".tgz "
48+ ARCHIVE="multiversx_""$APP_VER_SHORT""_""$GOOS""_""$GOARCH"".zip "
4949 BUILD_DIR=${GITHUB_WORKSPACE}/build
50- WASM_VERSION =$(cat go.mod | grep mx-chain-vm-v | sort -n | tail -n -1| awk -F '/' '{print$3}'| sed 's/ /@/g')
51- WASMER_DIR =${GOPATH}/pkg/mod/github.com/multiversx/${WASM_VERSION}/wasmer
50+ VM_GO_VERSION =$(cat go.mod | grep mx-chain-vm-go | sort -n | tail -n -1| awk -F '/' '{print$3}'| sed 's/ /@/g')
51+ VM_GO_DIR =${GOPATH}/pkg/mod/github.com/multiversx/${VM_GO_VERSION}
5252
5353 echo "GOOS=${GOOS}" >> $GITHUB_ENV
5454 echo "GOARCH=${GOARCH}" >> $GITHUB_ENV
5555 echo "ARCHIVE=${ARCHIVE}" >> $GITHUB_ENV
5656 echo "BUILD_DIR=${BUILD_DIR}" >> $GITHUB_ENV
57- echo "WASMER_DIR=${WASMER_DIR}" >> $GITHUB_ENV
57+ echo "VM_GO_VERSION=${VM_GO_VERSION}" >> $GITHUB_ENV
58+ echo "VM_GO_DIR=${VM_GO_DIR}" >> $GITHUB_ENV
5859
5960 - name : Build
6061 run : |
6162 mkdir -p ${BUILD_DIR}
6263 cd ${GITHUB_WORKSPACE}/cmd/node && go build -o "${BUILD_DIR}/node" -a -ldflags="-X main.appVersion=${APP_VER}"
64+ cd ${GITHUB_WORKSPACE}/cmd/seednode && go build -o "${BUILD_DIR}/seednode" -a -ldflags="-X main.appVersion=${APP_VER}"
6365 cd ${GITHUB_WORKSPACE}/cmd/keygenerator && go build -o "${BUILD_DIR}/keygenerator" -a -ldflags="-X main.appVersion=${APP_VER}"
6466 cd ${GITHUB_WORKSPACE}/cmd/logviewer && go build -o "${BUILD_DIR}/logviewer" -a -ldflags="-X main.appVersion=${APP_VER}"
6567 cd ${GITHUB_WORKSPACE}/cmd/termui && go build -o "${BUILD_DIR}/termui" -a -ldflags="-X main.appVersion=${APP_VER}"
@@ -69,24 +71,68 @@ jobs:
6971 cd ${GITHUB_WORKSPACE}
7072
7173 if [[ "$GOOS" == linux && "$GOARCH" == amd64 ]]; then
72- cp -f ${WASMER_DIR}/libwasmer_linux_amd64.so ${BUILD_DIR};
74+ cp --verbose --no-preserve=mode,ownership ${VM_GO_DIR}/wasmer2/libvmexeccapi.so ${BUILD_DIR}/libvmexeccapi.so
75+ cp --verbose --no-preserve=mode,ownership ${VM_GO_DIR}/wasmer/libwasmer_linux_amd64.so ${BUILD_DIR}/libwasmer_linux_amd64.so
7376 fi
77+
78+ # Actually, there's no runner for this combination (as of March 2024).
7479 if [[ "$GOOS" == linux && "$GOARCH" == arm64 ]]; then
75- cp -f ${WASMER_DIR}/libwasmer_linux_arm64.so ${BUILD_DIR};
80+ cp --verbose --no-preserve=mode,ownership ${VM_GO_DIR}/wasmer2/libvmexeccapi_arm.so ${BUILD_DIR}/libvmexeccapi_arm.so
81+ cp --verbose --no-preserve=mode,ownership ${VM_GO_DIR}/wasmer/libwasmer_linux_arm64_shim.so ${BUILD_DIR}/libwasmer_linux_arm64_shim.so
7682 fi
83+
7784 if [[ "$GOOS" == darwin && "$GOARCH" == amd64 ]]; then
78- cp -f ${WASMER_DIR}/libwasmer_darwin_amd64.dylib ${BUILD_DIR};
85+ cp -v ${VM_GO_DIR}/wasmer2/libvmexeccapi.dylib ${BUILD_DIR}/libvmexeccapi.dylib
86+ cp -v ${VM_GO_DIR}/wasmer/libwasmer_darwin_amd64.dylib ${BUILD_DIR}/libwasmer_darwin_amd64.dylib
87+ fi
88+
89+ if [[ "$GOOS" == darwin && "$GOARCH" == arm64 ]]; then
90+ cp -v ${VM_GO_DIR}/wasmer2/libvmexeccapi_arm.dylib ${BUILD_DIR}/libvmexeccapi_arm.dylib
91+ cp -v ${VM_GO_DIR}/wasmer/libwasmer_darwin_arm64_shim.dylib ${BUILD_DIR}/libwasmer_darwin_arm64_shim.dylib
7992 fi
8093
81- cd ${BUILD_DIR}
82- tar czvf "${GITHUB_WORKSPACE}/${ARCHIVE}" *
83- stat ${GITHUB_WORKSPACE}/${ARCHIVE}
94+ if [[ "$GOOS" == linux ]]; then
95+ patchelf --set-rpath "\$ORIGIN" ${BUILD_DIR}/node
96+ patchelf --set-rpath "\$ORIGIN" ${BUILD_DIR}/seednode
97+
98+ ldd ${BUILD_DIR}/node
99+ ldd ${BUILD_DIR}/seednode
100+ fi
101+
102+ if [[ "$GOOS" == darwin ]]; then
103+ install_name_tool -add_rpath "@loader_path" ${BUILD_DIR}/node
104+ install_name_tool -add_rpath "@loader_path" ${BUILD_DIR}/seednode
105+
106+ otool -L ${BUILD_DIR}/node
107+ otool -L ${BUILD_DIR}/seednode
108+ fi
109+
110+ - name : Smoke test
111+ run : |
112+ # Remove all downloaded Go packages, so that we can test the binary's independence from them (think of Wasmer libraries).
113+ sudo rm -rf ${GOPATH}/pkg/mod
114+
115+ # Test binaries in different current directories.
116+ cd ${BUILD_DIR} && ./node --version
117+ cd ${GITHUB_WORKSPACE} && ${BUILD_DIR}/node --version
118+ cd / && ${BUILD_DIR}/node --version
119+
120+ cd ${BUILD_DIR} && ./seednode --version
121+ cd ${GITHUB_WORKSPACE} && ${BUILD_DIR}/seednode --version
122+ cd / && ${BUILD_DIR}/seednode --version
123+
124+ - name : Package build output
125+ run : |
126+ sudo chown -R $USER: ${BUILD_DIR}
127+ chmod -R 755 ${BUILD_DIR}
128+ ls -al ${BUILD_DIR}
129+ zip -r -j ${ARCHIVE} ${BUILD_DIR}
84130
85131 - name : Save artifacts
86132 uses : actions/upload-artifact@v3
87133 with :
88134 name : ${{ env.ARCHIVE }}
89- path : ${{ github.workspace }}/${{ env.ARCHIVE }}
135+ path : ${{ env.ARCHIVE }}
90136 if-no-files-found : error
91137
92138 release :
@@ -113,6 +159,6 @@ jobs:
113159 run : |
114160 gh release create --draft --notes="Release draft from Github Actions" vNext
115161 sleep 10
116- for i in $(find ./assets -name '*.tgz ' -type f); do
162+ for i in $(find ./assets -name '*.zip ' -type f); do
117163 gh release upload vNext ${i}
118164 done
0 commit comments