[U-Boot] [PATCH] test/py: Fix pytest4 deprecation warnings

Fix the following spit from pytest:
u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. Please use node.get_closest_marker(name) or node.iter_markers(name). Docs: https://docs.pytest.org/en/latest/mark.html#updating-code for board in mark.args:
In both cases, the later suggestion is applicable.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Igor Opaniuk igor.opaniuk@linaro.org Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org --- test/py/conftest.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/test/py/conftest.py b/test/py/conftest.py index e40cbf0ba1..745ca5ac4a 100644 --- a/test/py/conftest.py +++ b/test/py/conftest.py @@ -431,11 +431,9 @@ def setup_boardspec(item): Nothing. """
- mark = item.get_marker('boardspec') - if not mark: - return required_boards = [] - for board in mark.args: + for boards in item.iter_markers('boardspec'): + board = boards.args[0] if board.startswith('!'): if ubconfig.board_type == board[1:]: pytest.skip('board "%s" not supported' % ubconfig.board_type) @@ -459,10 +457,8 @@ def setup_buildconfigspec(item): Nothing. """
- mark = item.get_marker('buildconfigspec') - if not mark: - return - for option in mark.args: + for options in item.iter_markers('buildconfigspec'): + option = options.args[0] if not ubconfig.buildconfig.get('config_' + option.lower(), None): pytest.skip('.config feature "%s" not enabled' % option.lower())

On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote:
Fix the following spit from pytest:
u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. Please use node.get_closest_marker(name) or node.iter_markers(name). Docs: https://docs.pytest.org/en/latest/mark.html#updating-code for board in mark.args:
In both cases, the later suggestion is applicable.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Igor Opaniuk igor.opaniuk@linaro.org Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org
Deferred, for now we don't support newer pytest than 2.8.7 and you'll need to use virtualenv to set that up if needed. There is not, AFAICT, a way to support both versions.

On 3/13/19 12:19 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote:
Fix the following spit from pytest:
u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. Please use node.get_closest_marker(name) or node.iter_markers(name). Docs: https://docs.pytest.org/en/latest/mark.html#updating-code for board in mark.args:
In both cases, the later suggestion is applicable.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Igor Opaniuk igor.opaniuk@linaro.org Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org
Deferred, for now we don't support newer pytest than 2.8.7 and you'll need to use virtualenv to set that up if needed. There is not, AFAICT, a way to support both versions.
That's what's in debian testing though, so maybe we need to support it somehow.

On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote:
On 3/13/19 12:19 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote:
Fix the following spit from pytest:
u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. Please use node.get_closest_marker(name) or node.iter_markers(name). Docs: https://docs.pytest.org/en/latest/mark.html#updating-code for board in mark.args:
In both cases, the later suggestion is applicable.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Igor Opaniuk igor.opaniuk@linaro.org Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org
Deferred, for now we don't support newer pytest than 2.8.7 and you'll need to use virtualenv to set that up if needed. There is not, AFAICT, a way to support both versions.
That's what's in debian testing though, so maybe we need to support it somehow.
Yes, I'm _very_ frustrated at the speed at which pytest went from "this is the API" to "this API is deprecated" to "this API doesn't work and here's the new, incompatible API". Debian/testing needs to use virtualenv to setup a python area with older pytest installed, just like we do in .travis.yml.
And wrt making our python stuff happier with newer versions, I'm far more worried about all of the python2-and-not-3 scripts we have currently. :(

On 3/13/19 12:25 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote:
On 3/13/19 12:19 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote:
Fix the following spit from pytest:
u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. Please use node.get_closest_marker(name) or node.iter_markers(name). Docs: https://docs.pytest.org/en/latest/mark.html#updating-code for board in mark.args:
In both cases, the later suggestion is applicable.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Igor Opaniuk igor.opaniuk@linaro.org Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org
Deferred, for now we don't support newer pytest than 2.8.7 and you'll need to use virtualenv to set that up if needed. There is not, AFAICT, a way to support both versions.
That's what's in debian testing though, so maybe we need to support it somehow.
Yes, I'm _very_ frustrated at the speed at which pytest went from "this is the API" to "this API is deprecated" to "this API doesn't work and here's the new, incompatible API". Debian/testing needs to use virtualenv to setup a python area with older pytest installed, just like we do in .travis.yml.
Can't we rather have people use the new APIs and virtualenv new python?
And wrt making our python stuff happier with newer versions, I'm far more worried about all of the python2-and-not-3 scripts we have currently. :(
Right

