diff --git a/Makefile b/Makefile index 36ae96418..a25b6704e 100644 --- a/Makefile +++ b/Makefile @@ -324,48 +324,93 @@ ifneq ($(JOBS), ) endif ARCH :=amd64 -NWAKU_BASE_TAG := latest_ +#FIXME! +NWAKU_BUILDER_IMAGE := quay.io/vpavlin0/nwaku-builder +NWAKU_BASE_TAG := 20230512110759 +NWAKU_DIST_TAG := $(GIT_VERSION)_ #nwaku-base-20230502082624_arm64 SHELL := /bin/bash -static-arm64: ARCH :=arm64 -static-arm64: - set -x &&\ - mkdir -p $${PWD}/vendor-$(ARCH) $${PWD}/build/$(ARCH) &&\ - docker run -it --rm\ - -v $${PWD}:/home/user/nwaku:z\ - -v $${PWD}/vendor-arm64:/home/user/nwaku/vendor:z\ - -v $${PWD}/build/arm64:/home/user/nwaku/build:z\ - --workdir /home/user/nwaku\ - --user $$(id -u):$$(id -g)\ - nwaku:$(NWAKU_BASE_TAG)$(ARCH)\ - $(JOBS)\ - V=1\ - LOG_LEVEL="TRACE"\ - QUICK_AND_DIRTY_COMPILER=1\ - NIMFLAGS="--cpu:arm64 --os:linux --gcc.exe:aarch64-alpine-linux-musl-gcc --gcc.linkerexe:aarch64-alpine-linux-musl-gcc --passL:-static"\ - wakunode2 +BINARIES := wakunode2 wakunode1 chat2 -static-amd64: ARCH :=amd64 -static-amd64: +static-base: set -x &&\ - mkdir -p $${PWD}/vendor-$(ARCH) $${PWD}/build/$(ARCH) &&\ + mkdir -p $${PWD}/vendor-$(ARCH) $${PWD}/build/$(ARCH) $${PWD}/nimcache-$(ARCH) &&\ docker run -it --rm\ -v $${PWD}:/home/user/nwaku:z\ - -v $${PWD}/vendor-amd64:/home/user/nwaku/vendor:z\ - -v $${PWD}/build/amd64:/home/user/nwaku/build:z\ + -v $${PWD}/vendor-$(ARCH):/home/user/nwaku/vendor:z\ + -v $${PWD}/nimcache-$(ARCH):/home/user/nwaku/nimcache:z\ + -v $${PWD}/build/$(ARCH):/home/user/nwaku/build:z\ --workdir /home/user/nwaku\ --user $$(id -u):$$(id -g)\ - nwaku:$(NWAKU_BASE_TAG)$(ARCH)\ - $(JOBS)\ + $(NWAKU_BUILDER_IMAGE):$(NWAKU_BASE_TAG)_$(ARCH)\ + $(JOBS)\ V=1\ LOG_LEVEL="TRACE"\ QUICK_AND_DIRTY_COMPILER=1\ - NIMFLAGS="--cpu:amd64 --os:linux --gcc.exe:x86_64-alpine-linux-musl-gcc --gcc.linkerexe:x86_64-alpine-linux-musl-gcc --passL:-static"\ - wakunode2 + NIMFLAGS="$(NIMFLAGS)"\ + $(BINARIES) -static-all: static-arm64 static-amd64 +static-arm64: ARCH :=arm64 +static-arm64: NIMFLAGS := $(NIMFLAGS) --cpu:arm64 --os:linux --gcc.exe:aarch64-alpine-linux-musl-gcc --gcc.linkerexe:aarch64-alpine-linux-musl-gcc --passL:-static +static-arm64: + $(MAKE) $(JOBS) static-base NIMFLAGS="$(NIMFLAGS)" ARCH=$(ARCH) + + + +static-amd64: ARCH :=amd64 +static-amd64: NIMFLAGS := $(NIMFLAGS) --cpu:amd64 --os:linux --gcc.exe:x86_64-alpine-linux-musl-gcc --gcc.linkerexe:x86_64-alpine-linux-musl-gcc --passL:-static +static-amd64: + $(MAKE) $(JOBS) static-base NIMFLAGS="$(NIMFLAGS)" ARCH=$(ARCH) static-clean: - rm -rf build/arm64 build/amd64 vendor-arm64 vendor-amd64 \ No newline at end of file + rm -rf build/arm64 build/amd64 vendor-arm64 vendor-amd64 + + +################################################ +# Distributable Artifacts (tars and containers) # +################################################ + +dist-base: + mkdir -p dist &&\ + pushd build/$(ARCH) &&\ + tar czf ../../dist/wakunode-$(GIT_VERSION)-$(ARCH).tgz $(BINARIES) + +dist-amd64: static-amd64 + $(MAKE) $(JOBS) dist-base ARCH=amd64 + +dist-arm64: static-arm64 + $(MAKE) $(JOBS) dist-base ARCH=arm64 + +dist-container-base: + echo $(ARCH) &&\ + ls &&\ + cd build/$(ARCH) &&\ + docker build -t nwaku:$(NWAKU_DIST_TAG)$(ARCH) -f ../../docker/dist/Dockerfile.$(ARCH) . + +dist-container-amd64: | dist-amd64 + $(MAKE) $(JOBS) dist-container-base ARCH=amd64 + +dist-container-arm64: | dist-arm64 + $(MAKE) $(JOBS) dist-container-base ARCH=arm64 + +dist-container: + $(MAKE) $(JOBS) dist-container-amd64 + $(MAKE) $(JOBS) dist-container-arm64 + docker manifest create quay.io/vpavlin0/nwaku:multiarch \ + --amend nwaku:$(NWAKU_DIST_TAG)amd64 \ + --amend nwaku:$(NWAKU_DIST_TAG)arm64 + +################### +# Release Targets # +################### + +release-notes: + docker run \ + -it \ + --rm \ + -v $${PWD}:/opt/sv4git/repo:z \ + -u $(shell id -u) \ + quay.io/vpavlin0/sv4git:latest \ + release-notes diff --git a/docker/base/entrypoint.sh b/docker/base/entrypoint.sh index 334270c8c..86965d79c 100755 --- a/docker/base/entrypoint.sh +++ b/docker/base/entrypoint.sh @@ -8,4 +8,4 @@ die() { trap 'die' SIGINT -make "$@" \ No newline at end of file +make "$@" diff --git a/docker/dist/Dockerfile.amd64 b/docker/dist/Dockerfile.amd64 new file mode 100644 index 000000000..0f2ef1e48 --- /dev/null +++ b/docker/dist/Dockerfile.amd64 @@ -0,0 +1,5 @@ +FROM --platform=amd64 alpine:edge + +ADD . /usr/local/bin + +ENTRYPOINT [ "wakunode2" ] diff --git a/docker/dist/Dockerfile.arm64 b/docker/dist/Dockerfile.arm64 new file mode 100644 index 000000000..129f504f7 --- /dev/null +++ b/docker/dist/Dockerfile.arm64 @@ -0,0 +1,5 @@ +FROM --platform=arm64 alpine:edge + +ADD . /usr/local/bin + +ENTRYPOINT [ "wakunode2" ]