mirror of
https://github.com/xopenwrt/X-OpenWrt-New.git
synced 2026-09-18 08:20:11 +00:00
AutoBuild-Actions: 20211212 功能更新
2021/12/12 更新内容
1. 新增固件标签 Default_FLAG, 一键更新固件时会自动检测带该标签的固件版本, e.g. 若固件标签为 Full, 则更新固件时仅可以更新到固件名称中带 Full 标签的版本
补充: 用户自定义变量 Default_FLAG, 支持数字与字母的组合 [0-9a-zA-Z] 例如 [Full Lite Daily1 Test2], 不支持标点符号, 不能为空
当该值为 AUTO 时, 将自动从配置文件名称获取, 格式为 <TARGET_PROFILE>-<FLAG>, e.g. 配置文件名称为 [x86_64-Test 或 d-team_newifi-d2-Lite], 则标签分别为 [Test Lite]; 配置文件若为不规则命名或无标签例如 [x86_64 X86 NEWIFI-D2], 则标签自动设定为 Full
同时支持在手动编译时临时修改, 点击 Run workflow 后修改 固件名称后缀 [可选] 值即可, 优先级高于用户自定义变量 Default_FLAG
固件内支持标签的快速切换, 切换方法 autoupdate --flag <标签名>, 恢复默认 autoupdate --flag reset
2. AutoBuild_Function.sh Firmware_Diy 函数中新增 CONFIG_FILE TARGET_FLAG 等可调用变量
3. 新增一些设备支持 (也许, 我也不知道)
改动内容较大, 建议重新 Fork 本仓库
This commit is contained in:
@@ -51,25 +51,48 @@ Firmware_Diy_Before() {
|
||||
TARGET_SUBTARGET="$(awk -F '[="]+' '/TARGET_SUBTARGET/{print $2}' ${CONFIG_TEMP})"
|
||||
[[ -z ${Firmware_Format} || ${Firmware_Format} =~ (false|AUTO) ]] && {
|
||||
case "${TARGET_BOARD}" in
|
||||
ramips | reltek | ipq40xx | ath79 | ipq807x)
|
||||
ramips | reltek | ath* | ipq* | bcm47xx | bmips | kirkwood | mediatek)
|
||||
Firmware_Format=bin
|
||||
;;
|
||||
rockchip | x86)
|
||||
[[ $(cat ${CONFIG_TEMP}) =~ CONFIG_TARGET_IMAGES_GZIP=y ]] && {
|
||||
Firmware_Format=img.gz
|
||||
} || Firmware_Format=img
|
||||
rockchip | x86 | bcm27xx | mxs | sunxi | zynq)
|
||||
Firmware_Format=$(if_IMG)
|
||||
;;
|
||||
mvebu)
|
||||
case "${TARGET_SUBTARGET}" in
|
||||
cortexa53 | cortexa72)
|
||||
Firmware_Format=$(if_IMG)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
octeon | oxnas | pistachio)
|
||||
Firmware_Format=tar
|
||||
;;
|
||||
esac
|
||||
}
|
||||
[[ ${Author_URL} != false && ${Author_URL} == AUTO ]] && Author_URL=${Github}
|
||||
[[ ${Author_URL} == false ]] && unset Author_URL
|
||||
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] ]]
|
||||
then
|
||||
TARGET_FLAG="${Default_FLAG}"
|
||||
fi
|
||||
fi
|
||||
if [[ ! ${Tempoary_FLAG} =~ (\"|=|-|_|\.|\#|\|) && ${Tempoary_FLAG} =~ [a-zA-Z0-9] ]]
|
||||
then
|
||||
TARGET_FLAG="${Tempoary_FLAG}"
|
||||
fi
|
||||
case "${TARGET_BOARD}" in
|
||||
x86)
|
||||
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-BOOT-SHA256.FORMAT"
|
||||
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-BOOT-${TARGET_FLAG}-SHA256.FORMAT"
|
||||
;;
|
||||
*)
|
||||
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-SHA256.FORMAT"
|
||||
AutoBuild_Firmware="AutoBuild-${OP_REPO}-${TARGET_PROFILE}-${OP_VERSION}-${TARGET_FLAG}-SHA256.FORMAT"
|
||||
;;
|
||||
esac
|
||||
|
||||
cat >> ${GITHUB_ENV} <<EOF
|
||||
Home=${Home}
|
||||
CONFIG_TEMP=${CONFIG_TEMP}
|
||||
@@ -119,6 +142,7 @@ Github=${Github}
|
||||
TARGET_PROFILE=${TARGET_PROFILE}
|
||||
TARGET_BOARD=${TARGET_BOARD}
|
||||
TARGET_SUBTARGET=${TARGET_SUBTARGET}
|
||||
TARGET_FLAG=${TARGET_FLAG}
|
||||
OP_VERSION=${OP_VERSION}
|
||||
OP_AUTHOR=${OP_AUTHOR}
|
||||
OP_REPO=${OP_REPO}
|
||||
@@ -151,9 +175,6 @@ EOF
|
||||
cat >> ${Version_File} <<EOF
|
||||
|
||||
sed -i '/check_signature/d' /etc/opkg.conf
|
||||
# sed -i 's#mirrors.cloud.tencent.com/lede#downloads.immortalwrt.cnsztl.eu.org#g' /etc/opkg/distfeeds.conf
|
||||
# sed -i 's#18.06.9/##g' /etc/opkg/distfeeds.conf
|
||||
# sed -i 's#releases/#snapshots/#g' /etc/opkg/distfeeds.conf
|
||||
|
||||
sed -i 's/\"services\"/\"nas\"/g' /usr/lib/lua/luci/controller/aliyundrive-webdav.lua
|
||||
sed -i 's/services/nas/g' /usr/lib/lua/luci/view/aliyundrive-webdav/aliyundrive-webdav_log.htm
|
||||
@@ -176,19 +197,37 @@ then
|
||||
fi
|
||||
exit 0
|
||||
EOF
|
||||
sed -i "s?${zzz_Default_Version}?${zzz_Default_Version} @ ${Author} [${Display_Date}]?g" ${Version_File}
|
||||
if [[ -n ${TARGET_FLAG} ]]
|
||||
then
|
||||
sed -i "s?${zzz_Default_Version}?${TARGET_FLAG} ${zzz_Default_Version} @ ${Author} [${Display_Date}]?g" ${Version_File}
|
||||
else
|
||||
sed -i "s?${zzz_Default_Version}?${zzz_Default_Version} @ ${Author} [${Display_Date}]?g" ${Version_File}
|
||||
fi
|
||||
ECHO "Downloading [ShadowSocksR Plus+] for coolsnowwolf/lede ..."
|
||||
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
|
||||
;;
|
||||
immortalwrt/immortalwrt)
|
||||
Copy ${CustomFiles}/Depends/openwrt_release_${OP_AUTHOR} ${BASE_FILES}/etc openwrt_release
|
||||
sed -i "s?ImmortalWrt?ImmortalWrt @ ${Author} [${Display_Date}]?g" ${Version_File}
|
||||
if [[ -n ${TARGET_FLAG} ]]
|
||||
then
|
||||
sed -i "s?ImmortalWrt?ImmortalWrt ${TARGET_FLAG} @ ${Author} [${Display_Date}]?g" ${Version_File}
|
||||
else
|
||||
sed -i "s?ImmortalWrt?ImmortalWrt @ ${Author} [${Display_Date}]?g" ${Version_File}
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
sed -i "s?By?By ${Author}?g" ${CustomFiles}/Depends/banner
|
||||
sed -i "s?Openwrt?Openwrt ${OP_VERSION} / AutoUpdate ${AutoUpdate_Version}?g" ${CustomFiles}/Depends/banner
|
||||
[[ -n ${Banner_Message} ]] && sed -i "s?Powered by AutoBuild-Actions?${Banner_Message}?g" ${CustomFiles}/Depends/banner
|
||||
if [[ -n ${Banner_Message} ]]
|
||||
then
|
||||
if [[ -n ${TARGET_FLAG} ]]
|
||||
then
|
||||
sed -i "s?Powered by AutoBuild-Actions?${Banner_Message} @ ${TARGET_FLAG}?g" ${CustomFiles}/Depends/banner
|
||||
else
|
||||
sed -i "s?Powered by AutoBuild-Actions?${Banner_Message}?g" ${CustomFiles}/Depends/banner
|
||||
fi
|
||||
fi
|
||||
case "${OP_AUTHOR}/${OP_REPO}" in
|
||||
immortalwrt/immortalwrt)
|
||||
Copy ${CustomFiles}/Depends/banner ${Home}/$(PKG_Finder d package default-settings)/files openwrt_banner
|
||||
@@ -271,9 +310,8 @@ EOF
|
||||
ECHO "[${OP_AUTHOR}]: Current OP_AUTHOR is not supported !"
|
||||
fi
|
||||
fi
|
||||
if [[ ${Author_URL} != false ]]
|
||||
if [[ -n ${Author_URL} ]]
|
||||
then
|
||||
[[ ${Author_URL} == AUTO ]] && Author_URL=${Github}
|
||||
cat >> ${CONFIG_TEMP} <<EOF
|
||||
|
||||
CONFIG_KERNEL_BUILD_USER="${Author}"
|
||||
@@ -300,7 +338,12 @@ Firmware_Diy_End() {
|
||||
}
|
||||
;;
|
||||
*)
|
||||
Process_Firmware ${Firmware_Format}
|
||||
if [[ -n ${Firmware_Format} ]]
|
||||
then
|
||||
Process_Firmware ${Firmware_Format}
|
||||
else
|
||||
Process_Firmware $(List_Format)
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
[[ $(ls) =~ 'AutoBuild-' ]] && {
|
||||
@@ -322,21 +365,21 @@ Process_Firmware_Core() {
|
||||
Firmware_Format_Defined=$1
|
||||
shift
|
||||
while [[ $1 ]];do
|
||||
AutoBuild_Firmware=$(Get_Variable AutoBuild_Firmware)
|
||||
Firmware=${AutoBuild_Firmware}
|
||||
case "${TARGET_BOARD}" in
|
||||
x86)
|
||||
[[ $1 =~ efi ]] && {
|
||||
FW_Boot_Method=UEFI
|
||||
} || FW_Boot_Method=BIOS
|
||||
AutoBuild_Firmware=${AutoBuild_Firmware/BOOT/${FW_Boot_Method}}
|
||||
Firmware=${Firmware/BOOT/${FW_Boot_Method}}
|
||||
;;
|
||||
esac
|
||||
AutoBuild_Firmware=${AutoBuild_Firmware/SHA256/$(Get_SHA256 $1)}
|
||||
AutoBuild_Firmware=${AutoBuild_Firmware/FORMAT/${Firmware_Format_Defined}}
|
||||
Firmware=${Firmware/SHA256/$(Get_SHA256 $1)}
|
||||
Firmware=${Firmware/FORMAT/${Firmware_Format_Defined}}
|
||||
[[ -f $1 ]] && {
|
||||
ECHO "Copying [$1] to [${AutoBuild_Firmware}] ..."
|
||||
cp -a $1 ${AutoBuild_Firmware}
|
||||
} || ECHO "Unable to access [${AutoBuild_Firmware}] ..."
|
||||
ECHO "Copying [$1] to [${Firmware}] ..."
|
||||
cp -a $1 ${Firmware}
|
||||
} || ECHO "Unable to access [${Firmware}] ..."
|
||||
shift
|
||||
done
|
||||
}
|
||||
@@ -370,23 +413,18 @@ Get_SHA256() {
|
||||
List_REGEX | grep "$1" | cut -c1-5
|
||||
}
|
||||
|
||||
Get_Variable() {
|
||||
local Result="$(grep "$1" ${ENV_FILE} | grep -v "#" | awk -F '=' '{print $2}')"
|
||||
if [[ -n ${Result} ]]
|
||||
then
|
||||
eval echo "${Result}"
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
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() {
|
||||
[[ $(cat ${CONFIG_TEMP}) =~ CONFIG_TARGET_IMAGES_GZIP=y ]] && {
|
||||
echo img.gz
|
||||
} || echo img
|
||||
}
|
||||
|
||||
ECHO() {
|
||||
echo "[$(date "+%H:%M:%S")] $*"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user