mirror of
https://github.com/RROrg/rr.git
synced 2025-06-21 05:51:05 +08:00
51 lines
2.0 KiB
Docker
51 lines
2.0 KiB
Docker
FROM alpine:3.14 AS stage
|
|
ARG PLATFORMS="@@@PLATFORMS@@@"
|
|
ARG TOOLKIT_VER="@@@TOOLKIT_VER@@@"
|
|
ARG GCCLIB_VER="@@@GCCLIB_VER@@@"
|
|
|
|
# Copy downloaded toolkits
|
|
ADD cache /cache
|
|
# Extract toolkits
|
|
RUN for V in ${PLATFORMS}; do \
|
|
echo "${V}" | while IFS=':' read PLATFORM KVER; do \
|
|
echo -e "${PLATFORM}\t${KVER}" >> /opt/platforms && \
|
|
echo "Extracting ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" && \
|
|
mkdir "/opt/${PLATFORM}" && \
|
|
tar -xaf "/cache/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" -C "/opt/${PLATFORM}" --strip-components=9 \
|
|
"usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}" && \
|
|
echo "Extracting ${PLATFORM}-${GCCLIB_VER}_x86_64-GPL.txz" && \
|
|
tar -xaf "/cache/${PLATFORM}-${GCCLIB_VER}_x86_64-GPL.txz" -C "/opt/${PLATFORM}" --strip-components=1; \
|
|
KVER_MAJOR="`echo ${KVER} | rev | cut -d. -f2- | rev`"; \
|
|
if [ ! -d "/opt/linux-${KVER_MAJOR}.x" -a -f "/cache/linux-${KVER_MAJOR}.x.txz" ]; then \
|
|
echo "Extracting linux-${KVER_MAJOR}.x.txz" && \
|
|
tar -xaf "/cache/linux-${KVER_MAJOR}.x.txz" -C "/opt"; \
|
|
rm -rf /opt/${PLATFORM}/source && \
|
|
ln -s /opt/linux-${KVER_MAJOR}.x /opt/${PLATFORM}/source; \
|
|
fi; \
|
|
done; \
|
|
done
|
|
|
|
# Final image
|
|
FROM debian:9-slim
|
|
ENV SHELL=/bin/bash \
|
|
ARCH=x86_64
|
|
|
|
RUN apt update --yes && \
|
|
apt install --yes --no-install-recommends --no-install-suggests --allow-unauthenticated \
|
|
ca-certificates nano curl bc kmod git gettext texinfo autopoint gawk sudo \
|
|
build-essential make ncurses-dev libssl-dev autogen automake pkg-config libtool xsltproc gperf && \
|
|
apt-get clean && \
|
|
rm -rf /var/lib/apt/lists/* && \
|
|
useradd --create-home --shell /bin/bash --uid 1000 --user-group arpl && \
|
|
echo "arpl ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/arpl && \
|
|
mkdir /output && chown 1000:1000 /output
|
|
|
|
COPY --from=stage --chown=1000:1000 /opt /opt
|
|
COPY files/ /
|
|
|
|
USER arpl
|
|
WORKDIR /input
|
|
VOLUME /input /output
|
|
|
|
ENTRYPOINT ["/opt/do.sh"]
|