Do not sync settings after changing a property.

This can get exceedingly slow, particularly for batch updates, e.g.
Creator setting up profiles.

Change-Id: I80977e145efa67bf474530eddb134124827be3f2
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Fix documentation for Artifact item.

The property is called "filePath" now.

Change-Id: I3505bd2d673671c911826a8a2f1c833e99ff8ea0
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
qtprofilesetup: Refactor qt_lib_*.pri file reading.

Move this functionality to a dedicated function. It will get more
complex in a follow-up patch.

Change-Id: I541abbf8e8ffa05190980179ecb0919184f130eb
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Fix run environment setup.

Now Darwin platforms get the same DYLD_* environment variables set as
Xcode (plus Qt) so applications can be developed/tested without
embedding bundles. This brings equivalent behavior to what already
exists on Windows.

This also fixes a regression introduced in
5877328c4dacb1283408083cb3538ea5bc46eae5 with the Node.js module,
causing the working directory to be inappropriately changed by the run
command.

Change-Id: Ic2904f105378eb61d9236367329a2f9c8771a7d3
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Fix equality operators.

The Standard does not allow to dereference null pointers, even if that
reference is then only used to compare the pointer values. So introduce
a wrapper function that does the pointer-related checks first.

Task-number: QBS-674
Change-Id: I9a14b4871b91102699f09ed922b9ab0e0265209a
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
qtprofilesetup: Read qt_lib_*.pri files recursively.

They can contain "include" statements, apparently.

Change-Id: Idc67b7b58c909bdca3ebb2efdf11ee33f06b0b9b
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Bump version number in 1.3 branch.

Change-Id: Ib0ca977f5b1cf84b2dd7e9eb687154a1f1bccf8f
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
If build fails because no default profile is set, say how to set it.

Task-number: QBS-677
Change-Id: I3b89af584261a6dc00e561bc5eb59de4d6413565
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
setup-qt: Make sure the message about base profiles appears if needed.

We checked for profile keys starting with "cpp." and assumed if one was
present, the profile would have a toolchain set up. But on platforms
like OS X and Windows, we set certain cpp profiles ourselves, so we have
to exclude them from that check.

Change-Id: Iacc6fae5d1675c6b151de37f9b5827c46daf3ddc
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Evaluate Project.minimumQbsVersion earlier.

Currently, this property is evaluated after checking the module
properties and item types, so it cannot fulfill its purpose at all.

Change-Id: I6b84d9af69e1c0147f87eb0fead4409dbb036d5c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Try harder not to store inconsistent build graphs.

In particular, try to prevent that nodes of a product that is no longer
part of the project still appear as children of nodes in other products.
While it is not entirely certain that this solves the linked bug (as I
don't know how to trigger it), it is now hopefully no longer possible
that such an inconsistent state is actually written to disk (that is, if
the problem still exists, our sanity checks should now catch it when
storing the build graph, not when loading).

Task-number: QBS-682
Change-Id: Id6d55246ac3de014e6b917abbd6aed1505769968
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Add documentation about how to use custom modules.

We don't explain this anywhere at the moment, and users would very much
like to know.

Change-Id: Icf7c81d5931f1154d8a6fd978b8cfe5054180b4b
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com>
Do not clear Artifact::product in removeArtifact().

This is too early in the case of change tracking; we still do a couple
of things with the old build data afterwards.

Change-Id: I843e364288ed7b05bcb7d03386c102212ec18690
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
API: Do not check for file existence when removing.

The caller might have removed the file from the disk already.

Change-Id: I86d079c008b922e7594e7db22638a0d36b71eb6f
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Fix command look-up.

Only take executable regular files into account.
Also normalize the paths of executables and the working directories.

Task-number: QBS-683
Change-Id: I00147b1bca5c6d74bb4ce816e6abe03b65780a47
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Fix blackbox test on Windows.

Change-Id: Idde83678b7c937f092ae3583bc46dd7fd2cc0b59
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Version bump.

To 1.3.2.

Change-Id: Id0fd455865312fc8fcffb8759019ccc2ec3ff8ba
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Check for a valid qbs::Project in all public member functions.

To help buggy callers a bit.

Change-Id: I5dfe117013ba8bbfc1f0d859fe50545c62e654be
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Fix various bugs in WiX module and fix its autotest.

Misuse of moduleProperty vs moduleProperties, product vs input, reading
the toolchain property from the cpp module instead of the qbs module,
reading the build variant from the product instead of the qbs module,
and various style fixes.

Conditional artifacts are also replaced by outputArtifacts.

Change-Id: I11a7a73517cddb8f69db6270181f92c9674f9367
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
Store the build graph when adding or removing files.

Otherwise, if the project is closed without building, it will needlessly
be re-resolved the next time it is opened.

Change-Id: I6b88498c5576539d8ee9c5f84e22344af44d2bfe
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>