Skip to content

Commit e47a0a0

Browse files
authored
add tool for removing functions from PKGBUILDs (#64)
1 parent 1070b3c commit e47a0a0

4 files changed

Lines changed: 94 additions & 36 deletions

File tree

bin/delete-func

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
#!/bin/sh
2+
# Remove functions and strings from a PKGBUILD
3+
# * Deletes any function that contains the given string
4+
# * Removes all occurrences of the string from the PKGBUILD
5+
6+
set -e
7+
8+
if [ ! -f "$PKGBUILD" ]; then
9+
>&2 echo "ERROR: PKGBUILD env var is not set or file not found"
10+
exit 1
11+
fi
12+
13+
for FUNC; do
14+
LC_ALL=C awk -v name="$FUNC" '
15+
BEGIN {
16+
state = 0 # 0=outside, 1=waiting for "{", 2=inside body
17+
depth = 0
18+
target = 0
19+
target_pat = "^[[:space:]]*[a-zA-Z0-9_-]*" name "[a-zA-Z0-9_-]*\\(\\)"
20+
func_pat = "^[[:space:]]*[a-zA-Z0-9_-]+\\(\\)"
21+
}
22+
23+
state == 0 {
24+
if ($0 ~ target_pat) {
25+
target = 1
26+
tmp = $0
27+
opens = gsub(/\{/, "&", tmp)
28+
closes = gsub(/\}/, "&", tmp)
29+
if (opens > 0) {
30+
depth = opens - closes
31+
state = (depth > 0) ? 2 : 0
32+
} else {
33+
state = 1
34+
}
35+
next
36+
}
37+
if ($0 ~ func_pat) {
38+
target = 0
39+
tmp = $0
40+
opens = gsub(/\{/, "&", tmp)
41+
closes = gsub(/\}/, "&", tmp)
42+
if (opens > 0) {
43+
depth = opens - closes
44+
state = (depth > 0) ? 2 : 0
45+
} else {
46+
state = 1
47+
}
48+
print
49+
next
50+
}
51+
gsub(name, "")
52+
print
53+
}
54+
55+
state == 1 {
56+
tmp = $0
57+
opens = gsub(/\{/, "&", tmp)
58+
closes = gsub(/\}/, "&", tmp)
59+
if (opens > 0) {
60+
depth = opens - closes
61+
state = (depth > 0) ? 2 : 0
62+
}
63+
if (! target) print
64+
}
65+
66+
state == 2 {
67+
tmp = $0
68+
opens = gsub(/\{/, "&", tmp)
69+
closes = gsub(/\}/, "&", tmp)
70+
depth += opens - closes
71+
if (! target) print
72+
if (depth <= 0) {
73+
state = 0
74+
depth = 0
75+
target = 0
76+
}
77+
}
78+
' "$PKGBUILD" > "$PKGBUILD.tmp" && mv "$PKGBUILD.tmp" "$PKGBUILD"
79+
80+
echo "Removed $FUNC"
81+
done

mesa-mini.sh

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,30 @@ arm_vulkan="asahi,broadcom,freedreno,panfrost,imagination,$common_vulkan"
1515

1616
# remove aarch64 drivers from x86_64
1717
if [ "$ARCH" = 'x86_64' ]; then
18+
delete-func vulkan-freedreno vulkan-asahi vulkan-broadcom vulkan-panfrost vulkan-powervr
1819
sed -i \
1920
-e '/_pick vkfdreno/d' \
2021
-e '/_pick vkasahi/d' \
2122
-e '/_pick vkbrcom/d' \
2223
-e '/_pick vkpfrost/d' \
2324
-e '/_pick vkpowrvr/d' \
24-
-e 's/vulkan-broadcom//' \
25-
-e 's/vulkan-freedreno//' \
26-
-e 's/vulkan-panfrost//' \
27-
-e 's/vulkan-powervr//' \
28-
-e 's/vulkan-asahi//' \
2925
-e "s|gallium-drivers=.*|gallium-drivers=$x64_gallium|" \
3026
-e "s|vulkan-drivers=.*|vulkan-drivers=$x64_vulkan|" \
3127
"$PKGBUILD"
3228
elif [ "$ARCH" = 'aarch64' ]; then
29+
delete-func vulkan-intel
3330
sed -i \
3431
-e '/_pick vkintel/d' \
35-
-e 's/vulkan-intel//' \
3632
-e "s|gallium-drivers=.*|gallium-drivers=$arm_gallium|" \
3733
-e "s|vulkan-drivers=.*|vulkan-drivers=$arm_vulkan|" \
3834
"$PKGBUILD"
3935
fi
4036

41-
# debloat package, remove software rast, remove ancient drivers, build iwhtout linking to llvm
37+
# debloat package, remove software rast, remove ancient drivers, build without linking to llvm
38+
delete-func vulkan-swrast vulkan-kosmickrisp opencl-mesa
4239
sed -i \
4340
-e '/llvm-libs/d' \
4441
-e '/sysprof/d' \
45-
-e 's/vulkan-swrast//' \
46-
-e 's/vulkan-kosmickrisp//' \
47-
-e 's/opencl-mesa//' \
4842
-e '/_pick vkswrast/d' \
4943
-e '/_pick opencl/d' \
5044
-e '/_pick vkkosmic/d' \

mesa-nano.sh

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,36 +17,30 @@ arm_vulkan="asahi,broadcom,freedreno,panfrost,imagination,$common_vulkan"
1717

1818
# remove aarch64 drivers from x86_64
1919
if [ "$ARCH" = 'x86_64' ]; then
20+
delete-func vulkan-freedreno vulkan-asahi vulkan-broadcom vulkan-panfrost vulkan-powervr
2021
sed -i \
2122
-e '/_pick vkfdreno/d' \
2223
-e '/_pick vkasahi/d' \
2324
-e '/_pick vkbrcom/d' \
2425
-e '/_pick vkpfrost/d' \
2526
-e '/_pick vkpowrvr/d' \
26-
-e 's/vulkan-broadcom//' \
27-
-e 's/vulkan-freedreno//' \
28-
-e 's/vulkan-panfrost//' \
29-
-e 's/vulkan-powervr//' \
30-
-e 's/vulkan-asahi//' \
3127
-e "s|gallium-drivers=.*|gallium-drivers=$x64_gallium|" \
3228
-e "s|vulkan-drivers=.*|vulkan-drivers=$x64_vulkan|" \
3329
"$PKGBUILD"
3430
elif [ "$ARCH" = 'aarch64' ]; then
31+
delete-func vulkan-intel
3532
sed -i \
3633
-e '/_pick vkintel/d' \
37-
-e 's/vulkan-intel//' \
3834
-e "s|gallium-drivers=.*|gallium-drivers=$arm_gallium|" \
3935
-e "s|vulkan-drivers=.*|vulkan-drivers=$arm_vulkan|" \
4036
"$PKGBUILD"
4137
fi
4238

43-
# debloat package, remove software rast, remove ancient drivers, build iwhtout linking to llvm
39+
# debloat package, remove software rast, remove ancient drivers, build without linking to llvm
40+
delete-func vulkan-swrast vulkan-kosmickrisp opencl-mesa
4441
sed -i \
4542
-e '/llvm-libs/d' \
4643
-e '/sysprof/d' \
47-
-e 's/vulkan-swrast//' \
48-
-e 's/vulkan-kosmickrisp//' \
49-
-e 's/opencl-mesa//' \
5044
-e '/_pick vkswrast/d' \
5145
-e '/_pick opencl/d' \
5246
-e '/_pick vkkosmic/d' \

mesa-zink-mini.sh

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,16 @@ cd "$BUILD_DIR"
1111
gallium='d3d12,softpipe,virgl,zink'
1212

1313
# remove as much as possible and only leave gallium
14+
delete-func vulkan-intel vulkan-radeon vulkan-nouveau vulkan-swrast \
15+
vulkan-virtio vulkan-gfxstream vulkan-dzn vulkan-broadcom vulkan-freedreno \
16+
vulkan-panfrost vulkan-powervr vulkan-asahi vulkan-kosmickrisp \
17+
vulkan-mesa-layers vulkan-mesa-implicit-layers opencl-mesa
18+
1419
sed -i \
1520
-e '/llvm-libs/d' \
1621
-e '/sysprof/d' \
1722
-e '/_pick vk/d' \
1823
-e '/_pick opencl/d' \
19-
-e 's/opencl-mesa//' \
20-
-e 's/vulkan-intel//' \
21-
-e 's/vulkan-radeon//' \
22-
-e 's/vulkan-nouveau//' \
23-
-e 's/vulkan-swrast//' \
24-
-e 's/vulkan-virtio//' \
25-
-e 's/vulkan-gfxstream//' \
26-
-e 's/vulkan-dzn//' \
27-
-e 's/vulkan-broadcom//' \
28-
-e 's/vulkan-freedreno//' \
29-
-e 's/vulkan-panfrost//' \
30-
-e 's/vulkan-powervr//' \
31-
-e 's/vulkan-asahi//' \
32-
-e 's/vulkan-kosmickrisp//' \
33-
-e 's/vulkan-mesa-layers//' \
34-
-e 's/vulkan-mesa-implicit-layers//' \
3524
-e '/gallium-rusticl-enable-drivers/d' \
3625
-e 's/intel-rt=enabled/intel-rt=disabled/' \
3726
-e 's/gallium-rusticl=true/gallium-rusticl=false/' \

0 commit comments

Comments
 (0)