Files
Arch-R/tools/mkpkg/update_retroplayer-addons
2018-07-17 23:58:49 +02:00

141 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-or-later
# Copyright (C) 2016-present Team LibreELEC (https://libreelec.tv)
ROOT=$(cd $(dirname $0)/../.. && pwd)
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
}
resolve_hash() {
if [ -d "$1" ] ; then
cd "$1"
git rev-parse --short $2 2>/dev/null
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}"
}
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)
if [ -n "${pkg_url}" ]; then
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
fi
}
# addons
for addontxt in "binary-addons https://github.com/lrusak/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}')
git_clone $ADDONREPO retroplayer $ADDONS.git $GIT_HASH
if [ -z "$1" ]; then
for addon in $ADDONS.git/*.*/ ; do
if [ -n "$(echo $addon | grep game.)" -o -n "$(echo $addon | grep peripheral.)" ]; then
ADDON=$(basename $addon)
REPO=$(cat $addon/$ADDON.txt | awk '{print $2}')
GIT_HASH=$(cat $addon/$ADDON.txt | awk '{print $3}')
EMULATOR="libretro-${ADDON##*.}"
BUMP_REV=""
OLD_HASH=""
RESOLVED_HASH=""
if ! grep -q all $addon/platforms.txt && ! grep -q linux $addon/platforms.txt && ! grep -q ! $addon/platforms.txt; then
continue
fi
#########################
# binary add-on section #
#########################
if [ -f ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk ]; then
OLD_HASH=$(get_pkg_var "${ADDON}" PKG_VERSION)
git_clone $REPO master $ADDON.git $GIT_HASH
RESOLVED_HASH=$(resolve_hash $ADDON.git $GIT_HASH)
if [ "$OLD_HASH" != "$RESOLVED_HASH" ]; then
update_pkg ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk ${ADDON} ${RESOLVED_HASH}
BUMP_REV=true
echo "OLD_HASH: $OLD_HASH"
echo "NEW_HASH: $RESOLVED_HASH"
echo ""
fi
fi
#########################
# emulation section #
#########################
if [ -f ${ROOT}/packages/emulation/$EMULATOR/package.mk ]; then
OLD_HASH=$(get_pkg_var "${EMULATOR}" PKG_VERSION)
PKG_SITE=$(get_pkg_var "${EMULATOR}" PKG_SITE)
git_clone $PKG_SITE master $EMULATOR.git
RESOLVED_HASH=$(resolve_hash $EMULATOR.git master)
if [ "$OLD_HASH" != "$RESOLVED_HASH" ]; then
update_pkg ${ROOT}/packages/emulation/$EMULATOR/package.mk ${EMULATOR} ${RESOLVED_HASH}
BUMP_REV=true
echo "OLD_HASH: $OLD_HASH"
echo "NEW_HASH: $RESOLVED_HASH"
echo ""
fi
fi
if [ "$BUMP_REV" = "true" ]; then
PKG_REV=$(get_pkg_var "${ADDON}" PKG_REV)
sed -e "s|PKG_REV=.*|PKG_REV=\"$((PKG_REV+1))\"|" -i ${ROOT}/packages/mediacenter/kodi-binary-addons/$ADDON/package.mk
echo "BUMPING PKG_REV FROM: $PKG_REV TO: $((PKG_REV+1))"
echo ""
fi
fi
done
fi
done