On 03/05/2019 23.34, Eduardo Habkost wrote: > On Fri, May 03, 2019 at 06:00:11PM -0300, Eduardo Habkost wrote: >> On Fri, May 03, 2019 at 06:41:43PM +0200, Thomas Huth wrote: >>> On 03/05/2019 02.41, Eduardo Habkost wrote: >>>> From: Daniel P. Berrangé <berra...@redhat.com> >>>> >>>> Unless overridden via an env var or configure arg, QEMU will only look >>>> for the 'python' binary in $PATH. This is unhelpful on distros which >>>> are only shipping Python 3.x (eg Fedora) in their default install as, >>>> if they comply with PEP 394, the bare 'python' binary won't exist. >>>> >>>> This changes configure so that by default it will search for all three >>>> common python binaries, preferring to find Python 3.x versions. >>>> >>>> Signed-off-by: Daniel P. Berrangé <berra...@redhat.com> >>>> Message-Id: <20190327170701.23798-1-berra...@redhat.com> >>>> Signed-off-by: Eduardo Habkost <ehabk...@redhat.com> >>>> --- >>>> configure | 18 +++++++++++++++--- >>>> 1 file changed, 15 insertions(+), 3 deletions(-) >>> >>> I haven't bisected it, but I think this patch here broke the gitlab-ci >>> tests: >>> >>> https://gitlab.com/huth/qemu/-/jobs/206806257 >>> >>> Seems like the test is now failing when you don't have an UTF-8 locale: >>> >>> LANG=C make check-qapi-schema >> >> I couldn't reproduce it this way, probably because I'm running Python 3.7 >> which >> implements PEP 538 ("Coercing the legacy C locale to a UTF-8 based locale"). >> >> But I can force it to break using: >> >> PYTHONIOENCODING=ascii make check-qapi-schema >> >>> [...] >>> TEST tests/qapi-schema/union-base-empty.out >>> --- /builds/huth/qemu/tests/qapi-schema/unicode-str.err 2019-05-03 >>> 15:21:39.000000000 +0000 >>> +++ - 2019-05-03 15:42:01.561762978 +0000 >>> @@ -1 +1 @@ >>> -tests/qapi-schema/unicode-str.json:2: 'command' uses invalid name 'é' >>> +tests/qapi-schema/unicode-str.json:2: 'command' uses invalid name '\xe9' >>> /builds/huth/qemu/tests/Makefile.include:1105: recipe for target >>> 'check-tests/qapi-schema/unicode-str.json' failed >>> make: *** [check-tests/qapi-schema/unicode-str.json] Error 1 >>> >>> Any ideas how to fix this? >> >> Probably we just need to specify an explicit encoding at the statement that >> prints the error message to stderr. I will give it a try. > > Forcing a specific encoding inside test-qapi.py would very easy > on Python 3.7+ (sys.stderr.reconfigure(...)), but tricky on older > versions. I believe this is the simplest way to fix the problem > on Python 3.5 and 3.6. > > Can somebody confirm this really fixes the problem on gitlab-ci? > > --- > diff --git a/tests/Makefile.include b/tests/Makefile.include > index 7c8b9c84b2..af88ab6f8b 100644 > --- a/tests/Makefile.include > +++ b/tests/Makefile.include > @@ -1103,7 +1103,7 @@ check-tests/qemu-iotests-quick.sh: > tests/qemu-iotests-quick.sh qemu-img$(EXESUF) > .PHONY: $(patsubst %, check-%, $(check-qapi-schema-y)) > $(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: > $(SRC_PATH)/%.json > $(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts \ > - $(PYTHON) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \ > + PYTHONIOENCODING=utf-8 $(PYTHON) > $(SRC_PATH)/tests/qapi-schema/test-qapi.py \ > $^ >$*.test.out 2>$*.test.err; \ > echo $$? >$*.test.exit, \ > "TEST","$*.out")
Yes, thanks, this seems to fix this issue: https://gitlab.com/huth/qemu/-/jobs/207041381 It also works on my laptop now (which uses Python 3.6). Thomas