diff options
author | con <qtc-committer@nokia.com> | 2010-03-24 13:33:54 +0100 |
---|---|---|
committer | con <qtc-committer@nokia.com> | 2010-03-25 16:35:51 +0100 |
commit | 5a2c91ce7ab5eefd3e1e2590aab371155f9e1673 (patch) | |
tree | d9bfe10e34c6c56b73bb0cec6751727114c33b42 /src/plugins/projectexplorer | |
parent | 8b2c18a762faf7e819c96f80292d1cac95b59215 (diff) |
Add project setting migration path for Symbian package creation.
Moves signing info from one of the run configurations as a build step
to the build configurations.
Users with different signing settings in different run configurations
need to re-configure their projects manually (by creating build
configurations for the different signing settings).
Reviewed-by: Tobias Hunger
Diffstat (limited to 'src/plugins/projectexplorer')
-rw-r--r-- | src/plugins/projectexplorer/userfileaccessor.cpp | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index a885c66b43..d554513ab8 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -126,6 +126,23 @@ public: QVariantMap update(Project *project, const QVariantMap &map); }; +// Version 3 reflect the move of symbian signing from run to build step. +class Version3Handler : public UserFileVersionHandler +{ +public: + int userFileVersion() const + { + return 3; + } + + QString displayUserFileVersion() const + { + return QLatin1String("2.0-alpha2+git"); + } + + QVariantMap update(Project *project, const QVariantMap &map); +}; + // // Helper functions: // @@ -195,6 +212,7 @@ UserFileAccessor::UserFileAccessor() : addVersionHandler(new Version0Handler); addVersionHandler(new Version1Handler); addVersionHandler(new Version2Handler); + addVersionHandler(new Version3Handler); } UserFileAccessor::~UserFileAccessor() @@ -855,3 +873,111 @@ QVariantMap Version2Handler::update(Project *, const QVariantMap &map) return renameKeys(changes, QVariantMap(map)); } + +// ------------------------------------------------------------------------- +// Version3Handler +// ------------------------------------------------------------------------- + +// insert the additional build step: +//<valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.2" type="QVariantMap"> +// <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Create sis Package</value> +// <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60SignBuildStep</value> +// <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value> +// <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/> +// <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value> +// <value key="Qt4ProjectManager.S60CreatePackageStep.Certificate" type="QString"></value> +// <value key="Qt4ProjectManager.S60CreatePackageStep.Keyfile" type="QString"></value> +// <value key="Qt4ProjectManager.S60CreatePackageStep.SignMode" type="int">0</value> +//</valuemap> + +// remove the deprecated sign run settings from +//<valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap"> +// <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">untitled1 on Symbian Device</value> +// <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60DeviceRunConfiguration</value> +// <valuelist key="Qt4ProjectManager.S60DeviceRunConfiguration.CommandLineArguments" type="QVariantList"/> +// <value key="Qt4ProjectManager.S60DeviceRunConfiguration.CustomKeyPath" type="QString"></value> +// <value key="Qt4ProjectManager.S60DeviceRunConfiguration.CustomSignaturePath" type="QString"></value> +// <value key="Qt4ProjectManager.S60DeviceRunConfiguration.ProFile" type="QString">untitled1.pro</value> +// <value key="Qt4ProjectManager.S60DeviceRunConfiguration.SerialPortName" type="QString">COM3</value> +// <value key="Qt4ProjectManager.S60DeviceRunConfiguration.SigningMode" type="int">0</value> +//</valuemap> + +QVariantMap Version3Handler::update(Project *, const QVariantMap &map) +{ + QVariantMap result; + QMapIterator<QString, QVariant> it(map); + while (it.hasNext()) { + it.next(); + const QString &targetKey = it.key(); + // check for target info + if (!targetKey.startsWith(QLatin1String("ProjectExplorer.Project.Target."))) { + result.insert(targetKey, it.value()); + continue; + } + const QVariantMap &originalTarget = it.value().toMap(); + // check for symbian device target + if (originalTarget.value(QLatin1String("ProjectExplorer.ProjectConfiguration.Id")) + != QLatin1String("Qt4ProjectManager.Target.S60DeviceTarget")) { + result.insert(targetKey, originalTarget); + continue; + } + QVariantMap newTarget; + // first iteration: search run configurations, get signing info, remove old signing keys + QString customKeyPath; + QString customSignaturePath; + int signingMode; + QMapIterator<QString, QVariant> targetIt(originalTarget); + while (targetIt.hasNext()) { + targetIt.next(); + const QString &key = targetIt.key(); + if (key.startsWith(QLatin1String("ProjectExplorer.Target.BuildConfiguration."))) { + // build configurations are handled in second iteration + continue; + } + if (!key.startsWith(QLatin1String("ProjectExplorer.Target.RunConfiguration."))) { + newTarget.insert(key, targetIt.value()); + continue; + } + QVariantMap runConfig = targetIt.value().toMap(); + if (runConfig.value(QLatin1String("ProjectExplorer.ProjectConfiguration.Id")) + != QLatin1String("Qt4ProjectManager.S60DeviceRunConfiguration")) { + newTarget.insert(key, runConfig); + continue; + } + // get signing info + customKeyPath = runConfig.value(QLatin1String("Qt4ProjectManager.S60DeviceRunConfiguration.CustomKeyPath")).toString(); + customSignaturePath = runConfig.value(QLatin1String("Qt4ProjectManager.S60DeviceRunConfiguration.CustomSignaturePath")).toString(); + signingMode = runConfig.value(QLatin1String("Qt4ProjectManager.S60DeviceRunConfiguration.SigningMode")).toInt(); + // remove old signing keys + runConfig.remove(QLatin1String("Qt4ProjectManager.S60DeviceRunConfiguration.CustomKeyPath")); + runConfig.remove(QLatin1String("Qt4ProjectManager.S60DeviceRunConfiguration.CustomSignaturePath")); + runConfig.remove(QLatin1String("Qt4ProjectManager.S60DeviceRunConfiguration.SigningMode")); + newTarget.insert(key, runConfig); + } + + // second iteration: add new signing build step + targetIt.toFront(); + while (targetIt.hasNext()) { + targetIt.next(); + const QString &key = targetIt.key(); + if (!key.startsWith(QLatin1String("ProjectExplorer.Target.BuildConfiguration."))) { + // everything except build configs already handled + continue; + } + QVariantMap buildConfig = targetIt.value().toMap(); + int stepCount = buildConfig.value(QLatin1String("ProjectExplorer.BuildConfiguration.BuildStepsCount")).toInt(); + QVariantMap signBuildStep; + signBuildStep.insert(QLatin1String("ProjectExplorer.ProjectConfiguration.DisplayName"), QLatin1String("Create sis package")); + signBuildStep.insert(QLatin1String("ProjectExplorer.ProjectConfiguration.Id"), QLatin1String("Qt4ProjectManager.S60SignBuildStep")); + signBuildStep.insert(QLatin1String("Qt4ProjectManager.MakeStep.Clean"), false); + signBuildStep.insert(QLatin1String("Qt4ProjectManager.S60CreatePackageStep.Certificate"), customSignaturePath); + signBuildStep.insert(QLatin1String("Qt4ProjectManager.S60CreatePackageStep.Keyfile"), customKeyPath); + signBuildStep.insert(QLatin1String("Qt4ProjectManager.S60CreatePackageStep.SignMode"), signingMode); + buildConfig.insert(QString::fromLatin1("ProjectExplorer.BuildConfiguration.BuildStep.%1").arg(stepCount), signBuildStep); + buildConfig.insert(QLatin1String("ProjectExplorer.BuildConfiguration.BuildStepsCount"), stepCount + 1); + newTarget.insert(key, buildConfig); + } + result.insert(targetKey, newTarget); + } + return result; +} |