Skip to content

arm_cortex-a9_vfpv3-d16 #19956

arm_cortex-a9_vfpv3-d16

arm_cortex-a9_vfpv3-d16 #19956

#=================================================
# https://github.com/P3TERX/Actions-OpenWrt
# Description: Build OpenWrt using GitHub Actions
# Lisence: MIT
# Author: P3TERX
# Blog: https://p3terx.com
#=================================================
name: Packages-AutoBuild
on:
repository_dispatch:
# push:
# branches:
# - master
# schedule:
# - cron: 0 1 */1 * *
env:
PPPOE_USERNAME: ${{ secrets.PPPOE_USERNAME }}
PPPOE_PASSWD: ${{ secrets.PPPOE_PASSWD }}
SCKEY: ${{ secrets.SCKEY }}
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
TELEGRAM_TOKEN: ${{ secrets.TELEGRAM_TOKEN }}
TELEGRAM_CHAT_ID: ${{ secrets.TELEGRAM_CHAT_ID }}
TZ: Asia/Shanghai
jobs:
build:
if: github.event.repository.owner.id == github.event.sender.id || github.event.sender.id == '119362912'
runs-on: ubuntu-latest
name: Build ${{matrix.target}}
strategy:
fail-fast: false
matrix:
target: ["${{ github.event.client_payload.target }}"]
steps:
- name: Checkout
uses: actions/checkout@main
with:
fetch-depth: 0
- name: Load Settings.ini
run: |
source "${GITHUB_WORKSPACE}/devices/common/settings.ini"
echo "REPO_URL=${REPO_URL}" >> $GITHUB_ENV
echo "REPO_BRANCH=${REPO_BRANCH}" >> $GITHUB_ENV
echo "CONFIG_FILE=${CONFIG_FILE}" >> $GITHUB_ENV
echo "DIY_SH=${DIY_SH}" >> $GITHUB_ENV
echo "FREE_UP_DISK=${FREE_UP_DISK}" >> $GITHUB_ENV
echo "SSH_ACTIONS=${SSH_ACTIONS}" >> $GITHUB_ENV
echo "UPLOAD_BIN_DIR_FOR_ARTIFACT=${UPLOAD_BIN_DIR_FOR_ARTIFACT}" >> $GITHUB_ENV
echo "UPLOAD_FIRMWARE_FOR_ARTIFACT=${UPLOAD_FIRMWARE_FOR_ARTIFACT}" >> $GITHUB_ENV
echo "UPLOAD_FIRMWARE_FOR_RELEASE=${UPLOAD_FIRMWARE_FOR_RELEASE}" >> $GITHUB_ENV
echo "UPLOAD_FIRMWARE_TO_COWTRANSFER=${UPLOAD_FIRMWARE_TO_COWTRANSFER}" >> $GITHUB_ENV
echo "UPLOAD_FIRMWARE_TO_WETRANSFER=${UPLOAD_FIRMWARE_TO_WETRANSFER}" >> $GITHUB_ENV
if [[ "${{matrix.target}}" == arm_* ]]; then
echo "REPO_TOKEN=${{ secrets.TOKEN_KKKIDDING }}" >> $GITHUB_ENV
else
echo "REPO_TOKEN=${{ secrets.TOKEN_KKKKIDDIN }}" >> $GITHUB_ENV
fi
sed -i "1a REPO_TOKEN=${{ env.REPO_TOKEN }}" ${GITHUB_WORKSPACE}/devices/common/custom.sh
- name: Trigger Packages Update
run: |
gitdate="$(curl -H "Authorization: token ${{ env.REPO_TOKEN }}" -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].created_at')" || true
gitdate="$(date -d "$gitdate" +%s)" || true
now="$(date -d "$(date)" +%s)"
if [[ $(expr $gitdate + 120) < $now ]]; then
curl -X POST https://api.github.com/repos/kiddin9/openwrt-packages/dispatches \
-H "Accept: application/vnd.github.everest-preview+json" \
-H "Authorization: token ${{ env.REPO_TOKEN }}" \
--data '{"event_type": "update"}'
fi
- name: Initialization environment
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo -E apt-get -qq update
( sudo -E apt-get -qq install build-essential clang flex g++ gawk gcc-multilib gettext \
git libncurses5-dev libssl-dev python3-distutils rsync unzip zlib1g-dev swig libpython3-dev aria2 jq rename bc libfuse-dev libelf-dev
sudo -E apt-get -qq purge azure-cli ghc* zulu* firefox powershell openjdk* dotnet* google* mysql* php* android*
sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc
sudo -E apt-get -qq autoremove --purge
sudo -E apt-get -qq clean ) &
sudo timedatectl set-timezone "$TZ"
- name: Get current date
id: date
run: |
echo "date=$(date +'%m/%d_%Y_%H/%M')" >> $GITHUB_ENV
echo "date2=$(date +'%m/%d %Y')" >> $GITHUB_ENV
echo "date3=$(date +'%m.%d')" >> $GITHUB_ENV
- name: Clone source code
run: |
set -v
REPO_BRANCH="23.05-SNAPSHOT"
#REPO_BRANCH="$(curl -gs -H 'Content-Type: application/json' \
# -H "Authorization: Bearer ${{ secrets.TOKEN_KIDDIN9 }}" \
# -X POST -d '{ "query": "query {repository(owner: \"openwrt\", name: \"openwrt\") {refs(refPrefix: \"refs/tags/\", last: 4, orderBy: {field: TAG_COMMIT_DATE, direction: ASC}) {edges {node {name}}}}}"}' https://api.github.com/graphql | jq -r '.data.repository.refs.edges[].node.name' | grep v23 | tail -n 1 | sed -e 's/v//')" || true
echo "$REPO_BRANCH"
if [ ${{matrix.target}} == "mipsel_24kc" ]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/ramips/mt7621/openwrt-sdk-$REPO_BRANCH-ramips-mt7621_gcc-12.3.0_musl.Linux-x86_64.tar.xz
elif [ ${{matrix.target}} == "mips_24kc" ]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/ath79/nand/openwrt-sdk-$REPO_BRANCH-ath79-nand_gcc-12.3.0_musl.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "x86_64" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/x86/64/openwrt-sdk-$REPO_BRANCH-x86-64_gcc-12.3.0_musl.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "i386_pentium4" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/x86/generic/openwrt-sdk-$REPO_BRANCH-x86-generic_gcc-12.3.0_musl.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "aarch64_generic" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/rockchip/armv8/openwrt-sdk-$REPO_BRANCH-rockchip-armv8_gcc-12.3.0_musl.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "arm_arm1176jzf-s_vfp" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/bcm27xx/bcm2708/openwrt-sdk-$REPO_BRANCH-bcm27xx-bcm2708_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "arm_cortex-a15_neon-vfpv4" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/ipq806x/generic/openwrt-sdk-$REPO_BRANCH-ipq806x-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "arm_cortex-a5_vfpv4" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/at91/sama5/openwrt-sdk-$REPO_BRANCH-at91-sama5_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "aarch64_cortex-a72" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/bcm27xx/bcm2711/openwrt-sdk-$REPO_BRANCH-bcm27xx-bcm2711_gcc-12.3.0_musl.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "aarch64_cortex-a53" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/mediatek/mt7622/openwrt-sdk-$REPO_BRANCH-mediatek-mt7622_gcc-12.3.0_musl.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "arm_cortex-a7_neon-vfpv4" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/ipq40xx/generic/openwrt-sdk-$REPO_BRANCH-ipq40xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "arm_cortex-a7" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/mediatek/mt7629/openwrt-sdk-$REPO_BRANCH-mediatek-mt7629_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "arm_cortex-a9" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/bcm53xx/generic/openwrt-sdk-$REPO_BRANCH-bcm53xx-generic_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "arm_cortex-a9_vfpv3-d16" ]]; then
curl -fL -o sdk.tar.xz https://downloads.openwrt.org/releases/$REPO_BRANCH/targets/mvebu/cortexa9/openwrt-sdk-$REPO_BRANCH-mvebu-cortexa9_gcc-12.3.0_musl_eabi.Linux-x86_64.tar.xz
elif [[ ${{matrix.target}} == "aarch64_cortex-a76" ]]; then
curl -fL -o sdk.tar.zst https://downloads.openwrt.org/snapshots/targets/bcm27xx/bcm2712/openwrt-sdk-bcm27xx-bcm2712_gcc-13.3.0_musl.Linux-x86_64.tar.zst
fi
- name: Free up disk space
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo mkdir -p -m 777 openwrt /mnt/openwrt/staging_dir /mnt/openwrt/build_dir
ln -sf /mnt/openwrt/staging_dir openwrt/staging_dir
ln -sf /mnt/openwrt/build_dir openwrt/build_dir
df -hT
- name: Load custom configuration
run: |
tar -xJf sdk.tar.xz -C openwrt || tar -xf sdk.tar.zst -C openwrt
rm -Rf sdk.tar.xz
cd openwrt
cp -rf ./openwrt-sdk*/. ./ || true
cp -rf ./openwrt-sdk*/build_dir/. ./build_dir/ || true
cp -rf ./openwrt-sdk*/staging_dir/. ./staging_dir/ || true
cp -rf ../devices ./
cp -rf devices/common/. ./
cp -rf devices/${{matrix.target}}/. ./
chmod -R +x devices/* || true
sed -i '/ refresh_config();/d' scripts/feeds
./scripts/feeds update -a
find "devices/common/patches" -type f -name '*.b.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -p1 -E --forward --no-backup-if-mismatch"
/bin/bash "devices/common/custom.sh"
if [ -f "devices/${{matrix.target}}/custom.sh" ]; then
/bin/bash "devices/${{matrix.target}}/custom.sh"
fi
find "devices/common/patches" -type f -name '*.patch' ! -name '*.b.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -p1 -E --forward --no-backup-if-mismatch"
if [ -n "$(ls -A "devices/${{matrix.target}}/patches" 2>/dev/null)" ]; then
find "devices/${{matrix.target}}/patches" -type f -name '*.patch' -print0 | sort -z | xargs -I % -t -0 -n 1 sh -c "cat '%' | patch -d './' -p1 -E --forward --no-backup-if-mismatch"
fi
cp -Rf ./diy/* ./ || true
if [ -f "devices/${{matrix.target}}/default-settings" ]; then
echo >> package/*/*/my-default-settings/files/etc/uci-defaults/99-default-settings
cat devices/${{matrix.target}}/default-settings >> package/*/*/my-default-settings/files/etc/uci-defaults/99-default-settings
fi
if [ -f "devices/${{matrix.target}}/.config" ]; then
echo >> .config
cat devices/${{matrix.target}}/.config >> .config
fi
#if [[ ${{github.actor}} == "kiddin9" ]]; then
#sed -i "s/index()/index()\nif luci.sys.exec(\"cat \/etc\/openwrt_release | grep -o -E ^DISTRIB_DESCRIPTION='.*(GaryPang|Kiddin)'\") == \"\" then return end/g" package/feeds/kiddin9/luci-app*/luasrc/controller/*.lua
#fi
- name: SSH connection to Actions
uses: kiddin9/debugger-action@master
if: contains(github.event.action, 'ssh')
- name: Prepare
run: |
status=$(curl -H "Authorization: token ${{ env.REPO_TOKEN }}" -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].status')
while [ "$status" == "in_progress" ];do
sleep 5
status=$(curl -H "Authorization: token ${{ env.REPO_TOKEN }}" -s "https://api.github.com/repos/kiddin9/openwrt-packages/actions/runs" | jq -r '.workflow_runs[0].status')
done
cd openwrt
make defconfig
mv -f package/feeds/kiddin9 kiddin9.b
mv -f feeds/packages/lang feeds/packages/lang.b
mv -f feeds/packages feeds/packages.b
mkdir package/feeds/kiddin9
cp -rf kiddin9.b/{wxbase,lib*,rapidjson,jpcre2,toml11,gn,curl,quickjspp,qt*,libtorrent*,openssl,mbedtls,ppp,cups,nftables} package/feeds/kiddin9/ || true
- name: Compile the firmware
run: |
cd openwrt
echo -e "$(($(nproc)+1)) thread compile"
fpkg="$(echo "${{github.event.action}}" | sed -e 's/\(aarch64_generic\|x86_64\|i386_pentium4\|arm_arm1176jzf-s_vfp\|aarch64_cortex-a72\|aarch64_cortex-a76\|arm_cortex-a7\|arm_cortex-a7_neon-vfpv4\|arm_cortex-a9\|arm_cortex-a15_neon-vfpv4\|arm_cortex-a5_vfpv4\|mipsel_24kc\|mips_24kc\|aarch64_cortex-a53\|arm_xscale\|arm_cortex-a9_vfpv3-d16\| [0-9][0-9.]*\| ssh\| noser\| cw\)//g' | sed -e 's/ //g')"
during="$(echo "${{github.event.action}}" | grep -o -E ' [0-9][0-9.]*' | sed -e 's/ //')"
function comp(){
echo "compile $ipk"
cp -rf kiddin9.b/$ipk package/feeds/kiddin9/
if [[ $ipk != luci-* ]]; then
mv -f feeds/packages.b feeds/packages
mv feeds/packages/lang.b feeds/packages/lang
[ "$(grep "PKG_BUILD_DEPENDS" package/feeds/kiddin9/$ipk/Makefile)" ] || mv feeds/packages/lang/node feeds/packages/lang/node.b
fi
(make package/$ipk/compile -j$(($(nproc)+1)) || make package/$ipk/compile V=s 2>&1 | tee error_$ipk.log | grep -i "Error 2" || rm -rf error_$ipk.log) || true
if [[ $ipk != luci-* ]]; then
mv -f feeds/packages/lang feeds/packages/lang.b 2>/dev/null || true
mv -f feeds/packages/lang.b/node.b feeds/packages/lang.b/node 2>/dev/null || true
mv -f feeds/packages feeds/packages.b
rm -rf package/feeds/kiddin9/$ipk
fi
}
for ipk in $(ls kiddin9.b | grep -E "$fpkg"); do
echo $ipk
if [[ "$fpkg" && ! "$during" ]]; then
comp
else
gitdate="$(curl -H "Authorization: token ${{ env.REPO_TOKEN }}" -s "https://api.github.com/repos/kiddin9/openwrt-packages/commits?path=$ipk&per_page=1" | jq -r '.[0].commit.committer.date')" || true
if [[ "$gitdate" && "$gitdate" != null ]]; then
gitdate="$(date -d "$gitdate" +%s)"
now="$(date -d "$(date)" +%s)"
[ "$during" ] || during="1.05"
durings=`echo "$during*60*60*24" | bc`
if [[ $(($gitdate + ${durings%.*})) -gt $now && $ipk != luci-base && $ipk != luci-mod-* ]]; then
echo "$((($now - $gitdate)/60/60))" || true
echo "$ipk" >> ipk.txt
fi
fi
fi
done
if [ -f ipk.txt ]; then
for ipk in $(cat ipk.txt)
do
comp
done
fi
echo "status=success" >> $GITHUB_ENV
- name: Check space usage
run: df -hT
- name: Organize files
id: organize
run: |
mkdir packages
mv -f openwrt/bin/packages/*/kiddin9/* packages || true
mv -f openwrt/.config packages/${{matrix.target}}.config || true
# cp -Rf openwrt/bin/packages/*/packages/python3* packages/
echo "FIRMWARE=$PWD/packages" >> $GITHUB_ENV
Emoji=("๐ŸŽ‰" "๐Ÿคž" "โœจ" "๐ŸŽ" "๐ŸŽˆ" "๐ŸŽ„" "๐ŸŽจ" "๐Ÿ’‹" "๐Ÿ“" "๐Ÿ•" "๐Ÿ‰" "๐Ÿ’" "๐ŸŒด" "๐Ÿš€" "๐Ÿ›ธ" "๐Ÿ—ฝ" "โ›…" "๐ŸŒˆ" "๐Ÿ”ฅ" "โ›„" "๐Ÿถ" "๐Ÿ…" "๐Ÿฆ„" "๐Ÿค")
echo "EMOJI=${Emoji[$[$RANDOM % ${#Emoji[@]}]]}" >> $GITHUB_ENV
if [[ $(ls -l openwrt/error* | grep "^-" | wc -l) -le 0 ]]; then
echo "NAME=${Emoji[$[$RANDOM % ${#Emoji[@]}]]} ${{ env.date2 }} ${{matrix.target}} ${{ env.EMOJI }}" >> $GITHUB_ENV
else
echo "NAME=โŒ ${{ env.date2 }} ${{matrix.target}} โŒ" >> $GITHUB_ENV
fi
- name: Upload firmware to cowtransfer
if: env.UPLOAD_FIRMWARE_TO_COWTRANSFER == 'true'
continue-on-error: true
run: |
curl -fsSL git.io/file-transfer | sh
cowurl=$(./transfer cow --block 2621440 -s --no-progress ${FIRMWARE})
cowurl=$(echo $cowurl | grep -o -E "https[^ ]*")
echo "COWURL=$cowurl" >> $GITHUB_ENV
echo "Download Link: ${{ env.EMOJI }} $cowurl ${{ env.EMOJI }} ๐Ÿš€"
- name: Upload firmware to WeTransfer
if: env.UPLOAD_FIRMWARE_TO_WETRANSFER == 'true'
continue-on-error: true
run: |
curl -fsSL git.io/file-transfer | sh
wetrans=$(./transfer wet -s -p 16 --no-progress ${FIRMWARE})
wetrans=$(echo $wetrans | grep -o -E "https[^ ]*")
echo "WETRANS=$wetrans" >> $GITHUB_ENV
echo "Download Link: ${{ env.EMOJI }} $wetrans ${{ env.EMOJI }} ๐Ÿš€"
- name: Create release
id: create_release
if: env.REPO_TOKEN && env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true'
continue-on-error: true
run: |
echo -e "ๅข™ๅ†…ๅŠ ้€Ÿไธ‹่ฝฝ ๐Ÿš€:\n" >> release.txt
echo -e "[่…พ่ฎฏไบ‘] (https://dl.openwrt.ai/latest/packages/${{matrix.target}}/ โ˜)\n" >> release.txt
[ ${{ env.WETRANS }} ] && echo -e "[WeTransfer] (${{ env.WETRANS }} ๐Ÿ—ฝ)\n" >> release.txt
[ ${{ env.COWURL }} ] && echo -e "[ๅฅถ็‰›ไธŠไผ ] (${{ env.COWURL }} ๐Ÿฎ)\n" >> release.txt
[ ${{ env.NOTICE }} ] && echo -e "${{ env.NOTICE }}" >> release.txt || true
- name: Upload packages for release
uses: softprops/action-gh-release@master
continue-on-error: true
if: env.REPO_TOKEN && env.UPLOAD_FIRMWARE_FOR_RELEASE == 'true'
env:
GITHUB_TOKEN: ${{ secrets.TOKEN_KIDDIN9 }}
with:
files: |
packages/*
openwrt/error*.log
name: ${{ env.NAME }}
tag_name: ${{ env.date }}_${{matrix.target}}
body_path: release.txt
- name: deploy files to server
uses: easingthemes/ssh-deploy@main
if: env.SSH_PRIVATE_KEY && ! contains(github.event.action, 'noser')
with:
SSH_PRIVATE_KEY: ${{ env.SSH_PRIVATE_KEY }}
ARGS: "-avzr"
SOURCE: "packages/"
REMOTE_HOST: ${{ secrets.SERVER_HOST }}
REMOTE_USER: root
REMOTE_PORT: ${{ secrets.SERVER_PORT }}
TARGET: "/www/wwwroot/dl.openwrt.ai/23.05/packages/${{matrix.target}}/kiddin9/"
- name: Upload packages for artifact
uses: actions/upload-artifact@main
continue-on-error: true
if: env.UPLOAD_FIRMWARE_FOR_ARTIFACT == 'true'
with:
name: ${{ env.date3 }} ${{matrix.target}}
path: packages
- name: remote ssh command
uses: appleboy/ssh-action@master
if: env.SSH_PRIVATE_KEY && ! contains(github.event.action, 'noser')
with:
host: ${{ secrets.SERVER_HOST }}
username: root
port: ${{ secrets.SERVER_PORT }}
key: ${{ env.SSH_PRIVATE_KEY }}
script: |
# cp -R /www/wwwroot/dl.openwrt.ai/packages/keep/common/* /www/wwwroot/dl.openwrt.ai/packages/${{matrix.target}}/
# cp -R /www/wwwroot/dl.openwrt.ai/packages/keep/${{matrix.target}}/* /www/wwwroot/dl.openwrt.ai/packages/${{matrix.target}}/
bash opkg ${{matrix.target}} &