On 19.04.2013 07:56, Jürgen Schmidt wrote:
On 4/19/13 12:33 AM, Kay Schenk wrote:
On Thu, Apr 18, 2013 at 2:11 PM, janI <j...@apache.org> wrote:


I am deep in the building system at the moment with my l10n work, and what
we have now in trunk is approx 2/3 orignal dmake (that btw also seem to
have at least 2 generations) and 1/3 gbuild, this combination does a good
job of confusing anyone who tries to understand the system. Just to make
things worse, the gbuild part is split in as many files as possible.

When I last made a count for my ApacheCon talk we had 176 modules built with dmake and 18 built with gbuild.


So I should have written "dont try to understand it, just accept it",
actually someone else in here said something similar to me a couple of
month ago.

Exactly that is the problem, the work on gbuild is not yet finished and
we have a mix of gnu make and dmake. The gbuild is the outcome of an
analysis how to improve the build system. I believe it is not bad and
our friends from LO have more or less finished the work but I also
believe that it is too complex and can be done much simpler.

It's nearly impossible to debug and not easy to understand. It tried to
hide the complexity from single makefiles in the modules and introduced
soe kind of new scripting language based on gnu make. I am not sure if
that was the best approach.

I doubt that, too. I am also not sure if the right problems where addressed when gbuild was 'designed'. Two ways in which it failed completely are

- build speed on Windows. gbuild was written on some *nix variant (probably Linux or Solaris) and optimized for that. Windows was not liked much by the gbuild developers, and that shows.

- the gbuild system is probably harder to maintain than the dmake system. Maintainability is one of the key points in an open source project as large as ours. When only a select few can understand and maintain it, then that is not enough.





I saw all this mixture too in my build experience, and well...couldn't
figure out why. It seems historically dmake was used to speed things

The dmake build system was 'invented' when computers where much slower than today, but the source code tree was not that much smaller.

Global dependencies on file level could not have been reasonable modeled, just too much data. A solution for this are dependencies on module basis. This is what the first line in <module>/prj/build.lst provides.

Full builds, even full builds of modules like sw took too much time to do on a regular basis. Therefore, when you changed a file in one directory, then you wanted to just compile this file or at most the whole directory and then build the affected libraries. All this is possible with the dmake system, which is basically directory based. Call build in <module> and it builds the whole module but got to directory in <module> and run dmake and it compiles just that directory. These dependencies of a module on its directories is described by the remaining lines in <module>/prj/build.lst.

Computers are faster today, global dependencies have become a possible way to make the build process faster (ie compile less by only compiling files that depend on modified files) and more reliable (it is probably a missing inter-module dependency that sometimes breaks our build on the buildbot). That is what gbuild tries to do. But, if you know what you are doing and want to compile just a couple of files that you are interested in, then that is not possible anymore with gbuild.

along,
but, well...I'm not sure how/why it's being used now exactly.

Actually the wiki/gbuild have a pretty good description. The people who
started gbuild did a real good job of analyzing the dmake build and an even
better job of documenting their findings.

I am not so sure about that. One result of that analysis was that cmake would not be good tool to build AOO, with reasons that where challenged by one of cmakes developers (Bill Hoffman) but, as far as I know, never answered by the gbuild developers. To me, the analysis looked more like serving a predefined outcome.


I am right now (slowly) in the progress of writing a document, with demands
to a solid, easy to understand build system, based on my experience from a
system about 4-5 times bigger than AOO.

I am eagerly looking forward to reading what you are writing. I myself are working on a replacement for gbuild but that my turn out too experimental/radical for real world usage. But I am learning a lot about the inner workings of gbuild.


Great! I look forward to it! Although I have *used* make systems a lot
throughout my career, I've never ever constructed one, so much of this is a
mystery to me.
Me too and we can can benefit from something that we understand better
and that is potentially not so generic but where makefiles are readable.


And, yes, I saw the gbuild branch was basically inactive and tried to

The gbuild branch is about converting a few more module to gbuild but from what I know (and I could easily be wrong) that would still leave the majority of modules unchanged.

tract
down some info on that, but couldn't find much discussion about it.

We do indeed need to devote discussion time to our build process after
4.0.   I would hope we could at least make things simpler for folks
wanting
to partial builds of areas.

Interesting. I hope that we don't go back to dmake to accomplish that goal :-)


In my world, we can make it VERY simple...but even though gbuild is pretty
new, it uses the same philosofy as dmake, so it does not really change
things. I have a couple of ideas, admitted a bit radical, but they would
allow us to use standard make. My intention is to take the discussion, when
I have something to present, instead of starting the discussion with a
piece of blank paper.
I am looking forward to hear, read or see more

Another thing we need to discuss is packaging, would it not be ideal if
people could just make writer, when working on that. I would like to see a
download page, where the user select which parts of AOO he/she wants to
download.

That has been tried in the past and maybe you will succeed. Does not the Windows installer allow us to just install one application? The main problem here is the dependencies between the modules. I think that there are not many libraries that you will not need for the Writer. If you still want to support OLE, you even have to bring Calc and Impress along and then you basically need everything.


I hope you like to appetizer :-)

I am waiting for the main dish :-)

-Andre


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
For additional commands, e-mail: dev-h...@openoffice.apache.org

Reply via email to