mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
update_retroplayer-addons: sync libretro core versions with kodi
Instead of bumping libretro cores to their current master version use the githash from depends file in kodi game addon. This ensures we ship the same libretro core versions as Kodi. When a kodi game addon is bumped the libretro package is automatically bumped, too. If the script is invoked with the "-f" option all libretro packages will be synced to the version specified in the kodi game addon. Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
parent
2a815a4cd3
commit
9a6c8520a4
@ -3,7 +3,20 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
FORCE_LIBRETRO_BUMP=""
|
||||
|
||||
if [ "$1" == "-f" ]; then
|
||||
FORCE_LIBRETRO_BUMP="yes"
|
||||
shift
|
||||
fi
|
||||
|
||||
ROOT=$(cd $(dirname $0)/../.. && pwd)
|
||||
TMPDIR="$(pwd)/.update-retroplayer-tmp"
|
||||
TMP_PKG_FILE="${TMPDIR}/package.tar.gz"
|
||||
TMP_PKG_DIR="${TMPDIR}/package"
|
||||
|
||||
rm -rf "${TMPDIR}"
|
||||
mkdir -p "${TMPDIR}"
|
||||
|
||||
git_clone() {
|
||||
# git_clone https://repo.url branch ./target_dir [githash]
|
||||
@ -35,21 +48,39 @@ get_pkg_var() {
|
||||
echo "${!pkg_var}"
|
||||
}
|
||||
|
||||
update_pkg() {
|
||||
local pkg_path="$1" pkg_name="$2" pkg_version="$3"
|
||||
local old_version pkg_url new_sha256
|
||||
set_pkg_version() {
|
||||
local package_mk="$1/package.mk" pkg_version="$2"
|
||||
sed -e "s|PKG_VERSION=.*|PKG_VERSION=\"${pkg_version}\"|g" -i "${package_mk}"
|
||||
}
|
||||
|
||||
old_version=$(get_pkg_var "${pkg_name}" PKG_VERSION)
|
||||
download_pkg_file() {
|
||||
local pkg_name="$1"
|
||||
local pkg_url=$(get_pkg_var "${pkg_name}" PKG_URL)
|
||||
wget -q -O "${TMP_PKG_FILE}" "${pkg_url}"
|
||||
}
|
||||
|
||||
if [ "${old_version}" != "${pkg_version}" ]; then
|
||||
[ -n "$pkg_version}" ] && sed -e "s|PKG_VERSION=.*|PKG_VERSION=\"${pkg_version}\"|g" -i ${pkg_path}
|
||||
extract_pkg_file() {
|
||||
mkdir -p "${TMP_PKG_DIR}"
|
||||
tar xf "${TMP_PKG_FILE}" --strip-components=1 -C "${TMP_PKG_DIR}"
|
||||
}
|
||||
|
||||
pkg_url=$(get_pkg_var "${pkg_name}" PKG_URL)
|
||||
if [ -n "${pkg_url}" ]; then
|
||||
new_sha256="$(wget -q ${pkg_url} -O- | sha256sum | awk '{print $1}')" || exit 1
|
||||
sed -e "s|PKG_SHA256=.*|PKG_SHA256=\"${new_sha256}\"|g" -i ${pkg_path}
|
||||
fi
|
||||
fi
|
||||
cleanup_pkg_tmp() {
|
||||
rm -rf "${TMP_PKG_FILE}" "${TMP_PKG_DIR}"
|
||||
}
|
||||
|
||||
set_pkg_sha256() {
|
||||
local package_mk="$1/package.mk"
|
||||
local new_sha256=$(sha256sum < "${TMP_PKG_FILE}" | awk '{print $1}')
|
||||
sed -e "s|PKG_SHA256=.*|PKG_SHA256=\"${new_sha256}\"|g" -i "${package_mk}"
|
||||
}
|
||||
|
||||
bump_pkg_rev() {
|
||||
local package_mk="$1/package.mk" pkg_name="$2"
|
||||
local pkg_rev=$(get_pkg_var "${pkg_name}" PKG_REV)
|
||||
local new_pkg_rev=$((${pkg_rev}+1))
|
||||
|
||||
sed -e "s|PKG_REV=.*|PKG_REV=\"${new_pkg_rev}\"|" -i "${package_mk}"
|
||||
echo "BUMPED ${pkg_name} PKG_REV from ${pkg_rev} to ${new_pkg_rev}"
|
||||
}
|
||||
|
||||
# addons
|
||||
@ -59,76 +90,99 @@ for addontxt in "binary-addons https://github.com/kodi-game/repo-binary-addons.g
|
||||
GIT_HASH=$(echo $addontxt | awk '{print $3}')
|
||||
git_clone $ADDONREPO retroplayer $ADDONS.git $GIT_HASH
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
for addon in $ADDONS.git/*.*/ ; do
|
||||
if [ -n "$(echo $addon | grep game.)" -o -n "$(echo $addon | grep peripheral.)" ]; then
|
||||
ADDON=$(basename $addon)
|
||||
GIT_BRANCH=$(cat $addon/$ADDON.txt | awk '{print $3}')
|
||||
EMULATOR="libretro-${ADDON##*.}"
|
||||
BUMP_REV=""
|
||||
OLD_HASH=""
|
||||
GIT_HASH=""
|
||||
for addon in $ADDONS.git/*.*/ ; do
|
||||
GAME_ADDON=$(basename ${addon})
|
||||
|
||||
if ! grep -q all $addon/platforms.txt && ! grep -q linux $addon/platforms.txt && ! grep -q ! $addon/platforms.txt; then
|
||||
continue
|
||||
fi
|
||||
[[ "${GAME_ADDON}" =~ ^game.libretro ]] || continue
|
||||
|
||||
#########################
|
||||
# binary add-on section #
|
||||
#########################
|
||||
if ! grep -q all $addon/platforms.txt && ! grep -q linux $addon/platforms.txt && ! grep -q ! $addon/platforms.txt; then
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ -f ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk ]; then
|
||||
GAME_GIT_BRANCH=$(cat $addon/${GAME_ADDON}.txt | awk '{print $3}')
|
||||
GAME_PATH="${ROOT}/packages/mediacenter/kodi-binary-addons/${GAME_ADDON}"
|
||||
|
||||
OLD_HASH=$(get_pkg_var "${ADDON}" PKG_VERSION)
|
||||
PKG_SITE=$(get_pkg_var "${ADDON}" PKG_SITE)
|
||||
GIT_HASH=$(git ls-remote $PKG_SITE $GIT_BRANCH | awk '{print $1}')
|
||||
if [ ! -d "$GAME_PATH" ] ; then
|
||||
echo "SKIPPING ${GAME_ADDON}, not present in LE"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [ "$OLD_HASH" != "$GIT_HASH" -a -n "$GIT_HASH" ]; then
|
||||
update_pkg ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk ${ADDON} ${GIT_HASH}
|
||||
if [[ "${GAME_ADDON}" =~ ^game.libretro. ]]; then
|
||||
RETRO_NAME="${GAME_ADDON#game.libretro.}"
|
||||
RETRO_ADDON="libretro-${RETRO_NAME}"
|
||||
RETRO_PATH="${ROOT}/packages/emulation/${RETRO_ADDON}"
|
||||
else
|
||||
RETRO_NAME=""
|
||||
RETRO_ADDON=""
|
||||
RETRO_PATH=""
|
||||
fi
|
||||
|
||||
BUMP_REV=true
|
||||
BUMPED=""
|
||||
CHECK_RETRO=""
|
||||
|
||||
echo "UPDATING: $ADDON"
|
||||
echo "OLD_HASH: $OLD_HASH"
|
||||
echo "NEW_HASH: $GIT_HASH"
|
||||
echo ""
|
||||
GAME_VERSION=$(get_pkg_var "${GAME_ADDON}" PKG_VERSION)
|
||||
GAME_PKG_SITE=$(get_pkg_var "${GAME_ADDON}" PKG_SITE)
|
||||
GAME_NEW_HASH=$(git ls-remote $GAME_PKG_SITE $GAME_GIT_BRANCH | awk '{print $1}')
|
||||
|
||||
fi
|
||||
fi
|
||||
if [ "${GAME_VERSION}" != "${GAME_NEW_HASH}" ]; then
|
||||
BUMPED="yes"
|
||||
[ -n "${RETRO_NAME}" ] && CHECK_RETRO="yes"
|
||||
set_pkg_version "${GAME_PATH}" "${GAME_NEW_HASH}"
|
||||
download_pkg_file "${GAME_ADDON}"
|
||||
set_pkg_sha256 "${GAME_PATH}"
|
||||
echo "UPDATED ${GAME_ADDON} from ${GAME_VERSION} to ${GAME_NEW_HASH}"
|
||||
fi
|
||||
|
||||
#########################
|
||||
# emulation section #
|
||||
#########################
|
||||
if [ -n "${FORCE_LIBRETRO_BUMP}" -a -n "${RETRO_NAME}" -a -z "${CHECK_RETRO}" ]; then
|
||||
download_pkg_file "${GAME_ADDON}"
|
||||
CHECK_RETRO="yes"
|
||||
fi
|
||||
|
||||
if [ -f ${ROOT}/packages/emulation/$EMULATOR/package.mk ]; then
|
||||
|
||||
OLD_HASH=$(get_pkg_var "${EMULATOR}" PKG_VERSION)
|
||||
PKG_SITE=$(get_pkg_var "${EMULATOR}" PKG_SITE)
|
||||
GIT_HASH=$(git ls-remote $PKG_SITE HEAD | awk '{print $1}')
|
||||
|
||||
if [ "$OLD_HASH" != "$GIT_HASH" -a -n "$GIT_HASH" ]; then
|
||||
update_pkg ${ROOT}/packages/emulation/$EMULATOR/package.mk ${EMULATOR} ${GIT_HASH}
|
||||
|
||||
BUMP_REV=true
|
||||
|
||||
echo "UPDATING: $EMULATOR"
|
||||
echo "OLD_HASH: $OLD_HASH"
|
||||
echo "NEW_HASH: $GIT_HASH"
|
||||
echo ""
|
||||
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$BUMP_REV" = "true" ]; then
|
||||
|
||||
PKG_REV=$(get_pkg_var "${ADDON}" PKG_REV)
|
||||
sed -e "s|PKG_REV=.*|PKG_REV=\"$((PKG_REV+1))\"|" -i ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk
|
||||
|
||||
echo "BUMPING PKG_REV FROM: $PKG_REV TO: $((PKG_REV+1))"
|
||||
echo ""
|
||||
|
||||
fi
|
||||
if [ -n "${CHECK_RETRO}" ]; then
|
||||
if [ ! -d "${RETRO_PATH}" ]; then
|
||||
echo "ERROR: ${RETRO_PATH} doesn't exist"
|
||||
cleanup_pkg_tmp
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
RETRO_VERSION=$(get_pkg_var "${RETRO_ADDON}" PKG_VERSION)
|
||||
extract_pkg_file
|
||||
|
||||
RETRO_VERSION_FILE="${TMP_PKG_DIR}/depends/common/${RETRO_NAME}/${RETRO_NAME}.txt"
|
||||
|
||||
if [ ! -f "${RETRO_VERSION_FILE}" ]; then
|
||||
echo "ERROR: ${RETRO_VERSION_FILE} does not exist"
|
||||
cleanup_pkg_tmp
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION_INFO=$(grep "^${RETRO_NAME}" "${RETRO_VERSION_FILE}" | head -1)
|
||||
if [[ "$VERSION_INFO" =~ .zip$ ]] ; then
|
||||
# version referenced by githash
|
||||
RETRO_NEW_HASH=$(sed -e 's|^.*/archive/||' -e 's|\.zip$||' "${RETRO_VERSION_FILE}")
|
||||
else
|
||||
echo "unmanaged version in kodi package: ${VERSION_INFO}"
|
||||
# unmanaged version, repo plus branch
|
||||
RETRO_SITE=$(echo "${VERSION_INFO}" | awk '{print $2}')
|
||||
RETRO_BRANCH=$(echo "${VERSION_INFO}" | awk '{print $3}')
|
||||
RETRO_NEW_HASH=$(git ls-remote "${RETRO_SITE}" "${RETRO_BRANCH}" | awk '{print $1}')
|
||||
fi
|
||||
|
||||
if [ "${RETRO_VERSION}" != "${RETRO_NEW_HASH}" ]; then
|
||||
BUMPED="yes"
|
||||
set_pkg_version "${RETRO_PATH}" "${RETRO_NEW_HASH}"
|
||||
download_pkg_file "${RETRO_ADDON}"
|
||||
set_pkg_sha256 "${RETRO_PATH}"
|
||||
echo "UPDATED ${RETRO_ADDON} from ${RETRO_VERSION} to ${RETRO_NEW_HASH}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "${BUMPED}" ]; then
|
||||
bump_pkg_rev "${GAME_PATH}" "${GAME_ADDON}"
|
||||
cleanup_pkg_tmp
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
rm -rf "${TMPDIR}"
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user