61 lines
2.1 KiB
Docker
61 lines
2.1 KiB
Docker
ARG TAG=dev
|
|
ARG DOCKER_IMAGE_ROOT=monok8s
|
|
FROM --platform=$BUILDPLATFORM ${DOCKER_IMAGE_ROOT}/build-base:${TAG} AS build
|
|
|
|
ARG NXP_VERSION
|
|
ARG ARCH
|
|
ARG CROSS_COMPILE
|
|
ARG DEVICE_TREE_TARGET
|
|
|
|
WORKDIR /build
|
|
|
|
RUN test -n "${NXP_VERSION}" || (echo "Please specify NXP_VERSION" >&2; exit 1); \
|
|
test -n "${ARCH}" || (echo "Please specify ARCH" >&2; exit 1); \
|
|
test -n "${CROSS_COMPILE}" || (echo "Please specify CROSS_COMPILE" >&2; exit 1); \
|
|
test -n "${DEVICE_TREE_TARGET}" || (echo "Please specify DEVICE_TREE_TARGET" >&2; exit 1)
|
|
|
|
COPY packages/${NXP_VERSION}.tar.gz ./
|
|
RUN tar -xf ${NXP_VERSION}.tar.gz \
|
|
&& mv "linux-${NXP_VERSION}" nxplinux \
|
|
&& rm -f ${NXP_VERSION}.tar.gz
|
|
|
|
WORKDIR /build/nxplinux
|
|
|
|
COPY kernel-extra.config /tmp/kernel-extra.config
|
|
COPY kernel-build/dts/*.dts ./arch/arm64/boot/dts/freescale/
|
|
|
|
RUN grep -q "^dtb-\\\$(CONFIG_ARCH_LAYERSCAPE) += ${DEVICE_TREE_TARGET}.dtb$" \
|
|
arch/arm64/boot/dts/freescale/Makefile \
|
|
|| echo "dtb-\$(CONFIG_ARCH_LAYERSCAPE) += ${DEVICE_TREE_TARGET}.dtb" \
|
|
>> arch/arm64/boot/dts/freescale/Makefile
|
|
|
|
# NXP tree: use the LSDK defconfig target
|
|
RUN make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" defconfig lsdk.config \
|
|
&& ./scripts/kconfig/merge_config.sh -m .config /tmp/kernel-extra.config \
|
|
&& make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" olddefconfig \
|
|
&& grep '^CONFIG_NF_TABLES=' .config \
|
|
&& make ARCH="${ARCH}" CROSS_COMPILE="${CROSS_COMPILE}" -j"$(nproc)"
|
|
|
|
# artifact collection
|
|
RUN mkdir -p /out/kernel /out/rootfs \
|
|
&& cp -av arch/arm64/boot/Image* /out/kernel/ 2>/dev/null || true \
|
|
&& cp -av arch/arm64/boot/dts /out/kernel/dts 2>/dev/null || true \
|
|
&& cp -av System.map .config /out/kernel/ \
|
|
&& make ARCH=${ARCH} CROSS_COMPILE=${CROSS_COMPILE} modules_install INSTALL_MOD_PATH=/out/rootfs
|
|
|
|
RUN depmod -b /out/rootfs $(ls /out/rootfs/lib/modules/)
|
|
|
|
RUN find /out/kernel -name "${DEVICE_TREE_TARGET}.dtb" -exec cp {} /out/ \;
|
|
RUN test -f "/out/${DEVICE_TREE_TARGET}.dtb"
|
|
|
|
FROM scratch
|
|
ARG DEVICE_TREE_TARGET
|
|
|
|
COPY --from=build \
|
|
/out/kernel/System.map \
|
|
/out/kernel/.config \
|
|
/out/kernel/Image.gz \
|
|
/out/${DEVICE_TREE_TARGET}.dtb \
|
|
./
|
|
COPY --from=build /out/rootfs/ ./rootfs
|