Skip to content

Commit 925f5f2

Browse files
committed
Consolidate Makefile logic to arch agonstic target. Remove unnecessary build args in favor of pure env var usage
Signed-off-by: Dom Del Nano <ddelnano@gmail.com>
1 parent d104cab commit 925f5f2

File tree

3 files changed

+56
-48
lines changed

3 files changed

+56
-48
lines changed

tools/docker/Makefile

Lines changed: 23 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -104,10 +104,13 @@ LINUX_KERNEL_VERSIONS := 4.14.309 \
104104
6.1.137 \
105105
6.6.89
106106

107-
LINUX_HEADER_X86_64_TEMPLATE := linux-headers-x86_64-%.tar.gz
108-
LINUX_HEADER_ARM64_TEMPLATE := linux-headers-arm64-%.tar.gz
109-
LINUX_HEADER_X86_64_TARGETS = $(addprefix $(LINUX_HEADER_ASSETS_BUILD_DIR)/, $(patsubst %,$(LINUX_HEADER_X86_64_TEMPLATE), $(LINUX_KERNEL_VERSIONS)))
110-
LINUX_HEADER_ARM64_TARGETS = $(addprefix $(LINUX_HEADER_ASSETS_BUILD_DIR)/, $(patsubst %,$(LINUX_HEADER_ARM64_TEMPLATE), $(LINUX_KERNEL_VERSIONS)))
107+
LINUX_HEADER_TEMPLATE := linux-headers-%.tar.gz
108+
LINUX_HEADER_X86_64_TARGETS = $(addprefix $(LINUX_HEADER_ASSETS_BUILD_DIR)/, \
109+
$(patsubst %,$(subst x86_64,%,$(LINUX_HEADER_TEMPLATE)), $(addprefix x86_64-,$(LINUX_KERNEL_VERSIONS))))
110+
111+
LINUX_HEADER_ARM64_TARGETS = $(addprefix $(LINUX_HEADER_ASSETS_BUILD_DIR)/, \
112+
$(patsubst %,$(subst arm64,%,$(LINUX_HEADER_TEMPLATE)), $(addprefix arm64-,$(LINUX_KERNEL_VERSIONS))))
113+
111114
LINUX_HEADERS_X86_64_MERGED_FILE := $(LINUX_HEADER_BUILD_DIR)/linux-headers-merged-x86_64-$(LINUX_HEADERS_REV).tar.gz
112115
LINUX_HEADERS_ARM64_MERGED_FILE := $(LINUX_HEADER_BUILD_DIR)/linux-headers-merged-arm64-$(LINUX_HEADERS_REV).tar.gz
113116
LINUX_HEADERS_GS_PATH := gs://pixie-dev-public/linux-headers/$(LINUX_HEADERS_REV)
@@ -208,46 +211,32 @@ upload_graalvm_archive: build_graalvm_archive_image
208211
##############################################
209212
LINUX_HEADERS_BASE_PRE_v6_3 := ubuntu:18.04@sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98
210213
LINUX_HEADERS_BASE_POST_v6_3 := ubuntu:20.04@sha256:8feb4d8ca5354def3d8fce243717141ce31e2c428701f6682bd2fafe15388214
211-
$(LINUX_HEADER_ASSETS_BUILD_DIR)/linux-headers-x86_64-%.tar.gz: linux_headers_image/Dockerfile linux_headers_image/x86_64_config
214+
$(LINUX_HEADER_ASSETS_BUILD_DIR)/linux-headers-%.tar.gz: linux_headers_image/Dockerfile
212215
ifndef LINUX_HEADERS_REV
213216
$(error set LINUX_HEADERS_REV to a valid value)
214217
endif
215218
@mkdir -p $(@D)
216219
# Linux 6.3 and later has differences in the build process.
217-
# We need to use a different Dockerfile for these versions.
218-
KERN_MAJ=$$(echo $* | cut -d. -f1); \
219-
KERN_MIN=$$(echo $* | cut -d. -f2); \
220+
# We need to use a different base image for these versions.
221+
ARCH=$$(echo $* | cut -d- -f1); \
222+
KVER=$$(echo $* | cut -d- -f2-); \
223+
KERN_MAJ=$$(echo $$KVER | cut -d. -f1); \
224+
KERN_MIN=$$(echo $$KVER | cut -d. -f2); \
220225
BASE_IMAGE=$$(echo $(LINUX_HEADERS_BASE_POST_v6_3)); \
221226
if [ $${KERN_MAJ} -lt 6 ] || { [ $${KERN_MAJ} -le 6 ] && [ $${KERN_MIN} -lt 3 ]; }; then \
222227
BASE_IMAGE=$$(echo $(LINUX_HEADERS_BASE_PRE_v6_3)); \
223228
fi; \
224-
linux_headers_image_tag="gcr.io/pixie-oss/pixie-dev-public:$*-$(LINUX_HEADERS_REV)"; \
225-
$(DOCKER) build --build-arg KERN_VERSION=$* \
226-
--build-arg ARCH=x86_64 linux_headers_image \
227-
--build-arg BASE_IMAGE=$${BASE_IMAGE} \
228-
-t "$${linux_headers_image_tag}" && \
229-
$(DOCKER) run --rm -v $(PWD)/$(LINUX_HEADER_ASSETS_BUILD_DIR):/output "$${linux_headers_image_tag}"
230-
231-
$(LINUX_HEADER_ASSETS_BUILD_DIR)/linux-headers-arm64-%.tar.gz: linux_headers_image/Dockerfile linux_headers_image/arm64_config
232-
ifndef LINUX_HEADERS_REV
233-
$(error set LINUX_HEADERS_REV to a valid value)
234-
endif
235-
@mkdir -p $(@D)
236-
# Linux 6.3 and later has differences in the build process.
237-
# We need to use a different Dockerfile for these versions.
238-
KERN_MAJ=$$(echo $* | cut -d. -f1); \
239-
KERN_MIN=$$(echo $* | cut -d. -f2); \
240-
HEADERS_DOCKERFILE_SUFFIX=""; \
241-
if [ $${KERN_MAJ} -lt 6 ] || { [ $${KERN_MAJ} -le 6 ] && [ $${KERN_MIN} -lt 3 ]; }; then \
242-
HEADERS_DOCKERFILE_SUFFIX=".bionic"; \
229+
CONFIG_FILE=$$(echo linux_headers_image/"$$ARCH"_config); \
230+
if [ ! -f $$CONFIG_FILE ]; then \
231+
echo "Unsupported ARCH=$$ARCH. Missing $$CONFIG_FILE"; exit 1; \
243232
fi; \
244-
linux_headers_image_tag="gcr.io/pixie-oss/pixie-dev-public:$*-$(LINUX_HEADERS_REV)"; \
245-
$(DOCKER) build --build-arg KERN_VERSION=$* \
246-
--build-arg ARCH=arm64 \
247-
--build-arg CROSS_COMPILE=aarch64-linux-gnu- \
248-
-f linux_headers_image/Dockerfile$${HEADERS_DOCKERFILE_SUFFIX} \
249-
linux_headers_image -t "$${linux_headers_image_tag}" && \
250-
$(DOCKER) run --rm -v $(PWD)/$(LINUX_HEADER_ASSETS_BUILD_DIR):/output "$${linux_headers_image_tag}"
233+
linux_headers_image_tag="gcr.io/pixie-oss/pixie-dev-public:$$KVER-$(LINUX_HEADERS_REV)"; \
234+
$(DOCKER) build --build-arg BASE_IMAGE=$${BASE_IMAGE} linux_headers_image \
235+
-t "$${linux_headers_image_tag}" && \
236+
$(DOCKER) run --rm --env ARCH=$$ARCH \
237+
--env KERN_VERSION=$$KVER \
238+
$$( [ "$$ARCH" = "arm64" ] && echo "--env CROSS_COMPILE=aarch64-linux-gnu-" ) \
239+
-v $(PWD)/$(LINUX_HEADER_ASSETS_BUILD_DIR):/output "$${linux_headers_image_tag}"
251240

