refactor stage2 around ADD downloads
This commit is contained in:
parent
3139b7b24c
commit
3dee0bd526
|
@ -1,10 +1,11 @@
|
||||||
FROM stagex/stage1 as base
|
FROM scratch as base
|
||||||
ENV ARCH=x86_64
|
ENV ARCH=x86_64
|
||||||
ENV TARGET=${ARCH}-linux-musl
|
ENV TARGET=${ARCH}-linux-musl
|
||||||
|
ENV HOME=/home/build
|
||||||
ENV SYSROOT_DIR ${HOME}/build-sysroot
|
ENV SYSROOT_DIR ${HOME}/build-sysroot
|
||||||
ENV GCC_VERSION 13.1.0
|
ENV GCC_VERSION 13.1.0
|
||||||
ENV GCC_FILE gcc-$GCC_VERSION.tar.xz
|
ENV GCC_FILE gcc-$GCC_VERSION.tar.xz
|
||||||
ENV GCC_SITE https://mirrors.kernel.org/gnu/gcc/gcc-${GCC_VERSION}
|
ENV GCC_SITE https://mirrors.kernel.org/gnu/gcc/gcc-${GCC_VERSION}/${GCC_FILE}
|
||||||
ENV GCC_HASH 61d684f0aa5e76ac6585ad8898a2427aade8979ed5e7f85492286c4dfc13ee86
|
ENV GCC_HASH 61d684f0aa5e76ac6585ad8898a2427aade8979ed5e7f85492286c4dfc13ee86
|
||||||
ENV GCC_DIR ${HOME}/build-gcc
|
ENV GCC_DIR ${HOME}/build-gcc
|
||||||
ENV GCC_DEP_SITE https://gcc.gnu.org/pub/gcc/infrastructure/
|
ENV GCC_DEP_SITE https://gcc.gnu.org/pub/gcc/infrastructure/
|
||||||
|
@ -17,44 +18,34 @@ ENV MPC_HASH 17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459
|
||||||
ENV ISL_FILE isl-0.24.tar.bz2
|
ENV ISL_FILE isl-0.24.tar.bz2
|
||||||
ENV ISL_HASH fcf78dd9656c10eb8cf9fbd5f59a0b6b01386205fe1934b3b287a0a1898145c0
|
ENV ISL_HASH fcf78dd9656c10eb8cf9fbd5f59a0b6b01386205fe1934b3b287a0a1898145c0
|
||||||
ENV MUSL_VERSION 1.2.4
|
ENV MUSL_VERSION 1.2.4
|
||||||
ENV MUSL_SITE http://musl.libc.org
|
|
||||||
ENV MUSL_FILE musl-${MUSL_VERSION}.tar.gz
|
ENV MUSL_FILE musl-${MUSL_VERSION}.tar.gz
|
||||||
|
ENV MUSL_SITE http://musl.libc.org/${MUSL_FILE}
|
||||||
ENV MUSL_HASH 7a35eae33d5372a7c0da1188de798726f68825513b7ae3ebe97aaaa52114f039
|
ENV MUSL_HASH 7a35eae33d5372a7c0da1188de798726f68825513b7ae3ebe97aaaa52114f039
|
||||||
ENV MUSL_DIR ${HOME}/build-musl
|
ENV MUSL_DIR ${HOME}/build-musl
|
||||||
ENV LINUX_SITE https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/
|
|
||||||
ENV LINUX_VERSION 6.6
|
ENV LINUX_VERSION 6.6
|
||||||
ENV LINUX_HASH d926a06c63dd8ac7df3f86ee1ffc2ce2a3b81a2d168484e76b5b389aba8e56d0
|
ENV LINUX_HASH d926a06c63dd8ac7df3f86ee1ffc2ce2a3b81a2d168484e76b5b389aba8e56d0
|
||||||
ENV LINUX_FILE linux-${LINUX_VERSION}.tar.xz
|
ENV LINUX_FILE linux-${LINUX_VERSION}.tar.xz
|
||||||
|
ENV LINUX_SITE https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/${LINUX_FILE}
|
||||||
ENV LINUX_DIR ${HOME}/build-linux
|
ENV LINUX_DIR ${HOME}/build-linux
|
||||||
ENV BINUTILS_VERSION 2.35
|
ENV BINUTILS_VERSION 2.35
|
||||||
ENV BINUTILS_SITE https://ftp.gnu.org/gnu/binutils
|
|
||||||
ENV BINUTILS_FILE binutils-${BINUTILS_VERSION}.tar.xz
|
ENV BINUTILS_FILE binutils-${BINUTILS_VERSION}.tar.xz
|
||||||
|
ENV BINUTILS_SITE https://ftp.gnu.org/gnu/binutils/${BINUTILS_FILE}
|
||||||
ENV BINUTILS_HASH 1b11659fb49e20e18db460d44485f09442c8c56d5df165de9461eb09c8302f85
|
ENV BINUTILS_HASH 1b11659fb49e20e18db460d44485f09442c8c56d5df165de9461eb09c8302f85
|
||||||
ENV BINUTILS_DIR ${HOME}/build-binutils
|
ENV BINUTILS_DIR ${HOME}/build-binutils
|
||||||
|
WORKDIR ${HOME}
|
||||||
|
|
||||||
FROM base as fetch
|
FROM base as fetch
|
||||||
WORKDIR ${HOME}
|
ADD --checksum=sha256:${LINUX_HASH} ${LINUX_SITE} ${LINUX_FILE}
|
||||||
RUN <<-EOF
|
ADD --checksum=sha256:${MUSL_HASH} ${MUSL_SITE} ${MUSL_FILE}
|
||||||
set -eux
|
ADD --checksum=sha256:${BINUTILS_HASH} ${BINUTILS_SITE} ${BINUTILS_FILE}
|
||||||
curl -OJ ${LINUX_SITE}/${LINUX_FILE}
|
ADD --checksum=sha256:${GCC_HASH} ${GCC_SITE} ${GCC_FILE}
|
||||||
echo "${LINUX_HASH} ${LINUX_FILE}" | sha256sum -c
|
ADD --checksum=sha256:${GMP_HASH} ${GCC_DEP_SITE}${GMP_FILE} ${GMP_FILE}
|
||||||
curl -OJ ${GCC_SITE}/${GCC_FILE}
|
ADD --checksum=sha256:${MPFR_HASH} ${GCC_DEP_SITE}${MPFR_FILE} ${MPFR_FILE}
|
||||||
echo "${GCC_HASH} ${GCC_FILE}" | sha256sum -c
|
ADD --checksum=sha256:${MPC_HASH} ${GCC_DEP_SITE}${MPC_FILE} ${MPC_FILE}
|
||||||
curl -OJ ${GCC_DEP_SITE}/${GMP_FILE}
|
ADD --checksum=sha256:${ISL_HASH} ${GCC_DEP_SITE}${ISL_FILE} ${ISL_FILE}
|
||||||
echo "${GMP_HASH} ${GMP_FILE}" | sha256sum -c
|
|
||||||
curl -OJ ${GCC_DEP_SITE}/${MPFR_FILE}
|
|
||||||
echo "${MPFR_HASH} ${MPFR_FILE}" | sha256sum -c
|
|
||||||
curl -OJ ${GCC_DEP_SITE}/${MPC_FILE}
|
|
||||||
echo "${MPC_HASH} ${MPC_FILE}" | sha256sum -c
|
|
||||||
curl -OJ ${GCC_DEP_SITE}/${ISL_FILE}
|
|
||||||
echo "${ISL_HASH} ${ISL_FILE}" | sha256sum -c
|
|
||||||
curl -OJ ${MUSL_SITE}/releases/${MUSL_FILE}
|
|
||||||
echo "${MUSL_HASH} ${MUSL_FILE}" | sha256sum -c
|
|
||||||
curl -OJ ${BINUTILS_SITE}/${BINUTILS_FILE}
|
|
||||||
echo "${BINUTILS_HASH} ${BINUTILS_FILE}" | sha256sum -c
|
|
||||||
EOF
|
|
||||||
|
|
||||||
FROM fetch as extract
|
FROM fetch as build
|
||||||
|
COPY --from=stagex/stage1 . /
|
||||||
RUN --network=none <<-EOF
|
RUN --network=none <<-EOF
|
||||||
set -eux
|
set -eux
|
||||||
tar -xf ${LINUX_FILE}
|
tar -xf ${LINUX_FILE}
|
||||||
|
@ -66,8 +57,6 @@ RUN --network=none <<-EOF
|
||||||
./contrib/download_prerequisites
|
./contrib/download_prerequisites
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
FROM extract as build
|
|
||||||
|
|
||||||
# Phase 1: Build cross binutils in build-binutils
|
# Phase 1: Build cross binutils in build-binutils
|
||||||
WORKDIR ${BINUTILS_DIR}
|
WORKDIR ${BINUTILS_DIR}
|
||||||
RUN --network=none <<-EOF
|
RUN --network=none <<-EOF
|
||||||
|
@ -87,7 +76,7 @@ RUN --network=none <<-EOF
|
||||||
--enable-ld=default \
|
--enable-ld=default \
|
||||||
--enable-install-libiberty \
|
--enable-install-libiberty \
|
||||||
--enable-deterministic-archives
|
--enable-deterministic-archives
|
||||||
make all
|
make -j$(nproc) all
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Phase 2: Prepare build sysroot
|
# Phase 2: Prepare build sysroot
|
||||||
|
@ -134,7 +123,7 @@ RUN --network=none <<-EOF
|
||||||
RANLIB_FOR_TARGET=${BINUTILS_DIR}/binutils/ranlib \
|
RANLIB_FOR_TARGET=${BINUTILS_DIR}/binutils/ranlib \
|
||||||
READELF_FOR_TARGET=${BINUTILS_DIR}/binutils/readelf \
|
READELF_FOR_TARGET=${BINUTILS_DIR}/binutils/readelf \
|
||||||
STRIP_FOR_TARGET=${BINUTILS_DIR}/binutils/strip-new
|
STRIP_FOR_TARGET=${BINUTILS_DIR}/binutils/strip-new
|
||||||
make all-gcc
|
make -j$(nproc) all-gcc
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Phase 4: Install musl libc headers to build-sysroot for use by libgcc
|
# Phase 4: Install musl libc headers to build-sysroot for use by libgcc
|
||||||
|
@ -157,7 +146,7 @@ RUN --network=none make MAKE="make enable_shared=no" all-target-libgcc
|
||||||
WORKDIR ${MUSL_DIR}
|
WORKDIR ${MUSL_DIR}
|
||||||
RUN --network=none <<-EOF
|
RUN --network=none <<-EOF
|
||||||
set -eux
|
set -eux
|
||||||
make \
|
make -j$(nproc) \
|
||||||
AR=${BINUTILS_DIR}/binutils/ar \
|
AR=${BINUTILS_DIR}/binutils/ar \
|
||||||
RANLIB=${BINUTILS_DIR}/binutils/ranlib
|
RANLIB=${BINUTILS_DIR}/binutils/ranlib
|
||||||
make DESTDIR=${SYSROOT_DIR} install
|
make DESTDIR=${SYSROOT_DIR} install
|
||||||
|
@ -165,7 +154,7 @@ EOF
|
||||||
|
|
||||||
# Phase 6: Compile remaining gcc targets
|
# Phase 6: Compile remaining gcc targets
|
||||||
WORKDIR ${GCC_DIR}
|
WORKDIR ${GCC_DIR}
|
||||||
RUN --network=none make all
|
RUN --network=none make -j$(nproc) all
|
||||||
|
|
||||||
# Phase 7: Generate linux headers
|
# Phase 7: Generate linux headers
|
||||||
WORKDIR ${HOME}/linux-${LINUX_VERSION}
|
WORKDIR ${HOME}/linux-${LINUX_VERSION}
|
||||||
|
@ -179,9 +168,8 @@ RUN --network=none <<-EOF
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
FROM build as install
|
FROM build as install
|
||||||
WORKDIR ${HOME}
|
|
||||||
USER 0:0
|
|
||||||
COPY --from=stagex/stage1 . /rootfs/
|
COPY --from=stagex/stage1 . /rootfs/
|
||||||
|
WORKDIR /
|
||||||
RUN --network=none <<-EOF
|
RUN --network=none <<-EOF
|
||||||
set -eux
|
set -eux
|
||||||
rm /rootfs/lib
|
rm /rootfs/lib
|
||||||
|
|
Reference in New Issue