On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote:
On 3/13/19 12:25 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote:
On 3/13/19 12:19 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote:
Fix the following spit from pytest:
u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. Please use node.get_closest_marker(name) or node.iter_markers(name). Docs: https://docs.pytest.org/en/latest/mark.html#updating-code for board in mark.args:
In both cases, the later suggestion is applicable.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Igor Opaniuk igor.opaniuk@linaro.org Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org
Deferred, for now we don't support newer pytest than 2.8.7 and you'll need to use virtualenv to set that up if needed. There is not, AFAICT, a way to support both versions.
That's what's in debian testing though, so maybe we need to support it somehow.
Yes, I'm _very_ frustrated at the speed at which pytest went from "this is the API" to "this API is deprecated" to "this API doesn't work and here's the new, incompatible API". Debian/testing needs to use virtualenv to setup a python area with older pytest installed, just like we do in .travis.yml.
Can't we rather have people use the new APIs and virtualenv new python?
Not as easily, no. Debian/testing may have something much newer but Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand but it's probably inbetween and so on.

On 3/13/19 12:29 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote:
On 3/13/19 12:25 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote:
On 3/13/19 12:19 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote:
Fix the following spit from pytest:
u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. Please use node.get_closest_marker(name) or node.iter_markers(name). Docs: https://docs.pytest.org/en/latest/mark.html#updating-code for board in mark.args:
In both cases, the later suggestion is applicable.
Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com Cc: Igor Opaniuk igor.opaniuk@linaro.org Cc: Tom Rini trini@konsulko.com Cc: Simon Glass sjg@chromium.org
Deferred, for now we don't support newer pytest than 2.8.7 and you'll need to use virtualenv to set that up if needed. There is not, AFAICT, a way to support both versions.
That's what's in debian testing though, so maybe we need to support it somehow.
Yes, I'm _very_ frustrated at the speed at which pytest went from "this is the API" to "this API is deprecated" to "this API doesn't work and here's the new, incompatible API". Debian/testing needs to use virtualenv to setup a python area with older pytest installed, just like we do in .travis.yml.
Can't we rather have people use the new APIs and virtualenv new python?
Not as easily, no. Debian/testing may have something much newer but Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?

On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote:
On 3/13/19 12:29 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote:
On 3/13/19 12:25 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote:
On 3/13/19 12:19 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote:
> Fix the following spit from pytest: > > u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. > Please use node.get_closest_marker(name) or node.iter_markers(name). > Docs: https://docs.pytest.org/en/latest/mark.html#updating-code > for board in mark.args: > > In both cases, the later suggestion is applicable. > > Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com > Cc: Igor Opaniuk igor.opaniuk@linaro.org > Cc: Tom Rini trini@konsulko.com > Cc: Simon Glass sjg@chromium.org
Deferred, for now we don't support newer pytest than 2.8.7 and you'll need to use virtualenv to set that up if needed. There is not, AFAICT, a way to support both versions.
That's what's in debian testing though, so maybe we need to support it somehow.
Yes, I'm _very_ frustrated at the speed at which pytest went from "this is the API" to "this API is deprecated" to "this API doesn't work and here's the new, incompatible API". Debian/testing needs to use virtualenv to setup a python area with older pytest installed, just like we do in .travis.yml.
Can't we rather have people use the new APIs and virtualenv new python?
Not as easily, no. Debian/testing may have something much newer but Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.

On 3/13/19 5:01 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote:
On 3/13/19 12:29 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote:
On 3/13/19 12:25 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote:
On 3/13/19 12:19 PM, Tom Rini wrote: > On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: > >> Fix the following spit from pytest: >> >> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >> Please use node.get_closest_marker(name) or node.iter_markers(name). >> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >> for board in mark.args: >> >> In both cases, the later suggestion is applicable. >> >> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >> Cc: Igor Opaniuk igor.opaniuk@linaro.org >> Cc: Tom Rini trini@konsulko.com >> Cc: Simon Glass sjg@chromium.org > > Deferred, for now we don't support newer pytest than 2.8.7 and you'll > need to use virtualenv to set that up if needed. There is not, AFAICT, > a way to support both versions.
That's what's in debian testing though, so maybe we need to support it somehow.
Yes, I'm _very_ frustrated at the speed at which pytest went from "this is the API" to "this API is deprecated" to "this API doesn't work and here's the new, incompatible API". Debian/testing needs to use virtualenv to setup a python area with older pytest installed, just like we do in .travis.yml.
Can't we rather have people use the new APIs and virtualenv new python?
Not as easily, no. Debian/testing may have something much newer but Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?

