1
- name : build
1
+ name : Compile and check on supported systems
2
2
3
3
on : [push, pull_request]
4
4
7
7
name : Upload the source
8
8
runs-on : ubuntu-latest
9
9
steps :
10
+ # - name: Cache source
11
+ # id: cache
12
+ # uses: actions/cache@v4
13
+ # with:
14
+ # path: android-tools-source.tar.xz
15
+ # key: build-cache
10
16
- name : prep ubuntu
17
+ # if: steps.cache.outputs.cache-hit != 'true'
11
18
run : |
12
19
sudo apt-get update
13
20
DEBIAN_FRONTEND=noninteractive sudo apt-get install -yq \
14
- ${{ matrix.pkgs }} cmake git golang libbrotli-dev \
15
- libgtest-dev liblz4-dev libpcre2-dev libprotobuf-dev libunwind-dev \
16
- libzstd-dev make pandoc pkg-config protobuf-compiler xz-utils
21
+ cmake git meson
17
22
- name : checkout
23
+ # if: steps.cache.outputs.cache-hit != 'true'
18
24
uses : actions/checkout@v4
25
+ timeout-minutes : 15
19
26
with :
27
+ path : android-tools-source
20
28
submodules : true
21
- - name : git config
22
- run : |
23
- git config --global user.email "[email protected] "
24
- git config --global user.name "Your Name"
25
- - name : get vendor modules
26
- run : |
27
- cd vendor/boringssl
28
- go mod vendor
29
- - name : generate man page
30
- run : |
31
- cd vendor/adb/docs/user
32
- pandoc -s -t man adb.1.md -o adb.1
33
29
- name : build & install
30
+ # if: steps.cache.outputs.cache-hit != 'true'
31
+ timeout-minutes : 5
34
32
run : |
35
33
export SOURCE_DATE_EPOCH=$(date +%s)
36
34
echo "SOURCE_DATE_EPOCH: ${SOURCE_DATE_EPOCH}"
37
- cmake \
38
- -DANDROID_TOOLS_USE_BUNDLED_FMT=ON \
39
- -DANDROID_TOOLS_USE_BUNDLED_LIBUSB=ON \
40
- -B build
41
- cmake --build build --target package_source
42
- for x in sha1sum sha256sum sha512sum b2sum; do
43
- printf "$x " && $x ${{ github.workspace }}/build/android-tools-*.tar.xz | cut -d " " -f 1
44
- done
35
+ meson subprojects download --sourcedir android-tools-source
36
+ patch -d android-tools-source -p1 < android-tools-source/onlypatch.patch
37
+ meson setup unused_build android-tools-source -Duse_bundled_libusb=true
38
+ patch -d android-tools-source -Rp1 < android-tools-source/onlypatch.patch
39
+
40
+ rm -rf android-tools-source/.git android-tools-source/subprojects/packagecache android-tools-source/vendor/*/.git
41
+
42
+ touch android-tools-source/nopatch
43
+
44
+ tar -cf android-tools-source.tar android-tools-source/
45
45
- name : upload package_source
46
46
uses : actions/upload-artifact@v4
47
47
with :
48
48
name : package_source
49
- path : ${{ github.workspace }}/build/ android-tools-* .tar.xz
49
+ path : android-tools-source .tar
50
50
51
51
linux :
52
52
runs-on : ubuntu-latest
@@ -55,13 +55,16 @@ jobs:
55
55
fail-fast : false
56
56
matrix :
57
57
include :
58
+ # gcc is required in clang builds on opensuse; the clang package on its
59
+ # own cannot compile C++, it is missing vital dependencies (a linker,
60
+ # some gcc libraries...). gcc-c++ should pull in all of it.
58
61
- os : " opensuse/leap:latest"
59
62
pkgs : " clang gcc11-c++"
60
63
env1 : " CC=clang CXX=clang++"
61
64
- os : " opensuse/tumbleweed"
62
65
pkgs : " gcc gcc-c++"
63
66
- os : " opensuse/tumbleweed"
64
- pkgs : clang
67
+ pkgs : " clang gcc-c++ "
65
68
env1 : " CC=clang CXX=clang++"
66
69
- os : " archlinux:base"
67
70
pkgs : gcc
@@ -97,39 +100,31 @@ jobs:
97
100
if : startsWith(matrix.os, 'opensuse')
98
101
run : |
99
102
zypper -n ref
100
- zypper -n in ${{ matrix.pkgs }} cmake git go gtest pcre2-devel pkgconfig \
101
- 'pkgconfig(libbrotlicommon)' 'pkgconfig(liblz4)' \
102
- 'pkgconfig(libunwind-generic)' \
103
- 'pkgconfig(libzstd)' 'pkgconfig(protobuf)' ninja tar xz zlib-devel
103
+ zypper -n in ${{ matrix.pkgs }} cmake meson tar
104
104
105
105
- name : prep archlinux
106
106
if : startsWith(matrix.os, 'archlinux')
107
107
run : |
108
108
pacman -Syu --needed --noconfirm \
109
- ${{ matrix.pkgs }} brotli cmake git go gtest libunwind \
110
- lz4 pcre2 pkgconfig protobuf zstd ninja
109
+ ${{ matrix.pkgs }} cmake meson
111
110
112
111
- name : prep ubuntu
113
112
if : startsWith(matrix.os, 'ubuntu')
114
113
run : |
115
114
apt-get update
116
115
DEBIAN_FRONTEND=noninteractive apt-get install -yq \
117
- ${{ matrix.pkgs }} cmake git golang libbrotli-dev \
118
- libgtest-dev liblz4-dev libpcre2-dev libprotobuf-dev libunwind-dev \
119
- libzstd-dev pkg-config protobuf-compiler ninja-build xz-utils
116
+ ${{ matrix.pkgs }} cmake meson
120
117
121
118
- name : prep alpine
122
119
if : startsWith(matrix.os, 'alpine')
123
120
run : |
124
- apk add build-base pcre2-dev linux-headers gtest-dev samurai \
125
- go git perl cmake protobuf-dev brotli-dev zstd-dev lz4-dev
121
+ apk add build-base meson cmake linux-headers
126
122
127
123
- name : prep fedora
128
124
if : startsWith(matrix.os, 'fedora')
125
+ # libatomic is needed because of https://github.com/mesonbuild/meson/issues/14946
129
126
run : |
130
- dnf install -y ${{ matrix.pkgs }} cmake ninja-build perl git golang \
131
- brotli-devel gtest-devel lz4-devel pcre2-devel protobuf-devel \
132
- libzstd-devel tar xz
127
+ dnf install -y ${{ matrix.pkgs }} cmake meson libatomic
133
128
134
129
- name : download source
135
130
uses : actions/download-artifact@v4
@@ -138,31 +133,23 @@ jobs:
138
133
139
134
- name : build & install
140
135
run : |
141
- export GOFLAGS="-mod=vendor"
142
- tar -xf android-tools-*.tar.xz
136
+ tar -xf android-tools-*.tar
143
137
cd android-tools-*/
144
138
test -n "${{ matrix.env1 }}" && export ${{ matrix.env1 }}
145
139
test -n "${{ matrix.env2 }}" && export ${{ matrix.env2 }}
146
- mkdir build && cd build
147
- cmake \
148
- -DCMAKE_C_FLAGS="$CFLAGS" \
149
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
150
- -DCMAKE_BUILD_TYPE=Release \
151
- -DANDROID_TOOLS_USE_BUNDLED_FMT=ON \
152
- -DANDROID_TOOLS_USE_BUNDLED_LIBUSB=ON \
153
- -GNinja \
154
- ..
155
- ninja --verbose
156
- echo -e "\n### make install ###\n"
157
- cmake --install . --prefix /usr/local
140
+ meson setup build -Duse_bundled_libusb=true \
141
+ --native-file nativefiles/release_configuration.ini \
142
+ --prefix /usr/local
143
+ echo -e "\n### install ###\n"
144
+ meson install -C build
158
145
echo -e "\n### all done ###\n"
159
146
160
147
- name : check
161
148
run : |
162
149
/usr/local/bin/adb --version
163
150
/usr/local/bin/fastboot --version
164
- /usr/local/bin/make_f2fs -V
165
- /usr/local/bin/sload_f2fs -V
151
+ # /usr/local/bin/make_f2fs -V
152
+ # /usr/local/bin/sload_f2fs -V
166
153
167
154
macos :
168
155
strategy :
@@ -182,8 +169,7 @@ jobs:
182
169
- name : prep macos
183
170
run : |
184
171
rm -rf /opt/homebrew/include/openssl /usr/local/opt/openssl /usr/local/include/openssl
185
- brew install --overwrite --quiet brotli cmake go googletest lz4 \
186
- ninja pcre2 protobuf zstd
172
+ brew install --overwrite --quiet meson
187
173
188
174
- name : download source
189
175
uses : actions/download-artifact@v4
@@ -192,26 +178,59 @@ jobs:
192
178
193
179
- name : build & install
194
180
run : |
195
- tar -xf android-tools-*.tar.xz
181
+ tar -xf android-tools-*.tar
196
182
cd android-tools-*/
197
- mkdir build && cd build
198
- cmake \
199
- -DCMAKE_C_FLAGS="$CFLAGS" \
200
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
201
- -DCMAKE_BUILD_TYPE=Release \
202
- -DCMAKE_INSTALL_PREFIX=$HOME/android-tools \
203
- -DANDROID_TOOLS_USE_BUNDLED_FMT=ON \
204
- -DANDROID_TOOLS_USE_BUNDLED_LIBUSB=ON \
205
- -GNinja \
206
- ..
207
- ninja --verbose
208
- echo -e "\n### make install ###\n"
209
- cmake --install .
183
+ meson setup build -Duse_bundled_libusb=true \
184
+ --native-file nativefiles/release_configuration.ini \
185
+ --prefix "$HOME/android-tools"
186
+ echo -e "\n### install ###\n"
187
+ meson install -C build
210
188
echo -e "\n### all done ###\n"
211
189
212
190
- name : check
213
191
run : |
214
192
$HOME/android-tools/bin/adb --version
215
193
$HOME/android-tools/bin/fastboot --version
216
- $HOME/android-tools/bin/make_f2fs -V
217
- $HOME/android-tools/bin/sload_f2fs -V
194
+ # $HOME/android-tools/bin/make_f2fs -V
195
+ # $HOME/android-tools/bin/sload_f2fs -V
196
+
197
+ windows :
198
+ runs-on : windows-2022
199
+ needs : [upload-src]
200
+ steps :
201
+ - name : prep MSYS2
202
+
203
+ with :
204
+ msystem : UCRT64
205
+ install : >
206
+ mingw-w64-ucrt-x86_64-meson
207
+ mingw-w64-ucrt-x86_64-gcc
208
+ mingw-w64-ucrt-x86_64-cmake
209
+ mingw-w64-ucrt-x86_64-nasm
210
+
211
+ - name : download source
212
+ uses : actions/download-artifact@v4
213
+ with :
214
+ name : package_source
215
+ - name : extract source
216
+ timeout-minutes : 10
217
+ run : tar -oxf android-tools-source.tar
218
+
219
+ - name : build & install
220
+ shell : msys2 {0}
221
+ run : |
222
+ cd android-tools-*/
223
+ meson setup build -Duse_bundled_libusb=true \
224
+ --native-file nativefiles/release_configuration.ini \
225
+ --native-file nativefiles/release_configuration_fullstatic.ini \
226
+ --native-file nativefiles/release_configuration_standardlayout.ini
227
+ echo -e "\n### install ###\n"
228
+ meson install -C build --destdir "$PWD/../android-tools"
229
+ echo -e "\n### all done ###\n"
230
+
231
+ - name : check
232
+ run : |
233
+ .\android-tools\adb.exe --version
234
+ .\android-tools\fastboot.exe --version
235
+ # .\android-tools\make_f2fs.exe -V
236
+ # .\android-tools\sload_f2fs.exe -V
0 commit comments