mirror of
https://github.com/openfaas/faasd.git
synced 2025-06-08 16:06:47 +00:00
* Updates containerd to v1.7.0 and new binary for 32-bit Arm OSes. * Updates Go dependencies - openfaas and external Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
126 lines
3.8 KiB
Makefile
Generated
126 lines
3.8 KiB
Makefile
Generated
BASE:=base.tar.gz
|
|
DEV_BUILD:=0
|
|
|
|
GO:=go
|
|
GO_FLAGS:=-ldflags "-s -w" # strip Go binaries
|
|
CGO_ENABLED:=0
|
|
GOMODVENDOR:=
|
|
|
|
CFLAGS:=-O2 -Wall
|
|
LDFLAGS:=-static -s # strip C binaries
|
|
|
|
GO_FLAGS_EXTRA:=
|
|
ifeq "$(GOMODVENDOR)" "1"
|
|
GO_FLAGS_EXTRA += -mod=vendor
|
|
endif
|
|
GO_BUILD_TAGS:=
|
|
ifneq ($(strip $(GO_BUILD_TAGS)),)
|
|
GO_FLAGS_EXTRA += -tags="$(GO_BUILD_TAGS)"
|
|
endif
|
|
GO_BUILD:=CGO_ENABLED=$(CGO_ENABLED) $(GO) build $(GO_FLAGS) $(GO_FLAGS_EXTRA)
|
|
|
|
SRCROOT=$(dir $(abspath $(firstword $(MAKEFILE_LIST))))
|
|
# additional directories to search for rule prerequisites and targets
|
|
VPATH=$(SRCROOT)
|
|
|
|
DELTA_TARGET=out/delta.tar.gz
|
|
|
|
ifeq "$(DEV_BUILD)" "1"
|
|
DELTA_TARGET=out/delta-dev.tar.gz
|
|
endif
|
|
|
|
# The link aliases for gcstools
|
|
GCS_TOOLS=\
|
|
generichook \
|
|
install-drivers
|
|
|
|
.PHONY: all always rootfs test
|
|
|
|
.DEFAULT_GOAL := all
|
|
|
|
all: out/initrd.img out/rootfs.tar.gz
|
|
|
|
clean:
|
|
find -name '*.o' -print0 | xargs -0 -r rm
|
|
rm -rf bin deps rootfs out
|
|
|
|
test:
|
|
cd $(SRCROOT) && $(GO) test -v ./internal/guest/...
|
|
|
|
rootfs: out/rootfs.vhd
|
|
|
|
out/rootfs.vhd: out/rootfs.tar.gz bin/cmd/tar2ext4
|
|
gzip -f -d ./out/rootfs.tar.gz
|
|
bin/cmd/tar2ext4 -vhd -i ./out/rootfs.tar -o $@
|
|
|
|
out/rootfs.tar.gz: out/initrd.img
|
|
rm -rf rootfs-conv
|
|
mkdir rootfs-conv
|
|
gunzip -c out/initrd.img | (cd rootfs-conv && cpio -imd)
|
|
tar -zcf $@ -C rootfs-conv .
|
|
rm -rf rootfs-conv
|
|
|
|
out/initrd.img: $(BASE) $(DELTA_TARGET) $(SRCROOT)/hack/catcpio.sh
|
|
$(SRCROOT)/hack/catcpio.sh "$(BASE)" $(DELTA_TARGET) > out/initrd.img.uncompressed
|
|
gzip -c out/initrd.img.uncompressed > $@
|
|
rm out/initrd.img.uncompressed
|
|
|
|
# This target includes utilities which may be useful for testing purposes.
|
|
out/delta-dev.tar.gz: out/delta.tar.gz bin/internal/tools/snp-report
|
|
rm -rf rootfs-dev
|
|
mkdir rootfs-dev
|
|
tar -xzf out/delta.tar.gz -C rootfs-dev
|
|
cp bin/internal/tools/snp-report rootfs-dev/bin/
|
|
tar -zcf $@ -C rootfs-dev .
|
|
rm -rf rootfs-dev
|
|
|
|
out/delta.tar.gz: bin/init bin/vsockexec bin/cmd/gcs bin/cmd/gcstools bin/cmd/hooks/wait-paths Makefile
|
|
@mkdir -p out
|
|
rm -rf rootfs
|
|
mkdir -p rootfs/bin/
|
|
mkdir -p rootfs/info/
|
|
cp bin/init rootfs/
|
|
cp bin/vsockexec rootfs/bin/
|
|
cp bin/cmd/gcs rootfs/bin/
|
|
cp bin/cmd/gcstools rootfs/bin/
|
|
cp bin/cmd/hooks/wait-paths rootfs/bin/
|
|
for tool in $(GCS_TOOLS); do ln -s gcstools rootfs/bin/$$tool; done
|
|
git -C $(SRCROOT) rev-parse HEAD > rootfs/info/gcs.commit && \
|
|
git -C $(SRCROOT) rev-parse --abbrev-ref HEAD > rootfs/info/gcs.branch && \
|
|
date --iso-8601=minute --utc > rootfs/info/tar.date
|
|
$(if $(and $(realpath $(subst .tar,.testdata.json,$(BASE))), $(shell which jq)), \
|
|
jq -r '.IMAGE_NAME' $(subst .tar,.testdata.json,$(BASE)) 2>/dev/null > rootfs/info/image.name && \
|
|
jq -r '.DATETIME' $(subst .tar,.testdata.json,$(BASE)) 2>/dev/null > rootfs/info/build.date)
|
|
tar -zcf $@ -C rootfs .
|
|
rm -rf rootfs
|
|
|
|
-include deps/cmd/gcs.gomake
|
|
-include deps/cmd/gcstools.gomake
|
|
-include deps/cmd/hooks/wait-paths.gomake
|
|
-include deps/cmd/tar2ext4.gomake
|
|
-include deps/internal/tools/snp-report.gomake
|
|
|
|
# Implicit rule for includes that define Go targets.
|
|
%.gomake: $(SRCROOT)/Makefile
|
|
@mkdir -p $(dir $@)
|
|
@/bin/echo $(@:deps/%.gomake=bin/%): $(SRCROOT)/hack/gomakedeps.sh > $@.new
|
|
@/bin/echo -e '\t@mkdir -p $$(dir $$@) $(dir $@)' >> $@.new
|
|
@/bin/echo -e '\t$$(GO_BUILD) -o $$@.new $$(SRCROOT)/$$(@:bin/%=%)' >> $@.new
|
|
@/bin/echo -e '\tGO="$(GO)" $$(SRCROOT)/hack/gomakedeps.sh $$@ $$(SRCROOT)/$$(@:bin/%=%) $$(GO_FLAGS) $$(GO_FLAGS_EXTRA) > $(@:%.gomake=%.godeps).new' >> $@.new
|
|
@/bin/echo -e '\tmv $(@:%.gomake=%.godeps).new $(@:%.gomake=%.godeps)' >> $@.new
|
|
@/bin/echo -e '\tmv $$@.new $$@' >> $@.new
|
|
@/bin/echo -e '-include $(@:%.gomake=%.godeps)' >> $@.new
|
|
mv $@.new $@
|
|
|
|
bin/vsockexec: vsockexec/vsockexec.o vsockexec/vsock.o
|
|
@mkdir -p bin
|
|
$(CC) $(LDFLAGS) -o $@ $^
|
|
|
|
bin/init: init/init.o vsockexec/vsock.o
|
|
@mkdir -p bin
|
|
$(CC) $(LDFLAGS) -o $@ $^
|
|
|
|
%.o: %.c
|
|
@mkdir -p $(dir $@)
|
|
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
|