On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote:
On 3/13/19 5:01 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote:
On 3/13/19 12:29 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote:
On 3/13/19 12:25 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: > On 3/13/19 12:19 PM, Tom Rini wrote: >> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >> >>> Fix the following spit from pytest: >>> >>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>> for board in mark.args: >>> >>> In both cases, the later suggestion is applicable. >>> >>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>> Cc: Tom Rini trini@konsulko.com >>> Cc: Simon Glass sjg@chromium.org >> >> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >> need to use virtualenv to set that up if needed. There is not, AFAICT, >> a way to support both versions. > > That's what's in debian testing though, so maybe we need to support it > somehow.
Yes, I'm _very_ frustrated at the speed at which pytest went from "this is the API" to "this API is deprecated" to "this API doesn't work and here's the new, incompatible API". Debian/testing needs to use virtualenv to setup a python area with older pytest installed, just like we do in .travis.yml.
Can't we rather have people use the new APIs and virtualenv new python?
Not as easily, no. Debian/testing may have something much newer but Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
So no, I'm not going to change the setup that's working for existing installs today. Frankly, the whole thing has me sighing rather loudly and figuring the only path forward is that yes, we'll have to mandate _everyone_ use a virtualenv and some helper script around that so it's not too painful. But all of that is much less important that getting away from python2.

On 3/13/19 8:42 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote:
On 3/13/19 5:01 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote:
On 3/13/19 12:29 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote:
On 3/13/19 12:25 PM, Tom Rini wrote: > On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: >> On 3/13/19 12:19 PM, Tom Rini wrote: >>> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >>> >>>> Fix the following spit from pytest: >>>> >>>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>>> for board in mark.args: >>>> >>>> In both cases, the later suggestion is applicable. >>>> >>>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>>> Cc: Tom Rini trini@konsulko.com >>>> Cc: Simon Glass sjg@chromium.org >>> >>> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >>> need to use virtualenv to set that up if needed. There is not, AFAICT, >>> a way to support both versions. >> >> That's what's in debian testing though, so maybe we need to support it >> somehow. > > Yes, I'm _very_ frustrated at the speed at which pytest went from "this > is the API" to "this API is deprecated" to "this API doesn't work and > here's the new, incompatible API". Debian/testing needs to use > virtualenv to setup a python area with older pytest installed, just like > we do in .travis.yml.
Can't we rather have people use the new APIs and virtualenv new python?
Not as easily, no. Debian/testing may have something much newer but Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
I don't think I get your point here. Sure, old distros might need to change and start using virtualenv because the software is just too old. We cannot support all kinds of old stuff. If the API we're using is getting deprecated, let's just switch to the new one and ask the users of old software to upgrade (?).
So no, I'm not going to change the setup that's working for existing installs today. Frankly, the whole thing has me sighing rather loudly and figuring the only path forward is that yes, we'll have to mandate _everyone_ use a virtualenv and some helper script around that so it's not too painful. But all of that is much less important that getting away from python2.
I think that's a bit off-topic here. However, what's still stuck on python2 ?

On Thu, Mar 14, 2019 at 01:20:09AM +0100, Marek Vasut wrote:
On 3/13/19 8:42 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote:
On 3/13/19 5:01 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote:
On 3/13/19 12:29 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote: > On 3/13/19 12:25 PM, Tom Rini wrote: >> On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: >>> On 3/13/19 12:19 PM, Tom Rini wrote: >>>> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >>>> >>>>> Fix the following spit from pytest: >>>>> >>>>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>>>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>>>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>>>> for board in mark.args: >>>>> >>>>> In both cases, the later suggestion is applicable. >>>>> >>>>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>>>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>>>> Cc: Tom Rini trini@konsulko.com >>>>> Cc: Simon Glass sjg@chromium.org >>>> >>>> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >>>> need to use virtualenv to set that up if needed. There is not, AFAICT, >>>> a way to support both versions. >>> >>> That's what's in debian testing though, so maybe we need to support it >>> somehow. >> >> Yes, I'm _very_ frustrated at the speed at which pytest went from "this >> is the API" to "this API is deprecated" to "this API doesn't work and >> here's the new, incompatible API". Debian/testing needs to use >> virtualenv to setup a python area with older pytest installed, just like >> we do in .travis.yml. > > Can't we rather have people use the new APIs and virtualenv new python?
Not as easily, no. Debian/testing may have something much newer but Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
I don't think I get your point here. Sure, old distros might need to change and start using virtualenv because the software is just too old. We cannot support all kinds of old stuff. If the API we're using is getting deprecated, let's just switch to the new one and ask the users of old software to upgrade (?).
My point is that "pin to a newer pytest version" is not something I want right now. It will break existing setups and provide nothing in return. There's not some new feature of pytest we're missing out on. My take away from all of this is that we need to move the whole thing into being wrapped up, for everyone, as we cannot expect random community python modules to remove an API in an extremely quick fashion. If you're motivated enough over this to go off and do that, yes, sure. But I will not take a patch this patch as-is, as it breaks travis-ci. I will not take a v2 of this patch that is the above plus pinning to a new pytest as that's just going to push the problem from "Debian/Buster and others people need to continue to setup virtualenv" to "Ubuntu 16.04 and other people now need to setup virtualenv". That's just pushing the problem around and not making anything better.
So no, I'm not going to change the setup that's working for existing installs today. Frankly, the whole thing has me sighing rather loudly and figuring the only path forward is that yes, we'll have to mandate _everyone_ use a virtualenv and some helper script around that so it's not too painful. But all of that is much less important that getting away from python2.
I think that's a bit off-topic here. However, what's still stuck on python2 ?
$ git grep -il python2 Documentation/sphinx/kerneldoc.py Makefile scripts/dtc/pylibfdt/Makefile scripts/dtc/pylibfdt/setup.py scripts/fill_scrapyard.py scripts/mailmapper test/py/test.py tools/binman/binman.py tools/buildman/buildman.py tools/dtoc/dtoc.py tools/genboardscfg.py tools/microcode-tool.py tools/moveconfig.py tools/patman/patman.py tools/rkmux.py
-- Best regards, Marek Vasut

On 3/14/19 2:01 AM, Tom Rini wrote:
On Thu, Mar 14, 2019 at 01:20:09AM +0100, Marek Vasut wrote:
On 3/13/19 8:42 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote:
On 3/13/19 5:01 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote:
On 3/13/19 12:29 PM, Tom Rini wrote: > On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote: >> On 3/13/19 12:25 PM, Tom Rini wrote: >>> On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: >>>> On 3/13/19 12:19 PM, Tom Rini wrote: >>>>> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >>>>> >>>>>> Fix the following spit from pytest: >>>>>> >>>>>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>>>>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>>>>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>>>>> for board in mark.args: >>>>>> >>>>>> In both cases, the later suggestion is applicable. >>>>>> >>>>>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>>>>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>>>>> Cc: Tom Rini trini@konsulko.com >>>>>> Cc: Simon Glass sjg@chromium.org >>>>> >>>>> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >>>>> need to use virtualenv to set that up if needed. There is not, AFAICT, >>>>> a way to support both versions. >>>> >>>> That's what's in debian testing though, so maybe we need to support it >>>> somehow. >>> >>> Yes, I'm _very_ frustrated at the speed at which pytest went from "this >>> is the API" to "this API is deprecated" to "this API doesn't work and >>> here's the new, incompatible API". Debian/testing needs to use >>> virtualenv to setup a python area with older pytest installed, just like >>> we do in .travis.yml. >> >> Can't we rather have people use the new APIs and virtualenv new python? > > Not as easily, no. Debian/testing may have something much newer but > Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand > but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
I don't think I get your point here. Sure, old distros might need to change and start using virtualenv because the software is just too old. We cannot support all kinds of old stuff. If the API we're using is getting deprecated, let's just switch to the new one and ask the users of old software to upgrade (?).
My point is that "pin to a newer pytest version" is not something I want right now. It will break existing setups and provide nothing in return.
Besides, using latest code instead of old stuff, as we should ? If your existing setup breaks, maybe you should update your existing setup.
There's not some new feature of pytest we're missing out on. My take away from all of this is that we need to move the whole thing into being wrapped up, for everyone, as we cannot expect random community python modules to remove an API in an extremely quick fashion. If you're motivated enough over this to go off and do that, yes, sure. But I will not take a patch this patch as-is, as it breaks travis-ci.
Cool, and without this patch, all the tests fail on debian testing. So maybe travis needs an update ?
I will not take a v2 of this patch that is the above plus pinning to a new pytest as that's just going to push the problem from "Debian/Buster and others people need to continue to setup virtualenv" to "Ubuntu 16.04 and other people now need to setup virtualenv". That's just pushing the problem around and not making anything better.
I think everyone should just setup virtualenv if their setup is too old?
So no, I'm not going to change the setup that's working for existing installs today. Frankly, the whole thing has me sighing rather loudly and figuring the only path forward is that yes, we'll have to mandate _everyone_ use a virtualenv and some helper script around that so it's not too painful. But all of that is much less important that getting away from python2.
I think that's a bit off-topic here. However, what's still stuck on python2 ?
$ git grep -il python2 Documentation/sphinx/kerneldoc.py Makefile scripts/dtc/pylibfdt/Makefile scripts/dtc/pylibfdt/setup.py scripts/fill_scrapyard.py scripts/mailmapper test/py/test.py tools/binman/binman.py tools/buildman/buildman.py tools/dtoc/dtoc.py tools/genboardscfg.py tools/microcode-tool.py tools/moveconfig.py tools/patman/patman.py tools/rkmux.py
-- Best regards, Marek Vasut

