forked from len0rd/rockbox
Fix problems with platform retrieval.
- handle disabled platforms also for for variant and base groups. - make variant detection more strict to prevent variants that are a substring of other variants to match. Happened e.g. for iriverh10 and iriverh100. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24625 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
9a256c96f7
commit
4c9fc9cb7e
3 changed files with 20 additions and 11 deletions
|
@ -54,13 +54,13 @@ void ServerInfo::readBuildInfo(QString file)
|
||||||
info.endGroup();
|
info.endGroup();
|
||||||
|
|
||||||
// get base platforms, handle variants with platforms in the loop
|
// get base platforms, handle variants with platforms in the loop
|
||||||
QStringList platforms = SystemInfo::platforms(SystemInfo::PlatformBase);
|
QStringList platforms = SystemInfo::platforms(SystemInfo::PlatformBaseDisabled);
|
||||||
for(int i = 0; i < platforms.size(); i++)
|
for(int i = 0; i < platforms.size(); i++)
|
||||||
{
|
{
|
||||||
// check if there are rbutil-variants of the current platform and handle
|
// check if there are rbutil-variants of the current platform and handle
|
||||||
// them the same time.
|
// them the same time.
|
||||||
QStringList variants;
|
QStringList variants;
|
||||||
variants = SystemInfo::platforms(SystemInfo::PlatformVariant, platforms.at(i));
|
variants = SystemInfo::platforms(SystemInfo::PlatformVariantDisabled, platforms.at(i));
|
||||||
QVariant release;
|
QVariant release;
|
||||||
info.beginGroup("release");
|
info.beginGroup("release");
|
||||||
if(keys.contains(platforms.at(i))) {
|
if(keys.contains(platforms.at(i))) {
|
||||||
|
|
|
@ -118,18 +118,25 @@ QStringList SystemInfo::platforms(enum SystemInfo::PlatformType type, QString va
|
||||||
for(int i = 0; i < a.size(); i++)
|
for(int i = 0; i < a.size(); i++)
|
||||||
{
|
{
|
||||||
QString target = systemInfos->value("platforms/"+a.at(i), "null").toString();
|
QString target = systemInfos->value("platforms/"+a.at(i), "null").toString();
|
||||||
// only add target if its not disabled
|
QRegExp regex("\\..*$");
|
||||||
if(type != PlatformAllDisabled
|
QString targetbase = target;
|
||||||
|
targetbase.remove(regex);
|
||||||
|
// only add target if its not disabled unless Platform*Disabled requested
|
||||||
|
if(type != PlatformAllDisabled && type != PlatformBaseDisabled
|
||||||
|
&& type != PlatformVariantDisabled
|
||||||
&& systemInfos->value(target+"/status").toString() == "disabled")
|
&& systemInfos->value(target+"/status").toString() == "disabled")
|
||||||
continue;
|
continue;
|
||||||
// report only base targets when PlatformBase is requested
|
// report only matching target if PlatformVariant* is requested
|
||||||
if(type == PlatformBase && target.contains('.'))
|
if((type == PlatformVariant || type == PlatformVariantDisabled)
|
||||||
|
&& (targetbase != variant))
|
||||||
continue;
|
continue;
|
||||||
// report only matching target if PlatformVariant is requested
|
// report only base targets when PlatformBase* is requested
|
||||||
if(type == PlatformVariant && !target.startsWith(variant))
|
if((type == PlatformBase || type == PlatformBaseDisabled))
|
||||||
continue;
|
result.append(targetbase);
|
||||||
result.append(target);
|
else
|
||||||
|
result.append(target);
|
||||||
}
|
}
|
||||||
|
result.removeDuplicates();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,9 @@ class SystemInfo : public QObject
|
||||||
PlatformAll,
|
PlatformAll,
|
||||||
PlatformAllDisabled,
|
PlatformAllDisabled,
|
||||||
PlatformBase,
|
PlatformBase,
|
||||||
PlatformVariant
|
PlatformBaseDisabled,
|
||||||
|
PlatformVariant,
|
||||||
|
PlatformVariantDisabled
|
||||||
};
|
};
|
||||||
|
|
||||||
//! return a list of all platforms (rbutil internal names)
|
//! return a list of all platforms (rbutil internal names)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue