mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
vfs.sacd has been deprecated in favour of audiodecoder.sacd and removed from official kodi binary repo. Add it to the exclude list until we finally remove the package so the update script won't switch the version from tag to githash. Signed-off-by: Matthias Reichl <hias@horus.com>
181 lines
5.2 KiB
Bash
Executable File
181 lines
5.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
|
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
|
|
|
BUMP_PKG_REV=""
|
|
KEEP_GIT_DIRS="yes"
|
|
|
|
usage() {
|
|
echo "Usage: $0 [options] <kodi-branch> [<unofficial-addon-branch>]"
|
|
echo " -b, --bump-pkg-rev: bump PKG_REV if package was not updated"
|
|
echo " -d, --delete-git-dirs: delete cloned git dirs after update"
|
|
echo " -h, --help: display help and exit"
|
|
exit 1
|
|
}
|
|
|
|
while [ $# -ne 0 ]; do
|
|
case "$1" in
|
|
-b|--bump-pkg-rev)
|
|
BUMP_PKG_REV="yes"
|
|
shift
|
|
;;
|
|
-d|--delete-git-dirs)
|
|
KEEP_GIT_DIRS=""
|
|
shift
|
|
;;
|
|
-h|--help)
|
|
usage
|
|
exit 1
|
|
;;
|
|
-*)
|
|
echo "illegal option $1"
|
|
usage
|
|
exit 1
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ $# -eq 0 -o $# -gt 2 ]; then
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
# list of packages to exclude from update
|
|
EXCLUDED_PACKAGES="vfs.sacd"
|
|
|
|
MY_DIR="$(dirname "$0")"
|
|
ROOT="$(cd "${MY_DIR}"/../.. && pwd)"
|
|
TMPDIR="$(pwd)/.update-binary-addons-tmp"
|
|
TMP_PKG_FILE="${TMPDIR}/package.tar.gz"
|
|
TMP_PKG_DIR="${TMPDIR}/package"
|
|
|
|
rm -rf "${TMPDIR}"
|
|
mkdir -p "${TMPDIR}"
|
|
|
|
KODI_BRANCH="$1"
|
|
KODI_DIR="kodi.git"
|
|
|
|
if [ $# -eq 1 ]; then
|
|
UNOFFICIAL_ADDON_BRANCH="${KODI_BRANCH}"
|
|
else
|
|
UNOFFICIAL_ADDON_BRANCH="$2"
|
|
fi
|
|
|
|
. "${MY_DIR}/update_common_functions"
|
|
|
|
git_clone https://github.com/xbmc/xbmc ${KODI_DIR} ${KODI_BRANCH}
|
|
|
|
# addons
|
|
for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do
|
|
ADDONS=$(cat $addontxt | awk '{print $1}')
|
|
ADDONS_GIT_DIR="${ADDONS}.git"
|
|
ADDONS_GIT_REPO=$(cat $addontxt | awk '{print $2}')
|
|
ADDONS_GIT_BRANCH=$(cat $addontxt | awk '{print $3}')
|
|
git_clone $ADDONS_GIT_REPO $ADDONS_GIT_DIR ${ADDONS_GIT_BRANCH}
|
|
|
|
for addon in $ADDONS_GIT_DIR/*.*/ ; do
|
|
ADDON=$(basename $addon)
|
|
|
|
[[ ${ADDON} =~ ^game.* ]] && continue # ignore game.* addons - handled by update_retroplayer-addons
|
|
|
|
check_package_excluded "${ADDON}" "${EXCLUDED_PACKAGES}" && continue
|
|
|
|
GIT_DIR="${ADDON}.git"
|
|
GIT_REPO=$(cat ${addon}/${ADDON}.txt | awk '{print $2}')
|
|
GIT_BRANCH=$(cat ${addon}/${ADDON}.txt | awk '{print $3}')
|
|
|
|
if ! grep -q all ${addon}/platforms.txt && ! grep -q linux ${addon}/platforms.txt && ! grep -q ! ${addon}/platforms.txt; then
|
|
continue
|
|
fi
|
|
|
|
ADDON_PATH="${ROOT}/packages/mediacenter/kodi-binary-addons/${ADDON}/"
|
|
if [ -f "${ADDON_PATH}/package.mk" ] ; then
|
|
# Verify the Kodi repo matches our package repo
|
|
# If different, ignore the addon and process it later as an "unofficial" addon
|
|
validate_pkg_url "${ADDON}" "${GIT_REPO}" || continue
|
|
|
|
git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH}
|
|
|
|
NO_TAG=""
|
|
NEW_VERSION=$(resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH})
|
|
if [ -z "${NEW_VERSION}" ]; then
|
|
NO_TAG="yes"
|
|
echo "========================================================================"
|
|
msg_warn "WARNING: no tag found for addon ${ADDON}, falling back to HEAD"
|
|
echo "========================================================================"
|
|
NEW_VERSION=$(resolve_hash_in_branch "${GIT_DIR}" "${GIT_BRANCH}")
|
|
fi
|
|
|
|
echo "Resolved version for ${ADDON}: ${GIT_BRANCH} => ${NEW_VERSION}"
|
|
|
|
if update_pkg "${ADDON_PATH}" ${ADDON} ${NEW_VERSION}; then
|
|
if [ -n "${NO_TAG}" ]; then
|
|
# always bump PKG_REV on updates as we have no info if version changed
|
|
bump_pkg_rev "${ADDON_PATH}" "${ADDON}"
|
|
else
|
|
reset_pkg_rev "${ADDON_PATH}" "${ADDON}"
|
|
fi
|
|
else
|
|
[ "${BUMP_PKG_REV}" = "yes" ] && bump_pkg_rev "${ADDON_PATH}" "${ADDON}"
|
|
fi
|
|
|
|
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
|
rm -rf "${GIT_DIR}"
|
|
fi
|
|
else
|
|
echo "[mkpkg] Skipped $ADDON"
|
|
SKIPPED_ADDONS="$SKIPPED_ADDONS $ADDON"
|
|
fi
|
|
PROCESSED="${PROCESSED}${ADDON}\n"
|
|
done
|
|
|
|
echo
|
|
echo "The following addons were skipped, please add packages for these addons:"
|
|
echo "[${SKIPPED_ADDONS}]"
|
|
echo
|
|
done
|
|
|
|
# finally, any other unofficial addons
|
|
for ADDON in $(ls -1 "${ROOT}/packages/mediacenter/kodi-binary-addons"); do
|
|
[[ ${ADDON} =~ ^game.* ]] && continue # ignore game.* addons - handled by update_retroplayer-addons
|
|
|
|
# ignore already processed addons
|
|
echo -e "${PROCESSED}" | grep -qE "^${ADDON}$" && continue
|
|
|
|
check_package_excluded "${ADDON}" "${EXCLUDED_PACKAGES}" && continue
|
|
|
|
ADDON_PATH="${ROOT}/packages/mediacenter/kodi-binary-addons/${ADDON}/"
|
|
# Obtain git url - ignore if not a suitable repo
|
|
GIT_DIR="${ADDON}.git"
|
|
GIT_REPO="$(geturl "${ADDON}")" || continue
|
|
|
|
git_clone ${GIT_REPO} ${GIT_DIR}
|
|
|
|
if RESOLVED_HASH=$(resolve_hash_in_branch ${ADDON}.git ${UNOFFICIAL_ADDON_BRANCH}); then
|
|
echo "Resolved hash for ${ADDON}: ${UNOFFICIAL_ADDON_BRANCH} => ${RESOLVED_HASH}"
|
|
elif RESOLVED_HASH=$(resolve_hash_in_branch ${ADDON}.git HEAD); then
|
|
echo "Resolved hash for ${ADDON}: HEAD => ${RESOLVED_HASH}"
|
|
else
|
|
msg_warn "WARNING: Could not resolve hash for ${ADDON}"
|
|
continue
|
|
fi
|
|
|
|
if update_pkg "${ADDON_PATH}" "${ADDON}" "${RESOLVED_HASH}"; then
|
|
# always bump PKG_REV when updating untagged addons
|
|
bump_pkg_rev "${ADDON_PATH}" "${ADDON}"
|
|
else
|
|
[ "${BUMP_PKG_REV}" = "yes" ] && bump_pkg_rev "${ADDON_PATH}" "${ADDON}"
|
|
fi
|
|
|
|
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
|
rm -rf ${GIT_DIR}
|
|
fi
|
|
done
|
|
|
|
rm -rf "${TMPDIR}"
|