#!/usr/bin/env bash # # --- T2-COPYRIGHT-NOTE-BEGIN --- # T2 SDE: scripts/Cleanup # Copyright (C) 2004 - 2024 The T2 SDE Project # Copyright (C) 1998 - 2003 ROCK Linux Project # # This Copyright note is generated by scripts/Create-CopyPatch, # more information can be found in the files COPYING and README. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2. # --- T2-COPYRIGHT-NOTE-END --- # # Cleanup the build environment # nocheck=0 downclean=0 buildclean=0 cacheclean=0 while [ "$1" ]; do case "$1" in -build) buildclean=1 ;; -cache) cacheclean=1 ;; -full) buildclean=1 cacheclean=1 ;; -nocheck) nocheck=1 ;; -download) downclean=1 ;; -*) echo "Usage: $0 [ -build ] [ -cache ] [ -full ] [ -nocheck ] [ -download ]" echo " ${0//[a-zA-Z\/.]/ } [ dir(s) ]" exit 1 ;; *) break ;; esac shift done # Cleanup download/* and quit # if [ $downclean -eq 1 ]; then echo "Searching for obsolete downloads (this may take some time) ..." scripts/Download -list-unknown | cut -d ' ' -f 3- | while read fn; do [ "$fn" ] && rm -v "$fn" done exit fi # Remove src* # for x in src src.* build/*/TOOLCHAIN/src.*; do if [ -d "$x" -o -L "$x" ]; then if [ "$#" != 0 ]; then delme=0 for y; do [ "${y%/}" = "$x" ] && delme=1; done [ "$delme" = 0 ] && continue fi delme=1 for y in build.pid; do if [ $delme = 1 -a -f "$x/$y" ]; then if [ "`fuser "$x/$y"`" ]; then echo "Found active $y in $x: Not removing!" delme=0 fi fi done if [ $delme = 1 ]; then echo "Removing $x ..." umount -n -r -d -f "$x" 2> /dev/null umount -n -r -d -f -l "$x" 2> /dev/null rm -rf "$x" if [[ "$x" = *src.* ]]; then rm -rf /tmp/${x##*/} fi fi fi done # Remove build/* # fullhelp=0 for x in build/*; do if [ -d "$x" ]; then if [ "$#" != 0 ]; then delme=0 for y; do [ "${y%/}" = "$x" ] && delme=1; done [ "$delme" = 0 ] && continue fi # handle (c)cache pools first if [ ${x/build\/ccache/} != $x ]; then if [ $cacheclean = 1 ]; then echo "Removing $x ..." rm -rf "$x" else echo "Not removing $x (cache)" fullhelp=1 fi continue fi if [ $buildclean = 1 ]; then for y in proc tmp TOOLCHAIN/loop TOOLCHAIN/config TOOLCHAIN/download; do umount -d -f "$x/$y" > /dev/null 2>&1 umount -d -f -l "$x/$y" > /dev/null 2>&1 rmdir "$x/$y" > /dev/null 2>&1 if [ -d "$x/$y" ]; then echo "Found $y in $x: Not removing!" delme=0 fi done if [ "$delme" != 0 ]; then echo "Removing $x ..." rm -rf "$x" fi else echo "Not removing $x (build)" fullhelp=1 fi fi done [ $fullhelp -eq 1 ] && echo -e "\nUse '$0 -build' to remove builds and '$0 -cache' to also flush the cache." [ "$nocheck" = 1 ] && exit 0 echo -e "\nSearching for lingering temp/backup files (this may take some time) ..." # Remove temp/backup files # bash scripts/xfind.sh doc/. architecture/. misc/. \ package/. scripts/. target/. -type f \( -name '*~' -o \ -name 'a.out' -o -name 'core.[0-9]*' -o -name 'core' \) | xargs rm -vf # Print warnings for 'lingering' files # bash scripts/xfind.sh doc/. architecture/. misc/. \ package/. scripts/. \ \( \ \( -name 'DEADJOE' -o -name '.[^.]*' \ -o -name '*.orig' -o -name '*.rej' -o -name '*#*' \ -o -name '*.mine' -o -name '*.r[1-9][0-9]*' \ -o -name TRANS.TBL -o -name '*.cksum-err' -o -name x \ -o -name '*[.-]old' -o -name a.out -o -name '*~' \ -o -name '*.incomplete' -o -name '*.ckext-err' \) \ -printf 'WARNING: Found %p\n' \ \) -o \( \ \( ! -type d ! -type f \) \ -printf 'WARNING: Neither a dir nor a regular file: %p\n' \ \) bash scripts/xfind.sh target/. \ \( \ \( -name 'DEADJOE' -o -name '*-[xX]' \ -o -name '*.orig' -o -name '*.rej' -o -name '*#*' \ -o -name '*.mine' -o -name '*.r[1-9][0-9]*' \ -o -name TRANS.TBL -o -name '*.cksum-err' -o -name x \ -o -name '*[.-]old' -o -name a.out -o -name '*~' \ -o -name '*.incomplete' -o -name '*.ckext-err' \) \ -printf 'WARNING: Found %p\n' \ \) -o \( \ \( ! -type d ! -type f \) \ -printf 'WARNING: Neither a dir nor a regular file: %p\n' \ \) exit 0