From e451099d6de7746ed4da8a7b7c66bbfcc080a8a7 Mon Sep 17 00:00:00 2001 From: Miguel Fuertes Date: Tue, 21 Oct 2025 19:39:55 +0200 Subject: [PATCH] Add OpenWrt Builder workflows for M9S and UF02 devices --- .github/workflows/m9s.yml | 97 ++++++++++++++++++++++++++++++++++++++ .github/workflows/uf02.yml | 97 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 .github/workflows/m9s.yml create mode 100644 .github/workflows/uf02.yml diff --git a/.github/workflows/m9s.yml b/.github/workflows/m9s.yml new file mode 100644 index 0000000..16f5e5f --- /dev/null +++ b/.github/workflows/m9s.yml @@ -0,0 +1,97 @@ +name: OpenWrt Builder (M9S) +on: + repository_dispatch: + workflow_dispatch: + +env: + UPLOAD_BIN_DIR: true + UPLOAD_FIRMWARE: true + UPLOAD_RELEASE: false + TZ: Europe/Madrid + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Initialization environment + env: + DEBIAN_FRONTEND: noninteractive + run: | + sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL + sudo docker image prune --all --force + sudo -E apt-get -qq update + sudo -E ./devenv/dependencies.sh + sudo -E apt-get -qq autoremove --purge + sudo -E apt-get -qq clean + sudo timedatectl set-timezone "$TZ" + + - name: "Clone OpenWrt source code" + run: | + df -hT $PWD + git clone --depth=1 --branch "main" https://git.openwrt.org/openwrt/openwrt.git openwrt + + - name: Load msm89xx target and uz801 packages + run: | + git apply --unsafe-paths enable_wcn36xx_mac80211.patch + mv msm89xx openwrt/target/linux/msm89xx + mv packages openwrt/package/uz801 + if [ "${{ inputs.openwrt_version }}" == "openwrt-24.10" ]; then + sed -i '/^KERNEL_PATCHVER/c\KERNEL_PATCHVER:=6.6' openwrt/target/linux/msm89xx/Makefile + fi + + - name: Update and install feeds + run: | + cd openwrt + rm -rf tmp + ./scripts/feeds update -a + ./scripts/feeds install -a + + - name: "Load diffconfig" + run: | + [ -f diffconfig_m9s ] && mv diffconfig_m9s openwrt/.config + + - name: Download package + id: package + run: | + cd openwrt + make defconfig + make download -j8 + find dl -size -1024c -exec ls -l {} \; || true + find dl -size -1024c -exec rm -f {} \; || true + + - name: Compile the firmware + id: compile + run: | + cd openwrt + echo -e "$(nproc) thread compile" + make -j$(nproc) || make -j1 || make -j1 V=s + echo "status=success" >> $GITHUB_OUTPUT + grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME + [ -s DEVICE_NAME ] && echo "DEVICE_NAME=$(cat DEVICE_NAME)" >> $GITHUB_ENV + echo "FILE_DATE=$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV + + - name: Organize files + id: organize + if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() + run: | + cd openwrt/bin/targets/*/* + rm -rf packages + echo "FIRMWARE=$PWD" >> $GITHUB_ENV + echo "status=success" >> $GITHUB_OUTPUT + + - name: Upload firmware + uses: actions/upload-artifact@v4 + if: steps.organize.outputs.status == 'success' && !cancelled() + with: + name: openwrt_firmware_${{ env.DEVICE_NAME }}_${{ env.FILE_DATE }} + path: | + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-gpt_both0.bin + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-boot.img + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-system.img + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3.manifest + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-flash.sh + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-firmware.zip diff --git a/.github/workflows/uf02.yml b/.github/workflows/uf02.yml new file mode 100644 index 0000000..a53fdb8 --- /dev/null +++ b/.github/workflows/uf02.yml @@ -0,0 +1,97 @@ +name: OpenWrt Builder (UF02) +on: + repository_dispatch: + workflow_dispatch: + +env: + UPLOAD_BIN_DIR: true + UPLOAD_FIRMWARE: true + UPLOAD_RELEASE: false + TZ: Europe/Madrid + +jobs: + build: + runs-on: ubuntu-22.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Initialization environment + env: + DEBIAN_FRONTEND: noninteractive + run: | + sudo rm -rf /etc/apt/sources.list.d/* /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL + sudo docker image prune --all --force + sudo -E apt-get -qq update + sudo -E ./devenv/dependencies.sh + sudo -E apt-get -qq autoremove --purge + sudo -E apt-get -qq clean + sudo timedatectl set-timezone "$TZ" + + - name: "Clone OpenWrt source code" + run: | + df -hT $PWD + git clone --depth=1 --branch "main" https://git.openwrt.org/openwrt/openwrt.git openwrt + + - name: Load msm89xx target and uz801 packages + run: | + git apply --unsafe-paths enable_wcn36xx_mac80211.patch + mv msm89xx openwrt/target/linux/msm89xx + mv packages openwrt/package/uz801 + if [ "${{ inputs.openwrt_version }}" == "openwrt-24.10" ]; then + sed -i '/^KERNEL_PATCHVER/c\KERNEL_PATCHVER:=6.6' openwrt/target/linux/msm89xx/Makefile + fi + + - name: Update and install feeds + run: | + cd openwrt + rm -rf tmp + ./scripts/feeds update -a + ./scripts/feeds install -a + + - name: "Load diffconfig" + run: | + [ -f diffconfig_uf02 ] && mv diffconfig_uf02 openwrt/.config + + - name: Download package + id: package + run: | + cd openwrt + make defconfig + make download -j8 + find dl -size -1024c -exec ls -l {} \; || true + find dl -size -1024c -exec rm -f {} \; || true + + - name: Compile the firmware + id: compile + run: | + cd openwrt + echo -e "$(nproc) thread compile" + make -j$(nproc) || make -j1 || make -j1 V=s + echo "status=success" >> $GITHUB_OUTPUT + grep '^CONFIG_TARGET.*DEVICE.*=y' .config | sed -r 's/.*DEVICE_(.*)=y/\1/' > DEVICE_NAME + [ -s DEVICE_NAME ] && echo "DEVICE_NAME=$(cat DEVICE_NAME)" >> $GITHUB_ENV + echo "FILE_DATE=$(date +"%Y%m%d%H%M")" >> $GITHUB_ENV + + - name: Organize files + id: organize + if: env.UPLOAD_FIRMWARE == 'true' && !cancelled() + run: | + cd openwrt/bin/targets/*/* + rm -rf packages + echo "FIRMWARE=$PWD" >> $GITHUB_ENV + echo "status=success" >> $GITHUB_OUTPUT + + - name: Upload firmware + uses: actions/upload-artifact@v4 + if: steps.organize.outputs.status == 'success' && !cancelled() + with: + name: openwrt_firmware_${{ env.DEVICE_NAME }}_${{ env.FILE_DATE }} + path: | + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-gpt_both0.bin + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-boot.img + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-squashfs-system.img + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3.manifest + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-flash.sh + ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-yiming-uz801v3-firmware.zip