forked from libretro/Lakka-LibreELEC
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
|