diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml new file mode 100644 index 0000000000000..153db73625a40 --- /dev/null +++ b/.github/workflows/tools.yml @@ -0,0 +1,129 @@ +name: Build host tools + +on: + pull_request: + paths: + - 'tools/**' + +jobs: + build: + name: Build tools on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: False + matrix: + os: + - ubuntu-latest + - macos-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + path: openwrt + + - name: Setup MacOS + if: ${{ matrix.os == 'macos-latest' }} + run: | + echo "WORKPATH=/Volumes/OpenWrt/openwrt/" >> "$GITHUB_ENV" + hdiutil create -size 20g -type SPARSE -fs "Case-sensitive HFS+" -volname OpenWrt OpenWrt.sparseimage + hdiutil attach OpenWrt.sparseimage + mv "$GITHUB_WORKSPACE/openwrt" /Volumes/OpenWrt/ + cd "$WORKPATH" + + brew install \ + autoconf \ + automake \ + coreutils \ + diffutils \ + findutils \ + gawk \ + gettext \ + git-extras \ + gmp \ + gnu-getopt \ + gnu-sed \ + gnu-tar \ + grep \ + libidn2 \ + libunistring \ + m4 \ + make \ + mpfr \ + ncurses \ + openssl@1.1 \ + pcre \ + pkg-config \ + quilt \ + readline \ + wget \ + zstd + + echo "/bin" >> "$GITHUB_PATH" + echo "/sbin/Library/Apple/usr/bin" >> "$GITHUB_PATH" + echo "/usr/bin" >> "$GITHUB_PATH" + echo "/usr/local/bin" >> "$GITHUB_PATH" + echo "/usr/local/opt/coreutils/bin" >> "$GITHUB_PATH" + echo "/usr/local/opt/findutils/libexec/gnubin" >> "$GITHUB_PATH" + echo "/usr/local/opt/gettext/bin" >> "$GITHUB_PATH" + echo "/usr/local/opt/gnu-getopt/bin" >> "$GITHUB_PATH" + echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH" + echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH" + echo "/usr/sbin" >> "$GITHUB_PATH" + pwd + + - name: Setup Ubuntu + if: ${{ matrix.os == 'ubuntu-latest' }} + env: + DEBIAN_FRONTEND: noninteractive + run: | + sudo apt-get update + sudo apt-get -y install \ + build-essential \ + ccache \ + clang-12 \ + ecj \ + fastjar \ + file \ + g++ \ + gawk \ + gettext \ + git \ + java-propose-classpath \ + libelf-dev \ + libncurses-dev \ + libssl-dev \ + mkisofs \ + python3 \ + python3-dev \ + python3-distutils \ + python3-setuptools \ + qemu-utils \ + rsync \ + subversion \ + swig \ + unzip \ + wget \ + xsltproc \ + zlib1g-dev + echo "WORKPATH=$GITHUB_WORKSPACE/openwrt/" >> "$GITHUB_ENV" + cd "$WORKPATH" + pwd + + - name: Make prereq + run: | + cd "$WORKPATH" + pwd + make defconfig + + - name: Build tools + run: | + cd "$WORKPATH" + make tools/install -j$(nproc) BUILD_LOG=1 + + - name: Upload logs + if: failure() + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.os }}-logs + path: "$WORKPATH/logs"