2015-08-19 02:13:28 +02:00
|
|
|
#ifndef PACKAGEMANAGEMENT_RESOLVEBUILDORDER_H
|
|
|
|
#define PACKAGEMANAGEMENT_RESOLVEBUILDORDER_H
|
|
|
|
|
|
|
|
#include <c++utilities/application/argumentparser.h>
|
|
|
|
|
2015-12-25 01:58:19 +01:00
|
|
|
#include <QObject>
|
2015-08-19 02:13:28 +02:00
|
|
|
#include <QString>
|
|
|
|
#include <QList>
|
|
|
|
|
2015-12-25 01:58:19 +01:00
|
|
|
#include <memory>
|
|
|
|
|
2015-09-05 17:25:05 +02:00
|
|
|
namespace RepoIndex {
|
2015-08-19 02:13:28 +02:00
|
|
|
|
|
|
|
class Manager;
|
|
|
|
class TaskInfo;
|
2015-09-05 17:25:05 +02:00
|
|
|
class Dependency;
|
2015-12-25 01:58:19 +01:00
|
|
|
class Package;
|
|
|
|
class PackageFinder;
|
2015-08-19 02:13:28 +02:00
|
|
|
|
2015-12-25 01:58:19 +01:00
|
|
|
class BuildOrderResolver : public QObject
|
2015-08-19 02:13:28 +02:00
|
|
|
{
|
2015-12-25 01:58:19 +01:00
|
|
|
Q_OBJECT
|
2015-08-19 02:13:28 +02:00
|
|
|
public:
|
2015-12-25 01:58:19 +01:00
|
|
|
BuildOrderResolver(Manager &manager, const ApplicationUtilities::StringVector &packages, bool addSourceOnlyDeps = false);
|
|
|
|
~BuildOrderResolver();
|
|
|
|
|
|
|
|
void cli();
|
|
|
|
|
|
|
|
void findDependencies();
|
|
|
|
QStringList resultNames();
|
2015-08-19 02:13:28 +02:00
|
|
|
|
2015-12-25 01:58:19 +01:00
|
|
|
public slots:
|
|
|
|
void printRelevantPackages();
|
|
|
|
void printResults();
|
|
|
|
void resolve();
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void ready();
|
|
|
|
void resolvingFinished();
|
|
|
|
void resolvingFailed(const QString &message);
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void addRequestedPackages();
|
2015-08-19 02:13:28 +02:00
|
|
|
|
|
|
|
private:
|
2015-12-25 01:58:19 +01:00
|
|
|
Package *findPackageForDependency(const Dependency &dependency);
|
|
|
|
bool addDependenciesToTask(TaskInfo *task);
|
|
|
|
bool addDependenciesToTask(TaskInfo *task, const QList<Dependency> &dependencies);
|
|
|
|
void requestDependenciesToBeRequested();
|
|
|
|
|
|
|
|
Manager &m_manager;
|
2015-12-08 00:24:45 +01:00
|
|
|
QList<TaskInfo *> m_tasks;
|
|
|
|
QList<Dependency> m_dependenciesToBeRequested;
|
2015-12-25 01:58:19 +01:00
|
|
|
std::unique_ptr<PackageFinder> m_finder;
|
|
|
|
QList<TaskInfo *> m_results;
|
|
|
|
bool m_addSourceOnlyDeps;
|
2015-08-19 02:13:28 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace PackageManagement
|
|
|
|
|
|
|
|
#endif // PACKAGEMANAGEMENT_RESOLVEBUILDORDER_H
|