diff --git a/qtcreator.qbs b/qtcreator.qbs
index 96216f147971f3ba8e6c1c2cac2008f88a5945f0..e773619b38d78898ef008cc8d79fb73a10d71653 100644
--- a/qtcreator.qbs
+++ b/qtcreator.qbs
@@ -160,7 +160,7 @@ Project {
             }
         }
 
-        ProductModule {
+        Export {
             Depends { name: "cpp" }
             cpp.includePaths: product.buildDirectory
         }
diff --git a/src/libs/QtcLibrary.qbs b/src/libs/QtcLibrary.qbs
index 85e27024df240e8319879d88fc92bcff0602c514..44a6641cb8572fc34c0082ee5e39e8fe54547a45 100644
--- a/src/libs/QtcLibrary.qbs
+++ b/src/libs/QtcLibrary.qbs
@@ -18,7 +18,7 @@ DynamicLibrary {
                                       : ["$ORIGIN", "$ORIGIN/.."]
     cpp.includePaths: [ ".", ".." ]
 
-    ProductModule {
+    Export {
         Depends { name: "cpp" }
         cpp.includePaths: [ "." ]
     }
diff --git a/src/libs/cplusplus/cplusplus.qbs b/src/libs/cplusplus/cplusplus.qbs
index 20041d86340934261792c3525ff98fca8d325ad2..31ea51c94007ba7bf8d59dfb2dfa5af05440a88c 100644
--- a/src/libs/cplusplus/cplusplus.qbs
+++ b/src/libs/cplusplus/cplusplus.qbs
@@ -168,7 +168,7 @@ QtcLibrary {
         "images/var_prot.png",
     ]
 
-    ProductModule {
+    Export {
         Depends { name: "cpp" }
         cpp.includePaths: [
             "../3rdparty"
diff --git a/src/libs/qmljs/qmljs.qbs b/src/libs/qmljs/qmljs.qbs
index bf0efb0611ca306069f0e42e028efb59a9464eb1..4253e0bb09cc970f854ac02fc65adf3aa9e144f7 100644
--- a/src/libs/qmljs/qmljs.qbs
+++ b/src/libs/qmljs/qmljs.qbs
@@ -106,7 +106,7 @@ QtcLibrary {
         "iscriptevaluator.h"
     ]
 
-    ProductModule {
+    Export {
         Depends { name: "cpp" }
         Depends { name: "LanguageUtils" }
     }
diff --git a/src/libs/ssh/ssh.qbs b/src/libs/ssh/ssh.qbs
index edc5663c914a3a189cc82d109bcee2a581687810..571821c22c93dc7a1164bd742477449a4479a429 100644
--- a/src/libs/ssh/ssh.qbs
+++ b/src/libs/ssh/ssh.qbs
@@ -114,7 +114,7 @@ QtcLibrary {
         ]
     }
 
-    ProductModule {
+    Export {
         Depends { name: "Qt"; submodules: ["widgets", "network"] }
     }
 }
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index 885a6caa2ebdd84b6a222bca3b75a148dba8daa6..b8f9bd7632588a641710d777ba19eac836ede0fd 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -211,8 +211,8 @@ QtcLibrary {
         ]
     }
 
-    ProductModule {
-        // ### [ remove, once qbs supports merging of ProductModule items in derived products
+    Export {
+        // ### [ remove, once qbs supports merging of Export items in derived products
         Depends { name: "cpp" }
         cpp.includePaths: [ ".." ]
         // ### ]
diff --git a/src/plugins/QtcPlugin.qbs b/src/plugins/QtcPlugin.qbs
index e6ff4f3373896d80f3b4683c6a8216bc6048f21c..518df2a3a760736b0a2be6ff4f4bd7c9a55aeba4 100644
--- a/src/plugins/QtcPlugin.qbs
+++ b/src/plugins/QtcPlugin.qbs
@@ -50,7 +50,7 @@ Product {
         qbs.installDir: project.ide_plugin_path + "/" + provider
     }
 
-    ProductModule {
+    Export {
         Depends { name: "ExtensionSystem" }
     }
 }
diff --git a/src/plugins/analyzerbase/analyzerbase.qbs b/src/plugins/analyzerbase/analyzerbase.qbs
index b3b062258e81b590d420cea9a5729b0111f8169a..7a42610f1baf555c23f1d4d966843cded4f1eee2 100644
--- a/src/plugins/analyzerbase/analyzerbase.qbs
+++ b/src/plugins/analyzerbase/analyzerbase.qbs
@@ -44,7 +44,7 @@ QtcPlugin {
         "images/analyzer_start_small.png",
     ]
 
-    ProductModule {
+    Export {
         Depends { name: "CPlusPlus" }
     }
 }
diff --git a/src/plugins/android/androiddebugsupport.cpp b/src/plugins/android/androiddebugsupport.cpp
index 6b480f6fd19a902e2d1c89fbe3e2c04de3010c1d..93c635d93aea6c0df33f60f5b7bf2909c0ab42d6 100644
--- a/src/plugins/android/androiddebugsupport.cpp
+++ b/src/plugins/android/androiddebugsupport.cpp
@@ -112,7 +112,8 @@ RunControl *AndroidDebugSupport::createDebugRunControl(AndroidRunConfiguration *
         QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit);
         params.solibSearchPath.append(qtSoPaths(version));
     }
-    if (aspect->useQmlDebugger()) {
+    // FIX ME: Enable Qml Debugging in 2.8
+    if (aspect->useQmlDebugger() && false) {
         params.languages |= QmlLanguage;
         QTcpServer server;
         QTC_ASSERT(server.listen(QHostAddress::LocalHost)
diff --git a/src/plugins/coreplugin/coreplugin.qbs b/src/plugins/coreplugin/coreplugin.qbs
index fc98dfaa4c10b5d36091a3abe66b537dc61725ee..d48f09016e4b7c03668fe6f6e1e8a6624fd1db47 100644
--- a/src/plugins/coreplugin/coreplugin.qbs
+++ b/src/plugins/coreplugin/coreplugin.qbs
@@ -254,7 +254,7 @@ QtcPlugin {
         ]
     }
 
-    ProductModule {
+    Export {
         Depends { name: "cpp" }
         Depends { name: "Aggregation" }
         Depends { name: "Utils" }
diff --git a/src/plugins/cpptools/cpptools.qbs b/src/plugins/cpptools/cpptools.qbs
index 059a3dfc7e2525a8799fec7e79593c06bd97f9b2..6f7114b370317dd5fadcbe7098550e6e88d919b8 100644
--- a/src/plugins/cpptools/cpptools.qbs
+++ b/src/plugins/cpptools/cpptools.qbs
@@ -123,7 +123,7 @@ QtcPlugin {
         cpp.defines: outer.concat(['SRCDIR="' + FileInfo.path(filePath) + '"'])
     }
 
-    ProductModule {
+    Export {
         Depends { name: "CPlusPlus" }
     }
 }
diff --git a/src/plugins/debugger/debugger.qbs b/src/plugins/debugger/debugger.qbs
index 77cedce2d96f97c61fd7c6a0d7113496c803f147..688805e21417644a551631557ec3f24ef94df2c8 100644
--- a/src/plugins/debugger/debugger.qbs
+++ b/src/plugins/debugger/debugger.qbs
@@ -303,7 +303,7 @@ QtcPlugin {
         ]
     }
 
-    ProductModule {
+    Export {
         Depends { name: "cpp" }
         Depends { name: "QtcSsh" }
         cpp.includePaths: ["."]
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 454757cf3e4e916a1e5cfad17a097706367494de..f90354e2b7880f355edad0e630d36c9e814738cc 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -667,7 +667,9 @@ bool fillParameters(DebuggerStartParameters *sp, const Kit *kit, QString *errorM
     IDevice::ConstPtr device = DeviceKitInformation::device(kit);
     if (device) {
         sp->connParams = device->sshParameters();
-        sp->remoteChannel = sp->connParams.host + QLatin1Char(':') + QString::number(sp->connParams.port);
+        // Could have been set from command line.
+        if (sp->remoteChannel.isEmpty())
+            sp->remoteChannel = sp->connParams.host + QLatin1Char(':') + QString::number(sp->connParams.port);
     }
     return true;
 }
diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp
index 9f18893ff5dff8d39b5167b8332eee58e5c29ddb..1e45604c9ab7831267fb0658127030c12f2ad6ae 100644
--- a/src/plugins/debugger/debuggerrunner.cpp
+++ b/src/plugins/debugger/debuggerrunner.cpp
@@ -444,8 +444,8 @@ static bool fixupEngineTypes(DebuggerStartParameters &sp, RunConfiguration *rc,
         if (const Target *target = rc->target())
             if (!fillParameters(&sp, target->kit(), errorMessage))
                 return false;
-        const bool useCppDebugger = aspect->useCppDebugger();
-        const bool useQmlDebugger = aspect->useQmlDebugger();
+        const bool useCppDebugger = aspect->useCppDebugger() && (sp.languages & CppLanguage);
+        const bool useQmlDebugger = aspect->useQmlDebugger() && (sp.languages & QmlLanguage);
         if (useQmlDebugger) {
             if (useCppDebugger) {
                 sp.masterEngineType = QmlCppEngineType;
diff --git a/src/plugins/debugger/loadcoredialog.cpp b/src/plugins/debugger/loadcoredialog.cpp
index 283d490b95731dbf6a1c77e23670c9608f655579..8d4a4879da53b1f2069f1573b8f572fa02c2f17e 100644
--- a/src/plugins/debugger/loadcoredialog.cpp
+++ b/src/plugins/debugger/loadcoredialog.cpp
@@ -289,6 +289,7 @@ int AttachCoreDialog::exec()
 {
     connect(d->selectRemoteCoreButton, SIGNAL(clicked()), SLOT(selectRemoteCoreFile()));
     connect(d->remoteCoreFileName, SIGNAL(textChanged(QString)), SLOT(changed()));
+    connect(d->localExecFileName, SIGNAL(changed(QString)), SLOT(changed()));
     connect(d->localCoreFileName, SIGNAL(changed(QString)), SLOT(changed()));
     connect(d->forceLocalCheckBox, SIGNAL(stateChanged(int)), SLOT(changed()));
     connect(d->kitChooser, SIGNAL(activated(int)), SLOT(changed()));
diff --git a/src/plugins/projectexplorer/projectexplorer.qbs b/src/plugins/projectexplorer/projectexplorer.qbs
index dd76e03c3f5b190ba4fec440a933d3904769289a..3b9252f26d44413bc90948a0fa5c6cd1bfd3af0b 100644
--- a/src/plugins/projectexplorer/projectexplorer.qbs
+++ b/src/plugins/projectexplorer/projectexplorer.qbs
@@ -354,7 +354,7 @@ QtcPlugin {
         files: ["outputparser_test.h", "outputparser_test.cpp"]
     }
 
-    ProductModule {
+    Export {
         Depends { name: "Qt.network" }
     }
 }
diff --git a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
index 7fe45f1b27bd7028e8311978df8ac079669f08fb..50120f9fa4f3f28747ed3618800d1d20203378a7 100644
--- a/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
+++ b/src/plugins/qmldesigner/designercore/model/texttomodelmerger.cpp
@@ -793,7 +793,7 @@ bool TextToModelMerger::load(const QString &data, DifferenceHandler &differenceH
                 return false;
             }
 
-            if (!warnings.isEmpty() && differenceHandler.isValidator()) {
+            if (!warnings.isEmpty() && differenceHandler.isValidator() && !m_rewriterView->inErrorState()) {
 
                 QString title = QCoreApplication::translate("QmlDesigner::TextToModelMerger", "This .qml file contains features "
                                                             "which are not supported by Qt Quick Designer");
diff --git a/src/plugins/qmljseditor/qmljseditor.qbs b/src/plugins/qmljseditor/qmljseditor.qbs
index 3e140130da9ce45228d8f88e93eff0e41558639f..8ee250120606459ef7a43cb5f3f5c6e2e249ef00 100644
--- a/src/plugins/qmljseditor/qmljseditor.qbs
+++ b/src/plugins/qmljseditor/qmljseditor.qbs
@@ -85,7 +85,7 @@ QtcPlugin {
         "images/qmlfile.png",
     ]
 
-    ProductModule {
+    Export {
         Depends { name: "QmlJSTools" }
     }
 }
diff --git a/src/plugins/qmljstools/qmljstools.qbs b/src/plugins/qmljstools/qmljstools.qbs
index d787c842b1c45487d0cef255c228566ab1129473..3848531bd524699f4e449b00d4211cbb573db728 100644
--- a/src/plugins/qmljstools/qmljstools.qbs
+++ b/src/plugins/qmljstools/qmljstools.qbs
@@ -78,7 +78,7 @@ QtcPlugin {
         files: ["qmljstools_test.cpp"]
     }
 
-    ProductModule {
+    Export {
         Depends { name: "CppTools" }
         Depends { name: "QmlDebug" }
     }
diff --git a/src/plugins/qtsupport/qtsupport.qbs b/src/plugins/qtsupport/qtsupport.qbs
index df1b1e5fd8afb6e0599ea9dbb43f005457283175..841c171015b020a446af71d6894dfd499d16101b 100644
--- a/src/plugins/qtsupport/qtsupport.qbs
+++ b/src/plugins/qtsupport/qtsupport.qbs
@@ -109,8 +109,7 @@ QtcPlugin {
         "QtSupport.mimetypes.xml",
     ]
 
-
-    ProductModule {
+    Export {
         Depends { name: "cpp" }
         cpp.includePaths: "../../shared"
         cpp.defines: [
diff --git a/src/plugins/remotelinux/remotelinux.qbs b/src/plugins/remotelinux/remotelinux.qbs
index 16cd3eaa8ff57a24cb95c7dde0c7bc6d1722325a..36336e6d65a515afca6daa315e38d711073bf44d 100644
--- a/src/plugins/remotelinux/remotelinux.qbs
+++ b/src/plugins/remotelinux/remotelinux.qbs
@@ -113,7 +113,7 @@ QtcPlugin {
         "images/embeddedtarget.png",
     ]
 
-    ProductModule {
+    Export {
         Depends { name: "Core" }
         Depends { name: "QtcSsh" }
     }
diff --git a/src/plugins/texteditor/texteditor.qbs b/src/plugins/texteditor/texteditor.qbs
index 099937ad0e244956f2a05a734c144ed9dfed3e78..28451cae8df694b44637330d76156f4a8f05641a 100644
--- a/src/plugins/texteditor/texteditor.qbs
+++ b/src/plugins/texteditor/texteditor.qbs
@@ -268,7 +268,7 @@ QtcPlugin {
         ]
     }
 
-    ProductModule {
+    Export {
         Depends { name: "Find" }
         Depends { name: "Locator" }
     }