bool BlackBerryCreatePackageStep::init() { if (!BlackBerryAbstractDeployStep::init()) return false; const QString packageCmd = target()->activeBuildConfiguration()->environment().searchInPath(QLatin1String(PACKAGER_CMD)); if (packageCmd.isEmpty()) { raiseError(tr("Could not find packager command '%s' in the build environment") .arg(QLatin1String(PACKAGER_CMD))); return false; } BlackBerryDeployConfiguration *deployConfig = qobject_cast<BlackBerryDeployConfiguration *>(deployConfiguration()); QTC_ASSERT(deployConfig, return false); QList<BarPackageDeployInformation> packagesToDeploy = deployConfig->deploymentInfo()->enabledPackages(); if (packagesToDeploy.isEmpty()) { raiseError(tr("No packages enabled for deployment")); return false; } foreach (const BarPackageDeployInformation &info, packagesToDeploy) { if (info.appDescriptorPath.isEmpty()) { raiseError(tr("Application descriptor file not specified, please check deployment settings")); return false; } if (info.packagePath.isEmpty()) { raiseError(tr("No package specified, please check deployment settings")); return false; } const QString buildDir = target()->activeBuildConfiguration()->buildDirectory(); QDir dir(buildDir); if (!dir.exists()) { if (!dir.mkpath(buildDir)) { raiseError(tr("Could not create build directory '%1'").arg(buildDir)); return false; } } QTemporaryFile *preparedAppDescriptorFile = new QTemporaryFile(buildDir + QLatin1String("/bar-descriptor_XXXXXX.xml")); if (!prepareAppDescriptorFile(info.appDescriptorPath, preparedAppDescriptorFile)) { // If there is an error, prepareAppDescriptorFile() will raise it delete preparedAppDescriptorFile; return false; } m_preparedAppDescriptorFiles << preparedAppDescriptorFile; QStringList args; args << QLatin1String("-devMode"); if (!debugToken().isEmpty()) args << QLatin1String("-debugToken") << QnxUtils::addQuotes(QDir::toNativeSeparators(debugToken())); args << QLatin1String("-package") << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath)); args << QnxUtils::addQuotes(QDir::toNativeSeparators(preparedAppDescriptorFile->fileName())); addCommand(packageCmd, args); } return true; }
void BarDescriptorFileNodeManager::updateBarDescriptorNodes(ProjectExplorer::Target *target) { if (!target) return; // We are not consistently getting a signal when the current project changes, // so instead use target->project() to get access to the current project if (ProjectExplorer::DeviceTypeKitInformation::deviceTypeId(target->kit()) != Constants::QNX_BB_OS_TYPE) { removeBarDescriptorNodes(target->project()); return; } updateBarDescriptorNodes(target->project(), true); QList<ProjectExplorer::DeployConfiguration*> deployConfigurations = target->deployConfigurations(); foreach (ProjectExplorer::DeployConfiguration *deployConfiguration, deployConfigurations) { BlackBerryDeployConfiguration *bbdc = qobject_cast<BlackBerryDeployConfiguration*>(deployConfiguration); if (!bbdc) continue; connect(bbdc->deploymentInfo(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(handleDeploymentInfoChanged()), Qt::UniqueConnection); connect(bbdc->deploymentInfo(), SIGNAL(modelReset()), this, SLOT(handleDeploymentInfoChanged()), Qt::UniqueConnection); }
ProjectExplorer::DeployConfiguration *BlackBerryDeployConfigurationFactory::create( ProjectExplorer::Target *parent, const Core::Id id) { if (!canCreate(parent, id)) return 0; BlackBerryDeployConfiguration *dc = new BlackBerryDeployConfiguration(parent); dc->stepList()->insertStep(0, new BlackBerryCreatePackageStep(dc->stepList())); dc->stepList()->insertStep(1, new BlackBerryDeployStep(dc->stepList())); return dc; }
void BlackBerryCreatePackageStep::updateAppDescriptorFile() { BlackBerryDeployConfiguration *deployConfig = qobject_cast<BlackBerryDeployConfiguration *>(deployConfiguration()); QTC_ASSERT(deployConfig, return); QList<BarPackageDeployInformation> packagesToDeploy = deployConfig->deploymentInfo()->enabledPackages(); if (packagesToDeploy.isEmpty()) return; foreach (const BarPackageDeployInformation &info, packagesToDeploy) doUpdateAppDescriptorFile(info.appDescriptorPath(), QtEnvironment); }
QString BlackBerryRunConfiguration::barPackage() const { BlackBerryDeployConfiguration *dc = deployConfiguration(); if (!dc) return QString(); QList<BarPackageDeployInformation> packages = dc->deploymentInfo()->enabledPackages(); foreach (const BarPackageDeployInformation package, packages) { if (package.proFilePath == proFilePath()) return package.packagePath(); } return QString(); }
ProjectExplorer::DeployConfiguration *BlackBerryDeployConfigurationFactory::restore( ProjectExplorer::Target *parent, const QVariantMap &map) { if (!canRestore(parent, map)) return 0; BlackBerryDeployConfiguration *dc = new BlackBerryDeployConfiguration(parent); if (dc->fromMap(map)) return dc; delete dc; return 0; }
bool BlackBerryDeployStep::init() { if (!BlackBerryAbstractDeployStep::init()) return false; QString deployCmd = target()->activeBuildConfiguration()->environment().searchInPath(QLatin1String(DEPLOY_CMD)); if (deployCmd.isEmpty()) { raiseError(tr("Could not find deploy command '%1' in the build environment") .arg(QLatin1String(DEPLOY_CMD))); return false; } if (deviceHost().isEmpty()) { raiseError(tr("No hostname specified for device")); return false; } BlackBerryDeployConfiguration *deployConfig = qobject_cast<BlackBerryDeployConfiguration *>(deployConfiguration()); QTC_ASSERT(deployConfig, return false); QList<BarPackageDeployInformation> packagesToDeploy = deployConfig->deploymentInfo()->enabledPackages(); if (packagesToDeploy.isEmpty()) { raiseError(tr("No packages enabled for deployment")); return false; } foreach (const BarPackageDeployInformation &info, packagesToDeploy) { QStringList args; args << QLatin1String("-installApp"); args << QLatin1String("-device") << deviceHost(); if (!password().isEmpty()) args << QLatin1String("-password") << password(); args << QnxUtils::addQuotes(QDir::toNativeSeparators(info.packagePath)); addCommand(deployCmd, args); }
bool BlackBerryCreatePackageStep::init() { if (!BlackBerryAbstractDeployStep::init()) return false; const Utils::FileName packageCmd = target()->activeBuildConfiguration()->environment().searchInPath(QLatin1String(PACKAGER_CMD)); if (packageCmd.isEmpty()) { raiseError(tr("Could not find packager command \"%1\" in the build environment.") .arg(QLatin1String(PACKAGER_CMD))); return false; } BlackBerryDeployConfiguration *deployConfig = qobject_cast<BlackBerryDeployConfiguration *>(deployConfiguration()); QTC_ASSERT(deployConfig, return false); QList<BarPackageDeployInformation> packagesToDeploy = deployConfig->deploymentInfo()->enabledPackages(); if (packagesToDeploy.isEmpty()) { raiseError(tr("No packages enabled for deployment.")); return false; } foreach (const BarPackageDeployInformation &info, packagesToDeploy) { if (info.appDescriptorPath().isEmpty()) { raiseError(tr("BAR application descriptor file not specified. Check deployment settings.")); return false; } if (info.packagePath().isEmpty()) { raiseError(tr("No package specified. Check deployment settings.")); return false; } const QString buildDir = info.packagePath().toFileInfo().absolutePath(); QDir dir(buildDir); if (!dir.exists()) { if (!dir.mkpath(buildDir)) { raiseError(tr("Could not create build directory \"%1\".").arg(buildDir)); return false; } } const Utils::FileName appDescriptorPath = info.appDescriptorPath(); if (!doUpdateAppDescriptorFile(appDescriptorPath, PlaceHolders)) // If there is an error, prepareAppDescriptorFile() will raise it return false; QStringList args; if (m_packageMode == DevelopmentMode) { args << QLatin1String("-devMode"); if (!debugToken().isEmpty()) args << QLatin1String("-debugToken") << QnxUtils::addQuotes(QDir::toNativeSeparators(debugToken())); } else if (m_packageMode == SigningPackageMode) { if (m_cskPassword.isEmpty() || m_keystorePassword.isEmpty()) { BlackBerrySigningPasswordsDialog dlg; dlg.setCskPassword(m_cskPassword); dlg.setStorePassword(m_keystorePassword); if (dlg.exec() == QDialog::Rejected) { raiseError(tr("Missing passwords for signing packages.")); return false; } m_cskPassword = dlg.cskPassword(); m_keystorePassword = dlg.storePassword(); emit cskPasswordChanged(m_cskPassword); emit keystorePasswordChanged(m_keystorePassword); } args << QLatin1String("-sign"); args << QLatin1String("-cskpass"); args << m_cskPassword; args << QLatin1String("-storepass"); args << m_keystorePassword; } args << QLatin1String("-package") << QnxUtils::addQuotes(info.packagePath().toUserOutput()); args << QnxUtils::addQuotes(appDescriptorPath.toUserOutput()); addCommand(packageCmd.toString(), args); } return true; }