Merge pull request #514 from fbelavenuto/docker

Adding kernel sources to docker compiler image
This commit is contained in:
Fabio Belavenuto 2023-01-18 09:41:08 -03:00 committed by GitHub
commit 3d1db3428e
3 changed files with 34 additions and 8 deletions

View File

@ -14,6 +14,13 @@ RUN for V in ${PLATFORMS}; do \
"usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}" && \ "usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}" && \
echo "Extracting ${PLATFORM}-toolchain.txz" && \ echo "Extracting ${PLATFORM}-toolchain.txz" && \
tar -xaf "/cache/${PLATFORM}-toolchain.txz" -C "/opt/${PLATFORM}" --strip-components=1; \ tar -xaf "/cache/${PLATFORM}-toolchain.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; \
done done
@ -22,20 +29,22 @@ FROM debian:8-slim
ENV SHELL=/bin/bash \ ENV SHELL=/bin/bash \
ARCH=x86_64 ARCH=x86_64
COPY --from=stage /opt /opt
RUN apt update --yes && \ RUN apt update --yes && \
apt install --yes --no-install-recommends --no-install-suggests --allow-unauthenticated \ apt install --yes --no-install-recommends --no-install-suggests --allow-unauthenticated \
ca-certificates nano curl bc kmod git gettext texinfo autopoint gawk sudo \ 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 && \ build-essential make ncurses-dev libssl-dev autogen automake pkg-config libtool xsltproc gperf && \
apt-get clean && \ apt-get clean && \
rm -rf /var/lib/apt/lists/* && \ rm -rf /var/lib/apt/lists/* && \
useradd --home-dir /input --no-create-home --shell /bin/bash --uid 1000 arpl && \ useradd --create-home --shell /bin/bash --uid 1000 --user-group arpl && \
echo "arpl ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/arpl echo "arpl ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/arpl && \
chown 1000:1000 -R /opt && \
mkdir /output && chown 1000:1000 /output
COPY --from=stage /opt /opt
COPY files/ / COPY files/ /
USER arpl
WORKDIR /input WORKDIR /input
VOLUME /input /output VOLUME /input /output
USER arpl
ENTRYPOINT ["/opt/do.sh"] ENTRYPOINT ["/opt/do.sh"]

View File

@ -25,6 +25,8 @@ function prepare() {
URLS["r1000"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/AMD%20x86%20Linux%204.4.180%20%28r1000%29/r1000-${GCCLIB_VER}_x86_64-GPL.txz" URLS["r1000"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/AMD%20x86%20Linux%204.4.180%20%28r1000%29/r1000-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["epyc7002"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/AMD%20x86%20Linux%20Linux%205.10.55%20%28epyc7002%29/epyc7002-${GCCLIB_VER}_x86_64-GPL.txz" URLS["epyc7002"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/AMD%20x86%20Linux%20Linux%205.10.55%20%28epyc7002%29/epyc7002-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["3.10.x"]="https://ufpr.dl.sourceforge.net/project/dsgpl/Synology%20NAS%20GPL%20Source/25426branch/bromolow-source/linux-3.10.x.txz"
# Read platforms/kerver version # Read platforms/kerver version
echo "Reading platforms" echo "Reading platforms"
declare -A PLATFORMS declare -A PLATFORMS
@ -40,7 +42,7 @@ function prepare() {
echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... " echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... "
if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
echo "Downloading ${URL}" echo -e "No\nDownloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
else else
echo "OK" echo "OK"
@ -48,13 +50,25 @@ function prepare() {
echo -n "Checking ${CACHE_DIR}/${PLATFORM}-toolchain.txz... " echo -n "Checking ${CACHE_DIR}/${PLATFORM}-toolchain.txz... "
if [ ! -f "${CACHE_DIR}/${PLATFORM}-toolchain.txz" ]; then if [ ! -f "${CACHE_DIR}/${PLATFORM}-toolchain.txz" ]; then
URL=${URLS["${PLATFORM}"]} URL=${URLS["${PLATFORM}"]}
echo "Downloading ${URL}" echo -e "No\nDownloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/${PLATFORM}-toolchain.txz" curl -L "${URL}" -o "${CACHE_DIR}/${PLATFORM}-toolchain.txz"
else else
echo "OK" echo "OK"
fi fi
done done
for KERNEL in 3.10.x 4.4.x 5.10.x; do
URL=${URLS["${KERNEL}"]}
[ -z "${URL}" ] && continue
echo -n "Checking ${CACHE_DIR}/linux-${KERNEL}.txz... "
if [ ! -f "${CACHE_DIR}/linux-${KERNEL}.txz" ]; then
echo -e "No\nDownloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/linux-${KERNEL}.txz"
else
echo "OK"
fi
done
# Generate Dockerfile # Generate Dockerfile
echo "Generating Dockerfile" echo "Generating Dockerfile"
cp Dockerfile.template Dockerfile cp Dockerfile.template Dockerfile

View File

@ -18,12 +18,15 @@ function export-vars() {
export ARCH=x86_64 export ARCH=x86_64
export CC="x86_64-pc-linux-gnu-gcc" export CC="x86_64-pc-linux-gnu-gcc"
export LD="x86_64-pc-linux-gnu-ld" export LD="x86_64-pc-linux-gnu-ld"
export PATH="/opt/${1}/bin:${PATH}" echo "export PATH=\"/opt/${1}/bin:${PATH}\"" | \
sudo tee /etc/profile.d/path.sh >/dev/null
sudo chmod +x /etc/profile.d/path.sh
} }
############################################################################### ###############################################################################
function shell() { function shell() {
#cp /opt/${2}/build/System.map /input cp -fv /opt/${2}/build/.config /opt/${2}/source/
cp -fv /opt/${2}/build/System.map /opt/${2}/source/
export-vars $2 export-vars $2
shift 2 shift 2
bash -l $@ bash -l $@