mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-31 14:37:59 +00:00
config/function & config/path: Don't source entire package just to determine PKG_DIR
This commit is contained in:
parent
dff66b4d6e
commit
68450cd45f
@ -250,7 +250,38 @@ get_pkg_version() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get_pkg_directory() {
|
get_pkg_directory() {
|
||||||
get_pkg_variable "$1" PKG_DIR
|
local _PKG_ROOT_NAME=${1%:*} _ALL_DIRS _FOUND=0 _ANCHOR="@?+?@" _PKG_DIR _DIR
|
||||||
|
|
||||||
|
# Check for any available local package in preference to a global package
|
||||||
|
for _DIR in $(echo -e "${_CACHE_PACKAGE_LOCAL}" | grep -F "/${_PKG_ROOT_NAME}${_ANCHOR}"); do
|
||||||
|
_DIR="${_DIR%${_ANCHOR}}"
|
||||||
|
# found first, set $_PKG_DIR
|
||||||
|
_PKG_DIR="$_DIR"
|
||||||
|
# keep track of dirs with package.mk for detecting multiple folders
|
||||||
|
_ALL_DIRS+="${_DIR}\n"
|
||||||
|
_FOUND=$((_FOUND+1))
|
||||||
|
done
|
||||||
|
|
||||||
|
# If there's no local package available, use the global package
|
||||||
|
if [ $_FOUND -eq 0 ]; then
|
||||||
|
for _DIR in $(echo -e "${_CACHE_PACKAGE_GLOBAL}" | grep -F "/${_PKG_ROOT_NAME}${_ANCHOR}"); do
|
||||||
|
_DIR="${_DIR%${_ANCHOR}}"
|
||||||
|
# found first, set $_PKG_DIR
|
||||||
|
_PKG_DIR="$_DIR"
|
||||||
|
# keep track of dirs with package.mk for detecting multiple folders
|
||||||
|
_ALL_DIRS+="${_DIR}\n"
|
||||||
|
_FOUND=$((_FOUND+1))
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# _FOUND multiple packages? fail
|
||||||
|
if [ $_FOUND -gt 1 ]; then
|
||||||
|
echo "Error - multiple package folders for package ${_PKG_ROOT_NAME}:" >&2
|
||||||
|
echo -e "$_ALL_DIRS" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$_PKG_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
# get variable ($2) for package ($1)
|
# get variable ($2) for package ($1)
|
||||||
|
37
config/path
37
config/path
@ -65,42 +65,7 @@ init_package_cache
|
|||||||
# set package metadata
|
# set package metadata
|
||||||
reset_pkg_vars "$1"
|
reset_pkg_vars "$1"
|
||||||
|
|
||||||
if [ -n "$1" ]; then
|
[ -n "$1" ] && PKG_DIR="$(get_pkg_directory $1)"
|
||||||
_PKG_ROOT_NAME=${1%:*}
|
|
||||||
_ALL_DIRS=""
|
|
||||||
_FOUND=0
|
|
||||||
_ANCHOR="@?+?@"
|
|
||||||
PKG_DIR=""
|
|
||||||
|
|
||||||
# Check for any available local package in preference to a global package
|
|
||||||
for DIR in $(echo -e "${_CACHE_PACKAGE_LOCAL}" | grep -F "/${_PKG_ROOT_NAME}${_ANCHOR}"); do
|
|
||||||
DIR="${DIR%${_ANCHOR}}"
|
|
||||||
# found first, set $PKG_DIR
|
|
||||||
PKG_DIR="$DIR"
|
|
||||||
# keep track of dirs with package.mk for detecting multiple folders
|
|
||||||
_ALL_DIRS+="${DIR}\n"
|
|
||||||
_FOUND=$((_FOUND+1))
|
|
||||||
done
|
|
||||||
|
|
||||||
# If there's no local package available, use the global package
|
|
||||||
if [ $_FOUND -eq 0 ]; then
|
|
||||||
for DIR in $(echo -e "${_CACHE_PACKAGE_GLOBAL}" | grep -F "/${_PKG_ROOT_NAME}${_ANCHOR}"); do
|
|
||||||
DIR="${DIR%${_ANCHOR}}"
|
|
||||||
# found first, set $PKG_DIR
|
|
||||||
PKG_DIR="$DIR"
|
|
||||||
# keep track of dirs with package.mk for detecting multiple folders
|
|
||||||
_ALL_DIRS+="${DIR}\n"
|
|
||||||
_FOUND=$((_FOUND+1))
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
# _FOUND multiple packages? fail
|
|
||||||
if [ $_FOUND -gt 1 ]; then
|
|
||||||
echo "Error - multiple package folders:"
|
|
||||||
echo -e "$_ALL_DIRS"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$PKG_DIR" -a -r $PKG_DIR/package.mk ]; then
|
if [ -n "$PKG_DIR" -a -r $PKG_DIR/package.mk ]; then
|
||||||
unset -f configure_package
|
unset -f configure_package
|
||||||
|
Loading…
x
Reference in New Issue
Block a user