1+ VERSION =$(shell cat shared/version.txt)
2+ LOCAL_OS =$(shell go env GOOS) -$(shell go env GOARCH)
3+
14BUILD_DIR =build
2- CLI_DIR =${BUILD_DIR}/cli
3- DAEMON_DIR =${BUILD_DIR}/daemon
5+ CLI_DIR =${BUILD_DIR}/${VERSION}/ cli
6+ DAEMON_DIR =${BUILD_DIR}/${VERSION}/ daemon
47
58CLI_TARGET_OOS: =linux darwin
69ARCHS: =arm64 amd64
@@ -19,15 +22,29 @@ ${CLI_DIR}/rocketpool-cli-$1-$2: ${CLI_DIR}
1922endef
2023
2124.PHONY : all
22- all : lint rocketpool-cli rocketpool-daemon
25+ all : ${BUILD_DIR}/rocketpool-cli ${BUILD_DIR}/rocketpool-daemon lint
26+
27+ .PHONY : release
28+ release : clean docker ${CLI_TARGET_STRINGS} ${DAEMON_TARGET_STRINGS}
29+
30+ # Target for build/rocketpool-cli which is a symlink to an os-specific build
31+ ${BUILD_DIR}/rocketpool-cli : ${CLI_DIR}/rocketpool-cli-${LOCAL_OS}
32+ ln -sf $(shell pwd) /${CLI_DIR} /rocketpool-cli-${LOCAL_OS} ${BUILD_DIR} /rocketpool-cli
33+
2334
24- .PHONY : rocketpool-cli
25- rocketpool-cli : $(CLI_TARGET_STRINGS )
35+ # Target for build/rocketpool-daemon which is a symlink to an os-specific build
36+ ${BUILD_DIR}/rocketpool-daemon : ${DAEMON_DIR}/rocketpool-daemon-${LOCAL_OS}
37+ ln -sf $(shell pwd) /${DAEMON_DIR} /rocketpool-daemon-${LOCAL_OS} ${BUILD_DIR} /rocketpool-daemon
2638
27- .PHONY : rocketpool-daemon
28- rocketpool-daemon : ${DAEMON_DIR}
29- docker build -t rocketpool/smartnode-builder:latest -f docker/smartnode-builder .
30- docker run --env OWNER=$(shell id -u) :$(shell id -g) --rm -v $(PWD ) :/src -v $(PWD ) /${DAEMON_DIR} :/out -v /tmp/docker-go-build:/root/.cache/go-build rocketpool/smartnode-builder:latest /src/rocketpool/build.sh
39+ # amd64 daemon build
40+ .PHONY : ${DAEMON_DIR}/rocketpool-daemon-linux-amd64
41+ ${DAEMON_DIR}/rocketpool-daemon-linux-amd64 : ${DAEMON_DIR}
42+ CGO_ENABLED=1 CGO_C_FLAGS=" -O -D__BLST_PORTABLE__" GOARCH=amd64 GOOS=linux go build -o $@ rocketpool/rocketpool.go
43+
44+ # arm64 daemon build
45+ .PHONY : ${DAEMON_DIR}/rocketpool-daemon-linux-arm64
46+ ${DAEMON_DIR}/rocketpool-daemon-linux-arm64 : ${DAEMON_DIR}
47+ CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-cpp CGO_C_FLAGS=" -O -D__BLST_PORTABLE__" GOARCH=arm64 GOOS=linux go build -o $@ rocketpool/rocketpool.go
3148
3249${CLI_DIR} :
3350 mkdir -p ${CLI_DIR}
@@ -36,14 +53,24 @@ ${DAEMON_DIR}:
3653
3754$(foreach oos,$(CLI_TARGET_OOS),$(foreach arch,$(ARCHS),$(eval $(call rocketpool-cli-template,$(oos),$(arch)))))
3855
56+
57+ # Docker containers
58+ .PHONY : docker
59+ docker :
60+ rm -f ~ /.docker/manifests/docker.io_rocketpool_smartnode-latest
61+ rm -f ~ /.docker/manifests/docker.io_rocketpool_smartnode-${VERSION}
62+ VERSION=${VERSION} docker bake -f docker/daemon-bake.hcl daemon
63+ docker manifest create rocketpool/smartnode:${VERSION} --amend rocketpool/smartnode:${VERSION} -amd64 --amend rocketpool/smartnode:${VERSION} -arm64
64+ docker manifest create rocketpool/smartnode:latest --amend rocketpool/smartnode:${VERSION} -amd64 --amend rocketpool/smartnode:${VERSION} -arm64
65+
3966.PHONY : clean
4067clean :
4168 rm -rf ${BUILD_DIR}
4269
4370.PHONY : lint
4471lint :
4572 @echo $(MODULE_GLOBS )
46- golangci-lint run --disable-all -- enable goimports $(MODULE_GLOBS )
73+ docker run --rm -v .:/go/smartnode --workdir /go/smartnode golangci/golangci-lint:v2.1-alpine golangci-lint fmt -- enable goimports $(MODULE_GLOBS )
4774
4875.PHONY : test
4976test :
0 commit comments