summaryrefslogtreecommitdiff
path: root/src/lib/buildgraph/processcommandexecutor.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix meaning of "Command.silent".Christian Kandeler2013-11-061-2/+0
| | | | | | | | | | | The new, saner meaning is: If this property is set to true, then qbs will not print the status message (containing the command description). Accordingly, the default is changed to false. Also, there is now a check that prints a warning if a non-silent command has an empty description. Change-Id: I5a8fd4e2f8901f6e2858946901e8081a6929d43f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Fix incorrect logging output.Jake Petroules2013-09-041-2/+2
| | | | | | | | | | | commandArgsToString will already always start with a space so the extra one was redundant and incorrect. empty string arguments are also quoted for clarity (these empty strings do get passed as actual arguments so this is good for debugging). Change-Id: Iba1c825a4ce62544b4df5e554c9453d2d2e22b10 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* introduce Transformer::product()Joerg Bornemann2013-08-121-4/+2
| | | | | | | | Simplifies the calling code. Remove pointless nullpointer check from jscommandexecutor. Change-Id: I867181d2b750f32f04376ce860f5dee6555d3e33 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Some minor improvements to the Error class.Christian Kandeler2013-06-181-5/+5
| | | | | | | | | | | | | - Rename "Error" to "ErrorInfo", to make clear that this class conveys information about errors, including that there might not actually be one. - Rename "ErrorData" to "ErrorItem", to make clear that these are parts of an aggregate structure. - Introduce ErrorInfo::hasError() for quick checking of whether an error occurred. Change-Id: Icea6ed5240d6d14bd30e9cea189c6babd7004792 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Log command-specific environment variables when tracing.Christian Kandeler2013-06-121-0/+1
| | | | | | | In addition to the command line. Change-Id: I0ef3576b4e3eb810fd923bef23799a7fff62aae6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Use private implementation in API classes.Christian Kandeler2013-05-231-10/+11
| | | | | | | | | While we do not promise a stable ABI at the moment, this is conceptually correct and has to be done sooner or later, with increasing effort the longer we delay it. Change-Id: Icc98443974e54d377167480ace601db4981ed43c Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Help compiler with branch prediction.Christian Kandeler2013-04-121-1/+1
| | | | | | | | | Mark error checks in potentially performance-sensitive contexts with Q_UNLIKELY. Actual benefits unknown, but it cannot hurt. Change-Id: If3d2375965e6342b5d7a0b46ad2c8a41fd3567d0 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Remove structural redundancy in project and product classes.Christian Kandeler2013-04-121-3/+2
| | | | | | | | | | | | | | | We had two project classes, each holding a list of products that was structurally identical, except that no BuildProduct object existed for a disabled ResolvedProduct. The same kind of duplication also happened for product dependencies. This patch gets rid of these parallel structures. BuildProject and BuildProduct are largely being demoted to data holders and are aggregated by ResolvedProject and ResolvedProduct, respectively. The resulting project structure should be easier to understand and maintain. Change-Id: I68beef60b9e0d62258f6a8337c9015864e18bd80 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Make a process' environment configurable in a prepare script.Christian Kandeler2013-04-031-5/+6
| | | | | | | | This is needed for applications that are configured via environment variables rather than command-line arguments. Change-Id: I114f2bcd65d8551175b35ffbd4912bd37699dc89 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* replace Q_ASSERT with QBS_ASSERT / QBS_CHECKJoerg Bornemann2013-02-141-1/+2
| | | | | Change-Id: I9f4d43b9b7be7e4ce814963d1feee81605a9d2eb Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Remove global log sink.Christian Kandeler2013-02-061-16/+16
| | | | | | | | | | | | | | | Applications may not want to use the same log sink for all builds. The logging facility is also decoupled from the command-line client in other ways: - The LogWriter modifiers for output channel and text color are gone, since this type of decision should not be made by low-level code. Instead, the "highlight" string can be forwarded to the log sink. - The console logger now lives in app/shared, as it must never be used by library code. Change-Id: I8863a554c9b74577320ef23f6f934a74e0f0cbb0 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Add debug output about what exactly gets executed.Christian Kandeler2013-01-241-3/+2
| | | | | | | | I.e. the real parameters to QProcess::start() when running an external program. Change-Id: Ic0b232316725af17125c096e4bf181babc3de02a Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
* Do not write directly into loggerTobias Hunger2013-01-111-30/+48
| | | | | | | | | | | Pass information up to the client instead so that it can decide how to handle it. This allows e.g. creator to parse compile output for build issues. Change-Id: I76be4eaeb289b211b7d2527b555536b556655492 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* update copyright yearJoerg Bornemann2013-01-091-1/+1
| | | | | Change-Id: Ic2962e57ede037b910d7e77b01b0163f0a22cb7d Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
* Improve ProcessCommandExecutorTobias Hunger2013-01-081-23/+26
| | | | | | | | | | | | | | * Report absolute path of executable to be run, incl. extensions on windows. This makes a dry run a bit more expensive, but also more useful. * Better calculation of command line length. This used to ignore extensions that were tagged on to the exectuable name as well as spaces between arguments and "" that might be necessary to escape whitespaces. * Replace m_commandline with m_program and m_arguments Change-Id: Id3becca9fea168a971af2e762aef984b4291c8f6 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Split up buildgraph.h and buildgraph.cpp.Christian Kandeler2012-12-041-1/+1
| | | | | | | Move things to the appropriate places. Change-Id: I2f201ccdf9c465a8c3201e229629b756cc258495 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Sanitize the Executor code flow.Christian Kandeler2012-11-291-1/+2
| | | | | | | | | | | | | The current behavior is not exactly well-defined, mostly due to signals calling back on the Executor while it is calling a function on the object emitting the signal (e.g. waitForFinished()). These traps are now gone. Also make sure error messages are in a sensible order when a build is canceled. In addition, remove unused functionality. Change-Id: Icf35eb378995a55b5ba4fc6caea9492eccb43527 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Implement "dry run" functionality.Christian Kandeler2012-11-151-0/+4
| | | | | Change-Id: Iae59f773c11ba6d7be748c95807727464906bcaa Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Introduce namespace Internal.Christian Kandeler2012-11-081-0/+2
| | | | | | | | | This makes it obvious at first glance which facilities are for public use and which are not, which should be useful especially for clients of the library. Change-Id: I7f74f13b5c8a4c63a1de57bf607084a3a3852653 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Split up class CommandExecutor.Christian Kandeler2012-10-221-0/+319
It currently combines the running of processes and Javascript commands, which are two completely different things. Put the respective functionality into dedicated classes and provide a common API via a base class. Change-Id: I65517fc6fa75c102c9029259ec9d96563b0a2a82 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>