Skip to content

Commit 896183f

Browse files
committed
ci: speed up build by parallelizing debuild and cleaning up apt steps
- Remove unnecessary meson PPA (Ubuntu 22.04 ships meson 0.61.2, requirement is >=0.53.0) - Add apt package cache (actions/cache@v4) to skip downloads on repeat runs - Drop pointless apt cleanup at end of install step (runner is ephemeral) - Parallelize all debian/rules for-loops (configure, install, makeshlibs, shlibdeps) using xargs -P$(nproc) to run all ~61 targets concurrently instead of serially
1 parent 2532b35 commit 896183f

2 files changed

Lines changed: 21 additions & 22 deletions

File tree

.github/workflows/build.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,15 @@ jobs:
3434
mkdir -p ~/.config/git
3535
chmod -R 700 ~/.config
3636
37+
- name: Cache apt packages
38+
uses: actions/cache@v4
39+
with:
40+
path: /var/cache/apt/archives
41+
key: apt-${{ runner.arch }}-${{ hashFiles('.github/workflows/build.yml') }}
42+
restore-keys: apt-${{ runner.arch }}-
43+
3744
- name: Install dependencies
3845
run: |
39-
sudo apt-get update
40-
sudo apt-get install -y software-properties-common
41-
sudo add-apt-repository -y ppa:ubuntu-support-team/meson
4246
sudo apt-get update
4347
sudo apt-get install -y --no-install-recommends \
4448
build-essential \
@@ -66,9 +70,6 @@ jobs:
6670
libxfixes-dev \
6771
libwayland-client0 \
6872
libwayland-dev
69-
sudo apt-get clean autoclean --yes
70-
sudo apt-get autoremove --yes
71-
sudo rm -rf /var/cache/apt/archives* /var/lib/apt/lists/*
7273
7374
- name: Build Debian package
7475
run: |

debian/rules

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,40 @@
44
export DH_VERBOSE = 1
55

66
TARGETS = $(shell cat debian/targets | grep $(DEB_HOST_GNU_TYPE))
7+
NPROC := $(shell nproc)
78

89
override_dh_clean:
910
dh_clean
1011
rm -rf libmali-*/
1112
rm -rf debian/libmali-*/
1213

1314
override_dh_auto_configure:
14-
for target in $(TARGETS); do \
15-
export $$(scripts/parse_name.sh $$target); \
15+
printf '%s\n' $(TARGETS) | xargs -P$(NPROC) -I{} sh -c '\
16+
target="{}"; \
17+
eval "$$(scripts/parse_name.sh $$target)"; \
1618
dh_auto_configure --builddirectory=$$name -- \
1719
-Darch=$${target%%-*} -Dgpu=$$gpu \
1820
-Dversion=$$version -Dsubversion=$$subversion \
19-
-Dplatform=$$platform -Dvendor-package=true -Dwrappers=enabled; \
20-
done
21+
-Dplatform=$$platform -Dvendor-package=true -Dwrappers=enabled'
2122

2223
override_dh_auto_build:
2324
override_dh_auto_test:
2425

2526
override_dh_auto_install:
26-
for target in $(TARGETS); do \
27-
export $$(scripts/parse_name.sh $$target); \
27+
printf '%s\n' $(TARGETS) | xargs -P$(NPROC) -I{} sh -c '\
28+
eval "$$(scripts/parse_name.sh {})"; \
2829
dh_auto_install --builddirectory=$$name \
29-
--destdir=debian/$$name; \
30-
done
30+
--destdir=debian/$$name'
3131

3232
override_dh_makeshlibs:
33-
for target in $(TARGETS); do \
34-
export $$(scripts/parse_name.sh $$target); \
35-
dh_makeshlibs -p$$name; \
36-
done
33+
printf '%s\n' $(TARGETS) | xargs -P$(NPROC) -I{} sh -c '\
34+
eval "$$(scripts/parse_name.sh {})"; \
35+
dh_makeshlibs -p$$name'
3736

3837
override_dh_shlibdeps:
39-
for target in $(TARGETS); do \
40-
export $$(scripts/parse_name.sh $$target); \
41-
dh_shlibdeps -p$$name -- -Sdebian/$$name; \
42-
done
38+
printf '%s\n' $(TARGETS) | xargs -P$(NPROC) -I{} sh -c '\
39+
eval "$$(scripts/parse_name.sh {})"; \
40+
dh_shlibdeps -p$$name -- -Sdebian/$$name'
4341

4442
%:
4543
dh $@ --buildsystem=meson

0 commit comments

Comments
 (0)