name: OpenWrt Builder (All Devices) on: repository_dispatch: workflow_dispatch: env: UPLOAD_FIRMWARE: true TZ: Europe/Madrid jobs: build: runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: device: [uz801, uf02] 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 https://git.openwrt.org/openwrt/openwrt.git openwrt git -C openwrt checkout 00ceb1ed1763f7479df6edf92ffada948f0e7d45 - name: Load msm89xx target and packages run: | git apply --unsafe-paths enable_wcn36xx_mac80211.patch mv msm89xx openwrt/target/linux/msm89xx mv packages openwrt/package/uz801 - name: Update and install feeds run: | cd openwrt rm -rf tmp ./scripts/feeds update -a ./scripts/feeds install -a - name: Load diffconfig run: | DEVICE="${{ matrix.device }}" DIFFCONFIG="diffconfig_${DEVICE}" [ -f "$DIFFCONFIG" ] && mv "$DIFFCONFIG" 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-${{ env.DEVICE_NAME }}-squashfs-gpt_both0.bin ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-${{ env.DEVICE_NAME }}-squashfs-boot.img ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-${{ env.DEVICE_NAME }}-squashfs-system.img ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-${{ env.DEVICE_NAME }}.manifest ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-${{ env.DEVICE_NAME }}-flash.sh ${{ env.FIRMWARE }}/openwrt-msm89xx-msm8916-${{ env.DEVICE_NAME }}-firmware.zip