[Libosinfo] [osinfo-db PATCH] Makefile: Do not remove xmllint check when building on older OSes

Cole Robinson crobinso at redhat.com
Wed Mar 20 15:40:48 UTC 2019


On 3/19/19 12:09 PM, Fabiano Fidêncio wrote:
> Let's not remove the lint target as it can still be used by older OSes
> which do not support python3.
> 
> Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
> ---
>   Makefile | 14 +++++++++++++-
>   1 file changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 0000306..5d904ff 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -32,6 +32,8 @@ ARCHIVE = osinfo-db-$(TODAY).tar.xz
>   
>   ZANATA = zanata
>   
> +XMLLINT = xmllint
> +
>   PYTHON = python3
>   
>   V = 0
> @@ -120,6 +122,16 @@ update-po:
>             fi; \
>           done
>   
> +lint: $(DATA_FILES) $(SCHEMA_FILES)
> +	@command -v $(PYTHON) > /dev/null; \
> +	if [ $$? -ne 0 ] ; then \
> +	  for xml in `find data -name '*.xml' | sort`; do \
> +	    if ! $(XMLLINT) --relaxng data/schema/osinfo.rng --noout $$xml; then \
> +	      exit 1; \
> +	    fi; \
> +	  done \
> +	fi
> +
>   unit-tests: $(DATA_FILES) $(SCHEMA_FILES)
>   	@command -v $(PYTHON) > /dev/null; \
>   	if [ $$? -eq 0 ] ; then \
> @@ -131,4 +143,4 @@ unit-tests: $(DATA_FILES) $(SCHEMA_FILES)
>   	  echo "unit-tests are not going to be executed as no $(PYTHON) has been found"; \
>   	fi
>   
> -check: unit-tests
> +check: lint unit-tests
> 

If this is just to appease rhel7/centos7 CI, I'd rather either;

- make the tests work on python2
- have CI pull down python3 packages from EPEL
- just not run the tests on centos7

On the code side, making the tests work on python2 is as simple as:

diff --git a/tests/osinfo.py b/tests/osinfo.py
index eb63724..02c8f7e 100644
--- a/tests/osinfo.py
+++ b/tests/osinfo.py
@@ -1,9 +1,13 @@
  # This work is licensed under the GNU GPLv2 or later.
  # See the COPYING file in the top-level directory.

-from http.client import responses
-import logging
  import re
+import sys
+
+if sys.version_info[0] > 3:
+    from http.client import responses
+else:
+    from httplib import responses

  import requests


However 'make check' isn't going to 'just work' in this case, because it 
needs to differentiate using py.test (on centos7) vs pytest-3. And CI 
will need to pull down all the python2 deps: python-requests, 
libxml2-python, python-pytest. I also didn't test the network tests, 
there might be issues lurking there.

I don't have a strong opinion one way or the other if it's worth it. But 
re-adding this bit which will double run xml validation and drown out 
the pytest results with the xmllint spam is not nice IMO

- Cole




More information about the Libosinfo mailing list