#!/bin/bash set -euo pipefail SSTATE_DIR="" BB_HASHCLIENT="" BB_HASHSERVER="" ALIVE_DB_MARK="alive" CLEAN_DB="false" THRESHOLD_AGE="3600" function help() { cat <&2 help >&2 exit 1 ;; esac shift done function validate_mandatory_argument() { local var_value="$1" local error_message="$2" if [ -z "$var_value" ]; then echo "$error_message" help >&2 exit 1 fi } validate_mandatory_argument "$SSTATE_DIR" "Please provide the path to the sstate dir." validate_mandatory_argument "$BB_HASHCLIENT" "Please provide the path to bitbake-hashclient." validate_mandatory_argument "$BB_HASHSERVER" "Please provide the address of bitbake-hashserver." } # -- main code -- argument_parser $@ # Mark all db sstate hashes find "$SSTATE_DIR" -name "*.tar.zst" | \ sed 's/.*:\([^_]*\)_.*/unihash \1/' | \ $BB_HASHCLIENT --address "$BB_HASHSERVER" gc-mark-stream "$ALIVE_DB_MARK" # Remove unmarked and unused entries if [ "$CLEAN_DB" = "true" ]; then $BB_HASHCLIENT --address "$BB_HASHSERVER" gc-sweep "$ALIVE_DB_MARK" $BB_HASHCLIENT --address "$BB_HASHSERVER" clean-unused "$THRESHOLD_AGE" fi