QStringList MakeJob::privilegedExecutionCommand() const { ProjectBaseItem* it = item(); if(!it) return QStringList(); KSharedConfigPtr configPtr = it->project()->projectConfiguration(); KConfigGroup builderGroup( configPtr, "MakeBuilder" ); bool runAsRoot = builderGroup.readEntry( "Install As Root", false ); if ( runAsRoot && m_command == InstallCommand ) { int suCommand = builderGroup.readEntry( "Su Command", 0 ); QStringList arguments; QString suCommandName; switch( suCommand ) { case 1: return QStringList() << "kdesudo" << "-t"; case 2: return QStringList() << "sudo"; default: return QStringList() << "kdesu" << "-t"; } } return QStringList(); }
void TestProjectModel::testItemSanity() { ProjectBaseItem* parent = new ProjectBaseItem( nullptr, QStringLiteral("test") ); ProjectBaseItem* child = new ProjectBaseItem( nullptr, QStringLiteral("test"), parent ); ProjectBaseItem* child2 = new ProjectBaseItem( nullptr, QStringLiteral("ztest"), parent ); ProjectFileItem* child3 = new ProjectFileItem( nullptr, Path(QUrl(QStringLiteral("file:///bcd"))), parent ); ProjectFileItem* child4 = new ProjectFileItem( nullptr, Path(QUrl(QStringLiteral("file:///abcd"))), parent ); // Just some basic santiy checks on the API QCOMPARE( parent->child( 0 ), child ); QCOMPARE( parent->row(), -1 ); QVERIFY( !parent->child( -1 ) ); QVERIFY( !parent->file() ); QVERIFY( !parent->folder() ); QVERIFY( !parent->project() ); QVERIFY( !parent->child( parent->rowCount() ) ); QCOMPARE( parent->iconName(), QString() ); QCOMPARE( parent->index(), QModelIndex() ); QCOMPARE( child->type(), (int)ProjectBaseItem::BaseItem ); QCOMPARE( child->lessThan( child2 ), true ); QCOMPARE( child3->lessThan( child4 ), false ); // Check that model is properly emitting data-changes model->appendRow( parent ); QCOMPARE( parent->index(), model->index(0, 0, QModelIndex()) ); QSignalSpy s( model, SIGNAL(dataChanged(QModelIndex,QModelIndex)) ); parent->setPath( Path(QStringLiteral("/newtest")) ); QCOMPARE( s.count(), 1 ); QCOMPARE( model->data( parent->index() ).toString(), QStringLiteral("newtest") ); parent->removeRow( child->row() ); }
QUrl MakeJob::workingDirectory() const { ProjectBaseItem* it = item(); if(!it) return QUrl(); KDevelop::IBuildSystemManager *bldMan = it->project()->buildSystemManager(); if( bldMan ) return bldMan->buildDirectory( it ).toUrl(); // the correct build dir else { // Just build in-source, where the build directory equals the one with particular target/source. for( ProjectBaseItem* item = it; item; item = item->parent() ) { switch( item->type() ) { case KDevelop::ProjectBaseItem::Folder: case KDevelop::ProjectBaseItem::BuildFolder: return static_cast<KDevelop::ProjectFolderItem*>(item)->path().toUrl(); break; case KDevelop::ProjectBaseItem::Target: case KDevelop::ProjectBaseItem::File: break; } } return QUrl(); } }
QStringList MakeJob::commandLine() const { ProjectBaseItem* it = item(); if(!it) return QStringList(); QStringList cmdline; KSharedConfigPtr configPtr = it->project()->projectConfiguration(); KConfigGroup builderGroup( configPtr, "MakeBuilder" ); QString makeBin = builderGroup.readEntry("Make Binary", MakeBuilderPreferences::standardMakeCommand()); cmdline << makeBin; if( ! builderGroup.readEntry("Abort on First Error", true)) { cmdline << (isNMake(makeBin) ? "/K" : "-k"); } // note: nmake does not support the -j flag if (!isNMake(makeBin)) { if (builderGroup.readEntry("Override Number Of Jobs", false)) { int jobCount = builderGroup.readEntry("Number Of Jobs", 1); if (jobCount > 0) { cmdline << QString("-j%1").arg(jobCount); } } else { // use the ideal thread count by default cmdline << QString("-j%1").arg(QThread::idealThreadCount()); } } if( builderGroup.readEntry("Display Only", false) ) { cmdline << (isNMake(makeBin) ? "/N" : "-n"); } QString extraOptions = builderGroup.readEntry("Additional Options", QString()); if( ! extraOptions.isEmpty() ) { foreach(const QString& option, KShell::splitArgs( extraOptions ) ) cmdline << option; }
QStringList MakeJob::commandLine() const { ProjectBaseItem* it = item(); if(!it) return QStringList(); QStringList cmdline; KSharedConfigPtr configPtr = it->project()->projectConfiguration(); KConfigGroup builderGroup( configPtr, "MakeBuilder" ); #ifdef _MSC_VER QString makeBin = builderGroup.readEntry("Make Binary", "nmake"); #else QString makeBin = builderGroup.readEntry("Make Binary", "make"); #endif cmdline << makeBin; if( ! builderGroup.readEntry("Abort on First Error", true) ) { cmdline << "-k"; } int jobnumber = builderGroup.readEntry("Number Of Jobs", 2); if(jobnumber>1) { QString jobNumberArg = QString("-j%1").arg(jobnumber); cmdline << jobNumberArg; } if( builderGroup.readEntry("Display Only", false) ) { cmdline << "-n"; } QString extraOptions = builderGroup.readEntry("Additional Options", QString()); if( ! extraOptions.isEmpty() ) { foreach(const QString& option, KShell::splitArgs( extraOptions ) ) cmdline << option; }