From 3e97dce6c5a74a5ec80fdfce6a80cc1cdfa1ed9d Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Thu, 11 Jul 2019 19:11:45 +0200 Subject: [PATCH] addon update scripts: change PKG_REV update logic When updating versioned / tagged addons reset PKG_REV to 1. When updating unversioned / untagged addons always bump PKG_REV as we don't know if the version has been changed or not. If the "-b/--bump-pkg-rev" option is used PKG_REV will be bumped on all addons that weren't updated. Use this to ensure all addons will have a newer version than before. Signed-off-by: Matthias Reichl --- tools/mkpkg/update_binary-addons | 7 ++++-- tools/mkpkg/update_common_functions | 28 ++++++++++++++++++++---- tools/mkpkg/update_retroplayer-addons | 31 ++++++++++++++++++++------- 3 files changed, 52 insertions(+), 14 deletions(-) diff --git a/tools/mkpkg/update_binary-addons b/tools/mkpkg/update_binary-addons index fadf909c0e..0565548943 100755 --- a/tools/mkpkg/update_binary-addons +++ b/tools/mkpkg/update_binary-addons @@ -75,7 +75,7 @@ git_clone $REPO master $PKG_NAME.git $GIT_HASH 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" ${PKG_NAME} ${RESOLVED_HASH} + update_pkg "${ROOT}/packages/mediacenter/kodi-platform" ${PKG_NAME} ${RESOLVED_HASH} || true fi if [ "${KEEP_GIT_DIRS}" != "yes" ]; then rm -rf $PKG_NAME.git @@ -138,7 +138,10 @@ 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" ${ADDON} ${RESOLVED_HASH} + if update_pkg "${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON" ${ADDON} ${RESOLVED_HASH}; then + # always bump PKG_REV when updating untagged addons + bump_pkg_rev "${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON" ${ADDON} + fi if [ "${KEEP_GIT_DIRS}" != "yes" ]; then rm -rf $ADDON.git diff --git a/tools/mkpkg/update_common_functions b/tools/mkpkg/update_common_functions index 1f37736a99..2d0e124446 100644 --- a/tools/mkpkg/update_common_functions +++ b/tools/mkpkg/update_common_functions @@ -118,6 +118,15 @@ bump_pkg_rev() { 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_rev=$(get_pkg_var "${pkg_name}" PKG_REV) + local new_pkg_rev="1" + + 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}" +} + update_pkg() { local pkg_path="$1" pkg_name="$2" pkg_version="$3" @@ -131,9 +140,9 @@ update_pkg() { download_pkg_file "${pkg_name}" set_pkg_sha256 "${pkg_path}" - if [ "${BUMP_PKG_REV}" = "yes" ]; then - bump_pkg_rev "${pkg_path}" "${pkg_name}" - fi + return 0 + else + return 1 fi } @@ -141,11 +150,13 @@ 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 + local no_tag="" git_clone "${repo}" "${branch}" "${gitdir}" "${ref}" resolved_version=$(resolve_tag "${gitdir}" "${ref}") if [ -z "${resolved_version}" ]; then + no_tag="yes" echo "========================================================================" msg_warn "WARNING: no tag found for package ${pkg_name}, falling back to HEAD" echo "========================================================================" @@ -154,7 +165,16 @@ update_to_latest_tag() { echo "Resolved version for ${pkg_name}: ${ref} => ${resolved_version}" - update_pkg "${pkg_path}" "${pkg_name}" "${resolved_version}" + if update_pkg "${pkg_path}" "${pkg_name}" "${resolved_version}"; then + if [ -n "${no_tag}" ]; then + # always bump PKG_REV on updates as we have no info if version changed + bump_pkg_rev "${pkg_path}" "${pkg_name}" + else + reset_pkg_rev "${pkg_path}" "${pkg_name}" + fi + else + [ "${BUMP_PKG_REV}" = "yes" ] && bump_pkg_rev "${pkg_path}" "${pkg_name}" + fi if [ "${KEEP_GIT_DIRS}" != "yes" ]; then rm -rf "${gitdir}" diff --git a/tools/mkpkg/update_retroplayer-addons b/tools/mkpkg/update_retroplayer-addons index d29a4d039c..48e7ca224f 100755 --- a/tools/mkpkg/update_retroplayer-addons +++ b/tools/mkpkg/update_retroplayer-addons @@ -116,12 +116,15 @@ for addontxt in "game-binary-addons https://github.com/kodi-game/repo-binary-add RETRO_PATH="" fi - BUMPED="" + BUMPED_ADDON="" + BUMPED_RETRO="" + NO_TAG="" CHECK_RETRO="" 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 + NO_TAG="yes" echo "========================================================================" msg_warn "WARNING: no tag found for addon ${GAME_ADDON}, falling back to HEAD" echo "========================================================================" @@ -135,9 +138,7 @@ for addontxt in "game-binary-addons https://github.com/kodi-game/repo-binary-add 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 + BUMPED_ADDON="yes" [ -n "${RETRO_NAME}" ] && CHECK_RETRO="yes" set_pkg_version "${GAME_PATH}" "${GAME_NEW_VERSION}" download_pkg_file "${GAME_ADDON}" @@ -181,7 +182,7 @@ for addontxt in "game-binary-addons https://github.com/kodi-game/repo-binary-add fi if [ "${RETRO_VERSION}" != "${RETRO_NEW_HASH}" ]; then - BUMPED="yes" + BUMPED_RETRO="yes" set_pkg_version "${RETRO_PATH}" "${RETRO_NEW_HASH}" download_pkg_file "${RETRO_ADDON}" set_pkg_sha256 "${RETRO_PATH}" @@ -189,10 +190,24 @@ for addontxt in "game-binary-addons https://github.com/kodi-game/repo-binary-add fi fi - if [ -n "${BUMPED}" ]; then - bump_pkg_rev "${GAME_PATH}" "${GAME_ADDON}" - cleanup_pkg_tmp + if [ -n "${NO_TAG}" ]; then + # always bump PKG_REV on updates as we have no info if version changed + if [ -n "${BUMPED_ADDON}" -o -n "${BUMPED_RETRO}" -o -n "${BUMP_PKG_REV}" ]; then + bump_pkg_rev "${GAME_PATH}" "${GAME_ADDON}" + fi + else + if [ -n "${BUMPED_ADDON}" ]; then + # reset PKG_REV if version changed + reset_pkg_rev "${GAME_PATH}" "${GAME_ADDON}" + else + # if addon version is unchanged but libretro changed bump PKG_REV + if [ -n "${BUMPED_RETRO}" -o -n "${BUMP_PKG_REV}" ]; then + bump_pkg_rev "${GAME_PATH}" "${GAME_ADDON}" + fi + fi fi + + cleanup_pkg_tmp done done