From e92a7be84da9b872d347d6c9814afb9221460ac7 Mon Sep 17 00:00:00 2001 From: Hyy2001X <1804430051@qq.com> Date: Wed, 23 Mar 2022 20:59:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Scripts/AutoBuild_DiyScript.sh | 30 ++--- Scripts/AutoBuild_Function.sh | 232 ++++++++++++++++++--------------- 2 files changed, 140 insertions(+), 122 deletions(-) diff --git a/Scripts/AutoBuild_DiyScript.sh b/Scripts/AutoBuild_DiyScript.sh index e9251c8..c0170d2 100755 --- a/Scripts/AutoBuild_DiyScript.sh +++ b/Scripts/AutoBuild_DiyScript.sh @@ -6,17 +6,17 @@ Firmware_Diy_Core() { Author=AUTO Author_URL=AUTO - Default_FLAG=AUTO + Default_Flag=AUTO Default_IP="192.168.1.1" - Banner_Message="Powered by AutoBuild-Actions" + Default_Title="Powered by AutoBuild-Actions" - Short_Firmware_Date=true - Checkout_Virtual_Images=false - Firmware_Format=AUTO - REGEX_Skip_Checkout="packages|buildinfo|sha256sums|manifest|kernel|rootfs|factory" + Short_Fw_Date=true + x86_Full_Images=false + Fw_Format=false + Regex_Skip="packages|buildinfo|sha256sums|manifest|kernel|rootfs|factory|itb|profile" - INCLUDE_AutoBuild_Features=true - INCLUDE_Original_OpenWrt_Compatible=false + AutoBuild_Features=true + Compatible=false } Firmware_Diy() { @@ -31,7 +31,7 @@ Firmware_Diy() { # ${TARGET_BOARD} 设备架构 # ${TARGET_FLAG} 固件名称后缀 - # ${Home} OpenWrt 源码位置 + # ${WORK} OpenWrt 源码位置 # ${CONFIG_FILE} 使用的配置文件名称 # ${FEEDS_CONF} OpenWrt 源码目录下的 feeds.conf.default 文件 # ${CustomFiles} 仓库中的 /CustomFiles 绝对路径 @@ -57,13 +57,13 @@ Firmware_Diy() { # AddPackage svn other ddnsto linkease/nas-packages/trunk/network/services AddPackage git other helloworld fw876 master sed -i 's/143/143,8080,8443/' $(PKG_Finder d package luci-app-ssr-plus)/root/etc/init.d/shadowsocksr - patch < ${CustomFiles}/Patches/revert_remove-alterId-config.patch -p1 -d ${Home} - patch < ${CustomFiles}/Patches/fix_ntfs3_antfs_conflict.patch -p1 -d ${Home} - patch < ${CustomFiles}/Patches/fix_aria2_autocreate_path.patch -p1 -d ${Home} + patch < ${CustomFiles}/Patches/revert_remove-alterId-config.patch -p1 -d ${WORK} + patch < ${CustomFiles}/Patches/fix_ntfs3_antfs_conflict.patch -p1 -d ${WORK} + patch < ${CustomFiles}/Patches/fix_aria2_autocreate_path.patch -p1 -d ${WORK} case "${TARGET_PROFILE}" in d-team_newifi-d2) - patch < ${CustomFiles}/${TARGET_PROFILE}_mac80211.patch -p1 -d ${Home} + patch < ${CustomFiles}/${TARGET_PROFILE}_mac80211.patch -p1 -d ${WORK} Copy ${CustomFiles}/${TARGET_PROFILE}_system ${BASE_FILES}/etc/config system sed -i "/DEVICE_COMPAT_VERSION := 1.1/d" target/linux/ramips/image/mt7621.mk Copy ${CustomFiles}/fake-automount $(PKG_Finder d "package" automount)/files 15-automount @@ -72,8 +72,8 @@ Firmware_Diy() { Copy ${CustomFiles}/fake-automount $(PKG_Finder d "package" automount)/files 15-automount ;; x86_64) - AddPackage git other openwrt-passwall xiaorouji main - AddPackage git other luci-app-passwall2 xiaorouji main + AddPackage git other openwrt-passwall xiaorouji packages + AddPackage git other openwrt-passwall xiaorouji luci rm -rf packages/lean/autocore AddPackage git lean autocore-modify Hyy2001X master ;; diff --git a/Scripts/AutoBuild_Function.sh b/Scripts/AutoBuild_Function.sh index 47fa584..bcb8dcd 100755 --- a/Scripts/AutoBuild_Function.sh +++ b/Scripts/AutoBuild_Function.sh @@ -4,16 +4,16 @@ Firmware_Diy_Before() { ECHO "[Firmware_Diy_Before] Starting ..." - Home="${GITHUB_WORKSPACE}/openwrt" + WORK="${GITHUB_WORKSPACE}/openwrt" CONFIG_TEMP="${GITHUB_WORKSPACE}/openwrt/.config" - CD ${Home} + CD ${WORK} Firmware_Diy_Core - [[ ${Short_Firmware_Date} == true ]] && Compile_Date="$(echo ${Compile_Date} | cut -c1-8)" + [[ ${Short_Fw_Date} == true ]] && Compile_Date="$(echo ${Compile_Date} | cut -c1-8)" Github="$(grep "https://github.com/[a-zA-Z0-9]" ${GITHUB_WORKSPACE}/.git/config | cut -c8-100 | sed 's/^[ \t]*//g')" [[ -z ${Author} || ${Author} == AUTO ]] && Author="$(echo "${Github}" | cut -d "/" -f4)" OP_AUTHOR="$(echo "${REPO_URL}" | cut -d "/" -f4)" OP_REPO="$(echo "${REPO_URL}" | cut -d "/" -f5)" - OP_BRANCH="$(GET_Branch)" + OP_BRANCH="$(Get_Branch)" if [[ ${OP_BRANCH} =~ (master|main) ]] then OP_VERSION_HEAD="R$(date +%y.%m)-" @@ -41,44 +41,46 @@ Firmware_Diy_Before() { x86_Test="$(egrep -o "CONFIG_TARGET.*Generic=y" ${CONFIG_TEMP} | sed -r 's/CONFIG_TARGET_(.*)_Generic=y/\1/')" [[ -z ${x86_Test} ]] && break done - [[ ${x86_Test} == x86_64 ]] && { + if [[ ${x86_Test} == x86_64 ]] + then TARGET_PROFILE=x86_64 - } || { + else TARGET_PROFILE="$(egrep -o "CONFIG_TARGET.*DEVICE.*=y" ${CONFIG_TEMP} | sed -r 's/.*DEVICE_(.*)=y/\1/')" - } + fi [[ -z ${TARGET_PROFILE} ]] && ECHO "Unable to get [TARGET_PROFILE] !" TARGET_BOARD="$(awk -F '[="]+' '/TARGET_BOARD/{print $2}' ${CONFIG_TEMP})" TARGET_SUBTARGET="$(awk -F '[="]+' '/TARGET_SUBTARGET/{print $2}' ${CONFIG_TEMP})" - [[ -z ${Firmware_Format} || ${Firmware_Format} =~ (false|AUTO) ]] && { + if [[ -z ${Fw_MFormat} || ${Fw_MFormat} =~ (false|AUTO) ]] + then case "${TARGET_BOARD}" in ramips | reltek | ath* | ipq* | bcm47xx | bmips | kirkwood | mediatek) - Firmware_Format=bin + Fw_MFormat=bin ;; rockchip | x86 | bcm27xx | mxs | sunxi | zynq) - Firmware_Format="$(if_IMG)" + Fw_MFormat="$(gz_Check)" ;; mvebu) case "${TARGET_SUBTARGET}" in cortexa53 | cortexa72) - Firmware_Format="$(if_IMG)" + Fw_MFormat="$(gz_Check)" ;; esac ;; octeon | oxnas | pistachio) - Firmware_Format=tar + Fw_MFormat=tar ;; esac - } + fi [[ ${Author_URL} != false && ${Author_URL} == AUTO ]] && Author_URL="${Github}" [[ ${Author_URL} == false ]] && unset Author_URL - if [[ ${Default_FLAG} == AUTO ]] + if [[ ${Default_Flag} == AUTO ]] then TARGET_FLAG=${CONFIG_FILE/${TARGET_PROFILE}-/} [[ ${TARGET_FLAG} =~ ${TARGET_PROFILE} || -z ${TARGET_FLAG} || ${TARGET_FLAG} == ${CONFIG_FILE} ]] && TARGET_FLAG=Full else - if [[ ! ${Default_FLAG} =~ (\"|=|-|_|\.|\#|\|) && ${Default_FLAG} =~ [a-zA-Z0-9] ]] + if [[ ! ${Default_Flag} =~ (\"|=|-|_|\.|\#|\|) && ${Default_Flag} =~ [a-zA-Z0-9] ]] then - TARGET_FLAG="${Default_FLAG}" + TARGET_FLAG="${Default_Flag}" fi fi if [[ ! ${Tempoary_FLAG} =~ (\"|=|-|_|\.|\#|\|) && ${Tempoary_FLAG} =~ [a-zA-Z0-9] ]] @@ -87,29 +89,29 @@ Firmware_Diy_Before() { fi case "${TARGET_BOARD}" in x86) - AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-BOOT-${TARGET_FLAG}-SHA256.FORMAT" + AutoBuild_Fw="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-BOOT-${TARGET_FLAG}-SHA256.FORMAT" ;; *) - AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-${TARGET_FLAG}-SHA256.FORMAT" + AutoBuild_Fw="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-${TARGET_FLAG}-SHA256.FORMAT" ;; esac cat >> ${GITHUB_ENV} <> ${Version_File} < /dev/null 2>&1 AddPackage svn feeds/packages golang coolsnowwolf/packages/trunk/lang ECHO "Starting to convert zh-cn translation files to zh_Hans ..." @@ -309,103 +313,108 @@ EOF Firmware_Diy_End() { ECHO "[Firmware_Diy_End] Starting ..." - cd ${Home} - MKDIR ${Home}/bin/Firmware - Firmware_Path="${Home}/bin/targets/${TARGET_BOARD}/${TARGET_SUBTARGET}" - SHA256_File="${Firmware_Path}/sha256sums" - cd ${Firmware_Path} - echo -e "### FIRMWARE OUTPUT ###\n$(ls -1 | egrep -v "packages|buildinfo|sha256sums|manifest")\n" + cd ${WORK} + MKDIR ${WORK}/bin/Firmware + Fw_Path="${WORK}/bin/targets/${TARGET_BOARD}/${TARGET_SUBTARGET}" + cd ${Fw_Path} + echo -e "### FIRMWARE OUTPUT ###\n$(ls -1)\n" case "${TARGET_BOARD}" in x86) - [[ ${Checkout_Virtual_Images} == true ]] && { - Process_Firmware $(List_Format) - } || { - Process_Firmware ${Firmware_Format} - } + if [[ ${x86_Full_Images} == true ]] + then + Process_Fw $(List_MFormat) + else + Process_Fw ${Fw_MFormat} + fi ;; *) - if [[ -n ${Firmware_Format} ]] + if [[ -n ${Fw_MFormat} ]] then - Process_Firmware ${Firmware_Format} + Process_Fw ${Fw_MFormat} else - Process_Firmware $(List_Format) + Process_Fw $(List_MFormat) fi ;; esac - [[ $(ls) =~ 'AutoBuild-' ]] && { + if [[ $(ls) =~ 'AutoBuild-' ]] + then cd - - cp -a ${Firmware_Path}/AutoBuild-* bin/Firmware - } + cp -a ${Fw_Path}/AutoBuild-* bin/Firmware + fi echo "[$(date "+%H:%M:%S")] Actions Avaliable: $(df -h | grep "/dev/root" | awk '{printf $4}')" ECHO "[Firmware_Diy_End] Done" } -Process_Firmware() { +Process_Fw() { while [[ $1 ]];do - Process_Firmware_Core $1 $(List_Firmware $1) + Process_Fw_Core $1 $(List_Fw $1 | Regex) shift done } -Process_Firmware_Core() { - Firmware_Format_Defined=$1 +Process_Fw_Core() { + Fw_Format=$1 shift while [[ $1 ]];do - Firmware=${AutoBuild_Firmware} + Fw=${AutoBuild_Fw} case "${TARGET_BOARD}" in x86) - [[ $1 =~ efi ]] && { - FW_Boot_Method=UEFI - } || FW_Boot_Method=BIOS - Firmware=${Firmware/BOOT/${FW_Boot_Method}} + [[ $1 =~ efi ]] && Fw_Boot=UEFI || Fw_Boot=BIOS + Fw=${Fw/BOOT/${Fw_Boot}} ;; esac - Firmware=${Firmware/SHA256/$(Get_SHA256 $1)} - Firmware=${Firmware/FORMAT/${Firmware_Format_Defined}} - [[ -f $1 ]] && { - ECHO "Copying [$1] to [${Firmware}] ..." - cp -a $1 ${Firmware} - } || ECHO "Unable to access [${Firmware}] ..." + Fw=${Fw/SHA256/$(Get_sha256 $1)} + Fw=${Fw/FORMAT/${Fw_Format}} + if [[ -f $1 ]] + then + ECHO "Copying [$1] to [${Fw}] ..." + cp -a $1 ${Fw} + else + ECHO "Failed to copy [${Fw}] ..." + fi shift done } -List_Firmware() { - [[ -z $* ]] && { - List_REGEX | while read X;do +List_Fw() { + if [[ -z $* ]] + then + for X in $(List_sha256);do echo ${X} | cut -d "*" -f2 done - } || { + else while [[ $1 ]];do - for X in $(echo $(List_REGEX));do + for X in $(List_sha256);do [[ ${X} == *$1 ]] && echo "${X}" | cut -d "*" -f2 done shift done - } + fi } -List_Format() { - echo "$(List_REGEX | cut -d "*" -f2 | cut -d "." -f2-3)" | sort | uniq +Regex() { + egrep -v "${Regex_Skip}" } -List_REGEX() { - [[ -n ${REGEX_Skip_Checkout} ]] && { - egrep -v "${REGEX_Skip_Checkout}" ${SHA256_File} | tr -s '\n' - } || egrep -v "packages|buildinfo|sha256sums|manifest|kernel|rootfs|factory" ${SHA256_File} | tr -s '\n' +List_sha256() { + cat ${Fw_Path}/sha256sums 2> /dev/null | Regex | tr -s '\n' } -Get_SHA256() { - List_REGEX | grep "$1" | cut -c1-5 +List_MFormat() { + echo "$(List_sha256 | cut -d "*" -f2 | cut -d "." -f2-3)" | sort | uniq } -GET_Branch() { +Get_sha256() { + List_sha256 | grep $1 | awk '{print $1}' | cut -c1-5 +} + +Get_Branch() { git -C $(pwd) rev-parse --abbrev-ref HEAD | grep -v HEAD || \ git -C $(pwd) describe --exact-match HEAD || \ git -C $(pwd) rev-parse HEAD } -if_IMG() { +gz_Check() { [[ $(cat ${CONFIG_TEMP}) =~ CONFIG_TARGET_IMAGES_GZIP=y ]] && { echo img.gz } || echo img @@ -417,11 +426,12 @@ ECHO() { PKG_Finder() { local Result - [[ $# -ne 3 ]] && { + if [[ $# -ne 3 ]] + then ECHO "Usage: PKG_Finder Search_Path Target_Name/Target_Path" return 0 - } - Result=$(find $2 -name $3 -type $1 -exec echo {} \;) + fi + Result=$(find $2 -name $3 -type $1 -exec echo {} \; 2> /dev/null) [[ -n ${Result} ]] && echo "${Result}" } @@ -441,10 +451,11 @@ MKDIR() { } AddPackage() { - [[ $# -lt 4 ]] && { + if [[ $# -lt 4 ]] + then ECHO "Syntax error: [$#] [$*]" return 0 - } + fi PKG_PROTO=$1 case "${PKG_PROTO}" in git | svn) @@ -463,17 +474,19 @@ AddPackage() { [[ ${REPO_URL} =~ "${OP_AUTHOR}/${OP_REPO}" ]] && return 0 MKDIR ${PKG_DIR} - [[ -d ${PKG_DIR}/${PKG_NAME} ]] && { + if [[ -d ${PKG_DIR}/${PKG_NAME} ]] + then ECHO "Removing old package: [${PKG_NAME}] ..." rm -rf ${PKG_DIR}/${PKG_NAME} - } + fi ECHO "Checking out package [${PKG_NAME}] to ${PKG_DIR} ..." case "${PKG_PROTO}" in git) - [[ -z ${REPO_BRANCH} ]] && { + if [[ -z ${REPO_BRANCH} ]] + then ECHO "WARNING: Syntax missing ,using default branch: [master]" REPO_BRANCH=master - } + fi PKG_URL="$(echo ${REPO_URL}/${PKG_NAME} | sed s/[[:space:]]//g)" git clone -b ${REPO_BRANCH} ${PKG_URL} ${PKG_NAME} > /dev/null 2>&1 ;; @@ -481,21 +494,26 @@ AddPackage() { svn checkout ${REPO_URL}/${PKG_NAME} ${PKG_NAME} > /dev/null 2>&1 ;; esac - [[ -f ${PKG_NAME}/Makefile || -n $(ls -A ${PKG_NAME}) ]] && { + if [[ -f ${PKG_NAME}/Makefile || -n $(ls -A ${PKG_NAME}) ]] + then mv -f "${PKG_NAME}" "${PKG_DIR}" [[ $? == 0 ]] && ECHO "Done" - } || ECHO "Failed to download package ${PKG_NAME} ..." + else + ECHO "Failed to download package ${PKG_NAME} ..." + fi } Copy() { - [[ ! $# =~ [23] ]] && { + if [[ ! $# =~ [23] ]] + then ECHO "Syntax error: [$#] [$*]" return 0 - } - [[ ! -f $1 ]] && [[ ! -d $1 ]] && { + fi + if [[ ! -f $1 && ! -d $1 ]] + then ECHO "$1: No such file or directory ..." return 0 - } + fi MKDIR $2 if [[ -z $3 ]] then