CI: usability improvements for tools
[openwrt/openwrt.git] / .github / workflows / tools.yml
1 name: Build host tools
2
3 on:
4 pull_request:
5 paths:
6 - 'tools/**'
7 - '.github/workflows/tools.yml'
8
9 permissions:
10 contents: read
11
12 jobs:
13 build:
14 name: tools-${{ matrix.os }}
15 runs-on: ${{ matrix.os }}
16 strategy:
17 fail-fast: False
18 matrix:
19 os:
20 - ubuntu-latest
21 - macos-latest
22 steps:
23 - name: Checkout
24 uses: actions/checkout@v2
25 with:
26 fetch-depth: 0
27 path: openwrt
28
29 - name: Setup MacOS
30 if: ${{ matrix.os == 'macos-latest' }}
31 run: |
32 echo "WORKPATH=/Volumes/OpenWrt/openwrt/" >> "$GITHUB_ENV"
33 hdiutil create -size 20g -type SPARSE -fs "Case-sensitive HFS+" -volname OpenWrt OpenWrt.sparseimage
34 hdiutil attach OpenWrt.sparseimage
35 mv "$GITHUB_WORKSPACE/openwrt" /Volumes/OpenWrt/
36 cd "$WORKPATH"
37
38 brew install \
39 autoconf \
40 automake \
41 coreutils \
42 diffutils \
43 findutils \
44 gawk \
45 gettext \
46 git-extras \
47 gmp \
48 gnu-getopt \
49 gnu-sed \
50 gnu-tar \
51 grep \
52 libidn2 \
53 libunistring \
54 m4 \
55 make \
56 mpfr \
57 ncurses \
58 openssl@1.1 \
59 pcre \
60 pkg-config \
61 quilt \
62 readline \
63 wget \
64 zstd
65
66 echo "/bin" >> "$GITHUB_PATH"
67 echo "/sbin/Library/Apple/usr/bin" >> "$GITHUB_PATH"
68 echo "/usr/bin" >> "$GITHUB_PATH"
69 echo "/usr/local/bin" >> "$GITHUB_PATH"
70 echo "/usr/local/opt/coreutils/bin" >> "$GITHUB_PATH"
71 echo "/usr/local/opt/findutils/libexec/gnubin" >> "$GITHUB_PATH"
72 echo "/usr/local/opt/gettext/bin" >> "$GITHUB_PATH"
73 echo "/usr/local/opt/gnu-getopt/bin" >> "$GITHUB_PATH"
74 echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH"
75 echo "/usr/local/opt/make/libexec/gnubin" >> "$GITHUB_PATH"
76 echo "/usr/sbin" >> "$GITHUB_PATH"
77 pwd
78
79 - name: Setup Ubuntu
80 if: ${{ matrix.os == 'ubuntu-latest' }}
81 env:
82 DEBIAN_FRONTEND: noninteractive
83 run: |
84 sudo apt-get update
85 sudo apt-get -y install \
86 build-essential \
87 ccache \
88 clang-12 \
89 ecj \
90 fastjar \
91 file \
92 g++ \
93 gawk \
94 gettext \
95 git \
96 java-propose-classpath \
97 libelf-dev \
98 libncurses-dev \
99 libssl-dev \
100 mkisofs \
101 python3 \
102 python3-dev \
103 python3-distutils \
104 python3-setuptools \
105 qemu-utils \
106 rsync \
107 subversion \
108 swig \
109 unzip \
110 wget \
111 xsltproc \
112 zlib1g-dev
113 echo "WORKPATH=$GITHUB_WORKSPACE/openwrt/" >> "$GITHUB_ENV"
114 cd "$WORKPATH"
115 pwd
116
117 - name: Make prereq
118 run: |
119 cd "$WORKPATH"
120 pwd
121 make defconfig
122
123 - name: Build tools
124 run: |
125 cd "$WORKPATH"
126 make tools/install -j$(nproc) BUILD_LOG=1
127
128 - name: Move logs to GITHUB_WORKSPACE
129 if: always()
130 run: |
131 cp -r "$WORKPATH/logs" "$GITHUB_WORKSPACE"
132 cp -r "$WORKPATH/.config" "$GITHUB_WORKSPACE/config"
133
134
135 - name: Upload logs
136 if: always()
137 uses: actions/upload-artifact@v2
138 with:
139 name: ${{ matrix.os }}-logs
140 path: "logs"
141
142 - name: Upload config
143 if: always()
144 uses: actions/upload-artifact@v2
145 with:
146 name: ${{ matrix.os }}-config
147 path: "config"