summaryrefslogtreecommitdiff
path: root/evergreen/functions/shared_scons_cache_pruning.sh
diff options
context:
space:
mode:
Diffstat (limited to 'evergreen/functions/shared_scons_cache_pruning.sh')
-rwxr-xr-xevergreen/functions/shared_scons_cache_pruning.sh76
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