252241
$(LINUX_HEADERS_X86_64_MERGED_FILE): $(LINUX_HEADER_X86_64_TARGETS)
253242
tar -czf $@ -C $(LINUX_HEADER_ASSETS_BUILD_DIR) $(^F)

tools/docker/linux_headers_image/Dockerfile

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@
1717
ARG BASE_IMAGE
1818
FROM ${BASE_IMAGE}
1919

20-
ARG KERN_VERSION
21-
ARG ARCH
22-
ARG CROSS_COMPILE="false"
23-
2420
# Install required packages
2521
ENV DEBIAN_FRONTEND=noninteractive
2622
ENV KERN_VERSION=${KERN_VERSION}
@@ -56,4 +52,4 @@ ADD build_linux_headers.sh /px/build_linux_headers.sh
5652
RUN chmod +x /px/build_linux_headers.sh
5753

5854
VOLUME /output
59-
CMD ["sh", "-c", "/px/build_linux_headers.sh /px ${KERN_VERSION} ${ARCH} ${CROSS_COMPILE} /output"]
55+
CMD ["sh", "-c", "/px/build_linux_headers.sh /px ${KERN_VERSION} ${ARCH} /output"]

tools/docker/linux_headers_image/build_linux_headers.sh

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,49 @@
11
#!/bin/bash
22

3+
# Copyright 2018- The Pixie Authors.
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
#
17+
# SPDX-License-Identifier: Apache-2.0
18+
319
usage() {
4-
echo "Usage: $0 [workspace] [kernel_version] [arch] [cross_compile] [output_dir]"
5-
echo "Example: $0 /px 5.4.0-42-generic x86_64 /usr/bin/x86_64-linux-gnu- /output"
20+
echo "Usage: $0 [workspace] [kernel_version] [arch] [output_dir]"
21+
echo "Example: $0 /px 5.4.0-42-generic x86_64 /output"
22+
echo "If cross-compiling, set the CROSS_COMPILE environment variable to the cross-compiler prefix."
623
}
724

8-
if [ "$#" -ne 5 ]; then
25+
if [ "$#" -ne 4 ]; then
26+
echo "Invalid number of arguments. Expected 4, but received $# ($*)"
927
usage
1028
exit 1
1129
fi
1230

1331
WORKSPACE=$1
1432
KERN_VERSION=$2
1533
ARCH=$3
16-
# shellcheck disable=SC2034
17-
CROSS_COMPILE=$4
18-
OUTPUT_DIR=$5
34+
OUTPUT_DIR=$4
35+
36+
if [ -z "${WORKSPACE}" ] || [ -z "${KERN_VERSION}" ] || [ -z "${ARCH}" ] || [ -z "${OUTPUT_DIR}" ]; then
37+
usage
38+
exit 1
39+
fi
1940

20-
if [ "${CROSS_COMPILE}" == "false" ]; then
21-
CROSS_COMPILE=""
41+
if [ "${ARCH}" != "$(uname -m)" ]; then
42+
if [ -z "${CROSS_COMPILE}" ]; then
43+
echo "CROSS_COMPILE is not set. Please set it to the cross-compiler prefix."
44+
exit 1
45+
fi
2246
fi
23-
echo "Cross compile: ${CROSS_COMPILE}"
2447

2548
mkdir -p "${WORKSPACE}"/src
2649
pushd "${WORKSPACE}"/src || exit

0 commit comments

Comments
 (0)