support/scripts/check-merged: use getopts instead of getopt
Commit1187c34d88(support/scripts: move merged-usr errors message into check-merged-usr.sh) introduced the use of getopt to parse its options; doing so allowed to use long option (with two leading dashes), which is more descriptive than the usual one-character options. However, getopt is part of util-linux; it is not a shell built-in. util-linux is not a prerequisite of Buildroot, so we may end up running on a system where it is missing. We could add host-util-linux as a dependency when the system does not provide getopt, but that's not very nice; even though host-skeleton does not need to check for merged-bin for now, it does not need getopt, and thus we could add host-util-linux (which depends on host-skeleton) as a dependency of skeleton-custom. But that will not be tenable over the long run, especially if/when we do a merged-bin in host dir. Requiring that util-linux be installed system-wide is not nice either; it's an additional requirement on the host. We can do like we do in the oter scripts, though: use the shell built-in getopts. Its usage is slightly different, and does not support long options. As it's just for use in an internal script, we can live with the less descriptive options, though. Switch to using getopts, it removes the need for a new host dependency. Fixes:1187c34d88Reported-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
fe01d702a1
commit
793ebd5d28
6
Makefile
6
Makefile
@@ -783,9 +783,9 @@ endif
|
||||
# counterparts are appropriately setup as symlinks ones to the others.
|
||||
@$(call MESSAGE,"Sanity check in overlays $(call qstrip,$(BR2_ROOTFS_OVERLAY))")
|
||||
support/scripts/check-merged \
|
||||
--type overlay \
|
||||
$(if $(BR2_ROOTFS_MERGED_USR),--merged-usr) \
|
||||
$(if $(BR2_ROOTFS_MERGED_BIN),--merged-bin) \
|
||||
-t overlay \
|
||||
$(if $(BR2_ROOTFS_MERGED_USR),-u) \
|
||||
$(if $(BR2_ROOTFS_MERGED_BIN),-b) \
|
||||
$(call qstrip,$(BR2_ROOTFS_OVERLAY))
|
||||
|
||||
$(foreach d, $(call qstrip,$(BR2_ROOTFS_OVERLAY)), \
|
||||
|
||||
@@ -25,9 +25,9 @@ endif
|
||||
|
||||
define SKELETON_CUSTOM_CONFIGURE_CMDS
|
||||
support/scripts/check-merged \
|
||||
--type skeleton \
|
||||
$(if $(BR2_ROOTFS_MERGED_USR),--merged-usr) \
|
||||
$(if $(BR2_ROOTFS_MERGED_BIN),--merged-bin) \
|
||||
-t skeleton \
|
||||
$(if $(BR2_ROOTFS_MERGED_USR),-u) \
|
||||
$(if $(BR2_ROOTFS_MERGED_BIN),-b) \
|
||||
$(SKELETON_CUSTOM_PATH)
|
||||
endef
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
# to /usr/bin)
|
||||
#
|
||||
# Input:
|
||||
# --type TYPE the type of root to check: 'skeleton' or 'overlay'
|
||||
# --merged-usr check for merged /usr
|
||||
# --merged-bin check for merged /usr/bin
|
||||
# -t TYPE the type of root to check: 'skeleton' or 'overlay'
|
||||
# -u check for merged /usr
|
||||
# -b check for merged /usr/bin
|
||||
# $*: the root directories (skeleton, overlays) to check
|
||||
# Output:
|
||||
# stdout: the list of non-compliant paths (empty if compliant).
|
||||
@@ -34,31 +34,16 @@
|
||||
# !0: if any directory to check is improperly merged
|
||||
#
|
||||
|
||||
opts="type:,merged-usr,merged-bin"
|
||||
ARGS="$(getopt -n check-merged -o "" -l "${opts}" -- "${@}")" || exit 1
|
||||
eval set -- "${ARGS}"
|
||||
|
||||
type=
|
||||
merged_usr=false
|
||||
merged_bin=false
|
||||
while :; do
|
||||
case "${1}" in
|
||||
(--type)
|
||||
type="${2}"
|
||||
shift 2
|
||||
;;
|
||||
(--merged-usr)
|
||||
merged_usr=true
|
||||
shift
|
||||
;;
|
||||
(--merged-bin)
|
||||
merged_bin=true
|
||||
shift
|
||||
;;
|
||||
(--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
while getopts "t:ub" OPT; do
|
||||
case "${OPT}" in
|
||||
(t) type="${OPTARG}";;
|
||||
(u) merged_usr=true;;
|
||||
(b) merged_bin=true;;
|
||||
(:) printf "option %s expects a mandatory argument\n" "${OPTARG}"; exit 1;;
|
||||
(\?) printf "unknown option %s\n" "${OPTARG}"; exit 1;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
Reference in New Issue
Block a user