On 07/08/20 12:37, Alex Bennée wrote: > > Paolo Bonzini <pbonz...@redhat.com> writes: > >> From: Marc-André Lureau <marcandre.lur...@redhat.com> >> >> Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com> >> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >> --- >> .gitmodules | 3 +++ >> configure | 44 +++++++++++++++++++++++++++++++++++++++++--- >> meson | 1 + >> scripts/archive-source.sh | 3 ++- >> 4 files changed, 47 insertions(+), 4 deletions(-) >> create mode 160000 meson >> >> diff --git a/.gitmodules b/.gitmodules >> index 9c0501a..ce97939 100644 >> --- a/.gitmodules >> +++ b/.gitmodules >> @@ -58,3 +58,6 @@ >> [submodule "roms/qboot"] >> path = roms/qboot >> url = https://github.com/bonzini/qboot >> +[submodule "meson"] >> + path = meson >> + url = https://github.com/mesonbuild/meson/ >> diff --git a/configure b/configure >> index 13db149..d87d544 100755 >> --- a/configure >> +++ b/configure >> @@ -174,6 +174,25 @@ path_of() { >> return 1 >> } >> >> +version_ge () { >> + local_ver1=`echo $1 | tr . ' '` >> + local_ver2=`echo $2 | tr . ' '` >> + while true; do >> + set x $local_ver1 >> + local_first=${2-0} >> + # shift 2 does nothing if there are less than 2 arguments >> + shift; shift >> + local_ver1=$* >> + set x $local_ver2 >> + # the second argument finished, the first must be greater or equal >> + test $# = 1 && return 0 >> + test $local_first -lt $2 && return 1 >> + test $local_first -gt $2 && return 0 >> + shift; shift >> + local_ver2=$* >> + done >> +} >> + >> have_backend () { >> echo "$trace_backends" | grep "$1" >/dev/null >> } >> @@ -1965,9 +1984,28 @@ then >> error_exit "Python not found. Use --python=/path/to/python" >> fi >> >> -if ! has "$meson" >> -then >> - error_exit "Meson not found. Use --meson=/path/to/meson" >> +if test -z "$meson" ; then >> + if has meson && version_ge "$(meson --version)" 0.55.0; then >> + meson=meson >> + elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then >> + meson=git >> + elif test -e "${source_path}/meson/meson.py" ; then >> + meson=internal >> + fi >> +fi >> + >> +case "$meson" in >> + git | internal) > > Is "internal" meant to be synonymous with "git"? AFAICT we don't > actually do anything with --meson=internal which is why it failed later.
"git" only works on checkouts, "internal" works on release builds as well. So the problem is that git_update is not set to "yes" for whatever reason. Paolo > >> + if test "$meson" = git; then >> + git_submodules="${git_submodules} meson" >> + (cd "${source_path}" && GIT="$git" "./scripts/git-submodule.sh" >> update meson) >> + fi >> + meson="${source_path}/meson/meson.py" >> + ;; >> +esac >> + >> +if ! has "$meson" ; then >> + error_exit "Meson not found. Use --meson=/path/to/meson|git|internal" >> fi > <snip> >