diff --git a/Makefile b/Makefile index ef82e1ed8..36ae96418 100644 --- a/Makefile +++ b/Makefile @@ -311,3 +311,61 @@ wrappers: | build deps librln libwaku.so go build -ldflags "-linkmode external -extldflags '$(EXTRA_LIBS_DYNAMIC)'" -o build/go_wrapper_example wrappers/wrapper_example.go #wrappers/cfuncs.go endif # "variables.mk" was not included + +############################################## +# Static Binaries for Multiple Architectures # +############################################## + +MAKE_PID := $(shell echo $$PPID) +JOB_FLAG := $(filter -j%, $(subst --jobs ,-j,$(subst --jobs=,-j,$(subst -j ,-j,$(shell ps T | grep "^\s*$(MAKE_PID).*$(MAKE)"))))) +JOBS := $(subst -j,,$(JOB_FLAG)) +ifneq ($(JOBS), ) + JOBS := -j $(JOBS) +endif + +ARCH :=amd64 +NWAKU_BASE_TAG := latest_ +#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 + +static-amd64: ARCH :=amd64 +static-amd64: + set -x &&\ + mkdir -p $${PWD}/vendor-$(ARCH) $${PWD}/build/$(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\ + --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:amd64 --os:linux --gcc.exe:x86_64-alpine-linux-musl-gcc --gcc.linkerexe:x86_64-alpine-linux-musl-gcc --passL:-static"\ + wakunode2 + +static-all: static-arm64 static-amd64 + +static-clean: + rm -rf build/arm64 build/amd64 vendor-arm64 vendor-amd64 \ No newline at end of file diff --git a/docker/base/Dockerfile.amd64 b/docker/base/Dockerfile.amd64 new file mode 100644 index 000000000..5db4a02b4 --- /dev/null +++ b/docker/base/Dockerfile.amd64 @@ -0,0 +1,15 @@ +FROM --platform=amd64 alpine:edge + +ARG USER_ID +ARG GROUP_ID + +RUN addgroup -g ${GROUP_ID} user; \ + adduser --disabled-password --gecos '' -u ${USER_ID} -G user user; + +WORKDIR /home/user/nwaku +ENTRYPOINT [ "entrypoint.sh" ] + +# Get build tools and required header files +RUN apk add --no-cache bash git cargo build-base pcre-dev linux-headers + +ADD entrypoint.sh /bin/entrypoint.sh diff --git a/docker/base/Dockerfile.arm64 b/docker/base/Dockerfile.arm64 new file mode 100644 index 000000000..bb710f973 --- /dev/null +++ b/docker/base/Dockerfile.arm64 @@ -0,0 +1,19 @@ +FROM --platform=arm64 alpine:edge + +ARG USER_ID +ARG GROUP_ID + +RUN addgroup -g ${GROUP_ID} user; \ + adduser --disabled-password --gecos '' -u ${USER_ID} -G user user; + +WORKDIR /home/user/nwaku +ENTRYPOINT [ "entrypoint.sh" ] + +# Get build tools and required header files +RUN apk add --no-cache bash git cargo build-base pcre-dev linux-headers + +ADD entrypoint.sh /bin/entrypoint.sh + +#RUN git clone https://github.com/waku-org/nwaku.git --depth 1 &&\ +# cd nwaku &&\ +# make deps diff --git a/docker/base/entrypoint.sh b/docker/base/entrypoint.sh new file mode 100755 index 000000000..334270c8c --- /dev/null +++ b/docker/base/entrypoint.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo $@ + +die() { + exit 143; # 128 + 15 -- SIGTERM +} + +trap 'die' SIGINT + +make "$@" \ No newline at end of file diff --git a/docker/builder/Dockerfile.arm64 b/docker/builder/Dockerfile.arm64 new file mode 100644 index 000000000..e69de29bb