Fix default build device

If the kit doesn't specify anything specific, default to the local host.

Fixes: QTCREATORBUG-27242
Change-Id: Ie19a332638467bd121314a2a0303803253ced4af
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Eike Ziller
2022-03-29 11:10:19 +02:00
parent ee8c4b27e4
commit ec5e060a07
2 changed files with 16 additions and 8 deletions

View File

@@ -1240,11 +1240,20 @@ BuildDeviceKitAspect::BuildDeviceKitAspect()
this, &BuildDeviceKitAspect::kitsWereLoaded); this, &BuildDeviceKitAspect::kitsWereLoaded);
} }
QVariant BuildDeviceKitAspect::defaultValue(const Kit *k) const void BuildDeviceKitAspect::setup(Kit *k)
{ {
Q_UNUSED(k); QTC_ASSERT(DeviceManager::instance()->isLoaded(), return );
IDevice::ConstPtr defaultDevice = DeviceManager::defaultDesktopDevice(); IDevice::ConstPtr dev = BuildDeviceKitAspect::device(k);
return defaultDevice->id().toString(); if (!dev.isNull() && dev->isCompatibleWith(k))
return;
dev = defaultDevice();
setDeviceId(k, dev ? dev->id() : Id());
}
IDevice::ConstPtr BuildDeviceKitAspect::defaultDevice()
{
return DeviceManager::defaultDesktopDevice();
} }
Tasks BuildDeviceKitAspect::validate(const Kit *k) const Tasks BuildDeviceKitAspect::validate(const Kit *k) const
@@ -1314,10 +1323,8 @@ IDevice::ConstPtr BuildDeviceKitAspect::device(const Kit *k)
{ {
QTC_ASSERT(DeviceManager::instance()->isLoaded(), return IDevice::ConstPtr()); QTC_ASSERT(DeviceManager::instance()->isLoaded(), return IDevice::ConstPtr());
IDevice::ConstPtr dev = DeviceManager::instance()->find(deviceId(k)); IDevice::ConstPtr dev = DeviceManager::instance()->find(deviceId(k));
// Use the "run" device as fallback if no build device is present.
// FIXME: Think about whether this shouldn't be the other way round.
if (!dev) if (!dev)
dev = DeviceKitAspect::device(k); dev = defaultDevice();
return dev; return dev;
} }

View File

@@ -182,6 +182,7 @@ class PROJECTEXPLORER_EXPORT BuildDeviceKitAspect : public KitAspect
public: public:
BuildDeviceKitAspect(); BuildDeviceKitAspect();
void setup(Kit *k) override;
Tasks validate(const Kit *k) const override; Tasks validate(const Kit *k) const override;
KitAspectWidget *createConfigWidget(Kit *k) const override; KitAspectWidget *createConfigWidget(Kit *k) const override;
@@ -199,7 +200,7 @@ public:
static void setDeviceId(Kit *k, Utils::Id dataId); static void setDeviceId(Kit *k, Utils::Id dataId);
private: private:
QVariant defaultValue(const Kit *k) const; static IDevice::ConstPtr defaultDevice();
void kitsWereLoaded(); void kitsWereLoaded();
void deviceUpdated(Utils::Id dataId); void deviceUpdated(Utils::Id dataId);