removed super flag for parallel_tasks, uses the first child

This commit is contained in:
isanae
2020-12-03 17:45:34 -05:00
parent 6f40196f3f
commit 6797af26c7
3 changed files with 32 additions and 22 deletions
+9 -12
View File
@@ -23,14 +23,11 @@ void add_tasks()
//
// mob doesn't have a concept of task dependencies, just task ordering, so
// if a task depends on another, it has to be earlier in the order
//
// true/false arguments to parallel_tasks is whether the sub tasks are super
// tasks
// third-party tasks
add_task<parallel_tasks>(false)
add_task<parallel_tasks>()
.add_task<sevenz>()
.add_task<zlib>()
.add_task<fmt>()
@@ -42,18 +39,18 @@ void add_tasks()
.add_task<bzip2>()
.add_task<nmm>();
add_task<parallel_tasks>(false)
add_task<parallel_tasks>()
.add_task<tasks::python>()
.add_task<boost>()
.add_task<boost_di>()
.add_task<lz4>()
.add_task<spdlog>();
add_task<parallel_tasks>(false)
add_task<parallel_tasks>()
.add_task<sip>()
.add_task<ncc>();
add_task<parallel_tasks>(false)
add_task<parallel_tasks>()
.add_task<pyqt>()
.add_task<usvfs>()
.add_task<stylesheets>()
@@ -68,11 +65,11 @@ void add_tasks()
// most of the alternate names below are from the transifex slugs, which
// are sometimes different from the project names, for whatever reason
add_task<parallel_tasks>(true)
add_task<parallel_tasks>()
.add_task<mo>("cmake_common")
.add_task<mo>("modorganizer-uibase");
add_task<parallel_tasks>(true)
add_task<parallel_tasks>()
.add_task<mo>("modorganizer-game_features")
.add_task<mo>("modorganizer-archive")
.add_task<mo>("modorganizer-lootcli")
@@ -88,7 +85,7 @@ void add_tasks()
// the gamebryo flag must be set for all game plugins that inherit from
// the gamebryo classes; this will merge the .ts file from gamebryo with
// the one from the specific plugin
add_task<parallel_tasks>(true)
add_task<parallel_tasks>()
.add_task<mo>("modorganizer-game_oblivion", mo::gamebryo)
.add_task<mo>("modorganizer-game_fallout3", mo::gamebryo)
.add_task<mo>("modorganizer-game_fallout4", mo::gamebryo)
@@ -101,7 +98,7 @@ void add_tasks()
.add_task<mo>("modorganizer-game_ttw", mo::gamebryo)
.add_task<mo>("modorganizer-game_enderal", mo::gamebryo);
add_task<parallel_tasks>(true)
add_task<parallel_tasks>()
.add_task<mo>({"modorganizer-tool_inieditor", "inieditor"})
.add_task<mo>("modorganizer-tool_inibakery")
.add_task<mo>("modorganizer-preview_base")
@@ -120,7 +117,7 @@ void add_tasks()
.add_task<mo>("modorganizer-plugin_python")
.add_task<translations>();
add_task<parallel_tasks>(true)
add_task<parallel_tasks>()
.add_task<mo>({"modorganizer-tool_configurator", "pycfg"})
.add_task<mo>("modorganizer-fnistool")
.add_task<mo>("modorganizer-basic_games")
+17 -3
View File
@@ -689,11 +689,22 @@ void task::run_tool_impl(tool* t)
}
parallel_tasks::parallel_tasks(bool super)
: container_task("parallel"), super_(super)
parallel_tasks::parallel_tasks()
: container_task("parallel")
{
}
void parallel_tasks::add_task(std::unique_ptr<task> t)
{
if (!children_.empty() && children_[0]->is_super() != t->is_super())
{
gcx().bail_out(context::generic,
"parallel task can't mix super and non-super tasks");
}
children_.push_back(std::move(t));
}
std::vector<task*> parallel_tasks::children() const
{
std::vector<task*> v;
@@ -706,7 +717,10 @@ std::vector<task*> parallel_tasks::children() const
bool parallel_tasks::is_super() const
{
return super_;
if (children_.empty())
return false;
return children_[0]->is_super();
}
void parallel_tasks::run()
+6 -7
View File
@@ -191,7 +191,7 @@ public:
class parallel_tasks : public container_task
{
public:
parallel_tasks(bool super);
parallel_tasks();
bool enabled() const override
{
@@ -201,21 +201,21 @@ public:
template <class Task, class... Args>
parallel_tasks& add_task(Args&&... args)
{
children_.push_back(
std::make_unique<Task>(std::forward<Args>(args)...));
add_task(std::make_unique<Task>(std::forward<Args>(args)...));
return *this;
}
template <class Task, class T, class... Args>
parallel_tasks& add_task(std::initializer_list<T> il, Args&&... args)
{
children_.push_back(
std::make_unique<Task>(std::move(il), std::forward<Args>(args)...));
add_task(std::make_unique<Task>(
std::move(il), std::forward<Args>(args)...));
return *this;
}
void add_task(std::unique_ptr<task> t);
fs::path get_source_path() const override
{
return {};
@@ -248,7 +248,6 @@ protected:
void do_clean(clean c) override;
private:
bool super_;
std::vector<std::unique_ptr<task>> children_;
std::vector<std::thread> threads_;
};