From 4ff0125f295fa401a50e7fd2c4c73ed1ddf48746 Mon Sep 17 00:00:00 2001 From: yafen Date: Thu, 7 Jan 2021 16:17:50 +0800 Subject: [PATCH] fix: build image with docker --- README.en.md | 2 +- README.md | 2 +- scripts/.dockerignore | 1 - scripts/build-image-docker.sh | 77 +++++++++++-------- scripts/config-common/Dockerfile_makeraspi | 5 +- .../config-common/openEuler-20.03-LTS.repo | 50 ------------ 6 files changed, 48 insertions(+), 89 deletions(-) delete mode 100644 scripts/.dockerignore delete mode 100644 scripts/config-common/openEuler-20.03-LTS.repo diff --git a/README.en.md b/README.en.md index 407364e..d3721b2 100644 --- a/README.en.md +++ b/README.en.md @@ -372,4 +372,4 @@ In addition to the parameter DOCKER_FILE, the other parameters are the same as t 1. -d, --docker DOCKER_FILE - The URL/path of the Docker image, which defaults to `https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz`. With the default parameter, the script will automatically download the Docker image of openEuler 20.03 LTS and import it into the local system. + The URL/path of the Docker image, which defaults to `https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz`. With the default parameter, the script will automatically download the Docker image of openEuler 20.03 LTS SP1 and import it into the local system. diff --git a/README.md b/README.md index f050359..4ecf777 100644 --- a/README.md +++ b/README.md @@ -374,4 +374,4 @@ SIG 组基本信息位于 [sig-RaspberryPi](https://gitee.com/jianminw/community 1. -d, --docker DOCKER_FILE - Docker 镜像的 URL 或者路径, 默认为 `https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz`。使用该默认参数时,脚本会自动下载 openEuler 20.03 LTS 的 Docker 镜像,并导入本机系统中。 + Docker 镜像的 URL 或者路径, 默认为 `https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz`。使用该默认参数时,脚本会自动下载 openEuler 20.03 LTS SP1 的 Docker 镜像,并导入本机系统中。 diff --git a/scripts/.dockerignore b/scripts/.dockerignore deleted file mode 100644 index 30d3d7f..0000000 --- a/scripts/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -/img diff --git a/scripts/build-image-docker.sh b/scripts/build-image-docker.sh index c470fbf..229342b 100644 --- a/scripts/build-image-docker.sh +++ b/scripts/build-image-docker.sh @@ -7,7 +7,7 @@ Usage: build-image-docker [OPTIONS] Build raspberrypi image. Options: - -d, --docker DOCKER_FILE The URL/path of the Docker image, which defaults to https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz. + -d, --docker DOCKER_FILE The URL/path of the Docker image, which defaults to https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz -n, --name IMAGE_NAME The raspberrypi image name to be built. -k, --kernel KERNEL_URL The URL of kernel source's repository, which defaults to https://gitee.com/openeuler/raspberrypi-kernel.git. -b, --branch KERNEL_BRANCH The branch name of kernel source's repository, which defaults to master. @@ -62,9 +62,9 @@ parseargs() echo `date` - ERROR, config file $default_defconfig can not be found. exit 2 else - cp $default_defconfig ${cur_dir}/params/ + cp $default_defconfig ${params_dir}/ defconfig_name=${default_defconfig##*/} - default_defconfig=/work/params/${defconfig_name} + default_defconfig=${params_dir_indocker}/${defconfig_name} fi fi params="${params} -c ${default_defconfig}" @@ -77,9 +77,9 @@ parseargs() echo `date` - ERROR, repo file $repo_file can not be found. exit 2 else - cp $repo_file ${cur_dir}/params/ + cp $repo_file ${params_dir}/ repo_file_name=${repo_file##*/} - repo_file=/work/params/${repo_file_name} + repo_file=${params_dir_indocker}/${repo_file_name} fi fi params="${params} -r ${repo_file}" @@ -92,9 +92,9 @@ parseargs() || [ "x$spec_param" == "xdde" ]; then : elif [ -f $spec_param ]; then - cp $spec_param ${cur_dir}/params/ + cp $spec_param ${params_dir}/ spec_file_name=${spec_param##*/} - $spec_param=/work/params/${spec_file_name} + $spec_param=${params_dir_indocker}/${spec_file_name} else echo `date` - ERROR, please check your params in option -s or --spec. exit 2 @@ -115,33 +115,38 @@ parseargs() } ERROR(){ - echo `date` - ERROR, $* | tee -a ${cur_dir}/log/log_${builddate}.log + echo `date` - ERROR, $* | tee -a ${log_dir}/${builddate}.log } LOG(){ - echo `date` - INFO, $* | tee -a ${cur_dir}/log/log_${builddate}.log + echo `date` - INFO, $* | tee -a ${log_dir}/${builddate}.log } cur_dir=$(cd $(dirname $0);pwd) -docker_file="https://repo.openeuler.org/openEuler-20.03-LTS/docker_img/aarch64/openEuler-docker.aarch64.tar.xz" +docker_file="https://repo.openeuler.org/openEuler-20.03-LTS-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz" -if [ -d ${cur_dir}/tmp ]; then - rm -rf ${cur_dir}/tmp -fi -mkdir ${cur_dir}/tmp +workdir=${cur_dir}/raspi_output_common + +buildid=$(date +%Y%m%d%H%M%S) +builddate=${buildid:0:8} + +log_dir=${workdir}/log +params_dir=${workdir}/params +euler_dir=${cur_dir}/config-common +params_dir_indocker=/work/raspi_output_common/params -if [ -d ${cur_dir}/params ]; then - rm -rf ${cur_dir}/params +if [ -d ${params_dir} ]; then + rm -rf ${params_dir} fi -mkdir ${cur_dir}/params +mkdir -p ${params_dir} parseargs "$@" || help $? if [ "x${docker_file:0:4}" == "xhttp" ]; then - wget ${docker_file} -P ${cur_dir}/tmp/ + wget ${docker_file} -P ${params_dir}/ elif [ -f $docker_file ]; then - cp ${docker_file} ${cur_dir}/tmp/ + cp ${docker_file} ${params_dir}/ else echo `date` - ERROR, docker file $docker_file can not be found. exit 2 @@ -152,22 +157,30 @@ if [ "x$repo_file" == "x" ] ; then help 2 fi -buildid=$(date +%Y%m%d%H%M%S) -builddate=${buildid:0:8} - -if [ ! -d ${cur_dir}/log ]; then - mkdir ${cur_dir}/log +if [ ! -d ${log_dir} ]; then + mkdir ${log_dir} fi - docker_file_name=${docker_file##*/} -docker_img_name=`docker load --input ${cur_dir}/tmp/${docker_file_name}` +docker_img_name=`docker load --input ${params_dir}/${docker_file_name}` docker_img_name=${docker_img_name##*: } -(echo "FROM $docker_img_name" && grep -v FROM ${cur_dir}/config-common/Dockerfile_makeraspi) | docker build -t ${docker_img_name}-${buildid} --no-cache -f- . -echo docker run --rm --privileged=true -v ${cur_dir}:/work ${docker_img_name}-${buildid} ${params} -docker run --rm --privileged=true -v ${cur_dir}:/work ${docker_img_name}-${buildid} ${params} -chmod -R a+r ${cur_dir}/img +LOG build raspi image with docker: ${docker_file}. + +(echo "FROM $docker_img_name" && grep -v FROM ${euler_dir}/Dockerfile_makeraspi) | docker build -t ${docker_img_name}-${buildid} --no-cache -f- ${euler_dir} +echo docker run --rm --privileged=true \ + -v ${cur_dir}/build-image-common.sh:/work/build-image-common.sh \ + -v ${euler_dir}:/work/config-common \ + -v ${cur_dir}/config:/work/config \ + -v ${workdir}:/work/raspi_output_common \ + ${docker_img_name}-${buildid} ${params} +docker run --rm --privileged=true \ + -v ${cur_dir}/build-image-common.sh:/work/build-image-common.sh \ + -v ${euler_dir}:/work/config-common \ + -v ${cur_dir}/config:/work/config \ + -v ${workdir}:/work/raspi_output_common \ + ${docker_img_name}-${buildid} ${params} +chmod -R a+r ${workdir}/img docker image rm ${docker_img_name}-${buildid} -echo -echo Done. +LOG +LOG Done. diff --git a/scripts/config-common/Dockerfile_makeraspi b/scripts/config-common/Dockerfile_makeraspi index 7fee3d9..52c7316 100644 --- a/scripts/config-common/Dockerfile_makeraspi +++ b/scripts/config-common/Dockerfile_makeraspi @@ -1,15 +1,12 @@ -FROM openeuler-20.03-lts:latest +FROM openeuler-20.03-lts-sp1:latest RUN dnf clean expire-cache -COPY config-common/openEuler-20.03-LTS.repo /etc/yum.repos.d/openEuler-20.03-LTS.repo - RUN dnf -y install cmake gdb gcc gcc-c++ libstdc++-static ncurses ncurses-devel make python bash coreutils && \ dnf -y clean all RUN dnf -y install module-init-tools git openssl-devel bc bison flex dnf-plugins-core dosfstools parted wget device-mapper-multipath grep xz kpartx RUN dnf -y install tar passwd diffutils - ENV SHELL=/bin/bash ENTRYPOINT ["/bin/bash", "/work/build-image-common.sh"] diff --git a/scripts/config-common/openEuler-20.03-LTS.repo b/scripts/config-common/openEuler-20.03-LTS.repo deleted file mode 100644 index 47a1fc1..0000000 --- a/scripts/config-common/openEuler-20.03-LTS.repo +++ /dev/null @@ -1,50 +0,0 @@ -#generic-repos is licensed under the Mulan PSL v2. -#You can use this software according to the terms and conditions of the Mulan PSL v2. -#You may obtain a copy of Mulan PSL v2 at: -# http://license.coscl.org.cn/MulanPSL2 -#THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -#IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -#PURPOSE. -#See the Mulan PSL v2 for more details. - -[OS] -name=OS -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler - -[everything] -name=everything -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/everything/$basearch/RPM-GPG-KEY-openEuler - -[EPOL] -name=EPOL -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler - -[debuginfo] -name=debuginfo -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/debuginfo/$basearch/RPM-GPG-KEY-openEuler - -[source] -name=source -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/source/ -enabled=1 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/source/RPM-GPG-KEY-openEuler - -[update] -name=update -baseurl=http://repo.openeuler.org/openEuler-20.03-LTS/update/$basearch/ -enabled=0 -gpgcheck=1 -gpgkey=http://repo.openeuler.org/openEuler-20.03-LTS/OS/$basearch/RPM-GPG-KEY-openEuler -- Gitee