1
0
Fork 0
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:
Dominik Riebeling 2010-02-12 20:38:17 +00:00
parent 9a256c96f7
commit 4c9fc9cb7e
3 changed files with 20 additions and 11 deletions

View file

@ -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))) {

View file

@ -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;
} }

View file

@ -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)