On Fri, Mar 15, 2019 at 06:39:23PM +0100, Marek Vasut wrote:
On 3/14/19 2:01 AM, Tom Rini wrote:
On Thu, Mar 14, 2019 at 01:20:09AM +0100, Marek Vasut wrote:
On 3/13/19 8:42 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote:
On 3/13/19 5:01 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote: > On 3/13/19 12:29 PM, Tom Rini wrote: >> On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote: >>> On 3/13/19 12:25 PM, Tom Rini wrote: >>>> On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: >>>>> On 3/13/19 12:19 PM, Tom Rini wrote: >>>>>> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >>>>>> >>>>>>> Fix the following spit from pytest: >>>>>>> >>>>>>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>>>>>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>>>>>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>>>>>> for board in mark.args: >>>>>>> >>>>>>> In both cases, the later suggestion is applicable. >>>>>>> >>>>>>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>>>>>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>>>>>> Cc: Tom Rini trini@konsulko.com >>>>>>> Cc: Simon Glass sjg@chromium.org >>>>>> >>>>>> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >>>>>> need to use virtualenv to set that up if needed. There is not, AFAICT, >>>>>> a way to support both versions. >>>>> >>>>> That's what's in debian testing though, so maybe we need to support it >>>>> somehow. >>>> >>>> Yes, I'm _very_ frustrated at the speed at which pytest went from "this >>>> is the API" to "this API is deprecated" to "this API doesn't work and >>>> here's the new, incompatible API". Debian/testing needs to use >>>> virtualenv to setup a python area with older pytest installed, just like >>>> we do in .travis.yml. >>> >>> Can't we rather have people use the new APIs and virtualenv new python? >> >> Not as easily, no. Debian/testing may have something much newer but >> Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand >> but it's probably inbetween and so on. > > While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
I don't think I get your point here. Sure, old distros might need to change and start using virtualenv because the software is just too old. We cannot support all kinds of old stuff. If the API we're using is getting deprecated, let's just switch to the new one and ask the users of old software to upgrade (?).
My point is that "pin to a newer pytest version" is not something I want right now. It will break existing setups and provide nothing in return.
Besides, using latest code instead of old stuff, as we should ?
We should? What's the reason we need to upgrade? What problem we have is being fixed?
If your existing setup breaks, maybe you should update your existing setup.
No, we don't break existing setups.
There's not some new feature of pytest we're missing out on. My take away from all of this is that we need to move the whole thing into being wrapped up, for everyone, as we cannot expect random community python modules to remove an API in an extremely quick fashion. If you're motivated enough over this to go off and do that, yes, sure. But I will not take a patch this patch as-is, as it breaks travis-ci.
Cool, and without this patch, all the tests fail on debian testing.
Everyone else is using virtualenv.
So maybe travis needs an update ?
Please go ${search_engine} the problem. TL;DR, sure, just as soon as that's possible!
I will not take a v2 of this patch that is the above plus pinning to a new pytest as that's just going to push the problem from "Debian/Buster and others people need to continue to setup virtualenv" to "Ubuntu 16.04 and other people now need to setup virtualenv". That's just pushing the problem around and not making anything better.
I think everyone should just setup virtualenv if their setup is too old?
Nope. If we're going to do anything about this, we're going to fix the problem so we don't have the problem again in a year, when another API gets removed. We're not going to break people that have a working setup already.

