aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2021-08-17 11:57:24 +0200
committerEike Ziller <eike.ziller@qt.io>2021-08-17 10:43:43 +0000
commit4cab24a7ca96bd042617a2936b52c9799f395030 (patch)
treef1284d5b98890ac58bf781031be43b2698affe4e
parent309e9ef8d7cbfa0af7368677709fa6a71162a4d4 (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.cpp36
-rw-r--r--plugins/haskell/stackbuildstep.h3
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