代码拉取完成,页面将自动刷新
#!/bin/bash
set -e
__usage="
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-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 openEuler-20.03-LTS.
-c, --config KERNEL_DEFCONFIG The name/path of defconfig file when compiling kernel, which defaults to openeuler-raspi_defconfig.
-r, --repo REPO_INFO Required! The URL/path of target repo file or list of repo's baseurls which should be a space separated list.
-s, --spec SPEC The image's specification: headless, xfce, ukui, dde or the file path of rpmlist. The default is headless.
--cores N The number of cpu cores to be used during making.
-h, --help Show command help.
"
help()
{
echo "$__usage"
exit $1
}
parseargs()
{
if [ "x$#" == "x0" ]; then
return 1
fi
while [ "x$#" != "x0" ];
do
if [ "x$1" == "x-h" -o "x$1" == "x--help" ]; then
return 1
elif [ "x$1" == "x" ]; then
shift
elif [ "x$1" == "x-d" -o "x$1" == "x--docker" ]; then
docker_file=`echo $2`
shift
shift
elif [ "x$1" == "x-n" -o "x$1" == "x--name" ]; then
img_name=`echo $2`
params="${params} -n ${img_name}"
shift
shift
elif [ "x$1" == "x-k" -o "x$1" == "x--kernel" ]; then
kernel_url=`echo $2`
params="${params} -k ${kernel_url}"
shift
shift
elif [ "x$1" == "x-b" -o "x$1" == "x--branch" ]; then
kernel_branch=`echo $2`
params="${params} -b ${kernel_branch}"
shift
shift
elif [ "x$1" == "x-c" -o "x$1" == "x--config" ]; then
default_defconfig=`echo $2`
if [ "x$default_defconfig" != "x" ]; then
if [ ! -f $default_defconfig ]; then
echo `date` - ERROR, config file $default_defconfig can not be found.
exit 2
else
cp $default_defconfig ${params_dir}/
defconfig_name=${default_defconfig##*/}
default_defconfig=${params_dir_indocker}/${defconfig_name}
fi
fi
params="${params} -c ${default_defconfig}"
shift
shift
elif [ "x$1" == "x-r" -o "x$1" == "x--repo" ]; then
repo_file=`echo $2`
if [ "x$repo_file" != "x" -a "x${repo_file:0:4}" != "xhttp" ]; then
if [ ! -f $repo_file ]; then
echo `date` - ERROR, repo file $repo_file can not be found.
exit 2
else
cp $repo_file ${params_dir}/
repo_file_name=${repo_file##*/}
repo_file=${params_dir_indocker}/${repo_file_name}
fi
fi
params="${params} -r ${repo_file}"
shift
shift
elif [ "x$1" == "x-s" -o "x$1" == "x--spec" ]; then
spec_param=`echo $2`
if [ "x$spec_param" == "xheadless" ] || [ "x$spec_param" == "x" ] \
|| [ "x$spec_param" == "xxfce" ] || [ "x$spec_param" == "xukui" ] \
|| [ "x$spec_param" == "xdde" ]; then
:
elif [ -f $spec_param ]; then
cp $spec_param ${params_dir}/
spec_file_name=${spec_param##*/}
$spec_param=${params_dir_indocker}/${spec_file_name}
else
echo `date` - ERROR, please check your params in option -s or --spec.
exit 2
fi
params="${params} -s ${spec_param}"
shift
shift
elif [ "x$1" == "x--cores" ]; then
make_cores=`echo $2`
params="${params} --cores ${make_cores}"
shift
shift
else
echo `date` - ERROR, UNKNOWN params "$@"
return 2
fi
done
}
ERROR(){
echo `date` - ERROR, $* | tee -a ${log_dir}/${builddate}.log
}
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-SP1/docker_img/aarch64/openEuler-docker.aarch64.tar.xz"
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 ${params_dir} ]; then
rm -rf ${params_dir}
fi
mkdir -p ${params_dir}
parseargs "$@" || help $?
if [ "x${docker_file:0:4}" == "xhttp" ]; then
wget ${docker_file} -P ${params_dir}/
elif [ -f $docker_file ]; then
cp ${docker_file} ${params_dir}/
else
echo `date` - ERROR, docker file $docker_file can not be found.
exit 2
fi
if [ "x$repo_file" == "x" ] ; then
echo `date` - ERROR, \"-r REPO_INFO or --repo REPO_INFO\" missing.
help 2
fi
if [ ! -d ${log_dir} ]; then
mkdir ${log_dir}
fi
docker_file_name=${docker_file##*/}
docker_img_name=`docker load --input ${params_dir}/${docker_file_name}`
docker_img_name=${docker_img_name##*: }
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}
LOG
LOG Done.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。