From 477b1fd9d31e41480b5fee6b9b41db5e75a119b0 Mon Sep 17 00:00:00 2001 From: Portisch Date: Mon, 20 Sep 2021 12:55:51 +0200 Subject: [PATCH 1/8] update_common_functions: allow assigning PROJECT and ARCH values --- tools/mkpkg/update_common_functions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/mkpkg/update_common_functions b/tools/mkpkg/update_common_functions index 41ac0708c7..9be63de908 100644 --- a/tools/mkpkg/update_common_functions +++ b/tools/mkpkg/update_common_functions @@ -5,7 +5,7 @@ msg_color() { echo $( cd "${ROOT}" - PROJECT=Generic ARCH=x86_64 . config/options "" + PROJECT="${PROJECT:-Generic}" ARCH="${ARCH:-x86_64}" . config/options "" echo $(print_color "$1" "$2") ) } @@ -42,7 +42,7 @@ git_clone() { get_pkg_var() { local pkg_name="$1" pkg_var="$2" cd "${ROOT}" - PROJECT=Generic 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}" } From e75a88aa4c3ab7991e25c264e2c383302873a700 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Fri, 24 Sep 2021 13:28:35 +0200 Subject: [PATCH 2/8] update_retroplayer-addons: support tar.gz archive links game addons have (mostly?) switched from zip to tar.gz links, add support for extracting the version info from these as well to fix game addon updates. Signed-off-by: Matthias Reichl --- tools/mkpkg/update_retroplayer-addons | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/mkpkg/update_retroplayer-addons b/tools/mkpkg/update_retroplayer-addons index 428f08c273..463338ef45 100755 --- a/tools/mkpkg/update_retroplayer-addons +++ b/tools/mkpkg/update_retroplayer-addons @@ -160,6 +160,9 @@ for addon in ${ADDONS_DIR}/*.*/ ; do if [[ "$VERSION_INFO" =~ .zip$ ]] ; then # version referenced by githash RETRO_NEW_VERSION=$(sed -e 's|^.*/archive/||' -e 's|\.zip$||' "${RETRO_VERSION_FILE}") + elif [[ "$VERSION_INFO" =~ .tar.gz$ ]] ; then + # version referenced by githash + RETRO_NEW_VERSION=$(sed -e 's|^.*/archive/||' -e 's|\.tar.gz$||' "${RETRO_VERSION_FILE}") else msg_warn "unmanaged version in kodi package: ${VERSION_INFO}" # unmanaged version, repo plus branch From 3d59376eda28210f2dbef6b8be7c0c778e472c26 Mon Sep 17 00:00:00 2001 From: Portisch Date: Wed, 22 Sep 2021 11:33:34 +0200 Subject: [PATCH 3/8] update binary addons scripts: implement GITHUB_API_TOKEN alternative When environment variable GITHUB_API_TOKEN like in ${HOME}/.${DISTRO,,}/options is assigned the script will fetch all data direct from Github instead clone every single package. --- tools/mkpkg/update_binary-addons | 64 ++++++++++++++++++++++----- tools/mkpkg/update_common_functions | 29 +++++++++++- tools/mkpkg/update_retroplayer-addons | 23 ++++++++-- 3 files changed, 101 insertions(+), 15 deletions(-) diff --git a/tools/mkpkg/update_binary-addons b/tools/mkpkg/update_binary-addons index 5fd1b67dd4..196db818c2 100755 --- a/tools/mkpkg/update_binary-addons +++ b/tools/mkpkg/update_binary-addons @@ -68,10 +68,33 @@ fi . "${MY_DIR}/update_common_functions" -git_clone https://github.com/xbmc/xbmc ${KODI_DIR} ${KODI_BRANCH} +get_gh_token + +if [ -z "${GITHUB_API_TOKEN}" ]; then + git_clone https://github.com/xbmc/xbmc ${KODI_DIR} ${KODI_BRANCH} + ADDONS_REPO_LOCATION="${KODI_DIR}/cmake/addons/bootstrap/repositories" +else + # check if depends are available + command -v curl >/dev/null 2>&1 || die "please install curl" + command -v jq >/dev/null 2>&1 || die "please install jq" + + TMP_REPO_DIR="${TMPDIR}/bootstrap-repos" + + curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \ + "https://api.github.com/repos/xbmc/xbmc/contents/cmake/addons/bootstrap/repositories?ref=${KODI_BRANCH}" | awk \ + '/download_url/ { gsub("\"|,", "", $2); system("mkdir -p '${TMP_REPO_DIR}'; (cd '${TMP_REPO_DIR}'; curl -O "$2")"); }' \ + 2>/dev/null + ADDONS_REPO_LOCATION=${TMP_REPO_DIR} +fi + +if ! ls ${ADDONS_REPO_LOCATION}/*-addons.txt &> /dev/null; then + echo "No binary addon repo description found, nothing to do!" + echo "Path searched: ${ADDONS_REPO_LOCATION}" + exit 0 +fi # addons -for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do +for addontxt in ${ADDONS_REPO_LOCATION}/*-addons.txt ; do ADDONS=$(cat $addontxt | awk '{print $1}') ADDONS_GIT_DIR="${ADDONS}.git" ADDONS_GIT_REPO=$(cat $addontxt | awk '{print $2}') @@ -99,16 +122,26 @@ for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do # If different, ignore the addon and process it later as an "unofficial" addon validate_pkg_url "${ADDON}" "${GIT_REPO}" || continue - git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH} - NO_TAG="" - NEW_VERSION=$(resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH}) + if [ -z "${GITHUB_API_TOKEN}" ]; then + git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH} + PARAMS="resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH}" + else + PARAMS="resolve_tag_on_gh ${GIT_REPO} ${GIT_BRANCH}" + fi + NEW_VERSION=$(${PARAMS}) + if [ -z "${NEW_VERSION}" ]; then NO_TAG="yes" echo "========================================================================" msg_warn "WARNING: no tag found for addon ${ADDON}, falling back to HEAD" echo "========================================================================" - NEW_VERSION=$(resolve_hash_in_branch "${GIT_DIR}" "${GIT_BRANCH}") + if [ -z "${GITHUB_API_TOKEN}" ]; then + PARAMS="resolve_hash_in_branch ${GIT_DIR} ${GIT_BRANCH}" + else + PARAMS="resolve_hash_on_gh ${GIT_REPO} ${GIT_BRANCH}" + fi + NEW_VERSION=$(${PARAMS}) fi echo "Resolved version for ${ADDON}: ${GIT_BRANCH} => ${NEW_VERSION}" @@ -125,7 +158,7 @@ for addontxt in $KODI_DIR/cmake/addons/bootstrap/repositories/*-addons.txt ; do fi if [ "${KEEP_GIT_DIRS}" != "yes" ]; then - rm -rf "${GIT_DIR}" + [ -d "${GIT_DIR}" ] && rm -rf "${GIT_DIR}" fi else echo "[mkpkg] Skipped $ADDON" @@ -154,11 +187,18 @@ for ADDON in $(ls -1 "${ROOT}/packages/mediacenter/kodi-binary-addons"); do GIT_DIR="${ADDON}.git" GIT_REPO="$(geturl "${ADDON}")" || continue - git_clone ${GIT_REPO} ${GIT_DIR} + if [ -z "${GITHUB_API_TOKEN}" ]; then + git_clone ${GIT_REPO} ${GIT_DIR} + RESOLVE_UNOFFICIAL_BRANCH="resolve_hash_in_branch ${ADDON}.git ${UNOFFICIAL_ADDON_BRANCH}" + RESOLVE_HEAD="resolve_hash_in_branch ${ADDON}.git HEAD" + else + RESOLVE_UNOFFICIAL_BRANCH="resolve_hash_on_gh ${GIT_REPO%.git} ${UNOFFICIAL_ADDON_BRANCH}" + RESOLVE_HEAD="resolve_hash_on_gh ${GIT_REPO%.git} HEAD" + fi - if RESOLVED_HASH=$(resolve_hash_in_branch ${ADDON}.git ${UNOFFICIAL_ADDON_BRANCH}); then + if RESOLVED_HASH=$(${RESOLVE_UNOFFICIAL_BRANCH}); then echo "Resolved hash for ${ADDON}: ${UNOFFICIAL_ADDON_BRANCH} => ${RESOLVED_HASH}" - elif RESOLVED_HASH=$(resolve_hash_in_branch ${ADDON}.git HEAD); then + elif RESOLVED_HASH=$(${RESOLVE_HEAD}); then echo "Resolved hash for ${ADDON}: HEAD => ${RESOLVED_HASH}" else msg_warn "WARNING: Could not resolve hash for ${ADDON}" @@ -173,8 +213,10 @@ for ADDON in $(ls -1 "${ROOT}/packages/mediacenter/kodi-binary-addons"); do fi if [ "${KEEP_GIT_DIRS}" != "yes" ]; then - rm -rf ${GIT_DIR} + [ -d "${GIT_DIR}" ] && rm -rf ${GIT_DIR} fi done rm -rf "${TMPDIR}" + +[ -d "${TMP_REPO_DIR}" ] && rm -rf "${TMP_REPO_DIR}" diff --git a/tools/mkpkg/update_common_functions b/tools/mkpkg/update_common_functions index 9be63de908..89db7c20bf 100644 --- a/tools/mkpkg/update_common_functions +++ b/tools/mkpkg/update_common_functions @@ -60,6 +60,12 @@ resolve_hash_in_branch() { fi } +resolve_hash_on_gh() { + curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \ + -H "Accept: application/vnd.github.VERSION.sha" \ + "${1/*github.com/https:\/\/api.github.com\/repos}/commits/$2" +} + resolve_tag_in_branch() { local tag if [ -d "$1" ] ; then @@ -75,6 +81,22 @@ resolve_tag_in_branch() { fi } +resolve_tag_on_gh() { + local tag + + tag=$(curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \ + "${1/*github.com/https:\/\/api.github.com\/repos}/releases" | \ + jq -r '[.[] | select(.target_commitish == "'$2'")][0].tag_name | select (.!=null)') + + if [ -z "$tag" ] ; then + tag=$(curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \ + "${1/*github.com/https:\/\/api.github.com\/repos}/tags" | \ + jq -r '[.[] | select(.name | contains("'$2'"))][0].name | select (.!=null)') + fi + + echo "$tag" +} + check_package_excluded() { local package="$1" local packages_to_exclude="$2" pkg [ -z "${package}" -o -z "${packages_to_exclude}" ] && return 1 @@ -183,5 +205,10 @@ validate_pkg_url() { [ "${url1}" = "${url2}" ] && return 0 || return 1 } - +# Get user Github token if available +get_gh_token() { + if [ -z "${GITHUB_API_TOKEN}" ]; then + GITHUB_API_TOKEN=$(get_pkg_var "" GITHUB_API_TOKEN) + fi +} diff --git a/tools/mkpkg/update_retroplayer-addons b/tools/mkpkg/update_retroplayer-addons index 463338ef45..c4944e1567 100755 --- a/tools/mkpkg/update_retroplayer-addons +++ b/tools/mkpkg/update_retroplayer-addons @@ -73,6 +73,14 @@ mkdir -p "${TMPDIR}" . "${MY_DIR}/update_common_functions" +get_gh_token + +# check if depends are available +if [ -n "${GITHUB_API_TOKEN}" ]; then + command -v curl >/dev/null 2>&1 || die "please install curl" + command -v jq >/dev/null 2>&1 || die "please install jq" +fi + ADDONS="game-binary-addons" ADDONS_DIR="${ADDONS}.git" ADDONS_REPO="https://github.com/kodi-game/repo-binary-addons.git" @@ -114,14 +122,23 @@ for addon in ${ADDONS_DIR}/*.*/ ; do NO_TAG="" CHECK_RETRO="" - git_clone "${GAME_GIT_REPO}" "${GAME_GIT_DIR}" - GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" "*-${KODI_BRANCH}") + if [ -z "$GITHUB_API_TOKEN" ]; then + git_clone "${GAME_GIT_REPO}" "${GAME_GIT_DIR}" + GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" "*-${KODI_BRANCH}") + else + GAME_NEW_VERSION=$(resolve_tag_on_gh "${GAME_GIT_REPO}" "-${KODI_BRANCH}") + fi + 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 "========================================================================" - GAME_NEW_VERSION=$(resolve_hash_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}") + if [ -z "$GITHUB_API_TOKEN" ]; then + GAME_NEW_VERSION=$(resolve_hash_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}") + else + GAME_NEW_VERSION=$(resolve_hash_on_gh "${GAME_GIT_REPO}" "${GAME_GIT_BRANCH}") + fi fi if [ "${KEEP_GIT_DIRS}" != "yes" ]; then From 7a95a37153653c2ade3f1eebf44cb6d19790df9f Mon Sep 17 00:00:00 2001 From: Portisch Date: Mon, 4 Oct 2021 11:33:02 +0200 Subject: [PATCH 4/8] update_binary-addons: remove ADDONS_GIT_DIR if delete git dirs is set --- tools/mkpkg/update_binary-addons | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/mkpkg/update_binary-addons b/tools/mkpkg/update_binary-addons index 196db818c2..fa9f2fb520 100755 --- a/tools/mkpkg/update_binary-addons +++ b/tools/mkpkg/update_binary-addons @@ -167,6 +167,10 @@ for addontxt in ${ADDONS_REPO_LOCATION}/*-addons.txt ; do PROCESSED="${PROCESSED}${ADDON}\n" done + if [ "${KEEP_GIT_DIRS}" != "yes" ]; then + [ -d "${ADDONS_GIT_DIR}" ] && rm -rf "${ADDONS_GIT_DIR}" + fi + echo echo "The following addons were skipped, please add packages for these addons:" echo "[${SKIPPED_ADDONS}]" From adbfe62cbef5ab26c0d23d4d6b88276d093e9406 Mon Sep 17 00:00:00 2001 From: Portisch Date: Wed, 13 Oct 2021 10:35:55 +0200 Subject: [PATCH 5/8] update scripts: rework tag fetching with GitHub API Use GitHub GraphQL API to sort fetched tags by date instead by version number. --- tools/mkpkg/update_binary-addons | 4 +++- tools/mkpkg/update_common_functions | 28 ++++++++++++++++++--------- tools/mkpkg/update_retroplayer-addons | 4 +++- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/tools/mkpkg/update_binary-addons b/tools/mkpkg/update_binary-addons index fa9f2fb520..4412dbb06d 100755 --- a/tools/mkpkg/update_binary-addons +++ b/tools/mkpkg/update_binary-addons @@ -127,7 +127,9 @@ for addontxt in ${ADDONS_REPO_LOCATION}/*-addons.txt ; do git_clone ${GIT_REPO} ${GIT_DIR} ${GIT_BRANCH} PARAMS="resolve_tag_in_branch ${GIT_DIR} ${GIT_BRANCH}" else - PARAMS="resolve_tag_on_gh ${GIT_REPO} ${GIT_BRANCH}" + REPO=$(basename "${GIT_REPO}") + OWNER=$(basename "${GIT_REPO%/${REPO}*}") + PARAMS="resolve_tag_on_gh ${OWNER} ${REPO} ${GIT_BRANCH}" fi NEW_VERSION=$(${PARAMS}) diff --git a/tools/mkpkg/update_common_functions b/tools/mkpkg/update_common_functions index 89db7c20bf..7ae5a7d499 100644 --- a/tools/mkpkg/update_common_functions +++ b/tools/mkpkg/update_common_functions @@ -84,17 +84,27 @@ resolve_tag_in_branch() { resolve_tag_on_gh() { local tag - tag=$(curl -s -L -H "Authorization: token ${GITHUB_API_TOKEN}" \ - "${1/*github.com/https:\/\/api.github.com\/repos}/releases" | \ - jq -r '[.[] | select(.target_commitish == "'$2'")][0].tag_name | select (.!=null)') + local QUERY=$(tr '\n' ' ' < Date: Sat, 9 Oct 2021 17:01:02 +0200 Subject: [PATCH 6/8] update_retroplayer-addons: do stricter libretro version checks Only accept standard github archive URLs and warn about other URLs that aren't supported by the update script. This avoids trashing PKG_VERSION with garbage, eg in libretro-mrboom Signed-off-by: Matthias Reichl --- tools/mkpkg/update_retroplayer-addons | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/mkpkg/update_retroplayer-addons b/tools/mkpkg/update_retroplayer-addons index 0dc92f176d..2b874222e7 100755 --- a/tools/mkpkg/update_retroplayer-addons +++ b/tools/mkpkg/update_retroplayer-addons @@ -176,21 +176,24 @@ for addon in ${ADDONS_DIR}/*.*/ ; do fi VERSION_INFO=$(grep "^${RETRO_NAME}" "${RETRO_VERSION_FILE}" | head -1) - if [[ "$VERSION_INFO" =~ .zip$ ]] ; then + if [[ "$VERSION_INFO" =~ github\.com/[^/]+/[^/]+/archive/[^/]+\.zip$ ]] ; then # version referenced by githash RETRO_NEW_VERSION=$(sed -e 's|^.*/archive/||' -e 's|\.zip$||' "${RETRO_VERSION_FILE}") - elif [[ "$VERSION_INFO" =~ .tar.gz$ ]] ; then + 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}") - else + 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}') + else + msg_warn "UNSUPPORTED ${RETRO_ADDON} version info, update manually: ${VERSION_INFO}" + RETRO_NEW_VERSION="" fi - if update_pkg "${RETRO_PATH}" "${RETRO_ADDON}" "${RETRO_NEW_VERSION}"; then + if [ -n "${RETRO_NEW_VERSION}" ] && update_pkg "${RETRO_PATH}" "${RETRO_ADDON}" "${RETRO_NEW_VERSION}"; then BUMPED_RETRO="yes" fi fi From aef5e1af14eb019f28b80841824d5e8ca67cf842 Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 9 Jan 2022 11:50:15 +0100 Subject: [PATCH 7/8] update_retroplayer-addons: allow overriding the tag suffix The game addons are currently being tagged with "-Matrix" as suffix which doesn't match the "Nexus" branch of the binary addons repo. Allow overriding the tag suffix so we don't fall back to earlier -Nexus tags of the addon. usage eg: ./update_retroplayer-addons Nexus Matrix Signed-off-by: Matthias Reichl --- tools/mkpkg/update_retroplayer-addons | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/tools/mkpkg/update_retroplayer-addons b/tools/mkpkg/update_retroplayer-addons index 2b874222e7..a425f1ab0a 100755 --- a/tools/mkpkg/update_retroplayer-addons +++ b/tools/mkpkg/update_retroplayer-addons @@ -8,7 +8,7 @@ FORCE_LIBRETRO_BUMP="" KEEP_GIT_DIRS="yes" usage() { - echo "Usage: $0 [options] " + echo "Usage: $0 [options] []" echo " -b, --bump-pkg-rev: bump PKG_REV if package was not updated" echo " -d, --delete-git-dirs: delete cloned git dirs after update" echo " -f, --force-libretro-bump: check for new libretro package" @@ -46,12 +46,19 @@ while [ $# -ne 0 ]; do done -if [ $# -ne 1 ]; then +if [ $# -eq 0 -o $# -gt 2 ]; then usage exit 1 fi + KODI_BRANCH="$1" +if [ $# -eq 2 ]; then + TAG_SUFFIX="$2" +else + TAG_SUFFIX="${KODI_BRANCH}" +fi + # list of packages to exclude from update EXCLUDED_PACKAGES="game.libretro.chailove game.libretro.fbalpha2012 @@ -124,11 +131,19 @@ for addon in ${ADDONS_DIR}/*.*/ ; do if [ -z "$GITHUB_API_TOKEN" ]; then git_clone "${GAME_GIT_REPO}" "${GAME_GIT_DIR}" - GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" "*-${KODI_BRANCH}") + if [ -n "${TAG_SUFFIX}" ]; then + GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" "*-${TAG_SUFFIX}") + else + GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}") + fi else REPO=$(basename "${GAME_GIT_REPO}") OWNER=$(basename "${GAME_GIT_REPO%/${REPO}*}") - GAME_NEW_VERSION=$(resolve_tag_on_gh "${OWNER}" "${REPO}" "-${KODI_BRANCH}") + if [ -n "${TAG_SUFFIX}" ]; then + GAME_NEW_VERSION=$(resolve_tag_on_gh "${OWNER}" "${REPO}" "-${TAG_SUFFIX}") + else + GAME_NEW_VERSION=$(resolve_tag_on_gh "${OWNER}" "${REPO}") + fi fi if [ -z "${GAME_NEW_VERSION}" ]; then From da6765db4fd4f2762322c16b8a09efc733302e7c Mon Sep 17 00:00:00 2001 From: Matthias Reichl Date: Sun, 9 Jan 2022 17:14:39 +0100 Subject: [PATCH 8/8] update_retroplayer-addons: improve tag resolution Make sure we always return the latest tag in the branch and only apply tag-suffix filtering if more than one tag exists. This ensures we won't pick up an older (eg -Nexus) tag if newer (eg -Matrix) tags are present - like it's currently the case with game addons which only get "-Matrix" tags. Signed-off-by: Matthias Reichl --- tools/mkpkg/update_common_functions | 22 ++++++++++++++-------- tools/mkpkg/update_retroplayer-addons | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/tools/mkpkg/update_common_functions b/tools/mkpkg/update_common_functions index 7ae5a7d499..220ed3af21 100644 --- a/tools/mkpkg/update_common_functions +++ b/tools/mkpkg/update_common_functions @@ -67,17 +67,23 @@ resolve_hash_on_gh() { } resolve_tag_in_branch() { - local tag + local tag tags if [ -d "$1" ] ; then cd "$1" - if [ $# -eq 3 ] ; then - tag=$(git describe --abbrev=0 --tags --match "$3" origin/$2 2>/dev/null) - if [ -n "$tag" ] ; then - echo "$tag" - return - fi + tag=$(git describe --abbrev=0 --tags origin/$2 2>/dev/null) + if [ -z "${tag}" ]; then + return fi - git describe --abbrev=0 --tags origin/$2 2>/dev/null + tags=( $(git tag --points-at "${tag}" | sort -r -n) ) + if [ $# -eq 3 -a ${#tags[@]} -gt 1 ]; then + for tag in "${tags[@]}"; do + if [[ "${tag}" =~ $3 ]]; then + echo "$tag" + return + fi + done + fi + echo "${tags[0]}" fi } diff --git a/tools/mkpkg/update_retroplayer-addons b/tools/mkpkg/update_retroplayer-addons index a425f1ab0a..b758e4e253 100755 --- a/tools/mkpkg/update_retroplayer-addons +++ b/tools/mkpkg/update_retroplayer-addons @@ -132,7 +132,7 @@ for addon in ${ADDONS_DIR}/*.*/ ; do if [ -z "$GITHUB_API_TOKEN" ]; then git_clone "${GAME_GIT_REPO}" "${GAME_GIT_DIR}" if [ -n "${TAG_SUFFIX}" ]; then - GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" "*-${TAG_SUFFIX}") + GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}" ".*-${TAG_SUFFIX}$") else GAME_NEW_VERSION=$(resolve_tag_in_branch "${GAME_GIT_DIR}" "${GAME_GIT_BRANCH}") fi