#!/bin/sh ################################################################################ # This file is part of OpenELEC - http://www.openelec.tv # Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv) # # OpenELEC is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # OpenELEC is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with OpenELEC. If not, see . ################################################################################ if [ -z "$1" ]; then echo "Usage: $0 " exit 0 fi KODI_DIR="kodi-$1.git" git_clone() { # git_clone https://repo.url branch ./target_dir [githash] echo "[mkpkg] Checking out $1 ..." if [ ! -d "$3" ]; then git clone "$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 } copy_sources() { # copy_sources source_dir package_name package_version if [ -d "$1" ] ; then echo "[mkpkg] Copying sources: $2-$3" ... rm -rf "$2-$3" cp -R "$1" "$2-$3" echo "$GIT_HASH" > "$2-$3/VERSION" echo "[mkpkg] Cleaning $2-$3 ..." rm -rf "$2-$3/.git" fi } package_sources() { # package_sources source_dir if [ -d "$1" ] ; then echo "[mkpkg] Packing $1.tar.xz ..." if [ ! -f "$1.tar.xz" ] ; then tar cvJf "$1.tar.xz" "$1" fi rm -rf "$1" fi } resolve_hash() { if [ -d "$1" ] ; then cd "$1" git rev-parse --short $2 2>/dev/null fi } copy_and_package() { REPO="$1" PKG_NAME="$2" GIT_HASH="$3" git_clone $REPO master $PKG_NAME.git $GIT_HASH RESOLVED_HASH=$(resolve_hash $PKG_NAME.git $GIT_HASH) if [ ! -e $PKG_NAME-$RESOLVED_HASH.tar.xz ] ; then copy_sources $PKG_NAME.git $PKG_NAME $RESOLVED_HASH package_sources $PKG_NAME-$RESOLVED_HASH else echo "[mkpkg] $PKG_NAME-$RESOLVED_HASH.tar.xz already exists ..." fi } if [ ! -d $KODI_DIR ] ; then echo "meh.. $KODI_DIR does not exist" exit 127 fi # platform REPO=$(cat $KODI_DIR/project/cmake/addons/depends/common/platform/platform.txt | awk '{print $2}') GIT_HASH=$(cat $KODI_DIR/project/cmake/addons/depends/common/platform/platform.txt | awk '{print $3}') copy_and_package $REPO platform $GIT_HASH if [ -f ../../packages/mediacenter/platform/package.mk ] ; then # update package.mk RESOLVED_HASH=$(resolve_hash $PKG_NAME.git $GIT_HASH) sed -i "s|PKG_VERSION=.*|PKG_VERSION=\"$RESOLVED_HASH\"|g" ../../packages/mediacenter/platform/package.mk fi # kodi-platform REPO=$(cat $KODI_DIR/project/cmake/addons/depends/common/kodi-platform/kodi-platform.txt | awk '{print $2}') GIT_HASH=$(cat $KODI_DIR/project/cmake/addons/depends/common/kodi-platform/kodi-platform.txt | awk '{print $3}') copy_and_package $REPO kodi-platform $GIT_HASH if [ -f ../../packages/mediacenter/kodi-platform/package.mk ] ; then # update package.mk RESOLVED_HASH=$(resolve_hash $PKG_NAME.git $GIT_HASH) sed -i "s|PKG_VERSION=.*|PKG_VERSION=\"$RESOLVED_HASH\"|g" ../../packages/mediacenter/kodi-platform/package.mk fi # addons for addontxt in $KODI_DIR/project/cmake/addons/bootstrap/repositories/*-addons.txt ; do ADDONS=$(cat $addontxt | awk '{print $1}') ADDONREPO=$(cat $addontxt | awk '{print $2}') GIT_HASH=$(cat $addontxt | awk '{print $3}') git_clone $ADDONREPO master $ADDONS.git $GIT_HASH for addon in $ADDONS.git/*.*/ ; do ADDON=$(basename $addon) REPO=$(cat $addon/$ADDON.txt | awk '{print $2}') GIT_HASH=$(cat $addon/$ADDON.txt | awk '{print $3}') if ! grep -q all $addon/platforms.txt && ! grep -q linux $addon/platforms.txt && ! grep -q ! $addon/platforms.txt; then continue fi if [ -f ../../packages/mediacenter/kodi-binary-addons/$ADDON/package.mk ] ; then copy_and_package $REPO $ADDON $GIT_HASH # update package.mk RESOLVED_HASH=$(resolve_hash $PKG_NAME.git $GIT_HASH) sed -i "s|PKG_VERSION=.*|PKG_VERSION=\"$RESOLVED_HASH\"|g" ../../packages/mediacenter/kodi-binary-addons/$ADDON/package.mk else echo "[mkpkg] Skipped $ADDON" fi done done