mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-24 11:16:51 +00:00
update_retroplayer-addons: make script more robust
Only auto-update libretro packages with explicit githash and handle repository / PKG_URL changes automatically. Signed-off-by: Matthias Reichl <hias@horus.com>
This commit is contained in:
parent
52cf225b44
commit
02121b7274
@ -42,21 +42,21 @@ git_clone() {
|
||||
get_pkg_var() {
|
||||
local pkg_name="$1" pkg_var="$2"
|
||||
cd "${ROOT}"
|
||||
PROJECT="${PROJECT:-Generic}" ARCH="${ARCH:-x86_64}" source config/options ${pkg_name} &>/dev/null
|
||||
PROJECT="${PROJECT:-Generic}" ARCH="${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
|
||||
git rev-parse "$2" 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
resolve_hash_in_branch() {
|
||||
if [ -d "$1" ] ; then
|
||||
cd "$1"
|
||||
git rev-parse origin/$2 2>/dev/null
|
||||
git rev-parse "origin/$2" 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ resolve_tag_in_branch() {
|
||||
local tag tags
|
||||
if [ -d "$1" ] ; then
|
||||
cd "$1"
|
||||
tag=$(git describe --abbrev=0 --tags origin/$2 2>/dev/null)
|
||||
tag=$(git describe --abbrev=0 --tags "origin/$2" 2>/dev/null)
|
||||
if [ -z "${tag}" ]; then
|
||||
return
|
||||
fi
|
||||
@ -114,7 +114,7 @@ EOF
|
||||
}
|
||||
|
||||
check_package_excluded() {
|
||||
local package="$1" local packages_to_exclude="$2" pkg
|
||||
local package="$1" 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}"
|
||||
@ -123,9 +123,14 @@ check_package_excluded() {
|
||||
return 1
|
||||
}
|
||||
|
||||
# args: path var value
|
||||
set_pkg_var() {
|
||||
local package_mk="$1/package.mk" pkg_var="$2" pkg_value="$3"
|
||||
sed -e "s|${pkg_var}=.*|${pkg_var}=\"${pkg_value}\"|" -i "${package_mk}"
|
||||
}
|
||||
|
||||
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}"
|
||||
set_pkg_var "$1" "PKG_VERSION" "$2"
|
||||
}
|
||||
|
||||
download_pkg_file() {
|
||||
@ -144,26 +149,25 @@ cleanup_pkg_tmp() {
|
||||
}
|
||||
|
||||
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}"
|
||||
set_pkg_var "$1" "PKG_SHA256" "${new_sha256}"
|
||||
}
|
||||
|
||||
bump_pkg_rev() {
|
||||
local package_mk="$1/package.mk" pkg_name="$2"
|
||||
local pkg_name="$2"
|
||||
local pkg_rev=$(get_pkg_var "${pkg_name}" PKG_REV)
|
||||
local new_pkg_rev=$((${pkg_rev}+1))
|
||||
local new_pkg_rev=$((pkg_rev+1))
|
||||
set_pkg_var "$1" "PKG_REV" "${new_pkg_rev}"
|
||||
|
||||
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}"
|
||||
}
|
||||
|
||||
reset_pkg_rev() {
|
||||
local package_mk="$1/package.mk" pkg_name="$2"
|
||||
local pkg_name="$2"
|
||||
local pkg_rev=$(get_pkg_var "${pkg_name}" PKG_REV)
|
||||
local new_pkg_rev="1"
|
||||
set_pkg_var "$1" "PKG_REV" "${new_pkg_rev}"
|
||||
|
||||
sed -e "s|PKG_REV=.*|PKG_REV=\"${new_pkg_rev}\"|" -i "${package_mk}"
|
||||
msg_info "RESET ${pkg_name} PKG_REV from ${pkg_rev} to ${new_pkg_rev}"
|
||||
}
|
||||
|
||||
@ -188,13 +192,44 @@ update_pkg() {
|
||||
fi
|
||||
}
|
||||
|
||||
update_pkg_and_url() {
|
||||
local pkg_path="$1" pkg_name="$2" pkg_version="$3" pkg_url="$4"
|
||||
local old_version old_url new_sha256
|
||||
local changed=0
|
||||
|
||||
old_url=$(grep "^PKG_URL=" "${pkg_path}/package.mk" | sed -e 's|^PKG_URL="||' -e 's|"$||')
|
||||
|
||||
if [ "${old_url}" != "${pkg_url}" ]; then
|
||||
set_pkg_var "${pkg_path}" "PKG_URL" "${pkg_url}"
|
||||
msg_info "CHANGED ${pkg_name} PKG_URL from ${old_url} to ${pkg_url}"
|
||||
changed=1
|
||||
fi
|
||||
|
||||
old_version=$(get_pkg_var "${pkg_name}" PKG_VERSION)
|
||||
|
||||
if [ "${old_version}" != "${pkg_version}" ]; then
|
||||
set_pkg_var "${pkg_path}" "PKG_VERSION" "${pkg_version}"
|
||||
msg_info "UPDATED ${pkg_name} from ${old_version} to ${pkg_version}"
|
||||
changed=1
|
||||
fi
|
||||
|
||||
if [ $changed -eq 1 ]; then
|
||||
download_pkg_file "${pkg_name}"
|
||||
set_pkg_sha256 "${pkg_path}"
|
||||
|
||||
return 0
|
||||
else
|
||||
return 1
|
||||
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)"
|
||||
PKG_URL="$(get_pkg_var "${addon}" PKG_URL)"
|
||||
|
||||
domain="$(echo "${PKG_URL}" | cut -d/ -f3)"
|
||||
[ "${domain}" = "github.com" ] || return 1
|
||||
|
@ -180,7 +180,6 @@ for addon in ${ADDONS_DIR}/*.*/ ; do
|
||||
exit 1
|
||||
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"
|
||||
@ -192,24 +191,19 @@ for addon in ${ADDONS_DIR}/*.*/ ; do
|
||||
fi
|
||||
|
||||
VERSION_INFO=$(grep "^${RETRO_NAME}" "${RETRO_VERSION_FILE}" | head -1)
|
||||
if [[ "$VERSION_INFO" =~ github\.com/[^/]+/[^/]+/archive/[^/]+\.zip$ ]] ; then
|
||||
if [[ "$VERSION_INFO" =~ github\.com/[^/]+/[^/]+/archive/[^/]+\.tar\..*$ ]] ; then
|
||||
# version referenced by githash
|
||||
RETRO_NEW_VERSION=$(sed -e 's|^.*/archive/||' -e 's|\.zip$||' "${RETRO_VERSION_FILE}")
|
||||
elif [[ "$VERSION_INFO" =~ github\.com/[^/]+/[^/]+/archive/[^/]+\.tar\.gz$ ]] ; then
|
||||
# version referenced by githash
|
||||
RETRO_NEW_VERSION=$(sed -e 's|^.*/archive/||' -e 's|\.tar.gz$||' "${RETRO_VERSION_FILE}")
|
||||
elif [[ "$VERSION_INFO" =~ github\.com/[^/[:space:]]+/[^/[:space:]]+[[:space:]][^[:space:]]+ ]] ; then
|
||||
msg_warn "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_VERSION=$(git ls-remote "${RETRO_SITE}" "${RETRO_BRANCH}" | awk '{print $1}')
|
||||
RETRO_NEW_VERSION=$(echo "${VERSION_INFO}" | sed -E -e 's|^(.+/archive/)([^/]+)(\.tar.*)$|\2|')
|
||||
RETRO_NEW_REPO=$(echo "${VERSION_INFO}" | sed -E -e 's|^(.+github\.com/)([^/]+/[^/]+)(/archive/.*)$|\2|')
|
||||
RETRO_NEW_URL="https://github.com/${RETRO_NEW_REPO}/archive/\${PKG_VERSION}.tar.gz"
|
||||
else
|
||||
msg_warn "UNSUPPORTED ${RETRO_ADDON} version info, update manually: ${VERSION_INFO}"
|
||||
RETRO_NEW_VERSION=""
|
||||
RETRO_NEW_REPO=""
|
||||
RETRO_NEW_URL=""
|
||||
fi
|
||||
|
||||
if [ -n "${RETRO_NEW_VERSION}" ] && update_pkg "${RETRO_PATH}" "${RETRO_ADDON}" "${RETRO_NEW_VERSION}"; then
|
||||
if [ -n "${RETRO_NEW_VERSION}" ] && update_pkg_and_url "${RETRO_PATH}" "${RETRO_ADDON}" "${RETRO_NEW_VERSION}" "${RETRO_NEW_URL}"; then
|
||||
BUMPED_RETRO="yes"
|
||||
fi
|
||||
fi
|
||||
|
Loading…
x
Reference in New Issue
Block a user