Files
Arch-R/tools/checkunpack
T
Douglas Teles 2d0a76b94a ArchR v2.0-rc3 — first official release-candidate
Kernel 6.12 LTS · Mesa 26.0.5 Panfrost · CMA 96 MB · zlib-ng 2.2.4
CPU turbo 1.5 GHz (vdd_arm 1.45 V) · GPU 650 MHz @ 1.150 V · mali_kbase PM patch
43 motherboard revisions covered · two image variants with hardware auto-detect
PortMaster pre-installed · MESA_GLTHREAD whitelist · RetroAchievements
Tailscale / WireGuard / ZeroTier · Syncthing + rclone · Samba

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:36:32 -03:00

112 lines
2.8 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