Aleksey Bragin wrote:
Please, this would be my last reply to this thread. Yet another time I'm getting an answer that reshuffling files in the directory makes build time shorter. Seriously, am I writing with background and foreground text colors being set to the same value or what?
Is there any real, serious reason to break /compatibility with all existing branches,/
This is a valid point. One of the few to take care of.
make modules harder to find,
It will actually make modules much easier to find. When I look for a module I usually know what kind of module it is. When I look for gdi32, I know it's a core win32 thing and I don't have to look through hundreds of wine dlls, just to find gdi32. If I don't know what kind of module that is, I should either stay away from it, or simply use doxygen, that will tell me where it is. But this should be really the exception.
whatever else, BESIDES hacking around a broken build system which can't have proper grouping?
Did I write in chineese letters on greek background? How can the build system care for shorter build times if we always do a clean rebuild of *everything*? It can't. How can a different file layout do that? Easy: the buildbot can decide what part of reactos was commited to and only clean and rebuild THAT part. If I commit some audio file, just rebuild the audio part. The rest of the tree is unaffected. We also don't recompile gcc when someone commited to the kernel. The only dependency that all stuff shares is the "SDK", containing the core headers and core libs like crt. This way we could divide our buildbot's build time probably by 5 to 10. Now please tell me how rbuild or cmake or sysgen can do that? Another thing is dependencies. Currently everyone just adds dependencies wherever he likes. There's so much interdependency you can't just not build something like dlls. For the amd64 port, I added a bunch of hacks to only compile kernel mode stuff to save a lot of compilation time, but that took me quite some time to get it working and it's pretty hacky. The new file layout would allow to simply "comment out" one directory from the root folder and still everything would build.
I proposed to properly solve this with either sysgen, cmake or anything else. With a build system which does not suck. Not with a build system, where you need to adjust file paths in order to be able to control build process!
I'm glad to participate in a discussion about pros and cons of a proposed new tree layout, but so far the only thing I keep listening to is that it's somehow going to make build time shorter.
The only thing on the other side of the argumentation that I heard so far is, that it doesn't matter how bad our file layout is, we can work around it with a complex build system. But that's not true.
Let's be honest: It won't. If a 1 liner in PSDK causes whole tree to rebuild, it will take the same with the new layout. It will just be built in a different order, but still all will be rebuilt, because of (somehow broken, or too strict, or incompatible with the makefile) dependencies tracking. It won't make build time shorter until a new build system is in place.
WBR, Aleksey Bragin.