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