configure: replace --enable/disable-git-update with --with-git-submodules
Replace the --enable-git-update and --disable-git-update configure params with the param --with-git-submodules=(update|validate|ignore) to allow 3 options for building from a git repo. This is needed because downstream packagers, e.g. Debian, Ubuntu, etc, also keep the source code in git, but do not want to enable the 'git_update' mode; with the current code, that's not possible even if the downstream package specifies --disable-git-update. The previous parameters are deprecated but still available; the --enable-git-update parameter maps to --with-git-submodules=update and --disable-git-update parameter maps to --with-git-submodules=validate. The configure script behavior is slightly modified, where previously the dtc, capstone, and slirp submodules were not validated when --disable-git-update was specified (but were updated with git-update enabled), now they are validated when using --with-git-submodules=validate and are only ignored when using --with-git-submodules=ignore. Signed-off-by: Dan Streetman <ddstreet@canonical.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
f029f91122
commit
7d7dbf9dc1
22
Makefile
22
Makefile
@ -47,30 +47,10 @@ git-submodule-update:
|
||||
Makefile: .git-submodule-status
|
||||
|
||||
.PHONY: git-submodule-update
|
||||
|
||||
git_module_status := $(shell \
|
||||
cd '$(SRC_PATH)' && \
|
||||
GIT="$(GIT)" ./scripts/git-submodule.sh status $(GIT_SUBMODULES); \
|
||||
echo $$?; \
|
||||
)
|
||||
|
||||
ifeq (1,$(git_module_status))
|
||||
ifeq (no,$(GIT_UPDATE))
|
||||
git-submodule-update:
|
||||
$(call quiet-command, \
|
||||
echo && \
|
||||
echo "GIT submodule checkout is out of date. Please run" && \
|
||||
echo " scripts/git-submodule.sh update $(GIT_SUBMODULES)" && \
|
||||
echo "from the source directory checkout $(SRC_PATH)" && \
|
||||
echo && \
|
||||
exit 1)
|
||||
else
|
||||
git-submodule-update:
|
||||
$(call quiet-command, \
|
||||
(cd $(SRC_PATH) && GIT="$(GIT)" ./scripts/git-submodule.sh update $(GIT_SUBMODULES)), \
|
||||
(GIT="$(GIT)" "$(SRC_PATH)/scripts/git-submodule.sh" $(GIT_SUBMODULES_ACTION) $(GIT_SUBMODULES)), \
|
||||
"GIT","$(GIT_SUBMODULES)")
|
||||
endif
|
||||
endif
|
||||
|
||||
# 0. ensure the build tree is okay
|
||||
|
||||
|
51
configure
vendored
51
configure
vendored
@ -254,12 +254,12 @@ gdb_bin=$(command -v "gdb-multiarch" || command -v "gdb")
|
||||
|
||||
if test -e "$source_path/.git"
|
||||
then
|
||||
git_update=yes
|
||||
git_submodules_action="update"
|
||||
git_submodules="ui/keycodemapdb"
|
||||
git_submodules="$git_submodules tests/fp/berkeley-testfloat-3"
|
||||
git_submodules="$git_submodules tests/fp/berkeley-softfloat-3"
|
||||
else
|
||||
git_update=no
|
||||
git_submodules_action="ignore"
|
||||
git_submodules=""
|
||||
|
||||
if ! test -f "$source_path/ui/keycodemapdb/README"
|
||||
@ -1508,9 +1508,16 @@ for opt do
|
||||
;;
|
||||
--with-git=*) git="$optarg"
|
||||
;;
|
||||
--enable-git-update) git_update=yes
|
||||
--enable-git-update)
|
||||
git_submodules_action="update"
|
||||
echo "--enable-git-update deprecated, use --with-git-submodules=update"
|
||||
;;
|
||||
--disable-git-update) git_update=no
|
||||
--disable-git-update)
|
||||
git_submodules_action="validate"
|
||||
echo "--disable-git-update deprecated, use --with-git-submodules=validate"
|
||||
;;
|
||||
--with-git-submodules=*)
|
||||
git_submodules_action="$optarg"
|
||||
;;
|
||||
--enable-debug-mutex) debug_mutex=yes
|
||||
;;
|
||||
@ -1566,6 +1573,21 @@ for opt do
|
||||
esac
|
||||
done
|
||||
|
||||
case $git_submodules_action in
|
||||
update|validate)
|
||||
if test ! -e "$source_path/.git"; then
|
||||
echo "ERROR: cannot $git_submodules_action git submodules without .git"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
ignore)
|
||||
;;
|
||||
*)
|
||||
echo "ERROR: invalid --with-git-submodules= value '$git_submodules_action'"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
libdir="${libdir:-$prefix/lib}"
|
||||
libexecdir="${libexecdir:-$prefix/libexec}"
|
||||
includedir="${includedir:-$prefix/include}"
|
||||
@ -1710,6 +1732,9 @@ Advanced options (experts only):
|
||||
--ninja=NINJA use specified ninja [$ninja]
|
||||
--smbd=SMBD use specified smbd [$smbd]
|
||||
--with-git=GIT use specified git [$git]
|
||||
--with-git-submodules=update update git submodules (default if .git dir exists)
|
||||
--with-git-submodules=validate fail if git submodules are not up to date
|
||||
--with-git-submodules=ignore do not update or check git submodules (default if no .git dir)
|
||||
--static enable static build [$static]
|
||||
--mandir=PATH install man pages in PATH
|
||||
--datadir=PATH install firmware in PATH/$qemu_suffix
|
||||
@ -1926,7 +1951,7 @@ python="$python -B"
|
||||
if test -z "$meson"; then
|
||||
if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.3; then
|
||||
meson=meson
|
||||
elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then
|
||||
elif test $git_submodules_action != 'ignore' ; then
|
||||
meson=git
|
||||
elif test -e "${source_path}/meson/meson.py" ; then
|
||||
meson=internal
|
||||
@ -1994,7 +2019,7 @@ fi
|
||||
# Consult white-list to determine whether to enable werror
|
||||
# by default. Only enable by default for git builds
|
||||
if test -z "$werror" ; then
|
||||
if test -e "$source_path/.git" && \
|
||||
if test "$git_submodules_action" != "ignore" && \
|
||||
{ test "$linux" = "yes" || test "$mingw32" = "yes"; }; then
|
||||
werror="yes"
|
||||
else
|
||||
@ -3550,7 +3575,7 @@ fi
|
||||
case "$fdt" in
|
||||
auto | enabled | internal)
|
||||
# Simpler to always update submodule, even if not needed.
|
||||
if test -e "${source_path}/.git" && test $git_update = 'yes' ; then
|
||||
if test "$git_submodules_action" != "ignore"; then
|
||||
git_submodules="${git_submodules} dtc"
|
||||
fi
|
||||
;;
|
||||
@ -4264,7 +4289,7 @@ fi
|
||||
case "$capstone" in
|
||||
auto | enabled | internal)
|
||||
# Simpler to always update submodule, even if not needed.
|
||||
if test -e "${source_path}/.git" && test $git_update = 'yes' ; then
|
||||
if test "$git_submodules_action" != "ignore"; then
|
||||
git_submodules="${git_submodules} capstone"
|
||||
fi
|
||||
;;
|
||||
@ -5211,7 +5236,7 @@ fi
|
||||
case "$slirp" in
|
||||
auto | enabled | internal)
|
||||
# Simpler to always update submodule, even if not needed.
|
||||
if test -e "${source_path}/.git" && test $git_update = 'yes' ; then
|
||||
if test "$git_submodules_action" != "ignore"; then
|
||||
git_submodules="${git_submodules} slirp"
|
||||
fi
|
||||
;;
|
||||
@ -5385,7 +5410,7 @@ if test "$cpu" = "s390x" ; then
|
||||
roms="$roms s390-ccw"
|
||||
# SLOF is required for building the s390-ccw firmware on s390x,
|
||||
# since it is using the libnet code from SLOF for network booting.
|
||||
if test -e "${source_path}/.git" ; then
|
||||
if test "$git_submodules_action" != "ignore"; then
|
||||
git_submodules="${git_submodules} roms/SLOF"
|
||||
fi
|
||||
fi
|
||||
@ -5423,8 +5448,8 @@ else
|
||||
cxx=
|
||||
fi
|
||||
|
||||
if test $git_update = 'yes' ; then
|
||||
(cd "${source_path}" && GIT="$git" "./scripts/git-submodule.sh" update "$git_submodules")
|
||||
if !(GIT="$git" "$source_path/scripts/git-submodule.sh" "$git_submodules_action" "$git_submodules"); then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
config_host_mak="config-host.mak"
|
||||
@ -5435,7 +5460,7 @@ echo >> $config_host_mak
|
||||
echo all: >> $config_host_mak
|
||||
echo "GIT=$git" >> $config_host_mak
|
||||
echo "GIT_SUBMODULES=$git_submodules" >> $config_host_mak
|
||||
echo "GIT_UPDATE=$git_update" >> $config_host_mak
|
||||
echo "GIT_SUBMODULES_ACTION=$git_submodules_action" >> $config_host_mak
|
||||
|
||||
echo "ARCH=$ARCH" >> $config_host_mak
|
||||
|
||||
|
@ -9,9 +9,14 @@ command=$1
|
||||
shift
|
||||
maybe_modules="$@"
|
||||
|
||||
# if --with-git-submodules=ignore, do nothing
|
||||
test "$command" = "ignore" && exit 0
|
||||
|
||||
test -z "$GIT" && GIT=git
|
||||
|
||||
error() {
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
update_error() {
|
||||
echo "$0: $*"
|
||||
echo
|
||||
echo "Unable to automatically checkout GIT submodules '$modules'."
|
||||
@ -24,7 +29,7 @@ error() {
|
||||
echo "Alternatively you may disable automatic GIT submodule checkout"
|
||||
echo "with:"
|
||||
echo
|
||||
echo " $ ./configure --disable-git-update"
|
||||
echo " $ ./configure --with-git-submodules=validate"
|
||||
echo
|
||||
echo "and then manually update submodules prior to running make, with:"
|
||||
echo
|
||||
@ -33,6 +38,19 @@ error() {
|
||||
exit 1
|
||||
}
|
||||
|
||||
validate_error() {
|
||||
if test "$1" = "validate"; then
|
||||
echo "GIT submodules checkout is out of date, and submodules"
|
||||
echo "configured for validate only. Please run"
|
||||
echo " scripts/git-submodule.sh update $maybe_modules"
|
||||
echo "from the source directory or call configure with"
|
||||
echo " --with-git-submodules=update"
|
||||
echo "To disable GIT submodules validation, use"
|
||||
echo " --with-git-submodules=ignore"
|
||||
fi
|
||||
exit 1
|
||||
}
|
||||
|
||||
modules=""
|
||||
for m in $maybe_modules
|
||||
do
|
||||
@ -52,18 +70,18 @@ then
|
||||
fi
|
||||
|
||||
case "$command" in
|
||||
status)
|
||||
status|validate)
|
||||
if test -z "$maybe_modules"
|
||||
then
|
||||
test -s ${substat} && exit 1 || exit 0
|
||||
test -s ${substat} && validate_error "$command" || exit 0
|
||||
fi
|
||||
|
||||
test -f "$substat" || exit 1
|
||||
test -f "$substat" || validate_error "$command"
|
||||
for module in $modules; do
|
||||
CURSTATUS=$($GIT submodule status $module)
|
||||
OLDSTATUS=$(cat $substat | grep $module)
|
||||
if test "$CURSTATUS" != "$OLDSTATUS"; then
|
||||
exit 1
|
||||
validate_error "$command"
|
||||
fi
|
||||
done
|
||||
exit 0
|
||||
@ -76,10 +94,10 @@ update)
|
||||
fi
|
||||
|
||||
$GIT submodule update --init $modules 1>/dev/null
|
||||
test $? -ne 0 && error "failed to update modules"
|
||||
test $? -ne 0 && update_error "failed to update modules"
|
||||
|
||||
$GIT submodule status $modules > "${substat}"
|
||||
test $? -ne 0 && error "failed to save git submodule status" >&2
|
||||
test $? -ne 0 && update_error "failed to save git submodule status" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user