Removing some functionality from custommakefile support

Andreas Pakulat apaku at
Sat Jul 21 22:52:55 UTC 2007


I'm "pissed off" enough now to discuss this: I'd like to remove the
automatic updating of custommakefile projects. There's a dirwatcher in
place that watches all subdirectories of a project for changes. Each
time a change happens there are certain things done

a) for each source file in that dir a stat is done to check for its
existence (using QFileInfo::exists()), if it doesn't exist its
afterwards removed from the filelist and also from the blacklist

b) files that are not in the filelist and not in the blacklist, but fit
into the wildcards defined as project files are added to an internal
list. Also new dirs are added to the dirwatcher (which needs another
stat to find out wether the path is actually a dir or not).

These two things make the Kdevelop ui hang as soon a file is changed.
The amount of hanging depends on how many files are changed. Using the
just created qmake_parser_experiment branch:

adding 10 files to the source dir causes a hang of a couple of seconds
each run of kdev-pg (which alters files in the builddir, which is inside
the project dir) causes a similar hang for a few seconds.

I've noticed similar problems when running kdevelop on kdev4 sources.
Also while KDevelop hangs I see quite large amounts of CPU power spent
waiting for I/O (using top and block_dump). We even have one or two
bugreports about this.

I'd like to remove this dirwatching and the logic that updates the
filelist. This has the drawback of having to completely re-populate a
filelist if one doesn't want to manually add new files (think of adding
various files in different dirs). Currently a "Add New Files To Project"
option exists which uses the list built during the watching. Also a
cleaning of the stored filelist is then only done during project

Are there objections against removing this, including the menu entry (I
think removing user-visible strings is ok)?


It's all in the mind, ya know.

More information about the KDevelop-devel mailing list