On 3/16/19 2:50 AM, Tom Rini wrote:
On Fri, Mar 15, 2019 at 06:39:23PM +0100, Marek Vasut wrote:
On 3/14/19 2:01 AM, Tom Rini wrote:
On Thu, Mar 14, 2019 at 01:20:09AM +0100, Marek Vasut wrote:
On 3/13/19 8:42 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote:
On 3/13/19 5:01 PM, Tom Rini wrote: > On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote: >> On 3/13/19 12:29 PM, Tom Rini wrote: >>> On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote: >>>> On 3/13/19 12:25 PM, Tom Rini wrote: >>>>> On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: >>>>>> On 3/13/19 12:19 PM, Tom Rini wrote: >>>>>>> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >>>>>>> >>>>>>>> Fix the following spit from pytest: >>>>>>>> >>>>>>>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>>>>>>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>>>>>>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>>>>>>> for board in mark.args: >>>>>>>> >>>>>>>> In both cases, the later suggestion is applicable. >>>>>>>> >>>>>>>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>>>>>>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>>>>>>> Cc: Tom Rini trini@konsulko.com >>>>>>>> Cc: Simon Glass sjg@chromium.org >>>>>>> >>>>>>> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >>>>>>> need to use virtualenv to set that up if needed. There is not, AFAICT, >>>>>>> a way to support both versions. >>>>>> >>>>>> That's what's in debian testing though, so maybe we need to support it >>>>>> somehow. >>>>> >>>>> Yes, I'm _very_ frustrated at the speed at which pytest went from "this >>>>> is the API" to "this API is deprecated" to "this API doesn't work and >>>>> here's the new, incompatible API". Debian/testing needs to use >>>>> virtualenv to setup a python area with older pytest installed, just like >>>>> we do in .travis.yml. >>>> >>>> Can't we rather have people use the new APIs and virtualenv new python? >>> >>> Not as easily, no. Debian/testing may have something much newer but >>> Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand >>> but it's probably inbetween and so on. >> >> While I'm not a python expert, shouldn't virtualenv help with that ? > > Yes, and breaking old setups is usually frowned upon and making new > setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
I don't think I get your point here. Sure, old distros might need to change and start using virtualenv because the software is just too old. We cannot support all kinds of old stuff. If the API we're using is getting deprecated, let's just switch to the new one and ask the users of old software to upgrade (?).
My point is that "pin to a newer pytest version" is not something I want right now. It will break existing setups and provide nothing in return.
Besides, using latest code instead of old stuff, as we should ?
We should? What's the reason we need to upgrade? What problem we have is being fixed?
With this reasoning, we could've stuck to gcc 2.95 too though. Why didn't we ?
If your existing setup breaks, maybe you should update your existing setup.
No, we don't break existing setups.
Heh? Seems to happen all the time with the DM/DT stuff.
There's not some new feature of pytest we're missing out on. My take away from all of this is that we need to move the whole thing into being wrapped up, for everyone, as we cannot expect random community python modules to remove an API in an extremely quick fashion. If you're motivated enough over this to go off and do that, yes, sure. But I will not take a patch this patch as-is, as it breaks travis-ci.
Cool, and without this patch, all the tests fail on debian testing.
Everyone else is using virtualenv.
Everyone else, but ancient systems, OK.
So maybe travis needs an update ?
Please go ${search_engine} the problem. TL;DR, sure, just as soon as that's possible!
So why can't travis use virtualenv ? How do other systems set up various python versions on travis ?
I will not take a v2 of this patch that is the above plus pinning to a new pytest as that's just going to push the problem from "Debian/Buster and others people need to continue to setup virtualenv" to "Ubuntu 16.04 and other people now need to setup virtualenv". That's just pushing the problem around and not making anything better.
I think everyone should just setup virtualenv if their setup is too old?
Nope. If we're going to do anything about this, we're going to fix the problem so we don't have the problem again in a year, when another API gets removed. We're not going to break people that have a working setup already.
I think I'll use that argument at some point :)

