Fix passing args to MingwBundle
This commit is contained in:
parent
bb943cb21b
commit
160bf9929d
|
@ -73,7 +73,10 @@ int main(int argc, char *argv[])
|
|||
BuildOrderResolverCli resolver(manager, configArgs.packagesArg.values(), configArgs.addSourceOnlyDepsArg.isPresent(), configArgs.requireSourcesArg.isPresent());
|
||||
return resolver.exec();
|
||||
} else if(configArgs.mingwBundleArg.isPresent()) {
|
||||
MingwBundle bundle(manager, configArgs.packagesArg.values(), configArgs.iconThemesArg.values(), configArgs.extraPackagesArg.values(), configArgs.qtPluginsArg.values());
|
||||
MingwBundle bundle(manager, configArgs.packagesArg.isPresent() ? &configArgs.packagesArg.values() : nullptr,
|
||||
configArgs.iconThemesArg.isPresent() ? &configArgs.iconThemesArg.values() : nullptr,
|
||||
configArgs.extraPackagesArg.isPresent() ? &configArgs.extraPackagesArg.values() : nullptr,
|
||||
configArgs.qtPluginsArg.isPresent() ? &configArgs.qtPluginsArg.values() : nullptr);
|
||||
bundle.createBundle(configArgs.targetDirArg.isPresent() ? configArgs.targetDirArg.values().front() : string("."),
|
||||
configArgs.targetNameArg.values().front(),
|
||||
configArgs.targetFormatArg.isPresent() ? configArgs.targetFormatArg.values().front() : string("zip"),
|
||||
|
|
|
@ -39,7 +39,7 @@ bool IncludedPackage::operator==(const Package *package) const
|
|||
return this->package == package;
|
||||
}
|
||||
|
||||
MingwBundle::MingwBundle(Manager &manager, const std::vector<const char *> &packages, const std::vector<const char *> &iconPackages, const std::vector<const char *> &extraPackages, const std::vector<const char *> &qtPlugins) :
|
||||
MingwBundle::MingwBundle(Manager &manager, const std::vector<const char *> *packages, const std::vector<const char *> *iconPackages, const std::vector<const char *> *extraPackages, const std::vector<const char *> *qtPlugins) :
|
||||
m_manager(manager),
|
||||
m_extraPackages(extraPackages),
|
||||
m_qtPlugins(qtPlugins)
|
||||
|
@ -47,26 +47,30 @@ MingwBundle::MingwBundle(Manager &manager, const std::vector<const char *> &pack
|
|||
cerr << shchar << "Resolving dependencies ..." << endl;
|
||||
string missing;
|
||||
// add mingw-w64 packages
|
||||
for(const char *pkgName : packages) {
|
||||
if(auto *pkg = manager.packageProviding(Dependency(QString::fromLocal8Bit(strncmp(pkgName, prefix, prefixLen) ? pkgName : (prefix + string(pkgName)).data())))) {
|
||||
if(find(m_packages.cbegin(), m_packages.cend(), pkg) == m_packages.cend()) {
|
||||
m_packages.emplace_back(pkg, false);
|
||||
addDependencies(pkg);
|
||||
if(packages) {
|
||||
for(const char *pkgName : *packages) {
|
||||
if(auto *pkg = manager.packageProviding(Dependency(QString::fromLocal8Bit(!strncmp(pkgName, prefix, prefixLen) ? pkgName : (prefix + string(pkgName)).data())))) {
|
||||
if(find(m_packages.cbegin(), m_packages.cend(), pkg) == m_packages.cend()) {
|
||||
m_packages.emplace_back(pkg, false);
|
||||
addDependencies(pkg);
|
||||
}
|
||||
} else {
|
||||
missing.push_back(' ');
|
||||
missing.append(pkgName);
|
||||
}
|
||||
} else {
|
||||
missing.push_back(' ');
|
||||
missing.append(pkgName);
|
||||
}
|
||||
}
|
||||
// add additional icon packages
|
||||
for(const auto &pkgName : iconPackages) {
|
||||
if(auto *pkg = manager.packageProviding(Dependency(QString::fromLocal8Bit(pkgName)))) {
|
||||
if(find(m_packages.cbegin(), m_packages.cend(), pkg) == m_packages.cend()) {
|
||||
m_packages.emplace_back(pkg, false);
|
||||
if(iconPackages) {
|
||||
for(const auto &pkgName : *iconPackages) {
|
||||
if(auto *pkg = manager.packageProviding(Dependency(QString::fromLocal8Bit(pkgName)))) {
|
||||
if(find(m_packages.cbegin(), m_packages.cend(), pkg) == m_packages.cend()) {
|
||||
m_packages.emplace_back(pkg, false);
|
||||
}
|
||||
} else {
|
||||
missing.push_back(' ');
|
||||
missing.append(pkgName);
|
||||
}
|
||||
} else {
|
||||
missing.push_back(' ');
|
||||
missing.append(pkgName);
|
||||
}
|
||||
}
|
||||
if(!missing.empty()) {
|
||||
|
@ -150,7 +154,7 @@ struct RelevantFile
|
|||
|
||||
struct PkgFileInfo
|
||||
{
|
||||
PkgFileInfo(const QString &name, const QString &path, bool dependencyOnly = false, const vector<const char *> &qtPlugins = vector<const char *>()) :
|
||||
PkgFileInfo(const QString &name, const QString &path, bool dependencyOnly = false, const vector<const char *> *qtPlugins = nullptr) :
|
||||
name(name),
|
||||
path(path),
|
||||
dependencyOnly(dependencyOnly),
|
||||
|
@ -163,7 +167,7 @@ struct PkgFileInfo
|
|||
unique_ptr<KTar> archive;
|
||||
list<RelevantFile> relevantFiles;
|
||||
bool dependencyOnly;
|
||||
const vector<const char *> &qtPlugins;
|
||||
const vector<const char *> *qtPlugins;
|
||||
bool failure;
|
||||
};
|
||||
|
||||
|
@ -233,10 +237,10 @@ void getFiles(PkgFileInfo &pkgFileInfo)
|
|||
if(const auto *pluginEntry = categoryDir->entry(entryName)) {
|
||||
if(pluginEntry->isFile()) {
|
||||
if(entryName.endsWith(QLatin1String(".dll"))) {
|
||||
if(!pkgFileInfo.qtPlugins.empty()) {
|
||||
if(pkgFileInfo.qtPlugins && !pkgFileInfo.qtPlugins->empty()) {
|
||||
string pluginName = entryName.toLocal8Bit().data();
|
||||
pluginName.resize(pluginName.size() - 4);
|
||||
if(find(pkgFileInfo.qtPlugins.cbegin(), pkgFileInfo.qtPlugins.cend(), pluginName) == pkgFileInfo.qtPlugins.cend()) {
|
||||
if(find(pkgFileInfo.qtPlugins->cbegin(), pkgFileInfo.qtPlugins->cend(), pluginName) == pkgFileInfo.qtPlugins->cend()) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -546,13 +550,15 @@ void MingwBundle::createBundle(const string &targetDir, const string &targetName
|
|||
}
|
||||
pkgFiles.emplace_back(pkgName.toString(), pkgFile, includedPkg.dependencyOnly, m_qtPlugins);
|
||||
}
|
||||
for(const char *pkgFileRawStr : m_extraPackages) {
|
||||
QString pkgFile = QString::fromLocal8Bit(pkgFileRawStr);
|
||||
if(QFile::exists(pkgFile)) {
|
||||
const auto pkg = make_unique<AlpmPackage>(pkgFile); // do not catch the exception here
|
||||
pkgFiles.emplace_back(pkg->name().startsWith(QLatin1String("mingw-w64-")) ? pkg->name().mid(10) : pkg->name(), pkgFile, false, m_qtPlugins);
|
||||
} else {
|
||||
throw runtime_error("The specified extra package \"" + string(pkgFileRawStr) + "\" can't be found.");
|
||||
if(m_extraPackages) {
|
||||
for(const char *pkgFileRawStr : *m_extraPackages) {
|
||||
QString pkgFile = QString::fromLocal8Bit(pkgFileRawStr);
|
||||
if(QFile::exists(pkgFile)) {
|
||||
const auto pkg = make_unique<AlpmPackage>(pkgFile); // do not catch the exception here
|
||||
pkgFiles.emplace_back(pkg->name().startsWith(QLatin1String("mingw-w64-")) ? pkg->name().mid(10) : pkg->name(), pkgFile, false, m_qtPlugins);
|
||||
} else {
|
||||
throw runtime_error("The specified extra package \"" + string(pkgFileRawStr) + "\" can't be found.");
|
||||
}
|
||||
}
|
||||
}
|
||||
// get relevant files from packages
|
||||
|
|
|
@ -22,7 +22,7 @@ struct IncludedPackage
|
|||
class MingwBundle
|
||||
{
|
||||
public:
|
||||
MingwBundle(Manager &manager, const std::vector<const char *> &packages, const std::vector<const char *> &iconPackages, const std::vector<const char *> &extraPackages, const std::vector<const char *> &qtPlugins);
|
||||
MingwBundle(Manager &manager, const std::vector<const char *> *packages = nullptr, const std::vector<const char *> *iconPackages = nullptr, const std::vector<const char *> *extraPackages = nullptr, const std::vector<const char *> *qtPlugins = nullptr);
|
||||
|
||||
void createBundle(const std::string &targetDir, const std::string &targetName, const std::string &targetFormat, const std::string &defaultIconTheme) const;
|
||||
|
||||
|
@ -31,8 +31,8 @@ private:
|
|||
|
||||
Manager &m_manager;
|
||||
std::list<IncludedPackage> m_packages;
|
||||
const std::vector<const char *> &m_extraPackages;
|
||||
const std::vector<const char *> &m_qtPlugins;
|
||||
const std::vector<const char *> *m_extraPackages;
|
||||
const std::vector<const char *> *m_qtPlugins;
|
||||
};
|
||||
|
||||
} // namespace PackageManagement
|
||||
|
|
Loading…
Reference in New Issue