Message ID | 20191016224237.26180-1-ehabkost@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | configure: Require Python >= 3.5 | expand |
On 10/16/19 6:42 PM, Eduardo Habkost wrote: > Python 3.5 is the oldest Python version available on our > supported build platforms, and Python 2 end of life will be 3 > weeks after the planned release date of QEMU 4.2.0. Drop Python > 2 support from configure completely, and require Python 3.5 or > newer. > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Seems like a good time and place to mention this. Kevin, you require 3.6+ for iotests, which are -- at present -- invoked as part of "make check". Do we care? Basically, this just means that iotests won't run for systems that don't have 3.6+, which would be platforms like Debian 9 -- which is why ehabkost is choosing 3.5 here. --js > --- > configure | 18 ++++-------------- > tests/Makefile.include | 5 ----- > 2 files changed, 4 insertions(+), 19 deletions(-) > > diff --git a/configure b/configure > index 08ca4bcb46..870657ec7b 100755 > --- a/configure > +++ b/configure > @@ -895,9 +895,9 @@ fi > : ${install=${INSTALL-install}} > # We prefer python 3.x. A bare 'python' is traditionally > # python 2.x, but some distros have it as python 3.x, so > -# we check that before python2 > +# we check that too > python= > -for binary in "${PYTHON-python3}" python python2 > +for binary in "${PYTHON-python3}" python > do > if has "$binary" > then > @@ -1824,8 +1824,8 @@ fi > > # Note that if the Python conditional here evaluates True we will exit > # with status 1 which is a shell 'false' value. > -if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then > - error_exit "Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \ > +if ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then > + error_exit "Cannot use '$python', Python >= 3.5 is required." \ > "Use --python=/path/to/python to specify a supported Python." > fi > > @@ -6456,15 +6456,6 @@ if test "$supported_os" = "no"; then > echo "us upstream at qemu-devel@nongnu.org." > fi > > -# Note that if the Python conditional here evaluates True we will exit > -# with status 1 which is a shell 'false' value. > -if ! $python -c 'import sys; sys.exit(sys.version_info < (3,0))'; then > - echo > - echo "warning: Python 2 support is deprecated" >&2 > - echo "warning: Python 3 will be required for building future versions of QEMU" >&2 > - python2="y" > -fi > - > config_host_mak="config-host.mak" > > echo "# Automatically generated by configure - do not modify" >config-all-disas.mak > @@ -7282,7 +7273,6 @@ echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak > echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak > echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak > echo "PYTHON=$python" >> $config_host_mak > -echo "PYTHON2=$python2" >> $config_host_mak > echo "CC=$cc" >> $config_host_mak > if $iasl -h > /dev/null 2>&1; then > echo "IASL=$iasl" >> $config_host_mak > diff --git a/tests/Makefile.include b/tests/Makefile.include > index 3543451ed3..54ee1f0a2f 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -1137,7 +1137,6 @@ TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results > AVOCADO_SHOW=app > AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGET_DIRS))) > > -ifneq ($(PYTHON2),y) > $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) > $(call quiet-command, \ > $(PYTHON) -m venv --system-site-packages $@, \ > @@ -1146,10 +1145,6 @@ $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) > $(TESTS_VENV_DIR)/bin/python -m pip -q install -r $(TESTS_VENV_REQ), \ > PIP, $(TESTS_VENV_REQ)) > $(call quiet-command, touch $@) > -else > -$(TESTS_VENV_DIR): > - $(error "venv directory for tests requires Python 3") > -endif > > $(TESTS_RESULTS_DIR): > $(call quiet-command, mkdir -p $@, \ >
On 17/10/2019 00.48, John Snow wrote: > > > On 10/16/19 6:42 PM, Eduardo Habkost wrote: >> Python 3.5 is the oldest Python version available on our >> supported build platforms, and Python 2 end of life will be 3 >> weeks after the planned release date of QEMU 4.2.0. Drop Python >> 2 support from configure completely, and require Python 3.5 or >> newer. >> >> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > > Seems like a good time and place to mention this. Kevin, you require > 3.6+ for iotests, which are -- at present -- invoked as part of "make > check". > > Do we care? Basically, this just means that iotests won't run for > systems that don't have 3.6+, which would be platforms like Debian 9 -- > which is why ehabkost is choosing 3.5 here. I think it's ok to simply skip the iotests in case we run on a Python 3.5 system. Thomas
On Wed, Oct 16, 2019 at 06:48:34PM -0400, John Snow wrote: > > > On 10/16/19 6:42 PM, Eduardo Habkost wrote: > > Python 3.5 is the oldest Python version available on our > > supported build platforms, and Python 2 end of life will be 3 > > weeks after the planned release date of QEMU 4.2.0. Drop Python > > 2 support from configure completely, and require Python 3.5 or > > newer. > > > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > > Seems like a good time and place to mention this. Kevin, you require > 3.6+ for iotests, which are -- at present -- invoked as part of "make > check". > > Do we care? Basically, this just means that iotests won't run for > systems that don't have 3.6+, which would be platforms like Debian 9 -- > which is why ehabkost is choosing 3.5 here. Depends what the reason for pickin 3.6 was ? Is it really compelling for iotests to require 3.6, or is it easy to support 3.5. I think in general it is desirable to have a consistent story across the codebase for min versions Regards, Daniel
Am 17.10.2019 um 00:48 hat John Snow geschrieben: > > > On 10/16/19 6:42 PM, Eduardo Habkost wrote: > > Python 3.5 is the oldest Python version available on our > > supported build platforms, and Python 2 end of life will be 3 > > weeks after the planned release date of QEMU 4.2.0. Drop Python > > 2 support from configure completely, and require Python 3.5 or > > newer. > > > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > > Seems like a good time and place to mention this. Kevin, you require > 3.6+ for iotests, which are -- at present -- invoked as part of "make > check". > > Do we care? Basically, this just means that iotests won't run for > systems that don't have 3.6+, which would be platforms like Debian 9 -- > which is why ehabkost is choosing 3.5 here. I think we were aware of this when we made the change to iotests. That all tests of the current upstream QEMU version are run on Debian oldstable (with the distro Python version) is, to say the least, not a priority for me. They must not fail, but I'd say skipping is fine. And actually, we should still have a reasonable coverage there with the shell-based test cases. Kevin
On 10/17/19 7:21 AM, Kevin Wolf wrote: > Am 17.10.2019 um 00:48 hat John Snow geschrieben: >> >> >> On 10/16/19 6:42 PM, Eduardo Habkost wrote: >>> Python 3.5 is the oldest Python version available on our >>> supported build platforms, and Python 2 end of life will be 3 >>> weeks after the planned release date of QEMU 4.2.0. Drop Python >>> 2 support from configure completely, and require Python 3.5 or >>> newer. >>> >>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> >> >> Seems like a good time and place to mention this. Kevin, you require >> 3.6+ for iotests, which are -- at present -- invoked as part of "make >> check". >> >> Do we care? Basically, this just means that iotests won't run for >> systems that don't have 3.6+, which would be platforms like Debian 9 -- >> which is why ehabkost is choosing 3.5 here. > > I think we were aware of this when we made the change to iotests. That > all tests of the current upstream QEMU version are run on Debian > oldstable (with the distro Python version) is, to say the least, not a > priority for me. They must not fail, but I'd say skipping is fine. > > And actually, we should still have a reasonable coverage there with the > shell-based test cases. > > Kevin > This seems like a weirdly arbitrary decision for a benefit that's not clear to me. Is it because you want variable annotations? (Well, regardless, you're the ranger in charge of this forest.)
Am 17.10.2019 um 21:39 hat John Snow geschrieben: > On 10/17/19 7:21 AM, Kevin Wolf wrote: > > Am 17.10.2019 um 00:48 hat John Snow geschrieben: > >> On 10/16/19 6:42 PM, Eduardo Habkost wrote: > >>> Python 3.5 is the oldest Python version available on our > >>> supported build platforms, and Python 2 end of life will be 3 > >>> weeks after the planned release date of QEMU 4.2.0. Drop Python > >>> 2 support from configure completely, and require Python 3.5 or > >>> newer. > >>> > >>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > >> > >> Seems like a good time and place to mention this. Kevin, you require > >> 3.6+ for iotests, which are -- at present -- invoked as part of "make > >> check". > >> > >> Do we care? Basically, this just means that iotests won't run for > >> systems that don't have 3.6+, which would be platforms like Debian 9 -- > >> which is why ehabkost is choosing 3.5 here. > > > > I think we were aware of this when we made the change to iotests. That > > all tests of the current upstream QEMU version are run on Debian > > oldstable (with the distro Python version) is, to say the least, not a > > priority for me. They must not fail, but I'd say skipping is fine. > > > > And actually, we should still have a reasonable coverage there with the > > shell-based test cases. > > This seems like a weirdly arbitrary decision for a benefit that's not > clear to me. Is it because you want variable annotations? Yes, the discussion about type annotations is what made me check whether we could do 3.6, because if we want to make use of type checking, we'll need it for both functions and variables to get reasonable results. And actually, we currently don't have any Python tests in the auto group, so the only effect is for people manually running ./check on Debian oldstable. I'm not sure, but I suspect this might be the empty set. Kevin
On 10/18/19 4:15 AM, Kevin Wolf wrote: > Am 17.10.2019 um 21:39 hat John Snow geschrieben: >> On 10/17/19 7:21 AM, Kevin Wolf wrote: >>> Am 17.10.2019 um 00:48 hat John Snow geschrieben: >>>> On 10/16/19 6:42 PM, Eduardo Habkost wrote: >>>>> Python 3.5 is the oldest Python version available on our >>>>> supported build platforms, and Python 2 end of life will be 3 >>>>> weeks after the planned release date of QEMU 4.2.0. Drop Python >>>>> 2 support from configure completely, and require Python 3.5 or >>>>> newer. >>>>> >>>>> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> >>>> >>>> Seems like a good time and place to mention this. Kevin, you require >>>> 3.6+ for iotests, which are -- at present -- invoked as part of "make >>>> check". >>>> >>>> Do we care? Basically, this just means that iotests won't run for >>>> systems that don't have 3.6+, which would be platforms like Debian 9 -- >>>> which is why ehabkost is choosing 3.5 here. >>> >>> I think we were aware of this when we made the change to iotests. That >>> all tests of the current upstream QEMU version are run on Debian >>> oldstable (with the distro Python version) is, to say the least, not a >>> priority for me. They must not fail, but I'd say skipping is fine. >>> >>> And actually, we should still have a reasonable coverage there with the >>> shell-based test cases. >> >> This seems like a weirdly arbitrary decision for a benefit that's not >> clear to me. Is it because you want variable annotations? > > Yes, the discussion about type annotations is what made me check whether > we could do 3.6, because if we want to make use of type checking, we'll > need it for both functions and variables to get reasonable results. > > And actually, we currently don't have any Python tests in the auto > group, so the only effect is for people manually running ./check on > Debian oldstable. I'm not sure, but I suspect this might be the empty > set. > > Kevin > It would have an effect on `make docker-test-block@debian-amd64" I think, but I guess nobody runs that right now. Well, alright. --js
On 10/16/19 6:42 PM, Eduardo Habkost wrote: > Python 3.5 is the oldest Python version available on our > supported build platforms, and Python 2 end of life will be 3 > weeks after the planned release date of QEMU 4.2.0. Drop Python > 2 support from configure completely, and require Python 3.5 or > newer. > Which distributions constrain us to 3.5 right now? I know Debian9 is one of them, but I'm not sure what others exist. I know I went through and checked a month ago, but I'm very smart and didn't write it down. It might be nice to document (somewhere) so we know when we can require something newer than 3.5 at the next major deprecation event. > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Thanks! > --- > configure | 18 ++++-------------- > tests/Makefile.include | 5 ----- > 2 files changed, 4 insertions(+), 19 deletions(-) > > diff --git a/configure b/configure > index 08ca4bcb46..870657ec7b 100755 > --- a/configure > +++ b/configure > @@ -895,9 +895,9 @@ fi > : ${install=${INSTALL-install}} > # We prefer python 3.x. A bare 'python' is traditionally > # python 2.x, but some distros have it as python 3.x, so > -# we check that before python2 > +# we check that too > python= > -for binary in "${PYTHON-python3}" python python2 > +for binary in "${PYTHON-python3}" python > do > if has "$binary" > then > @@ -1824,8 +1824,8 @@ fi > > # Note that if the Python conditional here evaluates True we will exit > # with status 1 which is a shell 'false' value. > -if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then > - error_exit "Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \ > +if ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then > + error_exit "Cannot use '$python', Python >= 3.5 is required." \ > "Use --python=/path/to/python to specify a supported Python." > fi > > @@ -6456,15 +6456,6 @@ if test "$supported_os" = "no"; then > echo "us upstream at qemu-devel@nongnu.org." > fi > > -# Note that if the Python conditional here evaluates True we will exit > -# with status 1 which is a shell 'false' value. > -if ! $python -c 'import sys; sys.exit(sys.version_info < (3,0))'; then > - echo > - echo "warning: Python 2 support is deprecated" >&2 > - echo "warning: Python 3 will be required for building future versions of QEMU" >&2 > - python2="y" > -fi > - > config_host_mak="config-host.mak" > > echo "# Automatically generated by configure - do not modify" >config-all-disas.mak > @@ -7282,7 +7273,6 @@ echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak > echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak > echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak > echo "PYTHON=$python" >> $config_host_mak > -echo "PYTHON2=$python2" >> $config_host_mak > echo "CC=$cc" >> $config_host_mak > if $iasl -h > /dev/null 2>&1; then > echo "IASL=$iasl" >> $config_host_mak > diff --git a/tests/Makefile.include b/tests/Makefile.include > index 3543451ed3..54ee1f0a2f 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -1137,7 +1137,6 @@ TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results > AVOCADO_SHOW=app > AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGET_DIRS))) > > -ifneq ($(PYTHON2),y) > $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) > $(call quiet-command, \ > $(PYTHON) -m venv --system-site-packages $@, \ > @@ -1146,10 +1145,6 @@ $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) > $(TESTS_VENV_DIR)/bin/python -m pip -q install -r $(TESTS_VENV_REQ), \ > PIP, $(TESTS_VENV_REQ)) > $(call quiet-command, touch $@) > -else > -$(TESTS_VENV_DIR): > - $(error "venv directory for tests requires Python 3") > -endif > > $(TESTS_RESULTS_DIR): > $(call quiet-command, mkdir -p $@, \ >
On Fri, Oct 18, 2019 at 05:07:36PM -0400, John Snow wrote: > > > On 10/16/19 6:42 PM, Eduardo Habkost wrote: > > Python 3.5 is the oldest Python version available on our > > supported build platforms, and Python 2 end of life will be 3 > > weeks after the planned release date of QEMU 4.2.0. Drop Python > > 2 support from configure completely, and require Python 3.5 or > > newer. > > > > Which distributions constrain us to 3.5 right now? I know Debian9 is one > of them, but I'm not sure what others exist. > > I know I went through and checked a month ago, but I'm very smart and > didn't write it down. > > It might be nice to document (somewhere) so we know when we can require > something newer than 3.5 at the next major deprecation event. I've summarized the release dates and Python version information I could find here: https://wiki.qemu.org/Supported_Build_Platforms > > > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> > > > Reviewed-by: John Snow <jsnow@redhat.com> Thanks!
On 10/18/19 5:14 PM, Eduardo Habkost wrote: > On Fri, Oct 18, 2019 at 05:07:36PM -0400, John Snow wrote: >> >> >> On 10/16/19 6:42 PM, Eduardo Habkost wrote: >>> Python 3.5 is the oldest Python version available on our >>> supported build platforms, and Python 2 end of life will be 3 >>> weeks after the planned release date of QEMU 4.2.0. Drop Python >>> 2 support from configure completely, and require Python 3.5 or >>> newer. >>> >> >> Which distributions constrain us to 3.5 right now? I know Debian9 is one >> of them, but I'm not sure what others exist. >> >> I know I went through and checked a month ago, but I'm very smart and >> didn't write it down. >> >> It might be nice to document (somewhere) so we know when we can require >> something newer than 3.5 at the next major deprecation event. > > I've summarized the release dates and Python version information I > could find here: https://wiki.qemu.org/Supported_Build_Platforms > You are an ABSOLUTE CHAMPION. Thank you so much!
diff --git a/configure b/configure index 08ca4bcb46..870657ec7b 100755 --- a/configure +++ b/configure @@ -895,9 +895,9 @@ fi : ${install=${INSTALL-install}} # We prefer python 3.x. A bare 'python' is traditionally # python 2.x, but some distros have it as python 3.x, so -# we check that before python2 +# we check that too python= -for binary in "${PYTHON-python3}" python python2 +for binary in "${PYTHON-python3}" python do if has "$binary" then @@ -1824,8 +1824,8 @@ fi # Note that if the Python conditional here evaluates True we will exit # with status 1 which is a shell 'false' value. -if ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then - error_exit "Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \ +if ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then + error_exit "Cannot use '$python', Python >= 3.5 is required." \ "Use --python=/path/to/python to specify a supported Python." fi @@ -6456,15 +6456,6 @@ if test "$supported_os" = "no"; then echo "us upstream at qemu-devel@nongnu.org." fi -# Note that if the Python conditional here evaluates True we will exit -# with status 1 which is a shell 'false' value. -if ! $python -c 'import sys; sys.exit(sys.version_info < (3,0))'; then - echo - echo "warning: Python 2 support is deprecated" >&2 - echo "warning: Python 3 will be required for building future versions of QEMU" >&2 - python2="y" -fi - config_host_mak="config-host.mak" echo "# Automatically generated by configure - do not modify" >config-all-disas.mak @@ -7282,7 +7273,6 @@ echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak echo "PYTHON=$python" >> $config_host_mak -echo "PYTHON2=$python2" >> $config_host_mak echo "CC=$cc" >> $config_host_mak if $iasl -h > /dev/null 2>&1; then echo "IASL=$iasl" >> $config_host_mak diff --git a/tests/Makefile.include b/tests/Makefile.include index 3543451ed3..54ee1f0a2f 100644 --- a/tests/Makefile.include +++ b/tests/Makefile.include @@ -1137,7 +1137,6 @@ TESTS_RESULTS_DIR=$(BUILD_DIR)/tests/results AVOCADO_SHOW=app AVOCADO_TAGS=$(patsubst %-softmmu,-t arch:%, $(filter %-softmmu,$(TARGET_DIRS))) -ifneq ($(PYTHON2),y) $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) $(call quiet-command, \ $(PYTHON) -m venv --system-site-packages $@, \ @@ -1146,10 +1145,6 @@ $(TESTS_VENV_DIR): $(TESTS_VENV_REQ) $(TESTS_VENV_DIR)/bin/python -m pip -q install -r $(TESTS_VENV_REQ), \ PIP, $(TESTS_VENV_REQ)) $(call quiet-command, touch $@) -else -$(TESTS_VENV_DIR): - $(error "venv directory for tests requires Python 3") -endif $(TESTS_RESULTS_DIR): $(call quiet-command, mkdir -p $@, \
Python 3.5 is the oldest Python version available on our supported build platforms, and Python 2 end of life will be 3 weeks after the planned release date of QEMU 4.2.0. Drop Python 2 support from configure completely, and require Python 3.5 or newer. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- configure | 18 ++++-------------- tests/Makefile.include | 5 ----- 2 files changed, 4 insertions(+), 19 deletions(-)