On Sat, Mar 16, 2019 at 09:23:01PM +0100, Marek Vasut wrote:
On 3/16/19 2:50 AM, Tom Rini wrote:
On Fri, Mar 15, 2019 at 06:39:23PM +0100, Marek Vasut wrote:
On 3/14/19 2:01 AM, Tom Rini wrote:
On Thu, Mar 14, 2019 at 01:20:09AM +0100, Marek Vasut wrote:
On 3/13/19 8:42 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote: > On 3/13/19 5:01 PM, Tom Rini wrote: >> On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote: >>> On 3/13/19 12:29 PM, Tom Rini wrote: >>>> On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote: >>>>> On 3/13/19 12:25 PM, Tom Rini wrote: >>>>>> On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: >>>>>>> On 3/13/19 12:19 PM, Tom Rini wrote: >>>>>>>> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >>>>>>>> >>>>>>>>> Fix the following spit from pytest: >>>>>>>>> >>>>>>>>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>>>>>>>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>>>>>>>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>>>>>>>> for board in mark.args: >>>>>>>>> >>>>>>>>> In both cases, the later suggestion is applicable. >>>>>>>>> >>>>>>>>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>>>>>>>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>>>>>>>> Cc: Tom Rini trini@konsulko.com >>>>>>>>> Cc: Simon Glass sjg@chromium.org >>>>>>>> >>>>>>>> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >>>>>>>> need to use virtualenv to set that up if needed. There is not, AFAICT, >>>>>>>> a way to support both versions. >>>>>>> >>>>>>> That's what's in debian testing though, so maybe we need to support it >>>>>>> somehow. >>>>>> >>>>>> Yes, I'm _very_ frustrated at the speed at which pytest went from "this >>>>>> is the API" to "this API is deprecated" to "this API doesn't work and >>>>>> here's the new, incompatible API". Debian/testing needs to use >>>>>> virtualenv to setup a python area with older pytest installed, just like >>>>>> we do in .travis.yml. >>>>> >>>>> Can't we rather have people use the new APIs and virtualenv new python? >>>> >>>> Not as easily, no. Debian/testing may have something much newer but >>>> Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand >>>> but it's probably inbetween and so on. >>> >>> While I'm not a python expert, shouldn't virtualenv help with that ? >> >> Yes, and breaking old setups is usually frowned upon and making new >> setups conform to the existing ways is how things are usually done. > > If you use venv with old setup, won't that give you the new python you > need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
I don't think I get your point here. Sure, old distros might need to change and start using virtualenv because the software is just too old. We cannot support all kinds of old stuff. If the API we're using is getting deprecated, let's just switch to the new one and ask the users of old software to upgrade (?).
My point is that "pin to a newer pytest version" is not something I want right now. It will break existing setups and provide nothing in return.
Besides, using latest code instead of old stuff, as we should ?
We should? What's the reason we need to upgrade? What problem we have is being fixed?
With this reasoning, we could've stuck to gcc 2.95 too though. Why didn't we ?
If your existing setup breaks, maybe you should update your existing setup.
No, we don't break existing setups.
Heh? Seems to happen all the time with the DM/DT stuff.
There's not some new feature of pytest we're missing out on. My take away from all of this is that we need to move the whole thing into being wrapped up, for everyone, as we cannot expect random community python modules to remove an API in an extremely quick fashion. If you're motivated enough over this to go off and do that, yes, sure. But I will not take a patch this patch as-is, as it breaks travis-ci.
Cool, and without this patch, all the tests fail on debian testing.
Everyone else is using virtualenv.
Everyone else, but ancient systems, OK.
So maybe travis needs an update ?
Please go ${search_engine} the problem. TL;DR, sure, just as soon as that's possible!
So why can't travis use virtualenv ? How do other systems set up various python versions on travis ?
I will not take a v2 of this patch that is the above plus pinning to a new pytest as that's just going to push the problem from "Debian/Buster and others people need to continue to setup virtualenv" to "Ubuntu 16.04 and other people now need to setup virtualenv". That's just pushing the problem around and not making anything better.
I think everyone should just setup virtualenv if their setup is too old?
Nope. If we're going to do anything about this, we're going to fix the problem so we don't have the problem again in a year, when another API gets removed. We're not going to break people that have a working setup already.
I think I'll use that argument at some point :)
I don't even know what to say at this point.

