[ovs-dev] [RFC 00/55] Add Python 3 support.

Russell Bryant russell at ovn.org
Sat Dec 19 16:37:00 UTC 2015


On 12/19/2015 07:37 AM, Russell Bryant wrote:
> On 12/18/2015 06:16 PM, Justin Pettit wrote:
>>
>>> On Dec 18, 2015, at 12:12 PM, Russell Bryant <russell at ovn.org> wrote:
>>>
>>> I'm only submitting the cover letter for this RFC.  The current state of
>>> the patches can be seen on github.
>>>
>>> https://github.com/openvswitch/ovs/compare/master...russellb:python
>>
>> Wow!  This is awesome.
> 
> Thanks!
> 
>>> 3) Apply Python style fixes.  I couldn't help it.  This also lets us
>>>   run flake8 against the Python code automatically, which can find
>>>   some basic bugs.
>>
>> Have you thought about creating a make target to run things like
>> flake8 to make sure we don't introduce regressions?  Are they
>> reliable enough that we should run them by default?
> 
> I have indeed, or something close.  If you have 'tox' installed, you
> just do:
> 
>   $ cd python
>   $ tox -e pep8
> 
> or this from the root dir of the source tree:
> 
>   $ tox -e pep8 -c python/tox.ini
> 
> This runs automatically in 'make check' if tox is installed.  There's a
> new tox.at that runs it.
> 
> A 'make pep8' target would be a simple one-liner that runs the above
> command.  configure checks for it, so $HAVE_TOX is also available to
> make it conditional.
> 

I updated the 'make check' integration with a keyword so you can do:

$ make check TESTSUITEFLAGS="-k pep8"

Another option would be to run this part at ovs build time, similar to a
number of other checks currently being done.

$ grep 'ALL_LOCAL.*\-check' Makefile.am
ALL_LOCAL += config-h-check
ALL_LOCAL += printf-check
ALL_LOCAL += static-check
ALL_LOCAL += thread-safety-check
ALL_LOCAL += manpage-check

Here's what that would look like.  I don't have a strong opinion on
whether it belongs just in 'make check' or at build time.

> commit bcfb87543435a7c7daba8cc141b1ff38f48b1fb6
> Author: Russell Bryant <russell at ovn.org>
> Date:   Sat Dec 19 11:21:54 2015 -0500
> 
>     python: Run pep8 check automatically during build.
>     
>     The ovs build process already automatically runs a number of checks on
>     the code.  The tox pep8 environments that runs the flake8 tool is a good
>     quick sanity check on changes made to Python files, so automatically run
>     it at build time.  It will run once, and then only again if any Python
>     source files change.
>     
>     The first time this runs, it takes about 4.2 seconds on my laptop.
>     Subsequent runs take about 2.2 seconds.  The first time takes a little
>     longer because tox has to create a Python virtual environment to run the
>     tests in.
>     
>     Signed-off-by: Russell Bryant <russell at ovn.org>
> 
> diff --git a/.gitignore b/.gitignore
> index 71bb21b..19dd88a 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -56,6 +56,7 @@
>  /missing
>  /missing-distfiles
>  /package.m4
> +/pep8-check
>  /stamp-h1
>  /_build-gcc
>  /_build-clang
> diff --git a/Makefile.am b/Makefile.am
> index 966ba27..e80b521 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -338,6 +338,14 @@ manpage-check: $(man_MANS) $(dist_man_MANS) $(noinst_man_MANS)
>  CLEANFILES += manpage-check
>  endif
>  
> +if HAVE_PYTHON
> +if HAVE_TOX
> +ALL_LOCAL += pep8-check
> +pep8-check: $(ovs_pyfiles) $(ovstest_pyfiles) tests/*.py debian/ovs-monitor-ipsec utilities/ovs-pcap.in vtep/ovs-vtep ofproto/ipfix-gen-entities xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
> +       if tox -e pep8 -c python/tox.ini; then touch $@; else exit 1; fi
> +endif
> +endif
> +
>  include $(srcdir)/manpages.mk
>  $(srcdir)/manpages.mk: $(MAN_ROOTS) build-aux/sodepends.pl
>         @$(PERL) $(srcdir)/build-aux/sodepends.pl -I. -I$(srcdir) $(MAN_ROOTS) >$(@F).tmp




More information about the dev mailing list