public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Liming Gao" <liming.gao@intel.com>
To: "Feng, Bob C" <bob.c.feng@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Shi, Steven" <steven.shi@intel.com>,
	"Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [Patch 1/1] BaseTools: Resolve a issue of Incremental build
Date: Wed, 18 Dec 2019 05:57:01 +0000	[thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E567622@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20191217015431.53296-1-bob.c.feng@intel.com>

Reviewed-by: Liming Gao <liming.gao@intel.com>

>-----Original Message-----
>From: Feng, Bob C
>Sent: Tuesday, December 17, 2019 9:55 AM
>To: devel@edk2.groups.io
>Cc: Gao, Liming <liming.gao@intel.com>; Shi, Steven <steven.shi@intel.com>;
>Kinney, Michael D <michael.d.kinney@intel.com>
>Subject: [Patch 1/1] BaseTools: Resolve a issue of Incremental build
>
>BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2311
>
>In patch set 13c5e34a - 0c3e8e99, we implemented incremental build with
>using compiler/pre-processor generate dependent header file function.
>
>A issue is found for MSVC compiler, that the cl.exe /showIncludes
>build option generate header file list to either stdout or stderr.
>For .c file, the header file list is print out to stdout while for
>.vfr, .aslc and .nasm file, the file list is print out to stderr.
>
>The build tool use two threads to process the message from stdout and
>stderr, but to generate correct *.deps file, build tool need to
>combine the header file list from stderr and other messages from stdout
>together with correct time sequence order.
>
>So this patch is trying to combine the stdout and stderr together for
>the process which is for calling make program.
>
>The impact of this patch is that the output message of build with -q
>will be changed. The compiler error message will not print out.
>The build behavior of other log level setting will not be impacted.
>
>
>Cc: Liming Gao <liming.gao@intel.com>
>Cc: Steven Shi <steven.shi@intel.com>
>Cc: Michael D Kinney <michael.d.kinney@intel.com>
>Signed-off-by: Bob Feng <bob.c.feng@intel.com>
>---
> BaseTools/Source/Python/build/build.py | 11 ++---------
> 1 file changed, 2 insertions(+), 9 deletions(-)
>
>diff --git a/BaseTools/Source/Python/build/build.py
>b/BaseTools/Source/Python/build/build.py
>index 8a8e32e496f8..5263c54e5ae0 100755
>--- a/BaseTools/Source/Python/build/build.py
>+++ b/BaseTools/Source/Python/build/build.py
>@@ -22,11 +22,11 @@ import time
> import platform
> import traceback
> import multiprocessing
> from threading import Thread,Event,BoundedSemaphore
> import threading
>-from subprocess import Popen,PIPE
>+from subprocess import Popen,PIPE, STDOUT
> from collections import OrderedDict, defaultdict
> from Common.buildoptions import BuildOption,BuildTarget
> from AutoGen.PlatformAutoGen import PlatformAutoGen
> from AutoGen.ModuleAutoGen import ModuleAutoGen
> from AutoGen.WorkspaceAutoGen import WorkspaceAutoGen
>@@ -227,26 +227,21 @@ def LaunchCommand(Command,
>WorkingDir,ModuleAuto = None):
>
>     Proc = None
>     EndOfProcedure = None
>     try:
>         # launch the command
>-        Proc = MakeSubProc(Command, stdout=PIPE, stderr=PIPE,
>env=os.environ, cwd=WorkingDir, bufsize=-1, shell=True)
>+        Proc = MakeSubProc(Command, stdout=PIPE, stderr=STDOUT,
>env=os.environ, cwd=WorkingDir, bufsize=-1, shell=True)
>
>         # launch two threads to read the STDOUT and STDERR
>         EndOfProcedure = Event()
>         EndOfProcedure.clear()
>         if Proc.stdout:
>             StdOutThread = Thread(target=ReadMessage, args=(Proc.stdout,
>EdkLogger.info, EndOfProcedure,Proc.ProcOut))
>             StdOutThread.setName("STDOUT-Redirector")
>             StdOutThread.setDaemon(False)
>             StdOutThread.start()
>
>-        if Proc.stderr:
>-            StdErrThread = Thread(target=ReadMessage, args=(Proc.stderr,
>EdkLogger.quiet, EndOfProcedure,Proc.ProcOut))
>-            StdErrThread.setName("STDERR-Redirector")
>-            StdErrThread.setDaemon(False)
>-            StdErrThread.start()
>
>         # waiting for program exit
>         Proc.wait()
>     except: # in case of aborting
>         # terminate the threads redirecting the program output
>@@ -258,12 +253,10 @@ def LaunchCommand(Command,
>WorkingDir,ModuleAuto = None):
>                 Command = " ".join(Command)
>             EdkLogger.error("build", COMMAND_FAILURE, "Failed to start
>command", ExtraData="%s [%s]" % (Command, WorkingDir))
>
>     if Proc.stdout:
>         StdOutThread.join()
>-    if Proc.stderr:
>-        StdErrThread.join()
>
>     # check the return code of the program
>     if Proc.returncode != 0:
>         if not isinstance(Command, type("")):
>             Command = " ".join(Command)
>--
>2.20.1.windows.1


      reply	other threads:[~2019-12-18  5:57 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-17  1:54 [Patch 1/1] BaseTools: Resolve a issue of Incremental build Bob Feng
2019-12-18  5:57 ` Liming Gao [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14E567622@SHSMSX104.ccr.corp.intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox