From patchwork Thu Mar 2 20:54:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Mauro Carvalho Chehab X-Patchwork-Id: 9601925 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 6099B6016C for ; Fri, 3 Mar 2017 01:53:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 51F52285A1 for ; Fri, 3 Mar 2017 01:53:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 46E3B285D4; Fri, 3 Mar 2017 01:53:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 44402285A1 for ; Fri, 3 Mar 2017 01:53:46 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0C8F36ECCC; Fri, 3 Mar 2017 01:51:51 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from osg.samsung.com (ec2-52-27-115-49.us-west-2.compute.amazonaws.com [52.27.115.49]) by gabe.freedesktop.org (Postfix) with ESMTP id 6583F6EC55 for ; Thu, 2 Mar 2017 20:54:45 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by osg.samsung.com (Postfix) with ESMTP id 1855DA0DE2; Thu, 2 Mar 2017 20:55:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osg.samsung.com Received: from osg.samsung.com ([127.0.0.1]) by localhost (s-opensource.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LrGzfgvWRr8g; Thu, 2 Mar 2017 20:55:03 +0000 (UTC) Received: from vento.lan (177.41.125.80.dynamic.adsl.gvt.net.br [177.41.125.80]) by osg.samsung.com (Postfix) with ESMTPSA id 0F2A4A0C73; Thu, 2 Mar 2017 20:55:00 +0000 (UTC) Date: Thu, 2 Mar 2017 17:54:35 -0300 From: Mauro Carvalho Chehab To: Daniel Vetter Subject: Re: [PATCH] docs-rst: automatically convert Graphviz and SVG images Message-ID: <20170302175435.0360e0d2@vento.lan> In-Reply-To: <20170302170401.1caeff3e@vento.lan> References: <20170302151638.1882-2-daniel.vetter@ffwll.ch> <20170302154002.4552-1-daniel.vetter@ffwll.ch> <20170302150603.6c97765f@vento.lan> <20170302195259.asf4gtmid2n5xnde@phenom.ffwll.local> <20170302170401.1caeff3e@vento.lan> Organization: Samsung X-Mailer: Claws Mail 3.14.1 (GTK+ 2.24.31; x86_64-redhat-linux-gnu) MIME-Version: 1.0 X-Mailman-Approved-At: Fri, 03 Mar 2017 01:51:38 +0000 Cc: Markus Heiser , Jonathan Corbet , Daniel Vetter , Linux Doc Mailing List , DRI Development , Daniel Vetter , Laurent Pinchart X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Em Thu, 2 Mar 2017 17:04:01 -0300 Mauro Carvalho Chehab escreveu: > Em Thu, 2 Mar 2017 20:52:59 +0100 > Daniel Vetter escreveu: > > > On Thu, Mar 02, 2017 at 08:06:39PM +0100, Markus Heiser wrote: > > > Hi Mauro, > > > > > > > Tested here with the enclosed patch. > > > > > > great, big step forward making /media/Makefile smaller ... thanks a lot!!!! > > > > > > > It crashed: > > > > Exception occurred: > > > > File "/devel/v4l/patchwork/Documentation/sphinx/kfigure.py", line 222, in dot2format > > > > sys.stderr.write(err) > > > > TypeError: write() argument must be str, not bytes > > > > The full traceback has been saved in /tmp/sphinx-err-_1vahbmg.log, if you want to report the issue to the developers. > > > > Please also report this if it was a user error, so that a better error message can be provided next time. > > > > A bug report can be filed in the tracker at . Thanks! > > > > Documentation/Makefile.sphinx:69: recipe for target 'htmldocs' failed > > > > make[1]: *** [htmldocs] Error 1 > > > > Makefile:1450: recipe for target 'htmldocs' failed > > > > make: *** [htmldocs] Error 2 > > > > > > > > Weird enough, it produced a Documentation/output/media/uapi/v4l/pipeline.svg file. > > > > > > I guess that the dot command writes something to stderr. This is captured > > > by the extension and printed to stderr ... > > > > > > +def dot2format(dot_fname, out_fname): > > > ... > > > + exit_code = 42 > > > + with open(out_fname, "w") as out: > > > + p = subprocess.Popen( > > > + cmd, stdout = out, stderr = subprocess.PIPE ) > > > + nil, err = p.communicate() > > > + > > > + sys.stderr.write(err) > > > + > > > + exit_code = p.returncode > > > + out.flush() > > > + return bool(exit_code == 0) > > > > > > > File "/devel/v4l/patchwork/Documentation/sphinx/kfigure.py", line 222, in dot2format > > > > sys.stderr.write(err) > > > > TypeError: write() argument must be str, not bytes > > > > > > Do we need this stderr output? For a first test, uncomment the > > > "sys.stderr.write(err)“ in line 222. Or, if we really need the > > > stderr, try: > > > > > > - sys.stderr.write(err) > > > + sys.stderr.write(str(err)) > > > > > > I this fixes, there is another "sys.stderr.write(err)" in > > > func svg2pdf(..) which should also fixed …. > > > > > > +def svg2pdf(svg_fname, pdf_fname): > > > ... > > > + cmd = [convert_cmd, svg_fname, pdf_fname] > > > + p = subprocess.Popen( > > > + cmd, stdout = out, stderr = subprocess.PIPE ) > > > + nil, err = p.communicate() > > > + > > > - sys.stderr.write(err) > > > + sys.stderr.write(str(err)) > > > + > > > + exit_code = p.returncode > > > + return bool(exit_code == 0) > > > > Yes, I very much want stderr to be forward. > > Yes, error report is required. > > > Without that you don't see > > error output from dot or convert, and that makes it impossible to debug > > anything. If I want a direct forwarding of the bytes, how should I do this > > in python? Capturing stderr and then re-dumping it is kinda silly ... > > Markus or some other Python programmer may help us with that. > > > Note that I copied this pattern from the kernel-doc extension, seems to > > have worked there. > > Maybe it is broken there too then, or this is another python API > that changed over time. Here, I'm testing with: > python3-3.5.2-4.fc25.x86_64 > > From here: > https://docs.python.org/2/library/subprocess.html > > communicate returns a tuple. > > I used repr(p.communicate()[0], on the code snippet I sent, > as I copied from an example that I found at: > https://stackoverflow.com/questions/33295284/python-subprocess-popen-write-to-stderr > > Thanks, > Mauro I suspect that the actual fixup would be something like: commit ddf93ae81af10bb43caa651b9acd355f1d74cebe Author: Mauro Carvalho Chehab Date: Thu Mar 2 17:11:47 2017 -0300 kfigure.py fixups Signed-off-by: Mauro Carvalho Chehab Thanks, Mauro diff --git a/Documentation/sphinx/kfigure.py b/Documentation/sphinx/kfigure.py index 32eab0f4cfba..19389cb34d6f 100644 --- a/Documentation/sphinx/kfigure.py +++ b/Documentation/sphinx/kfigure.py @@ -217,11 +217,13 @@ def dot2format(dot_fname, out_fname): with open(out_fname, "w") as out: p = subprocess.Popen( cmd, stdout = out, stderr = subprocess.PIPE ) - nil, err = p.communicate() - - sys.stderr.write(err) + err = p.communicate() exit_code = p.returncode + + if exit_code == 0: + sys.stderr.write("Error:" + repr(err[0]) + "\n") + out.flush() return bool(exit_code == 0) @@ -239,11 +241,13 @@ def svg2pdf(svg_fname, pdf_fname): cmd = [convert_cmd, svg_fname, pdf_fname] p = subprocess.Popen( cmd, stdout = out, stderr = subprocess.PIPE ) - nil, err = p.communicate() - - sys.stderr.write(err) + err = p.communicate() exit_code = p.returncode + + if exit_code == 0: + sys.stderr.write("Error:" + repr(err[0]) + "\n") + return bool(exit_code == 0)