[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kdevelop-bugs
Subject:    [Bug 146144] kdevelop consumes all CPU resourses while building
From:       Andreas Pakulat <apaku () gmx ! de>
Date:       2007-07-30 1:01:57
Message-ID: 20070730010157.26334.qmail () ktown ! kde ! org
[Download RAW message or body]

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=146144         
apaku gmx de changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED



------- Additional Comments From apaku gmx de  2007-07-30 03:01 -------
SVN commit 694087 by apaku:

Remove the dirwatcher, it caused more trouble than its worth.
BUG:146144


 M  +21 -94    customprojectpart.cpp  
 M  +1 -6      customprojectpart.h  


--- branches/KDE/3.5/kdevelop/buildtools/custommakefiles/customprojectpart.cpp \
#694086:694087  @ -27,7 +27,6  @
 
 #include <kaction.h>
 #include <kdebug.h>
-#include <kdirwatch.h>
 #include <kdialogbase.h>
 #include <keditlistbox.h>
 #include <kdevgenericfactory.h>
 @ -67,7 +66,6  @
 CustomProjectPart::CustomProjectPart( QObject *parent, const char *name, const \
                QStringList & )
         : KDevBuildTool( &data, parent, name ? name : "CustomProjectPart" )
         , m_lastCompilationFailed( false ), m_recursive(false), \
                m_first_recursive(false)
-        , dirwatch(new KDirWatch(this))
 {
     setInstance( CustomProjectFactory::instance() );
     setXMLFile( "kdevcustomproject.rc" );
 @ -80,10 +78,6  @
     action->setToolTip( i18n( "Re-Populate Project" ) );
     action->setWhatsThis( i18n( "<b>Re-Populate Project</b><p>Re-Populate's the \
project, searches through the project directory and adds all files that match one of \
the wildcards set in the custom manager options to the project filelist." ) );  
-    action = new KAction( i18n( "Add New Files To Project" ), 0, this, SLOT( \
                addNewFilesToProject() ), actionCollection(), "addnewfiles_project" \
                );
-    action->setToolTip( i18n( "Add New Files To Project" ) );
-    action->setWhatsThis( i18n( "<b>Add New Files To Project</b><p>Adds files \
                created outside of kdevelop to the project." ) );
-
     action = new KAction( i18n( "&Build Project" ), "make_kdevelop", Key_F8,
                           this, SLOT( slotBuild() ),
                           actionCollection(), "build_build" );
 @ -187,8 +181,6  @
              this, SLOT( slotCommandFinished( const QString& ) ) );
     connect( makeFrontend(), SIGNAL( commandFailed( const QString& ) ),
              this, SLOT( slotCommandFailed( const QString& ) ) );
-    connect( dirwatch, SIGNAL( dirty( const QString&) ),
-             this, SLOT( slotDirDirty( const QString& ) ) );
  }
 
 
 @ -237,6 +229,9  @
 
     QString popupstr = fcontext->urls().first().fileName();
 
+    if( popupstr == QString::null )
+        popupstr = ".";
+
     if ( fcontext->urls().size() == 1 && URLUtil::isDirectory( \
fcontext->urls().first() ) && !isInBlacklist( fcontext->urls().first().path() ) )  {
         popup->insertSeparator();
 @ -250,6 +245,7  @
                                        "like the <i>New Class</i> wizard." ) );
     }
 
+    kdDebug(9025) << "context urls: " << fcontext->urls() << endl;
     if( fcontext->urls().size() == 1 && ( isProjectFileType( \
fcontext->urls().first().path() ) || URLUtil::isDirectory( fcontext->urls().first() ) \
) )  {
         popup->insertSeparator();
 @ -283,8 +279,10  @
 
     for ( KURL::List::ConstIterator it = urls.begin(); it != urls.end(); ++it )
     {
+        kdDebug(9025) << "Checking URL: " << *it << endl;
         QString canPath( URLUtil::canonicalPath(( *it ).path() ) );
         QString relPath = relativeToProject( canPath );
+	kdDebug(9025) << "relpath: " << relPath << "|canpath: " << canPath << endl;
         if( isInBlacklist( relPath ) )
             continue;
         if ((( *it ).isLocalFile() && isProjectFileType(( *it ).fileName() ) ) )
 @ -393,14 +391,9  @
 
 void CustomProjectPart::openProject( const QString &dirName, const QString \
&projectName )  {
-    dirwatch->blockSignals( true );
-    dirwatch->stopScan();
-
     m_projectDirectory = dirName;
     m_projectName = projectName;
 
-    m_autoAddFiles.clear();
-
     QDomDocument &dom = *projectDom();
     // Set the default directory radio to "executable"
     if ( DomUtil::readEntry( dom, "/kdevcustomproject/run/directoryradio" ) == "" )
 @ -451,11 +444,9  @
 
         if( newfiles.count() > 0 )
         {
-            m_autoAddFiles = newfiles;
-            addNewFilesToProject();
+            addNewFilesToProject(newfiles);
         }
 
-        addDirWatches( dirName );
     }
     else
     {
 @ -480,8 +471,6  @
         envs.appendChild( el );
     }
     KDevProject::openProject( dirName, projectName );
-    dirwatch->startScan();
-    dirwatch->blockSignals( false );
 }
 
 void CustomProjectPart::findNewFiles( const QString& dir, QStringList& filelist ) \
const  @ -511,19 +500,7  @
     }
 }
 
