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 <hias@horus.com>
This commit is contained in:
Matthias Reichl 2019-07-11 19:11:45 +02:00
parent 7cf95c6b99
commit 3e97dce6c5
3 changed files with 52 additions and 14 deletions

View File

@ -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

View File

@ -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}"

View File

@ -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