diff options
Diffstat (limited to 'evergreen/functions/shared_scons_cache_pruning.sh')
-rwxr-xr-x | evergreen/functions/shared_scons_cache_pruning.sh | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/evergreen/functions/shared_scons_cache_pruning.sh b/evergreen/functions/shared_scons_cache_pruning.sh new file mode 100755 index 00000000000..87219355a82 --- /dev/null +++ b/evergreen/functions/shared_scons_cache_pruning.sh @@ -0,0 +1,76 @@ +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +. "$DIR/../prelude.sh" + +cd src + +set -o errexit +set -o verbose +# removes files from the shared scons cache. + +# Only prune on master branch +if [[ "${project}" == "mongodb-mongo-master" ]]; then + + set +o errexit + + if [ "Windows_NT" = "$OS" ]; then + ./win_mount.sh + else + mount | grep "\/efs" >/dev/null + fi + if [ $? -eq 0 ]; then + echo "Shared cache is already mounted" + else + echo "Shared cache - mounting file system" + if [ "Windows_NT" = "$OS" ]; then + ./win_mount.sh + else + sudo mount /efs + fi + fi + set -o errexit + + if [ "Windows_NT" = "$OS" ]; then + cache_folder=/cygdrive/x + else + cache_folder=/efs + fi + dirs=$(ls -l $cache_folder | grep -v total | awk '{print $NF}') + + echo "Pruning shared SCons directories" + + for dir in $dirs; do + echo "Pruning $cache_folder/$dir/scons-cache" + + if [ -e $cache_folder/$dir/info/distro_name ]; then + distro=$(cat $cache_folder/$dir/info/distro_name) + fi + + # Set cache sizes by distro + case $distro in + ubuntu1604 | ubuntu1804 | rhel62 | rhel70) + cache_size=600 + ;; + *) + # default + cache_size=400 + ;; + esac + + if [ "Windows_NT" = "$OS" ]; then + echo "dir="$dir + python buildscripts/scons_cache_prune.py --cache-dir x:/$dir/scons-cache --cache-size $cache_size --prune-ratio 1.0 + else + sudo python buildscripts/scons_cache_prune.py --cache-dir /efs/$dir/scons-cache --cache-size $cache_size --prune-ratio 1.0 + fi + echo "" + done + + if [ "Windows_NT" = "$OS" ]; then + net use X: /delete || true + else + sudo umount /efs || true + fi + +else + echo "Not on master, shared SCons cache pruning skipped" +fi |