-void CustomProjectPart::addDirWatches( const QString& absPath )
-{
-    dirwatch->addDir( absPath );
-    QStringList entries = QDir( absPath ).entryList( QDir::Dirs );
-    entries.remove(".");
-    entries.remove("..");
-    for( QStringList::const_iterator it = entries.begin(); it != entries.end(); ++it \
                )
-    {
-        addDirWatches( absPath + "/" + *it );
-    }
-}
 
-
 void CustomProjectPart::populateProject()
 {
 
 @ -546,17 +523,14  @
 
     findNewFiles( projectDirectory(), newlist );
 
-    m_autoAddFiles = newlist;
     QApplication::restoreOverrideCursor();
-    addNewFilesToProject();
-    addDirWatches( m_projectDirectory );
+    addNewFilesToProject(newlist);
 }
 
 
 void CustomProjectPart::closeProject()
 {
     saveProject();
-    m_autoAddFiles.clear();
 }
 
 void CustomProjectPart::saveProject()
 @ -691,11 +665,14  @
         if ( isInBlacklist( *it ) )
             continue;
         QString relpath;
+	kdDebug(9025) << "Checking path: " << *it << endl;
         if( QDir::isRelativePath( *it ) )
         {
+            kdDebug(9025) << *it << " is relative" << endl;
             relpath = *it;
         }else
         {
+            kdDebug(9025) << *it << " is not relative" << endl;
             relpath = relativeToProject( *it );
         }
 
 @ -704,13 +681,18  @
 
         if ( QFileInfo( projectDirectory() + "/" + relpath ).isDir() && ( \
m_recursive || m_first_recursive ) )  {
+            kdDebug(9025) << "is a dir and " << m_recursive << "|" << \
m_first_recursive << endl;  m_first_recursive = false;
             QStringList fileentries = QDir( projectDirectory() + "/" + relpath \
                ).entryList( filetypes().join(";") );
             QStringList dirs = QDir( projectDirectory() + "/" + relpath \
).entryList(QDir::Dirs);  QStringList subentries = fileentries+dirs;
             for ( QStringList::iterator subit = subentries.begin(); subit != \
subentries.end(); ++subit ) +            {
                 if ( *subit != "." && *subit != ".." )
                     *subit = relpath + "/" + ( *subit );
+                if( (*subit).startsWith("/") )
+                    *subit = (*subit).mid(1,(*subit).length());
+	    }
             addFiles( subentries );
             addedFiles << relpath;
             m_sourceFiles.append( relpath );
 @ -1474,58 +1456,6  @
     return false;
 }
 
-void CustomProjectPart::slotDirDirty( const QString& dir )
-{
-
-    QStringList remove;
-    QString reldir = relativeToProject( dir );
-    if( !reldir.isEmpty() )
-        reldir += "/";
-
-    QStringList blacklist = this->blacklist();
-    for( QStringList::const_iterator it = m_sourceFiles.begin(); it !=
-            m_sourceFiles.end(); ++it)
-    {
-        if( (*it).startsWith(reldir) )
-        {
-            QString lastpart = (*it).mid(reldir.length());
-            if( !QFileInfo(dir+"/"+lastpart).exists() )
-            {
-                remove << (*it);
-            }
-        }
-    }
-    for( QStringList::const_iterator it = remove.begin(); it != remove.end(); ++it )
-    {
-        if( isInBlacklist(*it) )
-        {
-            blacklist.remove(*it);
-        }
-    }
-    updateBlacklist( blacklist );
-    removeFiles(remove);
-
-    QStringList fileentries = QDir( dir ).entryList( filetypes().join(";") );
-    QStringList dirs = QDir( dir ).entryList(QDir::Dirs);
-    QStringList files = fileentries+dirs;
-    files.remove(".");
-    files.remove("..");
-    kdDebug(9025) << "Got dirty signal from " << dir << endl;
-    for( QStringList::const_iterator it = files.begin(); it != files.end(); ++it )
-    {
-        if( m_sourceFiles.find( reldir+*it ) == m_sourceFiles.end() && ( \
isProjectFileType( *it ) || QFileInfo( dir+"/"+*it ).isDir() ) && !isInBlacklist( \
                reldir+*it ) )
-        {
-            kdDebug(9025) << "Adding " << reldir+*it << " to autolist" << endl;
-            m_autoAddFiles.append( reldir+*it );
-            if( QFileInfo( dir+"/"+*it ).isDir() )
-            {
-                addDirWatches( dir+"/"+*it );
-            }
-        }else
-            kdDebug(9025) << "Not Adding" << reldir+*it << endl;
-    }
-}
-
 void CustomProjectPart::switchBlacklistEntry( const QString& path)
 {
     QStringList blacklist = this->blacklist();
 @ -1546,8 +1476,11  @
 QString CustomProjectPart::relativeToProject( const QString& abspath ) const
 {
     QString path = abspath.mid( projectDirectory().length()+1 );
+    kdDebug(9025) <<"abspath: " << "|project dir: " << projectDirectory() << "|path: \
" << path << endl;  if( path.endsWith("/") )
         path = path.mid( 0, path.length()-1 );
+    if( path.startsWith("/") )
+        path = path.mid( 1, path.length() );
     return path;
 }
 
 @ -1581,10 +1514,10  @
     return DomUtil::readListEntry( *projectDom(), "kdevcustomproject/blacklist", \
"path");  }
 
