test: 新增 x86_64 设备编译支持

This commit is contained in:
Hyy2001X
2021-02-19 16:17:31 +08:00
parent cdecc782f2
commit 4105d36a50
7 changed files with 470 additions and 61 deletions
+4 -10
View File
@@ -14,7 +14,7 @@ Diy_Core() {
INCLUDE_Enable_FirewallPort_53=true
INCLUDE_SSR_Plus=true
INCLUDE_Passwall=false
INCLUDE_Passwall=true
INCLUDE_HelloWorld=false
INCLUDE_Bypass=false
INCLUDE_OpenClash=true
@@ -22,27 +22,21 @@ Diy_Core() {
Diy-Part1() {
Diy_Part1_Base
if [ "${Default_Device}" == "d-team_newifi-d2" ];then
Replace_File Customize/system_newifi-d2 package/base-files/files/etc/config system
else
Replace_File Customize/system_common package/base-files/files/etc/config system
fi
Update_Makefile exfat package/kernel/exfat
# Replace_File Customize/mt76-20210127.mk package/kernel/mt76 Makefile
# rm -rf package/kernel/mt76/patches
# ExtraPackages svn network/services dnsmasq https://github.com/openwrt/openwrt/trunk/package/network/services
# ExtraPackages svn network/services dropbear https://github.com/openwrt/openwrt/trunk/package/network/services
# ExtraPackages svn network/services ppp https://github.com/openwrt/openwrt/trunk/package/network/services
# ExtraPackages svn network/services hostapd https://github.com/openwrt/openwrt/trunk/package/network/services
# ExtraPackages svn kernel mt76 https://github.com/openwrt/openwrt/trunk/package/kernel
ExtraPackages git lean luci-theme-argon https://github.com/jerrykuku 18.06
ExtraPackages git other luci-app-argon-config https://github.com/jerrykuku master
ExtraPackages git other luci-app-adguardhome https://github.com/Hyy2001X master
ExtraPackages git other luci-app-shutdown https://github.com/Hyy2001X master
ExtraPackages svn other luci-app-smartdns https://github.com/project-openwrt/openwrt/trunk/package/ntlf9t
ExtraPackages git other luci-app-serverchan https://github.com/tty228 master
ExtraPackages svn other luci-app-socat https://github.com/Lienol/openwrt-package/trunk
+72 -19
View File
@@ -4,23 +4,44 @@
# AutoBuild Functions
GET_TARGET_INFO() {
Home=${GITHUB_WORKSPACE}/openwrt
echo "Home Path: ${Home}"
[ -f ${GITHUB_WORKSPACE}/Openwrt.info ] && . ${GITHUB_WORKSPACE}/Openwrt.info
Default_File="package/lean/default-settings/files/zzz-default-settings"
[ -f ${Default_File} ] && Lede_Version="$(egrep -o "R[0-9]+\.[0-9]+\.[0-9]+" ${Default_File})"
[[ -z ${Lede_Version} ]] && Lede_Version="Unknown"
[[ -z ${Lede_Version} ]] && Lede_Version="Openwrt"
Openwrt_Version="${Lede_Version}-${Compile_Date}"
TARGET_PROFILE="$(egrep -o "CONFIG_TARGET.*DEVICE.*=y" .config | sed -r 's/.*DEVICE_(.*)=y/\1/')"
x86_Test="$(egrep -o "CONFIG_TARGET.*DEVICE.*=y" .config | sed -r 's/CONFIG_TARGET_(.*)_DEVICE_(.*)=y/\1/')"
if [[ "${x86_Test}" == "x86_64" ]];then
TARGET_PROFILE="x86_64"
else
TARGET_PROFILE="$(egrep -o "CONFIG_TARGET.*DEVICE.*=y" .config | sed -r 's/.*DEVICE_(.*)=y/\1/')"
fi
[[ -z "${TARGET_PROFILE}" ]] && TARGET_PROFILE="${Default_Device}"
case "${TARGET_PROFILE}" in
x86_64)
grep "CONFIG_TARGET_IMAGES_GZIP=y" ${Home}/.config
if [[ ! $? -ne 0 ]];then
Firmware_sfx="img.gz"
else
Firmware_sfx="img"
fi
;;
*)
Firmware_sfx="bin"
;;
esac
TARGET_BOARD="$(awk -F '[="]+' '/TARGET_BOARD/{print $2}' .config)"
TARGET_SUBTARGET="$(awk -F '[="]+' '/TARGET_SUBTARGET/{print $2}' .config)"
Github_Repo="$(grep "https://github.com/[a-zA-Z0-9]" ${GITHUB_WORKSPACE}/.git/config | cut -c8-100)"
AutoBuild_Info=${GITHUB_WORKSPACE}/openwrt/package/base-files/files/etc/openwrt_info
}
Diy_Part1_Base() {
Diy_Core
Mkdir package/lean
[ -f "${GITHUB_WORKSPACE}/Customize/banner" ] && Replace_File Customize/banner package/base-files/files/etc
[ -f "${GITHUB_WORKSPACE}/Customize/mac80211.sh" ] && Replace_File Customize/mac80211.sh package/kernel/mac80211/files/lib/wifi
Replace_File Customize/banner package/base-files/files/etc
Replace_File Customize/mac80211.sh package/kernel/mac80211/files/lib/wifi
if [[ "${INCLUDE_SSR_Plus}" == "true" ]];then
ExtraPackages git lean helloworld https://github.com/fw876 master
sed -i 's/143/143,25,5222/' package/lean/helloworld/luci-app-ssr-plus/root/etc/init.d/shadowsocksr
@@ -56,6 +77,9 @@ Diy_Part1_Base() {
Diy_Part2_Base() {
Diy_Core
GET_TARGET_INFO
Replace_File Customize/uhttpd.po feeds/luci/applications/luci-app-uhttpd/po/zh-cn
Replace_File Customize/webadmin.po package/lean/luci-app-webadmin/po/zh-cn
Replace_File Customize/mwan3.config package/feeds/packages/mwan3/files/etc/config mwan3
if [[ "${INCLUDE_Enable_FirewallPort_53}" == "true" ]];then
[ -f "${Default_File}" ] && sed -i "s?iptables?#iptables?g" ${Default_File} > /dev/null 2>&1
fi
@@ -71,32 +95,61 @@ Diy_Part2_Base() {
else
sed -i "s?Openwrt?Openwrt ${Openwrt_Version}?g" package/base-files/files/etc/banner
fi
Replace_File Customize/uhttpd.po feeds/luci/applications/luci-app-uhttpd/po/zh-cn
Replace_File Customize/webadmin.po package/lean/luci-app-webadmin/po/zh-cn
[[ -z "${Author}" ]] && Author="Unknown"
echo "Author: ${Author}"
echo "Openwrt Version: ${Openwrt_Version}"
echo "Router: ${TARGET_PROFILE}"
echo "Github: ${Github_Repo}"
[ -f "$Default_File" ] && sed -i "s?${Lede_Version}?${Lede_Version} Compiled by ${Author} [${Display_Date}]?g" $Default_File
echo "${Openwrt_Version}" > package/base-files/files/etc/openwrt_info
echo "${Github_Repo}" >> package/base-files/files/etc/openwrt_info
echo "${TARGET_PROFILE}" >> package/base-files/files/etc/openwrt_info
[ -f "${GITHUB_WORKSPACE}/Customize/mwan3.config" ] && Replace_File Customize/mwan3.config package/feeds/packages/mwan3/files/etc/config mwan3
echo "${Openwrt_Version}" > ${AutoBuild_Info}
echo "${Github_Repo}" >> ${AutoBuild_Info}
echo "${TARGET_PROFILE}" >> ${AutoBuild_Info}
echo "Firmware Type: ${Firmware_sfx}"
echo "Writting Type: ${Firmware_sfx} to ${AutoBuild_Info} ..."
echo "${Firmware_sfx}" >> ${AutoBuild_Info}
}
Diy_Part3_Base() {
Diy_Core
GET_TARGET_INFO
Default_Firmware="openwrt-${TARGET_BOARD}-${TARGET_SUBTARGET}-${TARGET_PROFILE}-squashfs-sysupgrade.bin"
AutoBuild_Firmware="AutoBuild-${TARGET_PROFILE}-${Openwrt_Version}.bin"
AutoBuild_Detail="AutoBuild-${TARGET_PROFILE}-${Openwrt_Version}.detail"
Firmware_Path="bin/targets/${TARGET_BOARD}/${TARGET_SUBTARGET}"
Mkdir bin/Firmware
echo "Firmware: ${AutoBuild_Firmware}"
mv -f bin/targets/"${TARGET_BOARD}/${TARGET_SUBTARGET}/${Default_Firmware}" bin/Firmware/"${AutoBuild_Firmware}"
_MD5=$(md5sum bin/Firmware/${AutoBuild_Firmware} | cut -d ' ' -f1)
_SHA256=$(sha256sum bin/Firmware/${AutoBuild_Firmware} | cut -d ' ' -f1)
echo -e "\nMD5:${_MD5}\nSHA256:${_SHA256}" > bin/Firmware/"${AutoBuild_Detail}"
case "${TARGET_PROFILE}" in
x86_64)
cd ${Firmware_Path}
Firmware=openwrt-${TARGET_BOARD}-${TARGET_SUBTARGET}-generic-squashfs-combined
AutoBuild_Firmware="AutoBuild-${TARGET_PROFILE}-${Openwrt_Version}"
if [ -f "${Firmware}${Firmware_sfx}" ];then
_MD5=$(md5sum ${Firmware}${Firmware_sfx} | cut -d ' ' -f1)
_SHA256=$(sha256sum ${Firmware}${Firmware_sfx} | cut -d ' ' -f1)
touch ${Home}/bin/Firmware/${AutoBuild_Firmware}.detail
echo -e "\nMD5:${_MD5}\nSHA256:${_SHA256}" > ${Home}/bin/Firmware/${AutoBuild_Firmware}-Legacy.detail
mv -f ${Firmware}.${Firmware_sfx} ${Home}/bin/Firmware/${AutoBuild_Firmware}-Legacy${Firmware_sfx}
echo "Legacy Firmware is detected !"
fi
if [ -f "${Firmware}-efi${Firmware_sfx}" ];then
_MD5=$(md5sum ${Firmware}-efi${Firmware_sfx} | cut -d ' ' -f1)
_SHA256=$(sha256sum ${Firmware}-efi${Firmware_sfx} | cut -d ' ' -f1)
touch ${Home}/bin/Firmware/${AutoBuild_Firmware}.detail
echo -e "\nMD5:${_MD5}\nSHA256:${_SHA256}" > ${Home}/bin/Firmware/${AutoBuild_Firmware}-UEFI.detail
cp ${Firmware}-efi.${Firmware_sfx} ${Home}/bin/Firmware/${AutoBuild_Firmware}-UEFI${Firmware_sfx}
echo "UEFI Firmware is detected !"
fi
;;
*)
cd ${Home}
Default_Firmware="openwrt-${TARGET_BOARD}-${TARGET_SUBTARGET}-${TARGET_PROFILE}-squashfs-sysupgrade.${Firmware_sfx}"
AutoBuild_Firmware="AutoBuild-${TARGET_PROFILE}-${Openwrt_Version}.${Firmware_sfx}"
AutoBuild_Detail="AutoBuild-${TARGET_PROFILE}-${Openwrt_Version}.detail"
echo "Firmware: ${AutoBuild_Firmware}"
mv -f ${Firmware_Path}/${Default_Firmware} bin/Firmware/${AutoBuild_Firmware}
_MD5=$(md5sum bin/Firmware/${AutoBuild_Firmware} | cut -d ' ' -f1)
_SHA256=$(sha256sum bin/Firmware/${AutoBuild_Firmware} | cut -d ' ' -f1)
echo -e "\nMD5:${_MD5}\nSHA256:${_SHA256}" > bin/Firmware/${AutoBuild_Detail}
;;
esac
cd ${Home}
}
Mkdir() {
@@ -211,4 +264,4 @@ Update_Makefile() {
echo "Package ${PKG_NAME} is not detected,skip update ..."
fi
unset _process1 _process2 Offical_Version Source_Version
}
}
+90 -26
View File
@@ -3,18 +3,71 @@
# AutoBuild Module by Hyy2001
# AutoUpdate for Openwrt
Version=V5.0
Version=V5.1
TIME() {
echo -ne "\n[$(date "+%H:%M:%S")] "
}
Install_Pkg() {
PKG_NAME=${1}
grep "${PKG_NAME}" /tmp/Package_list > /dev/null 2>&1
if [[ $? -ne 0 ]];then
if [[ "${Force_Update}" == "1" ]] || [[ "${AutoUpdate_Mode}" == "1" ]];then
Choose="Y"
else
TIME && read -p "未安装[${PKG_NAME}],是否执行安装?[Y/n]:" Choose
fi
if [[ "${Choose}" == Y ]] || [[ "${Choose}" == y ]];then
TIME && echo -e "开始安装[${PKG_NAME}],请耐心等待...\n"
opkg update > /dev/null 2>&1
opkg install ${PKG_NAME}
if [[ $? -ne 0 ]];then
TIME && echo "[${PKG_NAME}] 安装失败,请尝试手动安装!"
exit
else
TIME && echo "[${PKG_NAME}] 安装成功!"
fi
else
TIME && echo "用户已取消安装,即将退出更新脚本..."
sleep 2
exit
fi
fi
}
opkg list | awk '{print $1}' > /tmp/Package_list
Input_Option="$1"
Input_Other="$2"
CURRENT_Version="$(awk 'NR==1' /etc/openwrt_info)"
Github="$(awk 'NR==2' /etc/openwrt_info)"
DEFAULT_Device="$(awk 'NR==3' /etc/openwrt_info)"
CURRENT_Device="$(jsonfilter -e '@.model.id' < /etc/board.json | tr ',' '_')"
Firmware_Type="$(awk 'NR==4' /etc/openwrt_info)"
case ${DEFAULT_Device} in
x86_64)
[[ -z ${Firmware_Type} ]] && Firmware_Type="img"
if [[ "${Firmware_Type}" == "img.gz" ]];then
Compressed_x86="1"
else
Compressed_x86="0"
fi
if [ -d /sys/firmware/efi ];then
EFI_Boot="1"
BOOT_Type="-UEFI"
else
EFI_Boot="0"
BOOT_Type="-Legacy"
fi
Firmware_SFX="${BOOT_Type}.${Firmware_Type}"
Firmware_Detail="${BOOT_Type}.detail"
CURRENT_Device="x86_64"
;;
*)
CURRENT_Device="$(jsonfilter -e '@.model.id' < /etc/board.json | tr ',' '_')"
Firmware_SFX=".${Firmware_Type}"
[[ -z ${Firmware_SFX} ]] && Firmware_SFX="bin"
Firmware_Detail=".detail"
esac
Github_Download="${Github}/releases/download/AutoUpdate"
Author="${Github##*com/}"
Github_Tags="https://api.github.com/repos/${Author}/releases/latest"
@@ -46,10 +99,10 @@ if [ ! -z "${Check_Disk}" ];then
fi
else
Disk_Number="0"
Disk_Available="0"
Download_Path="/tmp"
fi
[ ! -d "${Download_Path}/Downloads" ] && mkdir -p ${Download_Path}/Downloads
cd /etc
clear && echo "Openwrt-AutoUpdate Script ${Version}"
if [[ -z "${Input_Option}" ]];then
@@ -108,6 +161,11 @@ else
echo "固件下载地址: ${Github_Download}"
echo "API地址: ${Github_Tags}"
echo "作者/仓库: ${Author}"
if [[ ${DEFAULT_Device} == "x86_64" ]];then
echo "EFI 引导: ${EFI_Boot}"
echo "gz 压缩: ${Compressed_x86}"
fi
echo "固件格式: ${Firmware_SFX}"
exit
;;
*)
@@ -130,7 +188,6 @@ else
Upgrade_Options="${Input_Option}"
fi
fi
opkg list | awk '{print $1}' > /tmp/Package_list
if [[ ! "${Force_Update}" == "1" ]] && [[ ! "${AutoUpdate_Mode}" == "1" ]];then
grep "curl" /tmp/Package_list > /dev/null 2>&1
if [[ ! $? -ne 0 ]];then
@@ -138,23 +195,7 @@ if [[ ! "${Force_Update}" == "1" ]] && [[ ! "${AutoUpdate_Mode}" == "1" ]];then
[ ! "$Google_Check" == 200 ] && TIME && echo "Google 连接失败,可能导致固件下载速度缓慢!"
fi
fi
grep "wget" /tmp/Package_list > /dev/null 2>&1
if [[ $? -ne 0 ]];then
if [[ "${Force_Update}" == "1" ]] || [[ "${AutoUpdate_Mode}" == "1" ]];then
Choose="Y"
else
TIME && read -p "未安装[wget],是否执行安装?[Y/n]:" Choose
fi
if [[ "${Choose}" == Y ]] || [[ "${Choose}" == y ]];then
TIME && echo -e "开始安装[wget],请耐心等待...\n"
opkg update > /dev/null 2>&1
opkg install wget
else
TIME && echo "用户已取消安装,即将退出更新脚本..."
sleep 2
exit
fi
fi
Install_Pkg wget
if [[ -z "${CURRENT_Version}" ]];then
TIME && echo "警告: 当前固件版本获取失败!"
CURRENT_Version="未知"
@@ -167,6 +208,10 @@ fi
TIME && echo "正在检查版本更新..."
[ ! -f /tmp/Github_Tags ] && touch /tmp/Github_Tags
wget -q ${Github_Tags} -O - > /tmp/Github_Tags
if [[ ! "$?" == 0 ]];then
TIME && echo "检查更新失败,请稍后重试!"
exit
fi
if [[ ${Stable_Mode} == 1 ]];then
GET_Version_Type="-Stable"
else
@@ -180,8 +225,10 @@ if [[ -z "${GET_FullVersion}" ]] || [[ -z "${GET_Version}" ]];then
fi
echo -e "\n固件作者: ${Author%/*}"
echo "设备名称: ${DEFAULT_Device}"
echo "固件格式: ${Firmware_SFX}"
echo -e "\n当前固件版本: ${CURRENT_Version}"
echo "云端固件版本: ${GET_Version}"
[[ -z "${Firmware_Type}" ]] && TIME && echo "[固件格式] 获取失败!" && exit
Check_Stable_Version=$(echo ${GET_Version} | egrep -o "R[0-9]+.[0-9]+.[0-9]+.[0-9]+")
if [[ ! ${Force_Update} == 1 ]];then
if [[ "${CURRENT_Version}" == "${Check_Stable_Version}" ]];then
@@ -197,8 +244,8 @@ if [[ ! ${Force_Update} == 1 ]];then
fi
fi
Firmware_Info="${GET_FullVersion}"
Firmware="${Firmware_Info}.bin"
Firmware_Detail="${Firmware_Info}.detail"
Firmware="${Firmware_Info}${Firmware_SFX}"
Firmware_Detail="${Firmware_Info}${Firmware_Detail}"
echo -e "\n云端固件名称: ${Firmware}"
echo "固件下载地址: ${Github_Download}"
cd ${Download_Path}/Downloads
@@ -221,15 +268,32 @@ CURRENT_MD5=$(md5sum ${Firmware} | cut -d ' ' -f1)
echo -e "\n本地固件MD5:${CURRENT_MD5}"
echo "云端固件MD5:${GET_MD5}"
if [[ -z "${GET_MD5}" ]] || [[ -z "${CURRENT_MD5}" ]];then
echo -e "\nMD5 获取失败!"
TIME && echo -e "MD5 获取失败!"
exit
fi
if [[ ! "${GET_MD5}" == "${CURRENT_MD5}" ]];then
echo -e "\nMD5 对比失败,请检查网络后重试!"
TIME && echo -e "MD5 对比失败,请检查网络后重试!"
exit
else
TIME && echo -e "MD5 对比通过!"
fi
if [[ ${Compressed_x86} == "1" ]];then
TIME && echo "检测到固件为 [.gz] 压缩格式,开始解压固件..."
Install_Pkg gzip
Firmware="${Firmware_Info}${BOOT_Type}.img"
rm -f ${Firmware} > /dev/null 2>&1
gzip -dk ${Firmware} > /dev/null 2>&1
if [ -f "${Firmware}" ];then
TIME && echo "固件解压成功,固件名称: ${Firmware}"
else
TIME && echo "固件解压失败,请检查相关信息!"
exit
fi
fi
TIME && echo -e "开始更新固件,请耐心等待路由器重启...\n"
sleep 3
sysupgrade ${Upgrade_Options} ${Firmware}
sysupgrade ${Upgrade_Options} ${Firmware}
if [[ $? -ne 0 ]];then
TIME && echo "固件刷写失败,请尝试不保留配置[-n]或手动下载固件!"
exit
fi