jlahoda opened a new pull request #2252: URL: https://github.com/apache/netbeans/pull/2252
Currently, even incremental build is fairly slow. This is an attempt to improve the speed of the build - it reduces the build time by about 4 minutes on my computer, from ~16mins to ~12mins for a full build and ~10mins to 6mins for an incremental build (which is still a lot, of course). The basic idea is simple: currently, when doing a build, we build every cluster separately in an ant instance. And every module has (generated) target like "all-java.source.base" depends="all-openide.util.lookup,...". Note that the module depends directly on modules from different clusters. So, when building the "java" cluster, we also do a build of "all-openide.util.lookup", even if we have already built the "platform" cluster. This, of course, does only a timestamp check, but takes some time anyway. And we do this for every cluster, and many more modules, accumulating to a significant chunk of time. The proposed solution is to generate the dependencies so that "all-<module>" depends on a target that ensures all needed *clusters* are built, and on all-<dependent-module> targets for modules from the current cluster. This avoids the unnecessary timestamp checks and improves build time. The code was actually expected to mostly work like this, but there was a small coding mistake, which prevented it from doing that. Sadly, the current repository contains several cases where modules have dependencies on modules from other clusters, but there is no sensible dependency between the clusters. Namely: -extide/gradle depends on java/java.platform, but "java" depends on "extide", so this is a dependency in the wrong direction. I have moved gradle to the java cluster for the purpose of this patch. -java/debugger.jpda.trufflenode depends on webcommon/javascript.nodejs, but the "java" cluster does not depend on the "webcommon" cluster. I made "java" cluster depend on "webcommon" for the purpose of this patch. -nb/ko4j.debugging depends on java/maven, but the "nb" cluster does not (and should not) depend on the "java" cluster. I've moved the ko4j.debugging module into the "java" cluster for the purposed of this patch. I'd be happy to resolve the issues in other ways, as desired, but it would be awesome if we could speed up the build and make our dependencies cleaner! ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