-void CustomProjectPart::addNewFilesToProject()
+void CustomProjectPart::addNewFilesToProject( const QStringList& filelist )
 {
     QStringList addfiles;
-    for( QStringList::const_iterator it = m_autoAddFiles.begin(); it != \
m_autoAddFiles.end(); ++it ) +    for( QStringList::const_iterator it = \
filelist.begin(); it != filelist.end(); ++it )  {
         if( m_sourceFiles.find( *it ) == m_sourceFiles.end() && ( isProjectFileType( \
*it ) || QFileInfo( projectDirectory()+"/"+*it ).isDir() ) && !isInBlacklist( *it ) ) \
{  @ -1598,7 +1531,6  @
     AddFilesDialog *dlg = new AddFilesDialog( addfiles, mainWindow()->main() );
     if( dlg->exec() == KDialog::Accepted )
     {
-        m_autoAddFiles.clear();
         m_first_recursive = false;
         m_recursive = false;
         QStringList blacklist = this->blacklist();
 @ -1622,11 +1554,6  @
             excludelist.remove(*it);
         }
         blacklist += excludelist;
-        for( QStringList::const_iterator it = excludelist.begin(); it != \
                excludelist.end(); ++it )
-        {
-            if( QFileInfo( projectDirectory()+"/"+*it ).isDir() )
-                dirwatch->removeDir(projectDirectory()+"/"+*it);
-        }
         updateBlacklist( blacklist );
         addFiles( dlg->includedPaths() );
     }
--- branches/KDE/3.5/kdevelop/buildtools/custommakefiles/customprojectpart.h \
#694086:694087  @ -26,7 +26,6  @
 class QPopupMenu;
 class QStringList;
 class KDialogBase;
-class KDirWatch;
 class CustomProjectWidget;
 class Context;
 class KSelectAction;
 @ -66,14 +65,13  @
 
 private slots:
     void populateProject();
-    void slotDirDirty( const QString& dir );
     void projectConfigWidget( KDialogBase *dlg );
     void contextMenu( QPopupMenu *popup, const Context *context );
     void slotAddToProject();
     void slotRemoveFromProject();
     void slotAddToProjectRecursive();
     void slotRemoveFromProjectRecursive();
-    void addNewFilesToProject();
+    void addNewFilesToProject( const QStringList& );
     void slotChangeBlacklist();
     void slotChooseActiveDirectory();
     void slotBuild();
 @ -102,7 +100,6  @
     void cleanFileList();
     void setFiletypes( const QStringList& );
     QString relativeToProject( const QString& ) const;
-    void addDirWatches( const QString& );
     void findNewFiles( const QString& dir, QStringList& list) const;
 
     QStringList filetypes() const;
 @ -119,7 +116,6  @
     QString m_projectName;
     QString m_filelistDir;
     QStringList m_sourceFiles;
-    QStringList m_autoAddFiles;
     QPopupMenu *m_targetMenu;
     QPopupMenu *m_targetObjectFilesMenu;
     QPopupMenu *m_targetOtherFilesMenu;
 @ -140,7 +136,6  @
     QMap<QString, QString> m_makefileVars;
     bool m_recursive;
     bool m_first_recursive;
-    KDirWatch* dirwatch;
 };
 
 #endif

_______________________________________________
KDevelop-bugs mailing list
KDevelop-bugs@kdevelop.org
https://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-bugs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic