From nobody Sat Feb 7 09:04:16 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1611940429; cv=none; d=zohomail.com; s=zohoarc; b=Z0wGMYe+VSqIzjeGhIa30WvcfbG/nWknKJ01BMP1BloDwJpIyn5RYpmSb4QjQe00i9k4X1PE/mnTPyVxxGmYMIfcw/9QDGIBUfON49MVXxfzEoG3O7J9lCXgLgpucmFL76a9Wz4rfiXpGPeqF5TYdyJxeSmW+rrm5VbmCgalwyo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1611940429; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=VKXhDcY2fr9D/W+PiAuP5BWT+VMuGcseLcNFfSXuLpM=; b=EJsHEQg+9b1DT0ARU4g9+XJHp2TyCu9nXrCS7wAkp7CtT6vv71RDHEVDe+xPq9Y3ZHiEPtz9rqSh6+d+OgkHtkYcz/jQfvuC3c0dhl5n6PJXoNwhN1SChNvr00fXmCw1qmExFRGbbq9OOUyYZGx5Hc117urq+yexpRFmCg5DaTo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 161194042942997.05632899240618; Fri, 29 Jan 2021 09:13:49 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-185-guD4nloxNPu7W9RKFxGq2g-1; Fri, 29 Jan 2021 12:13:42 -0500 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BCB0810054FF; Fri, 29 Jan 2021 17:13:35 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 995C0179B3; Fri, 29 Jan 2021 17:13:35 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 6162D5003C; Fri, 29 Jan 2021 17:13:35 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 10THDX6M019333 for ; Fri, 29 Jan 2021 12:13:33 -0500 Received: by smtp.corp.redhat.com (Postfix) id 4C99B5D71B; Fri, 29 Jan 2021 17:13:33 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-115-94.ams2.redhat.com [10.36.115.94]) by smtp.corp.redhat.com (Postfix) with ESMTP id 190F66B544; Fri, 29 Jan 2021 17:12:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1611940428; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=VKXhDcY2fr9D/W+PiAuP5BWT+VMuGcseLcNFfSXuLpM=; b=bQyb4HZyM9RVawAOQ9OJ1FpyuKH8RlAgAPflkRts78skGSwkLGOpbC4CCaieF12SD6SZjb co+WIunHimO0paRSDx1cSpWACMnQyD3eTkFHk0yLQb8aKuPuBB3UFbyBM912ofY+hjKtH1 +gS6aBdWVIiSPymn5wUztzd0MHLFYx0= X-MC-Unique: guD4nloxNPu7W9RKFxGq2g-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PULL 09/13] configure: replace --enable/disable-git-update with --with-git-submodules Date: Fri, 29 Jan 2021 17:10:58 +0000 Message-Id: <20210129171102.4109641-10-berrange@redhat.com> In-Reply-To: <20210129171102.4109641-1-berrange@redhat.com> References: <20210129171102.4109641-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Cc: Kevin Wolf , qemu-block@nongnu.org, libvir-list@redhat.com, Max Reitz , Dan Streetman , Gerd Hoffmann , Paolo Bonzini X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) From: Dan Streetman Replace the --enable-git-update and --disable-git-update configure params with the param --with-git-submodules=3D(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=3Dupdate and --disable-git-update parameter maps to --with-git-submodules=3Dvalidate. 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=3Dvalidate and are only ignored when using --with-git-submodules=3Dignore. Signed-off-by: Dan Streetman Signed-off-by: Daniel P. Berrang=C3=A9 --- Makefile | 24 ++----------------- configure | 51 ++++++++++++++++++++++++++++++---------- scripts/git-submodule.sh | 34 ++++++++++++++++++++------- 3 files changed, 66 insertions(+), 43 deletions(-) diff --git a/Makefile b/Makefile index 291ea19f2e..b0dff73904 100644 --- a/Makefile +++ b/Makefile @@ -47,30 +47,10 @@ git-submodule-update: Makefile: .git-submodule-status =20 .PHONY: git-submodule-update - -git_module_status :=3D $(shell \ - cd '$(SRC_PATH)' && \ - GIT=3D"$(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=3D"$(GIT)" ./scripts/git-submodule.sh upd= ate $(GIT_SUBMODULES)), \ - "GIT","$(GIT_SUBMODULES)") -endif -endif + (GIT=3D"$(GIT)" "$(SRC_PATH)/scripts/git-submodule.sh" $(GIT_SUBMODULES_= ACTION) $(GIT_SUBMODULES)), \ + "GIT","$(GIT_SUBMODULES)") =20 # 0. ensure the build tree is okay =20 diff --git a/configure b/configure index 87de49e2c2..8fc59848b2 100755 --- a/configure +++ b/configure @@ -254,12 +254,12 @@ gdb_bin=3D$(command -v "gdb-multiarch" || command -v = "gdb") =20 if test -e "$source_path/.git" then - git_update=3Dyes + git_submodules_action=3D"update" git_submodules=3D"ui/keycodemapdb" git_submodules=3D"$git_submodules tests/fp/berkeley-testfloat-3" git_submodules=3D"$git_submodules tests/fp/berkeley-softfloat-3" else - git_update=3Dno + git_submodules_action=3D"ignore" git_submodules=3D"" =20 if ! test -f "$source_path/ui/keycodemapdb/README" @@ -1508,9 +1508,16 @@ for opt do ;; --with-git=3D*) git=3D"$optarg" ;; - --enable-git-update) git_update=3Dyes + --enable-git-update) + git_submodules_action=3D"update" + echo "--enable-git-update deprecated, use --with-git-submodules=3Dup= date" ;; - --disable-git-update) git_update=3Dno + --disable-git-update) + git_submodules_action=3D"validate" + echo "--disable-git-update deprecated, use --with-git-submodules=3Dv= alidate" + ;; + --with-git-submodules=3D*) + git_submodules_action=3D"$optarg" ;; --enable-debug-mutex) debug_mutex=3Dyes ;; @@ -1566,6 +1573,21 @@ for opt do esac done =20 +case $git_submodules_action in + update|validate) + if test ! -e "$source_path/.git"; then + echo "ERROR: cannot $git_submodules_action git submodules with= out .git" + exit 1 + fi + ;; + ignore) + ;; + *) + echo "ERROR: invalid --with-git-submodules=3D value '$git_submodul= es_action'" + exit 1 + ;; +esac + libdir=3D"${libdir:-$prefix/lib}" libexecdir=3D"${libexecdir:-$prefix/libexec}" includedir=3D"${includedir:-$prefix/include}" @@ -1710,6 +1732,9 @@ Advanced options (experts only): --ninja=3DNINJA use specified ninja [$ninja] --smbd=3DSMBD use specified smbd [$smbd] --with-git=3DGIT use specified git [$git] + --with-git-submodules=3Dupdate update git submodules (default if .git = dir exists) + --with-git-submodules=3Dvalidate fail if git submodules are not up to da= te + --with-git-submodules=3Dignore do not update or check git submodules (= default if no .git dir) --static enable static build [$static] --mandir=3DPATH install man pages in PATH --datadir=3DPATH install firmware in PATH/$qemu_suffix @@ -1926,7 +1951,7 @@ python=3D"$python -B" if test -z "$meson"; then if test "$explicit_python" =3D no && has meson && version_ge "$(meson = --version)" 0.55.3; then meson=3Dmeson - elif test -e "${source_path}/.git" && test $git_update =3D 'yes' ; then + elif test $git_submodules_action !=3D 'ignore' ; then meson=3Dgit elif test -e "${source_path}/meson/meson.py" ; then meson=3Dinternal @@ -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" !=3D "ignore" && \ { test "$linux" =3D "yes" || test "$mingw32" =3D "yes"; }; then werror=3D"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 =3D 'yes' ; then + if test "$git_submodules_action" !=3D "ignore"; then git_submodules=3D"${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 =3D 'yes' ; then + if test "$git_submodules_action" !=3D "ignore"; then git_submodules=3D"${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 =3D 'yes' ; then + if test "$git_submodules_action" !=3D "ignore"; then git_submodules=3D"${git_submodules} slirp" fi ;; @@ -5385,7 +5410,7 @@ if test "$cpu" =3D "s390x" ; then roms=3D"$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" !=3D "ignore"; then git_submodules=3D"${git_submodules} roms/SLOF" fi fi @@ -5423,8 +5448,8 @@ else cxx=3D fi =20 -if test $git_update =3D 'yes' ; then - (cd "${source_path}" && GIT=3D"$git" "./scripts/git-submodule.sh" upda= te "$git_submodules") +if !(GIT=3D"$git" "$source_path/scripts/git-submodule.sh" "$git_submodules= _action" "$git_submodules"); then + exit 1 fi =20 config_host_mak=3D"config-host.mak" @@ -5435,7 +5460,7 @@ echo >> $config_host_mak echo all: >> $config_host_mak echo "GIT=3D$git" >> $config_host_mak echo "GIT_SUBMODULES=3D$git_submodules" >> $config_host_mak -echo "GIT_UPDATE=3D$git_update" >> $config_host_mak +echo "GIT_SUBMODULES_ACTION=3D$git_submodules_action" >> $config_host_mak =20 echo "ARCH=3D$ARCH" >> $config_host_mak =20 diff --git a/scripts/git-submodule.sh b/scripts/git-submodule.sh index 65ed877aef..e225d3a963 100755 --- a/scripts/git-submodule.sh +++ b/scripts/git-submodule.sh @@ -9,9 +9,14 @@ command=3D$1 shift maybe_modules=3D"$@" =20 +# if --with-git-submodules=3Dignore, do nothing +test "$command" =3D "ignore" && exit 0 + test -z "$GIT" && GIT=3Dgit =20 -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=3Dvalidate" echo echo "and then manually update submodules prior to running make, with:" echo @@ -33,6 +38,19 @@ error() { exit 1 } =20 +validate_error() { + if test "$1" =3D "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=3Dupdate" + echo "To disable GIT submodules validation, use" + echo " --with-git-submodules=3Dignore" + fi + exit 1 +} + modules=3D"" for m in $maybe_modules do @@ -52,18 +70,18 @@ then fi =20 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 =20 - test -f "$substat" || exit 1 + test -f "$substat" || validate_error "$command" for module in $modules; do CURSTATUS=3D$($GIT submodule status $module) OLDSTATUS=3D$(cat $substat | grep $module) if test "$CURSTATUS" !=3D "$OLDSTATUS"; then - exit 1 + validate_error "$command" fi done exit 0 @@ -76,10 +94,10 @@ update) fi =20 $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" =20 $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 =20 --=20 2.29.2