mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-30 22:26:42 +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_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)
|
||||
|
37
config/path
37
config/path
@ -65,42 +65,7 @@ init_package_cache
|
||||
# set package metadata
|
||||
reset_pkg_vars "$1"
|
||||
|
||||
if [ -n "$1" ]; then
|
||||
_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
|
||||
[ -n "$1" ] && PKG_DIR="$(get_pkg_directory $1)"
|
||||
|
||||
if [ -n "$PKG_DIR" -a -r $PKG_DIR/package.mk ]; then
|
||||
unset -f configure_package
|
||||
|
Loading…
x
Reference in New Issue
Block a user