All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Dan Streetman <ddstreet@canonical.com>
Cc: Michael Tokarev <mjt@tls.msk.ru>,
	qemu-devel@nongnu.org,
	Christian Ehrhardt <christian.ehrhardt@canonical.com>,
	Rafael David Tinoco <rafael.tinoco@canonical.com>
Subject: Re: [PATCH] configure: replace --enable/disable-git-update with --with-git-submodules
Date: Fri, 11 Dec 2020 10:42:07 +0000	[thread overview]
Message-ID: <20201211104207.GC75000@redhat.com> (raw)
In-Reply-To: <CAOZ2QJNorhPqkToAJsN6h6nS4vEOfcYrpAs2Cro4TyDWY1M_8g@mail.gmail.com>

On Wed, Dec 09, 2020 at 09:38:51AM -0500, Dan Streetman wrote:
> Hi, just a ping to try to keep this alive, does the patch look ok? I
> can rebase it on the latest git if so (and if needed)

Yes, I meant to ask for a rebase. The impl broadly looks fine to me.

> 
> On Fri, Oct 16, 2020 at 4:39 PM Dan Streetman <ddstreet@canonical.com> wrote:
> >
> > 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.
> >
> > Signed-off-by: Dan Streetman <ddstreet@canonical.com>
> > ---
> >  Makefile                 | 26 ++-----------------
> >  configure                | 55 +++++++++++++++++++++++++---------------
> >  scripts/git-submodule.sh | 34 +++++++++++++++++++------
> >  3 files changed, 62 insertions(+), 53 deletions(-)
> >
> > diff --git a/Makefile b/Makefile
> > index c37e513431..033455dc8f 100644
> > --- a/Makefile
> > +++ b/Makefile
> > @@ -34,33 +34,11 @@ ifneq ($(wildcard config-host.mak),)
> >  all:
> >  include config-host.mak
> >
> > -git-submodule-update:
> > -
> >  .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_SUBMODULES)")
> > -endif
> > -endif
> > +               (GIT="$(GIT)" "$(SRC_PATH)/scripts/git-submodule.sh" $(GIT_SUBMODULES_ACTION) $(GIT_SUBMODULES)), \
> > +               "GIT","$(GIT_SUBMODULES)")
> >
> >  export NINJA=./ninjatool
> >
> > diff --git a/configure b/configure
> > index f839c2a557..c5df778790 100755
> > --- a/configure
> > +++ b/configure
> > @@ -249,12 +249,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"
> > @@ -1478,9 +1478,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
> >    ;;
> > @@ -1528,6 +1535,20 @@ 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
> > +
> >  firmwarepath="${firmwarepath:-$prefix/share/qemu-firmware}"
> >  libdir="${libdir:-$prefix/lib}"
> >  libexecdir="${libexecdir:-$prefix/libexec}"
> > @@ -1868,7 +1889,7 @@ python="$python -B"
> >  if test -z "$meson"; then
> >      if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.1; 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
> > @@ -1936,7 +1957,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
> > @@ -3824,9 +3845,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
> > -      git_submodules="${git_submodules} dtc"
> > -    fi
> > +    git_submodules="${git_submodules} dtc"
> >      ;;
> >  esac
> >
> > @@ -4696,9 +4715,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
> > -      git_submodules="${git_submodules} capstone"
> > -    fi
> > +    git_submodules="${git_submodules} capstone"
> >      ;;
> >  esac
> >
> > @@ -5636,9 +5653,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
> > -      git_submodules="${git_submodules} slirp"
> > -    fi
> > +    git_submodules="${git_submodules} slirp"
> >      ;;
> >  esac
> >
> > @@ -5893,9 +5908,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
> > -      git_submodules="${git_submodules} roms/SLOF"
> > -    fi
> > +    git_submodules="${git_submodules} roms/SLOF"
> >    fi
> >  fi
> >
> > @@ -5931,8 +5944,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"
> > @@ -5960,7 +5973,7 @@ echo "qemu_icondir=$qemu_icondir" >> $config_host_mak
> >  echo "qemu_desktopdir=$qemu_desktopdir" >> $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
> >
> > 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=$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
> >
> > --
> > 2.25.1
> >
> 

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|



      reply	other threads:[~2020-12-11 10:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-16 20:38 [PATCH] configure: replace --enable/disable-git-update with --with-git-submodules Dan Streetman
2020-12-09 14:38 ` Dan Streetman
2020-12-11 10:42   ` Daniel P. Berrangé [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201211104207.GC75000@redhat.com \
    --to=berrange@redhat.com \
    --cc=christian.ehrhardt@canonical.com \
    --cc=ddstreet@canonical.com \
    --cc=mjt@tls.msk.ru \
    --cc=qemu-devel@nongnu.org \
    --cc=rafael.tinoco@canonical.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.