Skip to content

Commit 6dd75f0

Browse files
committed
Auto merge of rust-lang#136238 - marcoieni:free-disk-refactor, r=Kobzol
ci: refactor how directories are removed in free-disk-space disk try-job: aarch64-gnu
2 parents 8239a37 + 053fa1c commit 6dd75f0

File tree

1 file changed

+64
-30
lines changed

1 file changed

+64
-30
lines changed

src/ci/scripts/free-disk-space.sh

+64-30
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
#!/bin/bash
2+
set -euo pipefail
23

34
# Free disk space on Linux GitHub action runners
45
# Script inspired by https://github.com/jlumbroso/free-disk-space
56

7+
isX86() {
8+
local arch
9+
arch=$(uname -m)
10+
if [ "$arch" = "x86_64" ]; then
11+
return 0
12+
else
13+
return 1
14+
fi
15+
}
16+
617
# print a line of the specified character
718
printSeparationLine() {
819
for ((i = 0; i < 80; i++)); do
@@ -14,11 +25,15 @@ printSeparationLine() {
1425
# compute available space
1526
# REF: https://unix.stackexchange.com/a/42049/60849
1627
# REF: https://stackoverflow.com/a/450821/408734
17-
getAvailableSpace() { echo $(df -a | awk 'NR > 1 {avail+=$4} END {print avail}'); }
28+
getAvailableSpace() {
29+
df -a | awk 'NR > 1 {avail+=$4} END {print avail}'
30+
}
1831

1932
# make Kb human readable (assume the input is Kb)
2033
# REF: https://unix.stackexchange.com/a/44087/60849
21-
formatByteCount() { echo $(numfmt --to=iec-i --suffix=B --padding=7 $1'000'); }
34+
formatByteCount() {
35+
numfmt --to=iec-i --suffix=B --padding=7 "$1"'000'
36+
}
2237

2338
# macro to output saved space
2439
printSavedSpace() {
@@ -58,11 +73,27 @@ removeDir() {
5873
dir=${1}
5974

6075
local before
61-
before=$(getAvailableSpace)
76+
if [ ! -d "$dir" ]; then
77+
echo "::warning::Directory $dir does not exist, skipping."
78+
else
79+
before=$(getAvailableSpace)
80+
sudo rm -rf "$dir"
81+
printSavedSpace "$before" "Removed $dir"
82+
fi
83+
}
84+
85+
removeUnusedDirectories() {
86+
local dirs_to_remove=(
87+
"/usr/local/lib/android"
88+
"/usr/share/dotnet"
6289

63-
sudo rm -rf "$dir" || true
90+
# Haskell runtime
91+
"/usr/local/.ghcup"
92+
)
6493

65-
printSavedSpace "$before" "$dir"
94+
for dir in "${dirs_to_remove[@]}"; do
95+
removeDir "$dir"
96+
done
6697
}
6798

6899
execAndMeasureSpaceChange() {
@@ -79,31 +110,39 @@ execAndMeasureSpaceChange() {
79110
# Remove large packages
80111
# REF: https://github.com/apache/flink/blob/master/tools/azure-pipelines/free_disk_space.sh
81112
cleanPackages() {
82-
sudo apt-get -qq remove -y --fix-missing \
83-
'^aspnetcore-.*' \
84-
'^dotnet-.*' \
85-
'^llvm-.*' \
86-
'php.*' \
87-
'^mongodb-.*' \
88-
'^mysql-.*' \
89-
'azure-cli' \
90-
'google-chrome-stable' \
91-
'firefox' \
92-
'powershell' \
93-
'mono-devel' \
94-
'libgl1-mesa-dri' \
95-
'google-cloud-sdk' \
96-
'google-cloud-cli'
113+
local packages=(
114+
'^aspnetcore-.*'
115+
'^dotnet-.*'
116+
'^llvm-.*'
117+
'^mongodb-.*'
118+
'^mysql-.*'
119+
'azure-cli'
120+
'firefox'
121+
'libgl1-mesa-dri'
122+
'mono-devel'
123+
'php.*'
124+
)
125+
126+
if isX86; then
127+
packages+=(
128+
'google-chrome-stable'
129+
'google-cloud-cli'
130+
'google-cloud-sdk'
131+
'powershell'
132+
)
133+
fi
134+
135+
sudo apt-get -qq remove -y --fix-missing "${packages[@]}"
97136

98137
sudo apt-get autoremove -y || echo "::warning::The command [sudo apt-get autoremove -y] failed"
99138
sudo apt-get clean || echo "::warning::The command [sudo apt-get clean] failed failed"
100139
}
101140

102141
# Remove Docker images
103142
cleanDocker() {
104-
echo "Removing the following docker images:"
143+
echo "=> Removing the following docker images:"
105144
sudo docker image ls
106-
echo "Removing docker images..."
145+
echo "=> Removing docker images..."
107146
sudo docker image prune --all --force || true
108147
}
109148

@@ -121,17 +160,12 @@ AVAILABLE_INITIAL=$(getAvailableSpace)
121160
printDF "BEFORE CLEAN-UP:"
122161
echo ""
123162

124-
removeDir /usr/local/lib/android
125-
removeDir /usr/share/dotnet
126-
127-
# Haskell runtime
128-
removeDir /opt/ghc
129-
removeDir /usr/local/.ghcup
130-
131-
execAndMeasureSpaceChange cleanPackages "Large misc. packages"
163+
execAndMeasureSpaceChange cleanPackages "Unused packages"
132164
execAndMeasureSpaceChange cleanDocker "Docker images"
133165
execAndMeasureSpaceChange cleanSwap "Swap storage"
134166

167+
removeUnusedDirectories
168+
135169
# Output saved space statistic
136170
echo ""
137171
printDF "AFTER CLEAN-UP:"

0 commit comments

Comments
 (0)