On Wed, Mar 13, 2019 at 09:01:53PM -0400, Tom Rini wrote:
On Thu, Mar 14, 2019 at 01:20:09AM +0100, Marek Vasut wrote:
On 3/13/19 8:42 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 07:23:15PM +0100, Marek Vasut wrote:
On 3/13/19 5:01 PM, Tom Rini wrote:
On Wed, Mar 13, 2019 at 12:30:59PM +0100, Marek Vasut wrote:
On 3/13/19 12:29 PM, Tom Rini wrote: > On Wed, Mar 13, 2019 at 12:27:38PM +0100, Marek Vasut wrote: >> On 3/13/19 12:25 PM, Tom Rini wrote: >>> On Wed, Mar 13, 2019 at 12:20:49PM +0100, Marek Vasut wrote: >>>> On 3/13/19 12:19 PM, Tom Rini wrote: >>>>> On Wed, Mar 13, 2019 at 05:08:14AM +0100, Marek Vasut wrote: >>>>> >>>>>> Fix the following spit from pytest: >>>>>> >>>>>> u-boot/test/py/conftest.py:438: RemovedInPytest4Warning: MarkInfo objects are deprecated as they contain merged marks which are hard to deal with correctly. >>>>>> Please use node.get_closest_marker(name) or node.iter_markers(name). >>>>>> Docs: https://docs.pytest.org/en/latest/mark.html#updating-code >>>>>> for board in mark.args: >>>>>> >>>>>> In both cases, the later suggestion is applicable. >>>>>> >>>>>> Signed-off-by: Marek Vasut marek.vasut+renesas@gmail.com >>>>>> Cc: Igor Opaniuk igor.opaniuk@linaro.org >>>>>> Cc: Tom Rini trini@konsulko.com >>>>>> Cc: Simon Glass sjg@chromium.org >>>>> >>>>> Deferred, for now we don't support newer pytest than 2.8.7 and you'll >>>>> need to use virtualenv to set that up if needed. There is not, AFAICT, >>>>> a way to support both versions. >>>> >>>> That's what's in debian testing though, so maybe we need to support it >>>> somehow. >>> >>> Yes, I'm _very_ frustrated at the speed at which pytest went from "this >>> is the API" to "this API is deprecated" to "this API doesn't work and >>> here's the new, incompatible API". Debian/testing needs to use >>> virtualenv to setup a python area with older pytest installed, just like >>> we do in .travis.yml. >> >> Can't we rather have people use the new APIs and virtualenv new python? > > Not as easily, no. Debian/testing may have something much newer but > Debian/stable doesn't, and I don't know what Ubuntu/18.04 has off-hand > but it's probably inbetween and so on.
While I'm not a python expert, shouldn't virtualenv help with that ?
Yes, and breaking old setups is usually frowned upon and making new setups conform to the existing ways is how things are usually done.
If you use venv with old setup, won't that give you the new python you need ?
No, you don't need to. Travis is special in that it's based on Ubuntu 14.04 (!!!!) and so we needed to use pip there to setup anything, and have for forever. That in turn lead to us hitting this problem a while back, when "pip install pytest" first gave us something where the old behavior became a fatal error. That leads to installing the last version before pytest starts to complain about changing APIs. Normally old distributions however ship with 2.8.7 anyways and don't need virtaulenv.
I don't think I get your point here. Sure, old distros might need to change and start using virtualenv because the software is just too old. We cannot support all kinds of old stuff. If the API we're using is getting deprecated, let's just switch to the new one and ask the users of old software to upgrade (?).
My point is that "pin to a newer pytest version" is not something I want right now. It will break existing setups and provide nothing in return. There's not some new feature of pytest we're missing out on. My take away from all of this is that we need to move the whole thing into being wrapped up, for everyone, as we cannot expect random community python modules to remove an API in an extremely quick fashion. If you're motivated enough over this to go off and do that, yes, sure. But I will not take a patch this patch as-is, as it breaks travis-ci. I will not take a v2 of this patch that is the above plus pinning to a new pytest as that's just going to push the problem from "Debian/Buster and others people need to continue to setup virtualenv" to "Ubuntu 16.04 and other people now need to setup virtualenv". That's just pushing the problem around and not making anything better.
I might not have been clear enough here, so let me elaborate a little more. We do not follow now-normal conventions for using python modules. We need to change things such that 'make tests' does a 'pip -r requirements.txt' so that we use pip to install everything, and we need to setup a virtualenv to do that in. At that point we'll be following normal conventions and best practices (more closely anyhow, ugh, test.py is another python2 script) and can easily move from pytest 2.8.7 to whatever-later-version because we can do it atomically and not break anyone. As a bonus we'll have better control over our QA environment which is a good thing. Thanks!
participants (2)
-
Marek Vasut
-
Tom Rini