diff options
author | Eike Ziller <eike.ziller@qt.io> | 2021-08-17 11:57:24 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2021-08-17 10:43:43 +0000 |
commit | 4cab24a7ca96bd042617a2936b52c9799f395030 (patch) | |
tree | f1284d5b98890ac58bf781031be43b2698affe4e | |
parent | 309e9ef8d7cbfa0af7368677709fa6a71162a4d4 (diff) |
Fix initial build directory used in build step
In the BuildStep constructor the build configuration is not
fully set up, leading to an empty build directory in there.
It is not needed that we update the command directly on changes
though (it is not visible in the projects mode UI anywhere),
so just initialize the build step in its init() method.
Change-Id: Iab168d15f1224c2e1ca66017244a80ed1059f417
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | plugins/haskell/stackbuildstep.cpp | 36 | ||||
-rw-r--r-- | plugins/haskell/stackbuildstep.h | 3 |
2 files changed, 15 insertions, 24 deletions
diff --git a/plugins/haskell/stackbuildstep.cpp b/plugins/haskell/stackbuildstep.cpp index 26c3006..52ed64f 100644 --- a/plugins/haskell/stackbuildstep.cpp +++ b/plugins/haskell/stackbuildstep.cpp @@ -42,30 +42,6 @@ StackBuildStep::StackBuildStep(ProjectExplorer::BuildStepList *bsl, Utils::Id id : AbstractProcessStep(bsl, id) { setDefaultDisplayName(trDisplayName()); - - const auto updateCommandLine = [this] { - const auto projectDir = QDir(project()->projectDirectory().toString()); - processParameters()->setCommandLine( - {HaskellManager::stackExecutable(), - {"build", - "--work-dir", - projectDir.relativeFilePath(buildConfiguration()->buildDirectory().toString())}}); - }; - const auto updateEnvironment = [this] { - processParameters()->setEnvironment(buildConfiguration()->environment()); - }; - updateCommandLine(); - processParameters()->setWorkingDirectory(project()->projectDirectory()); - updateEnvironment(); - connect(HaskellManager::instance(), - &HaskellManager::stackExecutableChanged, - this, - updateCommandLine); - connect(buildConfiguration(), - &BuildConfiguration::buildDirectoryChanged, - this, - updateCommandLine); - connect(buildConfiguration(), &BuildConfiguration::environmentChanged, this, updateEnvironment); } QWidget *StackBuildStep::createConfigWidget() @@ -78,6 +54,18 @@ QString StackBuildStep::trDisplayName() return tr("Stack Build"); } +bool StackBuildStep::init() +{ + if (AbstractProcessStep::init()) { + const auto projectDir = QDir(project()->projectDirectory().toString()); + processParameters()->setCommandLine( + {HaskellManager::stackExecutable(), + {"build", "--work-dir", projectDir.relativeFilePath(buildDirectory().toString())}}); + processParameters()->setEnvironment(buildEnvironment()); + } + return true; +} + StackBuildStepFactory::StackBuildStepFactory() { registerStep<StackBuildStep>(Constants::C_STACK_BUILD_STEP_ID); diff --git a/plugins/haskell/stackbuildstep.h b/plugins/haskell/stackbuildstep.h index 98938f5..d74d155 100644 --- a/plugins/haskell/stackbuildstep.h +++ b/plugins/haskell/stackbuildstep.h @@ -40,6 +40,9 @@ public: QWidget *createConfigWidget() override; static QString trDisplayName(); + +protected: + bool init() override; }; class StackBuildStepFactory : public ProjectExplorer::BuildStepFactory |