On Fri, 5 Aug 2016 13:37:12 +0900 Jean-Philippe André <j...@videolan.org> said:
> On 4 August 2016 at 11:23, Cedric BAIL <cedric.b...@free.fr> wrote: > > > On Mon, Aug 1, 2016 at 5:50 PM, Jean-Philippe André <j...@videolan.org> > > wrote: > > > On 2 August 2016 at 09:30, Simon Lees <sfl...@suse.de> wrote: > > >> On 08/02/2016 09:05 AM, Carsten Haitzler (The Rasterman) wrote: > > >> > On Mon, 1 Aug 2016 13:38:22 -0700 Cedric BAIL <cedric.b...@free.fr> > > >> said: > > >> >> On Mon, Aug 1, 2016 at 10:37 AM, Tom Hacohen <t...@osg.samsung.com> > > >> wrote: > > >> >>> On 01/08/16 17:07, Stefan Schmidt wrote: > > >> >>>> The extra Makefiles to allow building some libraries separately > > have > > >> >>>> been broken for a while now. Nobody updated them when changes > > >> happened. > > >> >>>> The normal problem when trying to have two build setups in one > > tree. > > >> >>>> > > >> >>>> I just gave it another go and ecore, edje, eio and elementary > > failed > > >> for > > >> >>>> me. > > >> >>>> > > >> >>>> Many of them also fail from a tarball build because they include > > >> >>>> Makefile_Eolian_Subbuild_Helper.am which never makes it into the > > >> tarball. > > >> >>>> > > >> >>>> cd ../../.. && /bin/sh > > >> /home/stefan/EFL/efl/tmp/efl-1.18.0-beta1/missing > > >> >>>> automake-1.15 --gnu src/lib/ecore/Makefile > > >> >>>> configure.ac:284: warning: The 'AM_PROG_MKDIR_P' macro is > > deprecated, > > >> >>>> and its use is discouraged. > > >> >>>> configure.ac:284: You should use the Autoconf-provided > > >> 'AC_PROG_MKDIR_P' > > >> >>>> macro instead, > > >> >>>> configure.ac:284: and use '$(MKDIR_P)' instead of '$(mkdir_p)'in > > your > > >> >>>> Makefile.am files. > > >> >>>> automake-1.15: error: cannot open < > > >> >>>> src/Makefile_Eolian_Subbuild_Helper.am: No such file or directory > > >> >>>> Makefile:1644: recipe for target 'Makefile.in' failed > > >> >>>> make: *** [Makefile.in] Error 1 > > >> >>>> > > >> >>>> > > >> >>>> All in all I think it would make sense to remove this extra > > Makefiles > > >> >>>> all together and stay with the one big Makefile build for 1.18. I > > know > > >> >>>> the build times are frustrating and we might want to switch back > > to a > > >> >>>> non aggregated Makefile to allow easier rebuilds of specific libs > > >> only. > > >> >>>> > > >> >>>> Having a second, non working, build setup in tree for the release > > is > > >> >>>> something I would like to avoid though. > > >> >>>> > > >> >>>> Comments? > > >> >>> > > >> >>> That's what I've been saying since they were introduced. Two build > > >> >>> systems is a bad idea, we should just stay with single build until > > we > > >> >>> move to split. > > >> >> > > >> >> And it also make clear that nobody really care about per directory > > >> >> build. Anyway. It has been now removed by commit > > >> >> dd1d3f0d2d8f7369f7461f54928eac2a4fce99fb. > > >> > > > >> > actually that's wrong. i have used them.. BUT when i use them it goes > > and > > >> > rebuilds AGAIN in that dir and doesn't use my existing toplevel build. > > >> that is > > >> > SUPER annoying. i've also found them to be at least partially broken. > > we > > >> > discussed this long ago and no one wanted 2 build systems. almost > > >> everyone > > >> > except you wants per-directory build back again and there just is no > > >> sane way > > >> > to have both with a single file. the subdir builds needed to be the > > ONLY > > >> builds > > >> > available. > > >> > > > >> > > >> As long as distro people can still build everything from one command. > > >> > > >> If the subtree builds are just to save developer build time, why don't > > >> you all just install ccache and be done with it, ccache significantly > > >> reduces my efl rebuild times. > > > > > > We use it :) A basic incremental build is still very slow (touch an file > > in > > > eina to see...). > > > > > > The problem with the per-directory build was two-fold: > > > - separate makefiles (totally unmanageable) > > > > Yes, only way around that would be to introduce our own pretool to > > fill the Makefile.am with the proper list of files. The rest are > > autotools limitation. > > > > > - it recompiled entirely each "module" (no incremental build after the > > main > > > build was run) > > > > Yes, that's due to the object naming convention used by autotools > > which use the full relative path, but subsequent build would not > > require a full rebuild. This is non fixable. > > > > > I know I broke the per directory build a few times, no one even said > > > anything. That's how much it was used. > > > > Pretty much my point. > > > > Also I have run some benchmark, if we do go back to multiple Makefile > > (If that was even doable), we will have a total build time when > > nothing has changed significantly increased as our issue is in parsing > > Makefile (9s on my laptop into parsing) and splitting Makefile will > > result in duplicated boilerplate to parse. It also means that as long > > as we have that many files, modules and libraries, this parsing will > > be there and will likely still cost us that much. I have started > > looking at GNU make and I think there is room for serious improvement > > in their parsing code. Will see if I can manage something in the > > comming weeks. > > > > As for the reason why we can't move to split Makefile.am, it's pretty > > simple. It has to be done in one move due to how autotools handle sub > > directories and dependencies. For anyone who has looked at our build > > system, this is just litterally insane to do. We have to face it our > > toolkit has grown big enough that any build system we use is going to > > be seriously complex, hard to maintain and slow (Before we didn't > > notice that slowness as it was spread on 10 differents run of make). > > Reducing options and merging library will just marginally help. I will > > not be the one converting it to a single Makefile and if someone is > > crazy enough to do it, be my guest ! > > > > All the above also apply to a conversion to cmake. Pretty sure it will > > not help that much. If you want to speed up things, speed up make ! > > > > Well, yes and no. Let's consider incremental builds only for now, because > full build will always take time... so many files to compile. > > In an ideal world, a .so file timestamp update should not trigger another > .so file relink. > A change in a function inside Evas (no symbols changed) should not trigger > any rebuild outside libevas.so. > What happens instead is that all libs depending on evas are relinked, the > elm theme is rebuilt, and all widgets previews are relinked as well. Not a > single file was recompiled (except the edj ones). Which means the relink > happens, even when the symbols table has not changed. worse. try eina. because a .c file changes, eolian_gen is rebuilt. if it is rebuilt then eolian re-generates all .c files. then these have ot be compiled. then everything relinks... i spend days watching a change inside eina_whatever.c result in this. enough! if i change something in a header that would NEED a rebuild then i'll do a full rebuild of efl THEN. my job as a developer to get that right. the build tools we do have just are not smart enough to detect a change that does really or does not really need a rebuild of everything that depends on it. yes i know in THEORY i changed something that may need it... but i didn't and the tools do not know. this is 99% of the workflow. the relinking also takes forever too. > A change inside Eina is conceptually a bit trickier as eolian_gen depends > on it and everything else depends on eolian_gen's output. > > So, if by saying "let's speed up make" you mean optimize the dependency > resolutions, yes. While that's done by make, the rules are generated by > autofoo. Basically if the timestamp comparison was based on only the > symbols table and not the actual so file, we would have much faster > incremental builds already. > > But I know I'm just dreaming here... :) > > -- > Jean-Philippe André > ------------------------------------------------------------------------------ > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel