mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
Merge pull request #3347 from HiassofT/le92-binary-addons
binary/retroplayer update scripts: update to latest tag instead of HEAD
This commit is contained in:
commit
44429065c5
@ -1,17 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="game.netplay"
|
||||
PKG_VERSION="e11f6a81f57420eee10d99a9773611591a2a0fae"
|
||||
PKG_SHA256="bb6011de992f02d72fc8db7b6d6b032c6ebff71085d97a5b13a87daa5ca2d775"
|
||||
PKG_REV="100"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/kodi-game/game.netplay"
|
||||
PKG_URL="https://github.com/kodi-game/game.netplay/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain kodi-platform p8-platform"
|
||||
PKG_SECTION=""
|
||||
PKG_LONGDESC="game.netplay adds Netplay support for Kodi"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="kodi.gameclient"
|
@ -0,0 +1,18 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="imagedecoder.mpo"
|
||||
PKG_VERSION="1.0.1-Leia"
|
||||
PKG_SHA256="33e580c7878dbf4e29e40aaf844ad2b138cc42a3156c3ec9621b33f6a764a4f3"
|
||||
PKG_REV="0"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/xbmc/imagedecoder.mpo"
|
||||
PKG_URL="https://github.com/xbmc/imagedecoder.mpo/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain kodi-platform libjpeg-turbo"
|
||||
PKG_SECTION=""
|
||||
PKG_SHORTDESC="imagedecoder.mpo"
|
||||
PKG_LONGDESC="imagedecoder.mpo"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="kodi.imagedecoder"
|
@ -4,6 +4,7 @@
|
||||
PKG_NAME="inputstream.adaptive"
|
||||
PKG_VERSION="b76c81fc4c2d7fd02e73c1d0091ae190351fc2fa"
|
||||
PKG_SHA256="8f802b0095c52376ee213bb3b2f08370821755a317543a2eb1d0ad953991b172"
|
||||
PKG_REV="0"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/peak3d/inputstream.adaptive/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -4,6 +4,7 @@
|
||||
PKG_NAME="inputstream.rtmp"
|
||||
PKG_VERSION="6065923d5131b7db606b5ace250da3e6b0d61a9d"
|
||||
PKG_SHA256="2c1939aa768c529e61a00302cacc56e5820dadf58ea655bbfc051f99997284fb"
|
||||
PKG_REV="0"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/xbmc/inputstream.rtmp/archive/$PKG_VERSION.tar.gz"
|
||||
|
@ -1,18 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2018-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="vfs.sacd"
|
||||
PKG_VERSION="4ade5fe422a2d08bb61f827e5382bc141456f6fd"
|
||||
PKG_SHA256="f2bdc8f74cf31d836dde7f0bbedd3e553002144d28c6649163da1c82010a2297"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="http://www.kodi.tv"
|
||||
PKG_URL="https://github.com/xbmc/vfs.sacd/archive/$PKG_VERSION.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain kodi-platform"
|
||||
PKG_SECTION=""
|
||||
PKG_SHORTDESC="vfs.sacd"
|
||||
PKG_LONGDESC="vfs.sacd"
|
||||
|
||||
PKG_IS_ADDON="yes"
|
||||
PKG_ADDON_TYPE="kodi.vfs"
|
@ -9,135 +9,45 @@ if [ -z "$1" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ROOT=$(cd $(dirname $0)/../.. && pwd)
|
||||
# list of packages to exclude from update
|
||||
EXCLUDED_PACKAGES="vfs.nfs vfs.sacd"
|
||||
|
||||
# the following environment variables can be set to "yes" to enable optional features:
|
||||
# KEEP_GIT_DIRS: don't delete cloned git directories after update check
|
||||
# BUMP_PKG_REV: bump PKG_REV if PKG_VERSION has changed
|
||||
|
||||
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-${KODI_BRANCH}.git"
|
||||
|
||||
git_clone() {
|
||||
# git_clone https://repo.url branch ./target_dir [githash]
|
||||
echo "[mkpkg] Checking out $1 ..."
|
||||
if [ ! -d "$3" ]; then
|
||||
git clone "$1" "$3"
|
||||
# Try to switch to specified branch if it exist, if not then use default branch
|
||||
if [ -n "$2" ]; then
|
||||
cd "$3"
|
||||
git checkout $2 >/dev/null 2>/dev/null
|
||||
cd ..
|
||||
fi
|
||||
else
|
||||
if [ -d "$3" ] ; then
|
||||
cd "$3"
|
||||
git checkout $2 >/dev/null 2>/dev/null
|
||||
git pull
|
||||
cd ..
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -z "$4" ] ; then
|
||||
cd "$3"
|
||||
git fetch >/dev/null 2>/dev/null
|
||||
git branch -D $4 >/dev/null 2>/dev/null
|
||||
git checkout $4 >/dev/null 2>/dev/null
|
||||
git checkout -b ref-$4 >/dev/null 2>/dev/null
|
||||
cd ..
|
||||
fi
|
||||
}
|
||||
|
||||
resolve_hash() {
|
||||
if [ -d "$1" ] ; then
|
||||
cd "$1"
|
||||
git rev-parse $2 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# Get url in git:// notation for a package.mk, assuming it is a github.com url
|
||||
# Return 1 if not a github domain
|
||||
geturl() {
|
||||
local addon="$1"
|
||||
local domain owner repo PKG_URL
|
||||
|
||||
PKG_URL="$(get_pkg_var ${addon} PKG_URL)"
|
||||
|
||||
domain="$(echo "${PKG_URL}" | cut -d/ -f3)"
|
||||
[ "${domain}" = "github.com" ] || return 1
|
||||
|
||||
owner="$(echo "${PKG_URL}" | cut -d/ -f4)"
|
||||
repo="$(echo "${PKG_URL}" | cut -d/ -f5)"
|
||||
|
||||
echo "git://${domain}/${owner}/${repo}.git"
|
||||
return 0
|
||||
}
|
||||
|
||||
# For the specified addon, verify that the package url
|
||||
# matches the url retrieved from Kodi
|
||||
validate_pkg_url() {
|
||||
local addon="$1" url1="$2"
|
||||
local domain owner repo url2
|
||||
|
||||
domain="$(echo "${url1}" | cut -d/ -f3)"
|
||||
owner="$(echo "${url1}" | cut -d/ -f4)"
|
||||
repo="$(echo "${url1}" | cut -d/ -f5)"
|
||||
|
||||
url1="git://${domain}/${owner}/${repo}.git"
|
||||
url2="$(geturl "${addon}")"
|
||||
|
||||
[ "${url1}" = "${url2}" ] && return 0 || return 1
|
||||
}
|
||||
|
||||
get_pkg_var() {
|
||||
local pkg_name="$1" pkg_var="$2"
|
||||
cd ${ROOT}
|
||||
PROJECT=Generic ARCH=x86_64 source config/options ${pkg_name} &>/dev/null
|
||||
echo "${!pkg_var}"
|
||||
}
|
||||
|
||||
update_pkg() {
|
||||
local pkg_path="$1" pkg_name="$2" pkg_version="$3"
|
||||
local old_version pkg_url new_sha256
|
||||
|
||||
old_version=$(get_pkg_var "${pkg_name}" PKG_VERSION)
|
||||
|
||||
if [ "${old_version}" != "${pkg_version}" ]; then
|
||||
[ -n "$pkg_version}" ] && sed -e "s|PKG_VERSION=.*|PKG_VERSION=\"${pkg_version}\"|g" -i ${pkg_path}
|
||||
|
||||
pkg_url=$(get_pkg_var "${pkg_name}" PKG_URL)
|
||||
|
||||
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
|
||||
}
|
||||
. "${MY_DIR}/update_common_functions"
|
||||
|
||||
if [ ! -d ${KODI_DIR} ] ; then
|
||||
git_clone https://github.com/xbmc/xbmc ${KODI_BRANCH} ${KODI_DIR}
|
||||
fi
|
||||
|
||||
# p8-platform
|
||||
REPO=$(cat $KODI_DIR/cmake/addons/depends/common/p8-platform/p8-platform.txt | awk '{print $2}')
|
||||
GIT_HASH=$(cat $KODI_DIR/cmake/addons/depends/common/p8-platform/p8-platform.txt | awk '{print $3}')
|
||||
PKG_NAME="p8-platform"
|
||||
|
||||
git_clone $REPO master $PKG_NAME.git $GIT_HASH
|
||||
if [ -f ${ROOT}/packages/mediacenter/p8-platform/package.mk ] ; then
|
||||
# update package.mk
|
||||
RESOLVED_HASH=$(resolve_hash $PKG_NAME.git $GIT_HASH)
|
||||
echo "Resolving hash for ${PKG_NAME}: ${GIT_HASH} => ${RESOLVED_HASH}"
|
||||
sed -i "s|PKG_VERSION=.*|PKG_VERSION=\"$RESOLVED_HASH\"|g" ${ROOT}/packages/mediacenter/p8-platform/package.mk
|
||||
fi
|
||||
rm -rf $PKG_NAME.git
|
||||
|
||||
# kodi-platform
|
||||
REPO=$(cat $KODI_DIR/cmake/addons/depends/common/kodi-platform/kodi-platform.txt | awk '{print $2}')
|
||||
GIT_HASH=$(cat $KODI_DIR/cmake/addons/depends/common/kodi-platform/kodi-platform.txt | awk '{print $3}')
|
||||
PKG_NAME="kodi-platform"
|
||||
|
||||
git_clone $REPO master $PKG_NAME.git $GIT_HASH
|
||||
if [ -f ${ROOT}/packages/mediacenter/kodi-platform/package.mk ] ; then
|
||||
if [ -f "${ROOT}/packages/mediacenter/kodi-platform/package.mk" ] ; then
|
||||
# update package.mk
|
||||
RESOLVED_HASH=$(resolve_hash $PKG_NAME.git $GIT_HASH)
|
||||
update_pkg ${ROOT}/packages/mediacenter/kodi-platform/package.mk ${PKG_NAME} ${RESOLVED_HASH}
|
||||
update_pkg "${ROOT}/packages/mediacenter/kodi-platform" ${PKG_NAME} ${RESOLVED_HASH}
|
||||
fi
|
||||
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
||||
rm -rf $PKG_NAME.git
|
||||
fi
|
||||
rm -rf $PKG_NAME.git
|
||||
|
||||
# addons
|
||||
for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do
|
||||
@ -150,33 +60,27 @@ for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do
|
||||
|
||||
[[ ${ADDON} =~ ^game.* ]] && continue # ignore game.* addons - handled by update_retroplayer-addons
|
||||
|
||||
check_package_excluded "${ADDON}" "${EXCLUDED_PACKAGES}" && continue
|
||||
|
||||
REPO=$(cat $addon/$ADDON.txt | awk '{print $2}')
|
||||
GIT_HASH=$(cat $addon/$ADDON.txt | awk '{print $3}')
|
||||
PKG_NAME="$ADDON"
|
||||
|
||||
# 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" "$REPO" || continue
|
||||
|
||||
PROCESSED="${PROCESSED}${PKG_NAME}\n"
|
||||
|
||||
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
|
||||
git_clone $REPO ${KODI_BRANCH} $PKG_NAME.git $GIT_HASH
|
||||
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" "$REPO" || continue
|
||||
|
||||
# update package.mk
|
||||
RESOLVED_HASH=$(resolve_hash $PKG_NAME.git $GIT_HASH)
|
||||
echo "Resolving hash for ${PKG_NAME}: ${GIT_HASH} => ${RESOLVED_HASH}"
|
||||
update_pkg ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk ${PKG_NAME} ${RESOLVED_HASH}
|
||||
|
||||
rm -rf $PKG_NAME.git
|
||||
update_to_latest_tag "${ADDON_PATH}" ${ADDON} ${REPO} ${KODI_BRANCH} ${GIT_HASH}
|
||||
else
|
||||
echo "[mkpkg] Skipped $ADDON"
|
||||
SKIPPED_ADDONS="$SKIPPED_ADDONS $ADDON"
|
||||
fi
|
||||
PROCESSED="${PROCESSED}${ADDON}\n"
|
||||
done
|
||||
|
||||
echo
|
||||
@ -186,12 +90,14 @@ for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do
|
||||
done
|
||||
|
||||
# finally, any other unofficial addons
|
||||
for ADDON in $(ls -1 ${ROOT}/packages/mediacenter/kodi-binary-addons); do
|
||||
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
|
||||
|
||||
# Obtain git url - ignore if not a suitable repo
|
||||
REPO="$(geturl "${ADDON}")" || continue
|
||||
|
||||
@ -200,7 +106,11 @@ for ADDON in $(ls -1 ${ROOT}/packages/mediacenter/kodi-binary-addons); do
|
||||
# update package.mk for stale github.com packages
|
||||
RESOLVED_HASH=$(resolve_hash ${ADDON}.git HEAD) || continue
|
||||
echo "Resolving hash for ${ADDON}: HEAD => ${RESOLVED_HASH}"
|
||||
update_pkg ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk ${ADDON} ${RESOLVED_HASH}
|
||||
update_pkg "${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON" ${ADDON} ${RESOLVED_HASH}
|
||||
|
||||
rm -rf $ADDON.git
|
||||
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
||||
rm -rf $ADDON.git
|
||||
fi
|
||||
done
|
||||
|
||||
rm -rf "${TMPDIR}"
|
||||
|
198
tools/mkpkg/update_common_functions
Normal file
198
tools/mkpkg/update_common_functions
Normal file
@ -0,0 +1,198 @@
|
||||
# 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)
|
||||
|
||||
msg_color() {
|
||||
echo $(
|
||||
cd "${ROOT}"
|
||||
PROJECT=Generic ARCH=x86_64 . config/options ""
|
||||
echo $(print_color "$1" "$2")
|
||||
)
|
||||
}
|
||||
|
||||
msg_warn() {
|
||||
msg_color CLR_WARNING "$1"
|
||||
}
|
||||
|
||||
msg_error() {
|
||||
msg_color CLR_ERROR "$1"
|
||||
}
|
||||
|
||||
msg_info() {
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
git_clone() {
|
||||
# git_clone https://repo.url branch ./target_dir [githash]
|
||||
echo "[mkpkg] Checking out $1 ..."
|
||||
if [ ! -d "$3" ]; then
|
||||
git clone "$1" "$3"
|
||||
# Try to switch to specified branch if it exist, if not then use default branch
|
||||
if [ -n "$2" ]; then
|
||||
cd "$3"
|
||||
git checkout $2 >/dev/null 2>/dev/null
|
||||
cd ..
|
||||
fi
|
||||
else
|
||||
if [ -d "$3" ] ; then
|
||||
cd "$3"
|
||||
git checkout $2 >/dev/null 2>/dev/null
|
||||
git pull
|
||||
cd ..
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -z "$4" ] ; then
|
||||
cd "$3"
|
||||
git fetch >/dev/null 2>/dev/null
|
||||
git branch -D $4 >/dev/null 2>/dev/null
|
||||
git checkout $4 >/dev/null 2>/dev/null
|
||||
git checkout -b ref-$4 >/dev/null 2>/dev/null
|
||||
cd ..
|
||||
fi
|
||||
}
|
||||
|
||||
get_pkg_var() {
|
||||
local pkg_name="$1" pkg_var="$2"
|
||||
cd "${ROOT}"
|
||||
PROJECT=Generic ARCH=x86_64 source config/options ${pkg_name} &>/dev/null
|
||||
echo "${!pkg_var}"
|
||||
}
|
||||
|
||||
resolve_hash() {
|
||||
if [ -d "$1" ] ; then
|
||||
cd "$1"
|
||||
git rev-parse $2 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
resolve_tag() {
|
||||
if [ -d "$1" ] ; then
|
||||
cd "$1"
|
||||
git describe --abbrev=0 --tags $2 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
check_package_excluded() {
|
||||
local package="$1" local packages_to_exclude="$2" pkg
|
||||
[ -z "${package}" -o -z "${packages_to_exclude}" ] && return 1
|
||||
if [[ ${packages_to_exclude} =~ (^|[[:space:]])${package}($|[[:space:]]) ]]; then
|
||||
msg_info "SKIPPING excluded package ${package}"
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
||||
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}"
|
||||
}
|
||||
|
||||
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}"
|
||||
}
|
||||
|
||||
extract_pkg_file() {
|
||||
mkdir -p "${TMP_PKG_DIR}"
|
||||
tar xf "${TMP_PKG_FILE}" --strip-components=1 -C "${TMP_PKG_DIR}"
|
||||
}
|
||||
|
||||
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}"
|
||||
msg_info "BUMPED ${pkg_name} PKG_REV from ${pkg_rev} to ${new_pkg_rev}"
|
||||
}
|
||||
|
||||
update_pkg() {
|
||||
local pkg_path="$1" pkg_name="$2" pkg_version="$3"
|
||||
|
||||
local old_version pkg_url new_sha256 pkg_rev
|
||||
|
||||
old_version=$(get_pkg_var "${pkg_name}" PKG_VERSION)
|
||||
|
||||
if [ "${old_version}" != "${pkg_version}" ]; then
|
||||
[ -n "${pkg_version}" ] && set_pkg_version "${pkg_path}" "${pkg_version}"
|
||||
|
||||
download_pkg_file "${pkg_name}"
|
||||
set_pkg_sha256 "${pkg_path}"
|
||||
|
||||
if [ "${BUMP_PKG_REV}" = "yes" ]; then
|
||||
bump_pkg_rev "${pkg_path}" "${pkg_name}"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
update_to_latest_tag() {
|
||||
local pkg_path="$1" pkg_name="$2" repo="$3" branch="$4" ref="$5"
|
||||
local gitdir=${pkg_name}.git
|
||||
local resolved_version
|
||||
|
||||
git_clone "${repo}" "${branch}" "${gitdir}" "${ref}"
|
||||
|
||||
resolved_version=$(resolve_tag "${gitdir}" "${ref}")
|
||||
if [ -z "${resolved_version}" ]; then
|
||||
echo "========================================================================"
|
||||
msg_warn "WARNING: no tag found for package ${pkg_name}, falling back to HEAD"
|
||||
echo "========================================================================"
|
||||
resolved_version=$(resolve_hash "${gitdir}" "${ref}")
|
||||
fi
|
||||
|
||||
echo "Resolved version for ${pkg_name}: ${ref} => ${resolved_version}"
|
||||
|
||||
update_pkg "${pkg_path}" "${pkg_name}" "${resolved_version}"
|
||||
|
||||
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
||||
rm -rf "${gitdir}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get url in git:// notation for a package.mk, assuming it is a github.com url
|
||||
# Return 1 if not a github domain
|
||||
geturl() {
|
||||
local addon="$1"
|
||||
local domain owner repo PKG_URL
|
||||
|
||||
PKG_URL="$(get_pkg_var ${addon} PKG_URL)"
|
||||
|
||||
domain="$(echo "${PKG_URL}" | cut -d/ -f3)"
|
||||
[ "${domain}" = "github.com" ] || return 1
|
||||
|
||||
owner="$(echo "${PKG_URL}" | cut -d/ -f4)"
|
||||
repo="$(echo "${PKG_URL}" | cut -d/ -f5)"
|
||||
|
||||
echo "git://${domain}/${owner}/${repo}.git"
|
||||
return 0
|
||||
}
|
||||
|
||||
# For the specified addon, verify that the package url
|
||||
# matches the url retrieved from Kodi
|
||||
validate_pkg_url() {
|
||||
local addon="$1" url1="$2"
|
||||
local domain owner repo url2
|
||||
|
||||
domain="$(echo "${url1}" | cut -d/ -f3)"
|
||||
owner="$(echo "${url1}" | cut -d/ -f4)"
|
||||
repo="$(echo "${url1}" | cut -d/ -f5)"
|
||||
|
||||
url1="git://${domain}/${owner}/${repo}.git"
|
||||
url2="$(geturl "${addon}")"
|
||||
|
||||
[ "${url1}" = "${url2}" ] && return 0 || return 1
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,22 @@ if [ "$1" == "-f" ]; then
|
||||
shift
|
||||
fi
|
||||
|
||||
ROOT=$(cd $(dirname $0)/../.. && pwd)
|
||||
# the following environment variables can be set to "yes" to enable optional features:
|
||||
# KEEP_GIT_DIRS: don't delete cloned git directories after update check
|
||||
# BUMP_PKG_REV: bump PKG_REV if PKG_VERSION has changed
|
||||
|
||||
# list of packages to exclude from update
|
||||
EXCLUDED_PACKAGES="game.libretro.chailove
|
||||
game.libretro.fbalpha2012
|
||||
game.libretro.lutro
|
||||
game.libretro.parallel_n64
|
||||
game.libretro.pcem
|
||||
game.libretro.theodore
|
||||
game.netplay
|
||||
game.shader.presets"
|
||||
|
||||
MY_DIR="$(dirname "$0")"
|
||||
ROOT="$(cd "${MY_DIR}"/../.. && pwd)"
|
||||
TMPDIR="$(pwd)/.update-retroplayer-tmp"
|
||||
TMP_PKG_FILE="${TMPDIR}/package.tar.gz"
|
||||
TMP_PKG_DIR="${TMPDIR}/package"
|
||||
@ -18,93 +33,10 @@ TMP_PKG_DIR="${TMPDIR}/package"
|
||||
rm -rf "${TMPDIR}"
|
||||
mkdir -p "${TMPDIR}"
|
||||
|
||||
git_clone() {
|
||||
# git_clone https://repo.url branch ./target_dir [githash]
|
||||
echo "[mkpkg] Checking out $1 ..."
|
||||
if [ ! -d "$3" ]; then
|
||||
git clone --single-branch --depth=1 --recursive "$1" -b $2 "$3"
|
||||
else
|
||||
if [ -d "$3" ] ; then
|
||||
cd "$3"
|
||||
git checkout $2 >/dev/null 2>/dev/null
|
||||
git pull
|
||||
cd ..
|
||||
fi
|
||||
fi
|
||||
if [ ! -z "$4" ] ; then
|
||||
cd "$3"
|
||||
git fetch >/dev/null 2>/dev/null
|
||||
git branch -D $4 >/dev/null 2>/dev/null
|
||||
git checkout $4 >/dev/null 2>/dev/null
|
||||
git checkout -b ref-$4 >/dev/null 2>/dev/null
|
||||
cd ..
|
||||
fi
|
||||
}
|
||||
|
||||
get_pkg_var() {
|
||||
local pkg_name="$1" pkg_var="$2"
|
||||
cd ${ROOT}
|
||||
PROJECT=Generic ARCH=x86_64 source config/options ${pkg_name} &>/dev/null
|
||||
echo "${!pkg_var}"
|
||||
}
|
||||
|
||||
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}"
|
||||
}
|
||||
|
||||
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}"
|
||||
}
|
||||
|
||||
extract_pkg_file() {
|
||||
mkdir -p "${TMP_PKG_DIR}"
|
||||
tar xf "${TMP_PKG_FILE}" --strip-components=1 -C "${TMP_PKG_DIR}"
|
||||
}
|
||||
|
||||
cleanup_pkg_tmp() {
|
||||
rm -rf "${TMP_PKG_FILE}" "${TMP_PKG_DIR}"
|
||||
}
|
||||
|
||||
msg_color() {
|
||||
echo $(
|
||||
cd "${ROOT}"
|
||||
PROJECT=Generic ARCH=x86_64 . config/options ""
|
||||
echo $(print_color "$1" "$2")
|
||||
)
|
||||
}
|
||||
|
||||
msg_warn() {
|
||||
msg_color CLR_WARNING "$1"
|
||||
}
|
||||
|
||||
msg_error() {
|
||||
msg_color CLR_ERROR "$1"
|
||||
}
|
||||
|
||||
msg_info() {
|
||||
echo "$1"
|
||||
}
|
||||
|
||||
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}"
|
||||
msg_info "BUMPED ${pkg_name} PKG_REV from ${pkg_rev} to ${new_pkg_rev}"
|
||||
}
|
||||
. "${MY_DIR}/update_common_functions"
|
||||
|
||||
# addons
|
||||
for addontxt in "binary-addons https://github.com/kodi-game/repo-binary-addons.git retroplayer" ; do
|
||||
for addontxt in "game-binary-addons https://github.com/kodi-game/repo-binary-addons.git retroplayer" ; do
|
||||
ADDONS=$(echo $addontxt | awk '{print $1}')
|
||||
ADDONREPO=$(echo $addontxt | awk '{print $2}')
|
||||
GIT_HASH=$(echo $addontxt | awk '{print $3}')
|
||||
@ -115,10 +47,14 @@ for addontxt in "binary-addons https://github.com/kodi-game/repo-binary-addons.g
|
||||
|
||||
[[ "${GAME_ADDON}" =~ ^game. ]] || continue
|
||||
|
||||
check_package_excluded "${GAME_ADDON}" "${EXCLUDED_PACKAGES}" && continue
|
||||
|
||||
if ! grep -q all $addon/platforms.txt && ! grep -q linux $addon/platforms.txt && ! grep -q ! $addon/platforms.txt; then
|
||||
continue
|
||||
fi
|
||||
|
||||
GAME_GIT_DIR="${GAME_ADDON}.git"
|
||||
GAME_GIT_REPO=$(cat $addon/${GAME_ADDON}.txt | awk '{print $2}')
|
||||
GAME_GIT_BRANCH=$(cat $addon/${GAME_ADDON}.txt | awk '{print $3}')
|
||||
GAME_PATH="${ROOT}/packages/mediacenter/kodi-binary-addons/${GAME_ADDON}"
|
||||
|
||||
@ -140,17 +76,30 @@ for addontxt in "binary-addons https://github.com/kodi-game/repo-binary-addons.g
|
||||
BUMPED=""
|
||||
CHECK_RETRO=""
|
||||
|
||||
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}')
|
||||
git_clone "${GAME_GIT_REPO}" "${GAME_GIT_BRANCH}" "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}"
|
||||
GAME_NEW_VERSION=$(resolve_tag "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}")
|
||||
if [ -z "${GAME_NEW_VERSION}" ]; then
|
||||
echo "========================================================================"
|
||||
msg_warn "WARNING: no tag found for addon ${GAME_ADDON}, falling back to HEAD"
|
||||
echo "========================================================================"
|
||||
GAME_NEW_VERSION=$(resolve_hash "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}")
|
||||
fi
|
||||
|
||||
if [ "${GAME_VERSION}" != "${GAME_NEW_HASH}" ]; then
|
||||
BUMPED="yes"
|
||||
if [ "${KEEP_GIT_DIRS}" != "yes" ]; then
|
||||
rm -rf "${GAME_GIT_DIR}"
|
||||
fi
|
||||
|
||||
GAME_VERSION=$(get_pkg_var "${GAME_ADDON}" PKG_VERSION)
|
||||
|
||||
if [ "${GAME_VERSION}" != "${GAME_NEW_VERSION}" ]; then
|
||||
if [ "${BUMP_PKG_REV}" = "yes" ]; then
|
||||
BUMPED="yes"
|
||||
fi
|
||||
[ -n "${RETRO_NAME}" ] && CHECK_RETRO="yes"
|
||||
set_pkg_version "${GAME_PATH}" "${GAME_NEW_HASH}"
|
||||
set_pkg_version "${GAME_PATH}" "${GAME_NEW_VERSION}"
|
||||
download_pkg_file "${GAME_ADDON}"
|
||||
set_pkg_sha256 "${GAME_PATH}"
|
||||
msg_info "UPDATED ${GAME_ADDON} from ${GAME_VERSION} to ${GAME_NEW_HASH}"
|
||||
msg_info "UPDATED ${GAME_ADDON} from ${GAME_VERSION} to ${GAME_NEW_VERSION}"
|
||||
fi
|
||||
|
||||
if [ -n "${FORCE_LIBRETRO_BUMP}" -a -n "${RETRO_NAME}" -a -z "${CHECK_RETRO}" ]; then
|
||||
|
Loading…
x
Reference in New Issue
Block a user