From fcd6d415869e401d149248831146a65d9975f808 Mon Sep 17 00:00:00 2001 From: Artem Smirnov Date: Tue, 21 Aug 2018 21:43:59 +0300 Subject: [PATCH] image_builder: change manual to autobuild --- image_builder/autobuild.sh | 34 ++++++++++++++++++++ image_builder/manual.sh | 63 -------------------------------------- 2 files changed, 34 insertions(+), 63 deletions(-) create mode 100755 image_builder/autobuild.sh delete mode 100755 image_builder/manual.sh diff --git a/image_builder/autobuild.sh b/image_builder/autobuild.sh new file mode 100755 index 00000000..2143e67b --- /dev/null +++ b/image_builder/autobuild.sh @@ -0,0 +1,34 @@ +#! /usr/bin/env bash + +set -e + +export DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'} +export LANG=${LANG:='C.UTF-8'} +export LC_ALL=${LC_ALL:='C.UTF-8'} + +export TARGET_REPO=${TARGET_REPO:='https://github.com/urpylka/clever.git'} +export TARGET_REF=${TARGET_REF:='qemu_test_2'} +export TARGET_CONFIG=${TARGET_CONFIG:='/image_builder/scripts/builder.json'} + +# TODO: The repository can be already downloaded, use the TARGET_REPO also as unix path. +REPO_DIR=$(mktemp -d --suffix=.builder_repo) +git clone ${TARGET_REPO} --single-branch --branch ${TARGET_REF} --depth 1 ${REPO_DIR} \ +|| (echo 'Error: Could not clone repo!'; return 1) +[[ -f ${REPO_DIR}${TARGET_CONFIG} ]] && export TARGET_CONFIG=${REPO_DIR}${TARGET_CONFIG} \ +|| (echo "Error: TARGET_CONFIG doesn't exist!"; return 1) + +export IMAGE_VERSION="${TARGET_REF}_$(date '+%Y%m%d_%H%M%S')" +export IMAGE_PATH="$(pwd)/image/$(basename -s ".git" ${TARGET_REPO})_${IMAGE_VERSION}.img" + +./image_config.sh get_image ${IMAGE_PATH} $(jq '.source_image' -r ${TARGET_CONFIG}) + +if [[ $(arch) != 'armv7l' ]]; then + [[ -d '/proc/sys/fs/binfmt_misc' ]] || mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc + echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register + ./image_config.sh copy_to_chroot ${IMAGE_PATH} './qemu-arm-resin' '/usr/bin/qemu-arm-static' +fi + +export IMAGE_BUILDER="$(dirname $(readlink -e "$0"))" +export SCRIPTS_DIR="$(jq '.scripts_dir' -r ${TARGET_CONFIG})" + +$(jq '.main_script' -r ${TARGET_CONFIG}) diff --git a/image_builder/manual.sh b/image_builder/manual.sh deleted file mode 100755 index 8fe2f691..00000000 --- a/image_builder/manual.sh +++ /dev/null @@ -1,63 +0,0 @@ -#! /bin/bash - -DEBIAN_FRONTEND=${DEBIAN_FRONTEND:='noninteractive'} -LANG=${LANG:='C.UTF-8'} -LC_ALL=${LC_ALL:='C.UTF-8'} - -TARGET_REPO_URL=${TARGET_REPO_URL:='https://github.com/urpylka/clever.git'} -TARGET_REPO_REF=${TARGET_REPO_REF:='qemu_test_2'} -TARGET_REPO_PATH=${TARGET_REPO_PATH:='/image_builder'} - -IMAGE_NAME=${IMAGE_NAME:='clever_docker.img'} -CLEVER_VERSION=${CLEVER_VERSION:='NO_VERSION'} - -SOURCE_IMAGE=${SOURCE_IMAGE:='https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-12-01/2017-11-29-raspbian-stretch-lite.zip'} -NUMBER_THREADS=${NUMBER_THREADS:=4} -DISCOVER_ROS_PACKAGES=${DISCOVER_ROS_PACKAGES:=False} -SHRINK=${SHRINK:=True} - -set -e - -apt-get update -qq > /dev/null -apt-get install -y --no-install-recommends -qq unzip wget parted apt-utils git ca-certificates > /dev/null - -REPO_DIR=$(mktemp -d) -git clone ${TARGET_REPO_URL} --single-branch --branch ${TARGET_REPO_REF} --depth 1 ${REPO_DIR} -[[ $? != 0 ]] && (echo 'Error: Could not clone repo!'; return 1) -[[ -d ${REPO_DIR}${TARGET_REPO_PATH} ]] || (echo 'Error: TARGET_REPO_PATH was incorrect!'; return 1) - -IMAGE_PATH=$(pwd)/image/${IMAGE_NAME} -SCRIPTS_DIR=${REPO_DIR}${TARGET_REPO_PATH}'/scripts/' - -./image_config.sh get_image ${IMAGE_PATH} ${SOURCE_IMAGE} -./image_config.sh resize_fs ${IMAGE_PATH} '7G' - -if [[ $(arch) != 'armv7l' ]]; then - if ! [[ -d '/proc/sys/fs/binfmt_misc' ]]; then - mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc - echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-arm-static:' > /proc/sys/fs/binfmt_misc/register - fi -fi -./image_config.sh copy_to_chroot ${IMAGE_PATH} './qemu-arm-resin' '/usr/bin/qemu-arm-static' - -./image_config.sh copy_to_chroot ${IMAGE_PATH} ${SCRIPTS_DIR}'init_rpi.sh' '/root/' -./image_config.sh copy_to_chroot ${IMAGE_PATH} ${SCRIPTS_DIR}'hardware_setup.sh' '/root/' - -./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'init_image.sh' ${CLEVER_VERSION} ${SOURCE_IMAGE} -./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'software_install.sh' -./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'network_setup.sh' - -#./image_config.sh copy_to_chroot ${IMAGE_PATH} ${SCRIPTS_DIR}'kinetic-ros-coex.rosinstall' '/home/pi/ros_catkin_ws/' - -# -# Не совсем корректно тк такого параметра быть не должно, -# вообще здесь не должно быть ветки как параметра, она должна задаваться непосредственно в файл ros_install -# -./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'ros_install.sh' ${TARGET_REPO_URL} ${TARGET_REPO_REF} ${DISCOVER_ROS_PACKAGES} - -if SHRINK; then - ./autosizer.sh ${IMAGE_PATH} - # Наверное вставить в autosizer, тк отдельно (внутри образа) это все равно никто не будет запускать - # и не нужно его запускать через execute - ./image_config.sh execute ${IMAGE_PATH} ${SCRIPTS_DIR}'change_boot_part.sh' -fi \ No newline at end of file