Support simple conditionals in package lists
This patch adds support for simple conditionals in package lists. For example, to limit a package to i386 only: foo #if ARCHITECTURE i386 package-only-in-i386 #endif bar Any variable that beings in LH_ can be expanded: #if MODE ubuntu package-only-in-ubuntu #endif Nesting of conditionals is not supported. If the variable to be expanded does not exist, the conditional is false. Signed-off-by: Chris Lamb <chris@chris-lamb.co.uk>
This commit is contained in:
parent
bb68e30166
commit
d77ee36137
|
@ -20,6 +20,8 @@ Expand_packagelist ()
|
||||||
_LH_LIST_NAME="$(echo ${_LH_EXPAND_QUEUE} | cut -d" " -f1)"
|
_LH_LIST_NAME="$(echo ${_LH_EXPAND_QUEUE} | cut -d" " -f1)"
|
||||||
_LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} | cut -s -d" " -f2-)"
|
_LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} | cut -s -d" " -f2-)"
|
||||||
_LH_LIST_LOCATION=""
|
_LH_LIST_LOCATION=""
|
||||||
|
_LH_NESTED=0
|
||||||
|
_LH_ENABLED=1
|
||||||
|
|
||||||
for _LH_SEARCH_PATH in ${@} "${LH_BASE:-/usr/share/live-helper}/lists"
|
for _LH_SEARCH_PATH in ${@} "${LH_BASE:-/usr/share/live-helper}/lists"
|
||||||
do
|
do
|
||||||
|
@ -35,17 +37,55 @@ Expand_packagelist ()
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Output packages
|
while read _LH_LINE
|
||||||
grep -v "^#" ${_LH_LIST_LOCATION} | grep .
|
do
|
||||||
|
case "${_LH_LINE}" in
|
||||||
|
\#if\ *)
|
||||||
|
if [ ${_LH_NESTED} -eq 1 ]
|
||||||
|
then
|
||||||
|
echo "E: Nesting conditionals is not supported" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Find includes
|
_LH_NESTED=1
|
||||||
_LH_INCLUDES="$(sed -n \
|
_LH_VAR="$(echo "${_LH_LINE}" | cut -d' ' -f2)"
|
||||||
-e 's|^#<include> \([^ ]*\)|\1|gp' \
|
_LH_VAL="$(echo "${_LH_LINE}" | cut -d' ' -f3)"
|
||||||
-e 's|^#include <\([^ ]*\)>|\1|gp' \
|
|
||||||
"${_LH_LIST_LOCATION}")"
|
|
||||||
|
|
||||||
# Add to queue
|
if [ -n "${_LH_VAR}" ] && [ "$(eval "echo \$LH_${_LH_VAR}")" != "${_LH_VAL}" ]
|
||||||
_LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} ${_LH_INCLUDES} | \
|
then
|
||||||
sed -e 's|[ ]*$||' -e 's|^[ ]*||')"
|
_LH_ENABLED=0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
\#endif*)
|
||||||
|
_LH_NESTED=0
|
||||||
|
_LH_ENABLED=1
|
||||||
|
;;
|
||||||
|
|
||||||
|
\#*)
|
||||||
|
if [ ${_LH_ENABLED} -ne 1 ]
|
||||||
|
then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find includes
|
||||||
|
_LH_INCLUDES="$(echo "${_LH_LINE}" | sed -n \
|
||||||
|
-e 's|^#<include> \([^ ]*\)|\1|gp' \
|
||||||
|
-e 's|^#include <\([^ ]*\)>|\1|gp')"
|
||||||
|
|
||||||
|
# Add to queue
|
||||||
|
_LH_EXPAND_QUEUE="$(echo ${_LH_EXPAND_QUEUE} ${_LH_INCLUDES} |
|
||||||
|
sed -e 's|[ ]*$||' -e 's|^[ ]*||')"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
if [ ${_LH_ENABLED} -eq 1 ]
|
||||||
|
then
|
||||||
|
echo "${_LH_LINE}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
|
done < "${_LH_LIST_LOCATION}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue