From 52641d22bc575c01a6fca0cafb5e9b5d0dec619d Mon Sep 17 00:00:00 2001 From: xyn-coder Date: Tue, 22 Nov 2022 15:53:14 +0800 Subject: [PATCH] change for edge computing --- isomaker/img_repo.sh | 13 ++++++++++++- isomaker/init.sh | 4 +++- isomaker/iso.sh | 16 ++++++++++++++++ isomaker/oemaker.sh | 7 +++++++ isomaker/rpm.sh | 19 +++++++++++++++++++ 5 files changed, 57 insertions(+), 2 deletions(-) diff --git a/isomaker/img_repo.sh b/isomaker/img_repo.sh index 668ee76..3335183 100755 --- a/isomaker/img_repo.sh +++ b/isomaker/img_repo.sh @@ -18,7 +18,18 @@ set -e function create_install_img() { - echo "$YUMREPO" > yumrepo.file + tmprep='' + repos=($(echo "$YUMREPO" | sed 's/-s//g')) + for rep in ${repos[@]} + do + if [[ "${rep}" =~ "Epol" ]];then + continue + else + tmprep="-s ${rep} ${tmprep}" + fi + done + + echo "${tmprep}" > yumrepo.file set +e lorax --isfinal -p "${PRODUCT}" -v "${VERSION}${RELEASE}" -r "${RELEASE}" -t "${VARIANT}" --sharedir 80-openeuler --rootfs-size=4 --buildarch="$ARCH" $(cat yumrepo.file) --nomacboot --noupgrade "${BUILD}"/iso > lorax.logfile 2>&1 diff --git a/isomaker/init.sh b/isomaker/init.sh index 2603bfb..ca39d48 100755 --- a/isomaker/init.sh +++ b/isomaker/init.sh @@ -78,7 +78,7 @@ function parse_cmd_line() esac done - for typename in standard source debug everything_debug everything everything_src netinst + for typename in standard source debug everything_debug everything everything_src netinst edge do if [ "${typename}" == "${ISO_TYPE}" ];then return 0 @@ -114,6 +114,7 @@ function global_var_init() EVE_DEBUG_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-everything-debug-${ARCH}-dvd.iso" EVE_SRC_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-source-dvd.iso" NETINST_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-netinst-${ARCH}-dvd.iso" + EDGE_ISO_NAME="${PRODUCT}-${VERSION}-${RELEASE}-edge-${ARCH}-dvd.iso" else RELEASE_NAME="${PRODUCT}-${VERSION}-${ARCH}" STANDARD_ISO_NAME="${PRODUCT}-${VERSION}-${ARCH}-dvd.iso" @@ -123,6 +124,7 @@ function global_var_init() EVE_DEBUG_ISO_NAME="${PRODUCT}-${VERSION}-everything-debug-${ARCH}-dvd.iso" EVE_SRC_ISO_NAME="${PRODUCT}-${VERSION}-source-dvd.iso" NETINST_ISO_NAME="${PRODUCT}-${VERSION}-netinst-${ARCH}-dvd.iso" + EDGE_ISO_NAME="${PRODUCT}-${VERSION}-edge-${ARCH}-dvd.iso" fi [ ! -d "${BUILD}" ] && mkdir -p "${BUILD}" diff --git a/isomaker/iso.sh b/isomaker/iso.sh index 4152c57..38fa4ab 100755 --- a/isomaker/iso.sh +++ b/isomaker/iso.sh @@ -48,6 +48,22 @@ function gen_standard_iso() return 0 } +function gen_edge_iso() +{ + set +e + mkdir -p "${BUILD}"/iso/repodata/ + cp "config/${ARCH}/edge_normal.xml" "${BUILD}"/iso/repodata/ + createrepo -g "${BUILD}"/iso/repodata/*.xml "${BUILD}"/iso + if [ "$ARCH" == "x86_64" ]; then + mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot -allow-leading-dots -no-bak -V "${RELEASE_NAME}" -o "${OUTPUT_DIR}/${EDGE_ISO_NAME}" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot "${BUILD}"/iso + [ $? != 0 ] && return 1 + elif [ "$ARCH" == "aarch64" ]; then + mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot -allow-leading-dots -no-bak -V "${RELEASE_NAME}" -o "${OUTPUT_DIR}/${EDGE_ISO_NAME}" -e images/efiboot.img -no-emul-boot "${BUILD}"/iso + [ $? != 0 ] && return 1 + fi + implantisomd5 "${OUTPUT_DIR}/${EDGE_ISO_NAME}" + return 0 +} function gen_src_iso() { diff --git a/isomaker/oemaker.sh b/isomaker/oemaker.sh index 98b1faa..c3d949f 100755 --- a/isomaker/oemaker.sh +++ b/isomaker/oemaker.sh @@ -145,6 +145,13 @@ function mk_oe_main() return 1 fi ls "${OUTPUT_DIR}/${EVE_SRC_ISO_NAME}" + elif [ "${ISO_TYPE}" == "edge" ]; then + gen_edge_iso + if [ $? -ne 0 ]; then + echo "create edge iso failed" + return 1 + fi + ls "${OUTPUT_DIR}/${EDGE_ISO_NAME}" fi mkclean return 0 diff --git a/isomaker/rpm.sh b/isomaker/rpm.sh index e3feaab..85b1042 100755 --- a/isomaker/rpm.sh +++ b/isomaker/rpm.sh @@ -26,6 +26,10 @@ function parse_rpmlist_xml() function download_rpms() { + if [ "${ISO_TYPE}" == "edge" ]; then + get_edge_rpms + return 0 + fi cat "${CONFIG}" | grep packagereq | cut -d ">" -f 2 | cut -d "<" -f 1 > _all_rpms.lst parse_rpmlist_xml "${ARCH}" cat parsed_rpmlist_${ARCH} >> _all_rpms.lst @@ -146,6 +150,21 @@ function get_rpm_pub_key() rm -rf "${BUILD}"/iso/GPG_tmp } +function get_edge_rpms() +{ + parse_rpmlist_xml "edge_${ARCH}" + cat parsed_rpmlist_edge_${ARCH} > _edge_rpms.lst + parse_rpmlist_xml "edge_common" + cat parsed_rpmlist_edge_common >> _edge_rpms.lst + cat "config/${ARCH}/edge_normal.xml" | grep packagereq | cut -d ">" -f 2 | cut -d "<" -f 1 >> _edge_rpms.lst + sort -r -u _edge_rpms.lst -o _edge_rpms.lst + yumdownloader --resolve --installroot="${BUILD}"/tmp --destdir="${BUILD}"/iso/Packages/ $(cat _edge_rpms.lst | tr '\n' ' ') + if [ $? != 0 ] || [ $(ls "${BUILD}"/iso/Packages/ | wc -l) == 0 ]; then + echo "Download rpms failed!" + exit 133 + fi +} + function get_everything_rpms() { yum list --installroot="${BUILD}"/tmp --available | awk '{print $1}' | grep -E "\.noarch|\.${ARCH}" | grep -v "debuginfo" | grep -v "debugsource" > ava_every_lst -- 2.33.0