mirror of
				https://github.com/libretro/Lakka-LibreELEC.git
				synced 2025-11-04 07:59:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
# SPDX-License-Identifier: GPL-2.0
 | 
						|
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
 | 
						|
 | 
						|
. ./config/options ""
 | 
						|
 | 
						|
MD5SUM="$(echo ${BUILD} | md5sum | awk '{ print $1 }')"
 | 
						|
RESTART_FILE=/tmp/checkunpack.progress.${MD5SUM}
 | 
						|
 | 
						|
usage() {
 | 
						|
  cat <<EOF
 | 
						|
Usage: $0 [-f "regex"] [-c] [-v] [-S] [-h]
 | 
						|
 | 
						|
  -f regex    Filter based on regex, eg. -f "RTL.*|^kodi-" would match all
 | 
						|
              Realtek drivers and any package beginning with kodi-.
 | 
						|
              Using a filter ignores any existing progress file.
 | 
						|
  -c          Remove restartable progress file at beginning of this run
 | 
						|
  -v          Verbose output, view failed output from scripts/unpack
 | 
						|
  -S          Display skipped/ignored packages
 | 
						|
  -h          This help message
 | 
						|
 | 
						|
By default previously processed packages that unpacked successfully will be skipped,
 | 
						|
unless their stamp has been subsequently modified. Use -c to ignore any previous
 | 
						|
progress, and (re-)process every package again.
 | 
						|
 | 
						|
Current progress file: ${RESTART_FILE}
 | 
						|
EOF
 | 
						|
  exit
 | 
						|
}
 | 
						|
 | 
						|
FILTER="."
 | 
						|
RMPROGRESS="no"
 | 
						|
VERBOSE="no"
 | 
						|
SHOW_SKIPPED="no"
 | 
						|
USING_FILTER="no"
 | 
						|
 | 
						|
while getopts "f:cvSh" opt; do
 | 
						|
  case ${opt} in
 | 
						|
    f) FILTER="${OPTARG}"; USING_FILTER="yes";;
 | 
						|
    c) RMPROGRESS="yes";;
 | 
						|
    v) VERBOSE="yes";;
 | 
						|
    S) SHOW_SKIPPED="yes";;
 | 
						|
    h) usage;;
 | 
						|
    *) usage;;
 | 
						|
  esac
 | 
						|
done
 | 
						|
 | 
						|
TMP_FILE=$(mktemp)
 | 
						|
trap "rm -f ${TMP_FILE}" EXIT
 | 
						|
 | 
						|
[ "${RMPROGRESS}" = "yes" ] && rm -f "${RESTART_FILE}"
 | 
						|
 | 
						|
TXRED="$(tput setaf 1 bold)"
 | 
						|
TXGREEN="$(tput setaf 2 bold)"
 | 
						|
TXRESET="$(tput sgr0)"
 | 
						|
 | 
						|
SKIPPED="$(cut -d' ' -f1 ${RESTART_FILE} 2>/dev/null | sort -u | wc -l || true)"
 | 
						|
[ "${USING_FILTER}" = "no" -a "${SKIPPED:-0}" -ne 0 ] && echo -e "WARNING: skipping ${SKIPPED} packages.\n" >&2
 | 
						|
 | 
						|
for pkg_name in $(get_all_package_names | grep -E "${FILTER}"); do
 | 
						|
  stamp=$(source_package ${pkg_name}; calculate_stamp)
 | 
						|
  if [ -z "${stamp}" ]; then
 | 
						|
    [ "${SHOW_SKIPPED}" = "yes" ] && printf "Checking: %-40s IGNORED\n" "${pkg_name}"
 | 
						|
    continue
 | 
						|
  fi
 | 
						|
 | 
						|
  if [ "${USING_FILTER}" = "no" ] && grep -qE "^${pkg_name} ${stamp}$" ${RESTART_FILE} 2>/dev/null; then
 | 
						|
    [ "${SHOW_SKIPPED}" = "yes" ] && printf "Checking: %-40s SKIPPED\n" "${pkg_name}"
 | 
						|
    continue
 | 
						|
  fi
 | 
						|
 | 
						|
  printf "Checking: %-40s" "${pkg_name}"
 | 
						|
 | 
						|
  rm -rf "${BUILD}/"* ${BUILD}/.unpack
 | 
						|
 | 
						|
  OUTPUT="$(scripts/unpack "${pkg_name}" 2>&1)" && res=0 || res=1
 | 
						|
 | 
						|
  if [ ${res} -eq 0 ]; then
 | 
						|
    echo " ${TXGREEN}OK${TXRESET}"
 | 
						|
    [ "${USING_FILTER}" = "no" ] && echo "${pkg_name} ${stamp}" >>${RESTART_FILE}
 | 
						|
  else
 | 
						|
    echo " ${TXRED}FAILED${TXRESET}"
 | 
						|
    echo "${pkg_name}" >>${TMP_FILE}
 | 
						|
    [ "${VERBOSE}" = "yes" -a -n "${OUTPUT}" ] && echo "${OUTPUT}"
 | 
						|
  fi
 | 
						|
  rm -rf "${BUILD}/"* ${BUILD}/.unpack
 | 
						|
done
 | 
						|
 | 
						|
if [ -s "${TMP_FILE}" ]; then
 | 
						|
  echo
 | 
						|
  echo "The following packages failed to unpack:"
 | 
						|
  cat ${TMP_FILE}
 | 
						|
  exit 1
 | 
						|
fi
 |