diff --git a/src/plugins/docker/dockerdevice.cpp b/src/plugins/docker/dockerdevice.cpp index e3a97214d3b..40efac7f541 100644 --- a/src/plugins/docker/dockerdevice.cpp +++ b/src/plugins/docker/dockerdevice.cpp @@ -473,6 +473,18 @@ IDeviceWidget *DockerDevice::createWidget() return new DockerDeviceWidget(sharedFromThis()); } +Tasks DockerDevice::validate() const +{ + Tasks result; + if (d->m_data.mounts.isEmpty()) { + result << Task(Task::Error, + tr("The Docker device has not set up shared directories." + "This will not work for building."), + {}, -1, {}); + } + return result; +} + // DockerDevice diff --git a/src/plugins/docker/dockerdevice.h b/src/plugins/docker/dockerdevice.h index 64d5bb17ac3..ded9a93b063 100644 --- a/src/plugins/docker/dockerdevice.h +++ b/src/plugins/docker/dockerdevice.h @@ -62,6 +62,7 @@ public: static Ptr create(const DockerDeviceData &data) { return Ptr(new DockerDevice(data)); } ProjectExplorer::IDeviceWidget *createWidget() override; + QVector validate() const override; bool canCreateProcess() const override { return true; } ProjectExplorer::DeviceProcess *createProcess(QObject *parent) const override; diff --git a/src/plugins/projectexplorer/devicesupport/idevice.cpp b/src/plugins/projectexplorer/devicesupport/idevice.cpp index 03f7e8b281c..5fae1d38631 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.cpp +++ b/src/plugins/projectexplorer/devicesupport/idevice.cpp @@ -532,6 +532,11 @@ bool IDevice::isCompatibleWith(const Kit *k) const return DeviceTypeKitAspect::deviceTypeId(k) == type(); } +QVector IDevice::validate() const +{ + return {}; +} + void IDevice::addDeviceAction(const DeviceAction &deviceAction) { d->deviceActions.append(deviceAction); diff --git a/src/plugins/projectexplorer/devicesupport/idevice.h b/src/plugins/projectexplorer/devicesupport/idevice.h index e9d488667f0..873eb380bb3 100644 --- a/src/plugins/projectexplorer/devicesupport/idevice.h +++ b/src/plugins/projectexplorer/devicesupport/idevice.h @@ -65,6 +65,7 @@ class DeviceProcess; class DeviceProcessList; class Kit; class Runnable; +class Task; namespace Internal { class IDevicePrivate; } @@ -159,6 +160,7 @@ public: Utils::Id id() const; virtual bool isCompatibleWith(const Kit *k) const; + virtual QVector validate() const; QString displayType() const; Utils::OsType osType() const; diff --git a/src/plugins/projectexplorer/kitinformation.cpp b/src/plugins/projectexplorer/kitinformation.cpp index eb02496a326..91a90a65981 100644 --- a/src/plugins/projectexplorer/kitinformation.cpp +++ b/src/plugins/projectexplorer/kitinformation.cpp @@ -1005,6 +1005,9 @@ Tasks DeviceKitAspect::validate(const Kit *k) const else if (!dev->isCompatibleWith(k)) result.append(BuildSystemTask(Task::Error, tr("Device is incompatible with this kit."))); + if (dev) + result.append(dev->validate()); + return result; }