From ddc71a836d865bab2d3d0918982daa0110cd0850 Mon Sep 17 00:00:00 2001 From: janson Date: Mon, 8 Apr 2024 14:34:09 +0800 Subject: [PATCH] add docker as builder --- .gitignore | 3 ++ README.md | 6 ++-- docker/Dockerfile | 32 +++++++++++++++++++ docker/build.sh | 77 +++++++++++++++++++++++++++++++++++++++++++++ docker/sources.list | 9 ++++++ 5 files changed, 125 insertions(+), 2 deletions(-) create mode 100644 docker/Dockerfile create mode 100755 docker/build.sh create mode 100644 docker/sources.list diff --git a/.gitignore b/.gitignore index 463bbcb..2449fbf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ build dl ib +ib_x86_64 +ib_rk35xx +ib_rk33xx diff --git a/README.md b/README.md index 2ade5ca..48a177b 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ -# istoreos-intl-builder -Github Actions ImageBuilder istoreos intl +# iStoreNAS + +Define a system base iStoreOS by yourself. + diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..de72b83 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,32 @@ +FROM debian:buster + +COPY sources.list /etc/apt/sources.list + +RUN apt-get update &&\ + apt-get install -y \ + sudo time git-core subversion build-essential g++ bash make \ + libssl-dev patch libncurses5 libncurses5-dev zlib1g-dev gawk \ + flex gettext wget unzip bzip2 xz-utils device-tree-compiler python python-distutils-extra \ + python3 python3-distutils-extra python3-setuptools swig rsync curl \ + libsnmp-dev liblzma-dev libpam0g-dev cpio rsync gcc-multilib && \ + apt-get clean && \ + useradd -m builder && \ + echo 'user ALL=NOPASSWD: ALL' > /etc/sudoers.d/builder + +# set system wide dummy git config +RUN git config --system user.name "builder" && git config --system user.email "builder@example.com" + +USER builder + +VOLUME /work +VOLUME /work/ib + +ENV WORK_SOURCE=/work +ENV WORK_TARGET=x86_64 + +COPY build.sh /bin/build.sh + +WORKDIR /work + +ENTRYPOINT [ "/bin/build.sh" ] + diff --git a/docker/build.sh b/docker/build.sh new file mode 100755 index 0000000..f967f77 --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +case ${WORK_TARGET} in + x86_64) + ;; + rk35xx) + ;; + rk33xx) + ;; + *) + echo "not supported" + exit 1 + ;; +esac + +source env/${WORK_TARGET}.env + +IB_FOUND=0 +if grep -q istore_nas ib/repositories.conf; then + IB_FOUND=1 +else + IB_FOUND=0 +fi + +set -e +if [ "$IB_FOUND" = "0" ]; then + if [ ! -f dl/${IB_NAME}.tar.xz ]; then + wget -O dl/${IB_NAME}.tar.xz ${IB_URL}${IB_NAME}.tar.xz + wget -O dl/sha256sums ${IB_URL}sha256sums + [ -s dl/sha256sums ] + [ -s dl/${IB_NAME}.tar.xz ] + grep -Fq ${IB_NAME}.tar.xz dl/sha256sums + cd dl && sha256sum -c --ignore-missing --status sha256sums + fi + + cd ${WORK_SOURCE} + tar -C ib --strip-components=1 -xJf dl/${IB_NAME}.tar.xz + cp -a src/* ib/ + ls patches/ | sort | xargs -n1 sh -c 'patch -p1 -d ib -i ../patches/$0' + sed -i 's/ unofficial/ oversea/' ib/Makefile + ls packages/all | cut -d "_" -f 1 | xargs -n1 sh -c 'rm ib/packages/$0*.ipk' + cp packages/all/*.ipk ib/packages/ + mkdir -p ib/files + cp -a files/all/* ib/files + case ${WORK_TARGET} in + *x86*) + cp src/repositories_x86_64.conf ib/repositories.conf + cp src/target_x86_64.manifest ib/target.manifest + ;; + *rk35xx*) + cp src/repositories_aarch64.conf ib/repositories.conf + cp src/target_rk35xx.manifest ib/target.manifest + ;; + *rk33xx*) + cp src/repositories_aarch64.conf ib/repositories.conf + cp src/target_rk33xx.manifest ib/target.manifest + ;; + *bcm2711*) + cp src/repositories_aarch64.conf ib/repositories.conf + cp src/target_bcm2711.manifest ib/target.manifest + ;; + esac +fi +set +e + +cd ${WORK_SOURCE}/ib + +case $1 in + Pack) + make -f release.mk IB=1 + make -f multi.mk release_env + ;; + *) + make -f multi.mk image_multi FILES="files" + ;; +esac + diff --git a/docker/sources.list b/docker/sources.list new file mode 100644 index 0000000..3ea19a4 --- /dev/null +++ b/docker/sources.list @@ -0,0 +1,9 @@ +deb http://mirrors.aliyun.com/debian/ buster main non-free contrib +deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib +deb http://mirrors.aliyun.com/debian-security buster/updates main +deb-src http://mirrors.aliyun.com/debian-security buster/updates main +deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib +deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib +deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib +deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib +