mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-07-20 09:39:08 +00:00
restructure kernel/Makefile
Signed-off-by: Avi Deitcher <avi@deitcher.net>
This commit is contained in:
parent
421b48d43a
commit
752a35b1aa
327
kernel/Makefile
327
kernel/Makefile
@ -12,13 +12,13 @@
|
|||||||
# which is specific to a given kernel. perf packages are tagged the same way
|
# which is specific to a given kernel. perf packages are tagged the same way
|
||||||
# kernel packages.
|
# kernel packages.
|
||||||
|
|
||||||
|
RM = rm -f
|
||||||
# Name and Org on Hub
|
# Name and Org on Hub
|
||||||
ORG?=linuxkit
|
ORG?=linuxkit
|
||||||
PLATFORMS?=linux/amd64,linux/arm64
|
PLATFORMS?=linux/amd64,linux/arm64
|
||||||
IMAGE?=kernel
|
IMAGE?=kernel
|
||||||
IMAGE_BCC:=kernel-bcc
|
IMAGE_BCC:=kernel-bcc
|
||||||
IMAGE_PERF:=kernel-perf
|
IMAGE_PERF:=kernel-perf
|
||||||
IMAGE_ZFS:=zfs-kmod
|
|
||||||
IMAGE_BUILDER=linuxkit/alpine:146f540f25cd92ec8ff0c5b0c98342a9a95e479e
|
IMAGE_BUILDER=linuxkit/alpine:146f540f25cd92ec8ff0c5b0c98342a9a95e479e
|
||||||
|
|
||||||
# You can specify an extra options for the Makefile. This will:
|
# You can specify an extra options for the Makefile. This will:
|
||||||
@ -26,9 +26,6 @@ IMAGE_BUILDER=linuxkit/alpine:146f540f25cd92ec8ff0c5b0c98342a9a95e479e
|
|||||||
# - append $(EXTRA) to the CONFIG_LOCALVERSION of your kernel
|
# - append $(EXTRA) to the CONFIG_LOCALVERSION of your kernel
|
||||||
EXTRA?=
|
EXTRA?=
|
||||||
|
|
||||||
# You can enable debug options for the Makefile. This will:
|
|
||||||
# - append a config-dbg to the kernel config for your kernel/arch
|
|
||||||
# - append -dbg to the CONFIG_LOCALVERSION of your kernel
|
|
||||||
DEBUG?=
|
DEBUG?=
|
||||||
|
|
||||||
ifeq ($(HASH),)
|
ifeq ($(HASH),)
|
||||||
@ -44,14 +41,16 @@ endif
|
|||||||
PUSH_MANIFEST:=$(shell git rev-parse --show-toplevel)/scripts/push-manifest.sh
|
PUSH_MANIFEST:=$(shell git rev-parse --show-toplevel)/scripts/push-manifest.sh
|
||||||
|
|
||||||
ARCH := $(shell uname -m)
|
ARCH := $(shell uname -m)
|
||||||
ifeq ($(ARCH),x86_64)
|
ifeq ($(ARCH),$(filter $(ARCH),x86_64 amd64))
|
||||||
SUFFIX=-amd64
|
SUFFIX=-amd64
|
||||||
|
ARCH=x86_64
|
||||||
endif
|
endif
|
||||||
ifeq ($(ARCH),$(filter $(ARCH),aarch64 arm64))
|
ifeq ($(ARCH),$(filter $(ARCH),aarch64 arm64))
|
||||||
SUFFIX=-arm64
|
SUFFIX=-arm64
|
||||||
|
ARCH=aarch64
|
||||||
endif
|
endif
|
||||||
|
|
||||||
TAG=$(HASH)$(DIRTY)
|
HASHTAG=$(HASH)$(DIRTY)
|
||||||
|
|
||||||
BUILD_LABEL=--label org.mobyproject.linuxkit.kernel.buildimage=$(IMAGE_BUILDER)
|
BUILD_LABEL=--label org.mobyproject.linuxkit.kernel.buildimage=$(IMAGE_BUILDER)
|
||||||
|
|
||||||
@ -66,221 +65,127 @@ endif
|
|||||||
|
|
||||||
LABELS=$(REPO_LABEL) $(COMMIT_LABEL) $(BUILD_LABEL)
|
LABELS=$(REPO_LABEL) $(COMMIT_LABEL) $(BUILD_LABEL)
|
||||||
|
|
||||||
KERNEL_VERSIONS=
|
|
||||||
|
|
||||||
.PHONY: build push
|
|
||||||
# Targets:
|
|
||||||
# build: Builds all kernels
|
|
||||||
# push: Pushes and sign all tagged kernel images to hub
|
|
||||||
build:
|
|
||||||
push:
|
|
||||||
|
|
||||||
.PHONY: notdirty
|
.PHONY: notdirty
|
||||||
notdirty:
|
notdirty:
|
||||||
@if [ x"$(DIRTY)" != x ]; then echo "Your repository is not clean. Will not push image"; exit 1; fi
|
@if [ x"$(DIRTY)" != x ]; then echo "Your repository is not clean. Will not push image"; exit 1; fi
|
||||||
|
|
||||||
|
# utility function
|
||||||
|
SPACE := $(eval) $(eval)
|
||||||
|
PERIOD := .
|
||||||
|
series = $(word 1,$(subst ., ,$(1))).$(word 2,$(subst ., ,$(1))).x
|
||||||
|
|
||||||
# A template for defining kernel build
|
# word 1 is the release, word 2 is the tool
|
||||||
# Arguments:
|
RELEASESEP := PART
|
||||||
# $1: Full kernel version, e.g., 4.9.22
|
toolname = $(word 2, $(subst $(RELEASESEP), ,$(1)))
|
||||||
# $2: Kernel "series", e.g., 4.9.x
|
toolkernel = $(word 1, $(subst $(RELEASESEP), ,$(1)))
|
||||||
# $3: Build a specific kernel like -rt: Preempt-RT (used as suffix for image)
|
toolimageextension = -$(call toolname,$(1)):$(call toolkernel,$(1))$(EXTRA)$(DEBUG)
|
||||||
# This defines targets like:
|
toolimagebase = $(ORG)/$(IMAGE)$(call toolimageextension,$(1))
|
||||||
# build_4.9.x and push_4.9.x and adds them as dependencies
|
toolimagehash = $(call toolimagebase,$(1))-$(HASHTAG)$(SUFFIX)
|
||||||
# to the global targets
|
toolimagenohash = $(call toolimagebase,$(1))$(SUFFIX)
|
||||||
# Set $3 to "-rt", to build Preempt-RT kernels. This defines targets like
|
toolkernelimage = $(ORG)/$(IMAGE):$(call toolkernel,$(1))$(EXTRA)$(DEBUG)-$(HASHTAG)$(SUFFIX)
|
||||||
# build_4.14.x-rt and adds "-rt" to the hub image name.
|
baseimageextension = :$(1)$(EXTRA)$(DEBUG)
|
||||||
# Set $4 to "-dbg", to build debug kernels. This defines targets like
|
baseimage = $(ORG)/$(IMAGE)$(call baseimageextension,$(1))
|
||||||
# build_4.9.x-dbg and adds "-dbg" to the hub image name.
|
uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
|
||||||
# Set $3 to "-rt" and $4 to "-dbg" to build debug Preempt-RT kernel.
|
cross_product = $(foreach p,$(1),$(addprefix $(p),$(2)))
|
||||||
define kernel
|
|
||||||
|
|
||||||
ifeq ($(4),)
|
|
||||||
KERNEL_VERSIONS+=$(1)
|
|
||||||
endif
|
|
||||||
|
|
||||||
buildx_$(2)$(3)$(4): Dockerfile Makefile $(wildcard patches-$(2)/*) $(wildcard config-$(2)*) config-dbg
|
|
||||||
docker pull $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG) || \
|
|
||||||
docker buildx build \
|
|
||||||
--platform=$(PLATFORMS) --push \
|
|
||||||
--build-arg KERNEL_VERSION=$(1) \
|
|
||||||
--build-arg KERNEL_SERIES=$(2) \
|
|
||||||
--build-arg EXTRA=$(3) \
|
|
||||||
--build-arg DEBUG=$(4) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
$(LABELS) \
|
|
||||||
--no-cache -t $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG) .
|
|
||||||
|
|
||||||
build_$(2)$(3)$(4): Dockerfile Makefile $(wildcard patches-$(2)/*) $(wildcard config-$(2)*) config-dbg
|
|
||||||
docker pull $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) || \
|
|
||||||
docker build \
|
|
||||||
--build-arg KERNEL_VERSION=$(1) \
|
|
||||||
--build-arg KERNEL_SERIES=$(2) \
|
|
||||||
--build-arg EXTRA=$(3) \
|
|
||||||
--build-arg DEBUG=$(4) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
$(LABELS) \
|
|
||||||
--no-cache -t $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) .
|
|
||||||
|
|
||||||
|
|
||||||
forcebuild_$(2)$(3)$(4): Dockerfile Makefile $(wildcard patches-$(2)/*) $(wildcard config-$(2)*) config-dbg
|
|
||||||
docker build \
|
|
||||||
--build-arg KERNEL_VERSION=$(1) \
|
|
||||||
--build-arg KERNEL_SERIES=$(2) \
|
|
||||||
--build-arg EXTRA=$(3) \
|
|
||||||
--build-arg DEBUG=$(4) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
$(LABELS) \
|
|
||||||
--no-cache -t $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) .
|
|
||||||
|
|
||||||
push_$(2)$(3)$(4): notdirty build_$(2)$(3)$(4)
|
|
||||||
docker pull $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) || \
|
|
||||||
(docker push $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) && \
|
|
||||||
docker tag $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) $(ORG)/$(IMAGE):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE):$(1)$(3)$(4))
|
|
||||||
|
|
||||||
forcepush_$(2)$(3)$(4): notdirty forcebuild_$(2)$(3)$(4)
|
|
||||||
docker push $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) && \
|
|
||||||
docker tag $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) $(ORG)/$(IMAGE):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE):$(1)$(3)$(4)
|
|
||||||
|
|
||||||
# tag the builder and create the manifest
|
|
||||||
tagbuilder_$(2)$(3)$(4): notdirty
|
|
||||||
docker tag $(IMAGE_BUILDER) $(ORG)/$(IMAGE):$(1)$(3)$(4)-builder$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE):$(1)$(3)$(4)-builder$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE):$(1)$(3)$(4)-builder
|
|
||||||
|
|
||||||
|
|
||||||
show-tag_$(2)$(3)$(4):
|
|
||||||
@echo $(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)
|
|
||||||
|
|
||||||
build: build_$(2)$(3)$(4)
|
|
||||||
forcebuild: forcebuild_$(2)$(3)$(4)
|
|
||||||
push: push_image tagbuilder
|
|
||||||
push_image: push_$(2)$(3)$(4)
|
|
||||||
forcepush: forcepush_image tagbuilder
|
|
||||||
forcepush_image: forcepush_$(2)$(3)$(4)
|
|
||||||
tagbuilder: tagbuilder_$(2)$(3)$(4)
|
|
||||||
show-tags: show-tag_$(2)$(3)$(4)
|
|
||||||
|
|
||||||
# Only build perf only on x86 and recent LTS and latest stable kernels
|
|
||||||
ifeq ($(ARCH),x86_64)
|
|
||||||
ifeq ($(2), $(filter $(2),5.15.x 5.10.x 5.4.x))
|
|
||||||
build_perf_$(2)$(3)$(4): build_$(2)$(3)$(4)
|
|
||||||
docker pull $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) || \
|
|
||||||
docker build -f Dockerfile.perf \
|
|
||||||
--build-arg IMAGE=$(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
--no-cache --network=none $(LABEL) -t $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) .
|
|
||||||
|
|
||||||
forcebuild_perf_$(2)$(3)$(4): build_$(2)$(3)$(4)
|
|
||||||
docker build -f Dockerfile.perf \
|
|
||||||
--build-arg IMAGE=$(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
--no-cache --network=none $(LABEL) -t $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) .
|
|
||||||
|
|
||||||
push_perf_$(2)$(3)$(4): notdirty build_perf_$(2)$(3)$(4)
|
|
||||||
docker pull $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) || \
|
|
||||||
(docker push $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) && \
|
|
||||||
docker tag $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4))
|
|
||||||
|
|
||||||
forcepush_perf_$(2)$(3)$(4): notdirty forcebuild_perf_$(2)$(3)$(4)
|
|
||||||
docker push $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) && \
|
|
||||||
docker tag $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG)$(SUFFIX) $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)-$(TAG) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_PERF):$(1)$(3)$(4)
|
|
||||||
|
|
||||||
build: build_perf_$(2)$(3)$(4)
|
|
||||||
forcebuild: forcebuild_perf_$(2)$(3)$(4)
|
|
||||||
push: push_perf_$(2)$(3)$(4)
|
|
||||||
forcepush: forcepush_perf_$(2)$(3)$(4)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Only build bcc only on x86 and recent LTS and latest stable kernels
|
|
||||||
ifeq ($(ARCH),x86_64)
|
|
||||||
ifeq ($(2), $(filter $(2),5.15.x 5.10.x 5.4.x))
|
|
||||||
build_bcc_$(2)$(3)$(4): build_$(2)$(3)$(4)
|
|
||||||
docker pull $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) || \
|
|
||||||
docker build -f Dockerfile.bcc \
|
|
||||||
--build-arg IMAGE=$(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
--no-cache $(LABEL) -t $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) .
|
|
||||||
|
|
||||||
forcebuild_bcc_$(2)$(3)$(4): build_$(2)$(3)$(4)
|
|
||||||
docker build -f Dockerfile.bcc \
|
|
||||||
--build-arg IMAGE=$(ORG)/$(IMAGE):$(1)$(3)$(4)-$(TAG)$(SUFFIX) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
--no-cache $(LABEL) -t $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) .
|
|
||||||
|
|
||||||
push_bcc_$(2)$(3)$(4): notdirty build_bcc_$(2)$(3)$(4)
|
|
||||||
docker pull $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) || \
|
|
||||||
(docker push $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) && \
|
|
||||||
docker tag $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4))
|
|
||||||
|
|
||||||
forcepush_bcc_$(2)$(3)$(4): notdirty forcebuild_bcc_$(2)$(3)$(4)
|
|
||||||
docker push $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) && \
|
|
||||||
docker tag $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG)$(SUFFIX) $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)-$(TAG) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_BCC):$(1)$(3)$(4)
|
|
||||||
|
|
||||||
build: build_bcc_$(2)$(3)$(4)
|
|
||||||
forcebuild: forcebuild_bcc_$(2)$(3)$(4)
|
|
||||||
push: push_bcc_$(2)$(3)$(4)
|
|
||||||
forcepush: forcepush_bcc_$(2)$(3)$(4)
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(4),)
|
|
||||||
# ZFS does not compile against -dbg kernels because CONFIG_DEBUG_LOCK_ALLOC
|
|
||||||
# is incompatible with CDDL, apparently (this is ./configure check)
|
|
||||||
build_zfs_$(2)$(3): build_$(2)$(3)
|
|
||||||
docker pull $(ORG)/$(IMAGE_ZFS):$(1)$(3)-$(TAG)$(SUFFIX) || \
|
|
||||||
docker build -f Dockerfile.zfs \
|
|
||||||
--build-arg IMAGE=$(ORG)/$(IMAGE):$(1)$(3)-$(TAG)$(SUFFIX) \
|
|
||||||
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
|
||||||
--no-cache $(LABEL) -t $(ORG)/$(IMAGE_ZFS):$(1)$(3)-$(TAG)$(SUFFIX) .
|
|
||||||
|
|
||||||
push_zfs_$(2)$(3): notdirty build_zfs_$(2)$(3)
|
|
||||||
docker pull $(ORG)/$(IMAGE_ZFS):$(1)$(3)-$(TAG)$(SUFFIX) || \
|
|
||||||
(docker push $(ORG)/$(IMAGE_ZFS):$(1)$(3)-$(TAG)$(SUFFIX) && \
|
|
||||||
docker tag $(ORG)/$(IMAGE_ZFS):$(1)$(3)-$(TAG)$(SUFFIX) $(ORG)/$(IMAGE_ZFS):$(1)$(3)$(SUFFIX) && \
|
|
||||||
docker push $(ORG)/$(IMAGE_ZFS):$(1)$(3)$(SUFFIX) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_ZFS):$(1)$(3)-$(TAG) && \
|
|
||||||
$(PUSH_MANIFEST) $(ORG)/$(IMAGE_ZFS):$(1)$(3))
|
|
||||||
endif
|
|
||||||
|
|
||||||
endef
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Build Targets
|
# Kernel versions to build.
|
||||||
# Debug targets only for latest stable and LTS stable
|
# Use all for kernels to be built on all platforms; use KERNELS_x86_64 or KERNELS_aarch64 for platform-specific kernels
|
||||||
#
|
KERNELS_all=6.6.13 5.15.27
|
||||||
ifeq ($(ARCH),x86_64)
|
KERNELS_x86_64=
|
||||||
$(eval $(call kernel,5.15.27,5.15.x,$(EXTRA),$(DEBUG)))
|
KERNELS_aarch64=
|
||||||
$(eval $(call kernel,5.15.27,5.15.x,,-dbg))
|
|
||||||
$(eval $(call kernel,5.10.104,5.10.x,$(EXTRA),$(DEBUG)))
|
|
||||||
$(eval $(call kernel,5.4.172,5.4.x,$(EXTRA),$(DEBUG)))
|
|
||||||
$(eval $(call kernel,5.11.4,5.11.x,-rt,))
|
|
||||||
|
|
||||||
else ifeq ($(ARCH),$(filter $(ARCH),aarch64 arm64))
|
# deprecated versions. You might still be able to build them, but they are not built by default or supported
|
||||||
$(eval $(call kernel,5.15.27,5.15.x,$(EXTRA),$(DEBUG)))
|
# Use all for kernels to be built on all platforms; use DEPRECATED_x86_64 or DEPRECATED_aarch64 for platform-specific kernels
|
||||||
$(eval $(call kernel,5.10.104,5.10.x,$(EXTRA),$(DEBUG)))
|
DEPRECATED_all=5.10.104 5.11.4-rt
|
||||||
$(eval $(call kernel,5.11.4,5.11.x,-rt,))
|
DEPRECATED_x86_64=5.4.172
|
||||||
|
DEPRECATED_aarch64=
|
||||||
|
|
||||||
endif
|
KERNELS?=$(KERNELS_all) $(KERNELS_$(ARCH))
|
||||||
|
DEPRECATED?=$(DEPRECATED_all) $(DEPRECATED_$(ARCH))
|
||||||
|
|
||||||
|
# we build all tools across all platforms and kernels that we build
|
||||||
|
TOOLS=bcc perf
|
||||||
|
|
||||||
|
# kernel versions used for kconfig
|
||||||
|
KERNEL_VERSIONS=$(call uniq,$(foreach l,$(KERNELS),$(word 1,$(subst -, ,$(l)))))
|
||||||
|
|
||||||
|
.PHONY: build push setforce show-tags
|
||||||
|
# Targets:
|
||||||
|
# build: Builds all kernels
|
||||||
|
# push: Pushes and sign all tagged kernel images to hub
|
||||||
|
setforce:
|
||||||
|
$(eval FORCE=1)
|
||||||
|
build: $(addprefix build-,$(KERNELS))
|
||||||
|
push: $(addprefix push-,$(KERNELS))
|
||||||
|
show-tags: $(addprefix show-tag-,$(KERNELS))
|
||||||
|
|
||||||
|
build-%: buildkernel-% buildtools-%;
|
||||||
|
|
||||||
|
buildkernel-%: buildkerneldeps-% buildplainkernel-% builddebugkernel-%;
|
||||||
|
|
||||||
|
buildkerneldeps-%: Dockerfile Makefile $(wildcard patches-$(call series,$*)/*) $(wildcard config-$(call series,$*)*) ;
|
||||||
|
|
||||||
|
buildplainkernel-%: buildkerneldeps-%
|
||||||
|
$(eval BASEIMAGE=$(call baseimage,$*))
|
||||||
|
$(eval TARGETIMAGE=$(BASEIMAGE)-$(HASHTAG)$(SUFFIX))
|
||||||
|
$(eval EXTRATOOL=$(addprefix -,$(word 2,$(subst -, ,$*))))
|
||||||
|
([ -z "$(FORCE)" ] && docker pull $(TARGETIMAGE)) || \
|
||||||
|
docker build \
|
||||||
|
--build-arg KERNEL_VERSION=$* \
|
||||||
|
--build-arg KERNEL_SERIES=$(call series,$*) \
|
||||||
|
--build-arg EXTRA=$(EXTRATOOL) \
|
||||||
|
--build-arg DEBUG=$(DEBUG) \
|
||||||
|
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
||||||
|
$(LABELS) \
|
||||||
|
--no-cache -t $(TARGETIMAGE) .
|
||||||
|
|
||||||
|
builddebugkernel-%: buildkerneldeps-%
|
||||||
|
$(MAKE) buildplainkernel-$* DEBUG=-dbg
|
||||||
|
|
||||||
|
push-%: notdirty build-% pushkernel-% tagbuilder-% pushtools-%;
|
||||||
|
|
||||||
|
tagbuilder-%: notdirty
|
||||||
|
$(eval BUILDER_IMAGE=$(call baseimage,$*)-builder)
|
||||||
|
docker tag $(IMAGE_BUILDER) $(BUILDER_IMAGE)$(SUFFIX) && \
|
||||||
|
docker push $(BUILDER_IMAGE)$(SUFFIX) && \
|
||||||
|
$(PUSH_MANIFEST) $(BUILDER_IMAGE)
|
||||||
|
|
||||||
|
pushtagpush-%:
|
||||||
|
$(eval BASEIMAGE=$(ORG)/$(IMAGE)$*)
|
||||||
|
$(eval HASHIMAGE=$(BASEIMAGE)-$(HASHTAG))
|
||||||
|
$(eval SUFFIXEDIMAGE=$(BASEIMAGE)$(SUFFIX))
|
||||||
|
$(eval HASHANDSUFFIXIMAGE=$(HASHIMAGE)$(SUFFIX))
|
||||||
|
([ -z "$(FORCE)" ] && docker pull $(HASHANDSUFFIXIMAGE)) || \
|
||||||
|
(docker push $(HASHANDSUFFIXIMAGE) && \
|
||||||
|
docker tag $(HASHANDSUFFIXIMAGE) $(SUFFIXEDIMAGE) && \
|
||||||
|
docker push $(SUFFIXEDIMAGE) && \
|
||||||
|
$(PUSH_MANIFEST) $(HASHIMAGE) && \
|
||||||
|
$(PUSH_MANIFEST) $(BASEIMAGE))
|
||||||
|
|
||||||
|
pushkernel-%:
|
||||||
|
$(MAKE) pushtagpush-$(call baseimageextension,$*)
|
||||||
|
|
||||||
|
show-tag-%:
|
||||||
|
@echo $(eval BASEIMAGE=$(call baseimage,$*))-$(HASHTAG)
|
||||||
|
|
||||||
|
buildtools-%: $(addprefix buildtool-%$(RELEASESEP),$(TOOLS));
|
||||||
|
|
||||||
|
buildtool-%:
|
||||||
|
$(eval TARGETIMAGE=$(call toolimagehash,$*))
|
||||||
|
$(eval KERNELIMAGE=$(call toolkernelimage,$*))
|
||||||
|
$(eval TOOL=$(call toolname,$*))
|
||||||
|
([ -z "$(FORCE)" ] && docker pull $(TARGETIMAGE)) || \
|
||||||
|
docker build -f Dockerfile.$(TOOL) \
|
||||||
|
--build-arg IMAGE=$(KERNELIMAGE) \
|
||||||
|
--build-arg BUILD_IMAGE=$(IMAGE_BUILDER) \
|
||||||
|
--no-cache $(LABEL) -t $(TARGETIMAGE) .
|
||||||
|
|
||||||
|
pushtools-%: $(addprefix pushtool-%$(RELEASESEP),$(TOOLS));
|
||||||
|
|
||||||
|
pushtool-%:
|
||||||
|
$(MAKE) pushtagpush-$(call toolimageextension,$*)
|
||||||
|
|
||||||
# Target for kernel config
|
# Target for kernel config
|
||||||
kconfig:
|
kconfig:
|
||||||
|
Loading…
Reference in New Issue
Block a user