Issue 4190 - Distributed make - lets speed things up!
Summary: Distributed make - lets speed things up!
Status: CLOSED NOT_AN_OOO_ISSUE
Alias: None
Product: ucb
Classification: Code
Component: code (show other issues)
Version: current
Hardware: All All
: P3 Trivial (vote)
Target Milestone: ---
Assignee: hjs
QA Contact: issues@tools
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-04-23 07:32 UTC by Unknown
Modified: 2002-06-17 19:08 UTC (History)
4 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
Patch for solenv/inc/settings.mk (493 bytes, patch)
2002-04-24 00:35 UTC, Unknown
no flags Details | Diff
Patch for berkleydb/makefile.mk (527 bytes, patch)
2002-04-24 00:38 UTC, Unknown
no flags Details | Diff
Patch for dtrans/source/cnttype/makefile.mk (299 bytes, patch)
2002-04-24 00:39 UTC, Unknown
no flags Details | Diff
Patch for fileacces/source/makefile.mk (288 bytes, patch)
2002-04-24 00:39 UTC, Unknown
no flags Details | Diff
Patch for framework/source/makefile.mk (377 bytes, patch)
2002-04-24 00:40 UTC, Unknown
no flags Details | Diff
Patch for framework/util/makefile.mk (342 bytes, patch)
2002-04-24 00:40 UTC, Unknown
no flags Details | Diff
Patch for i18npool/source/localedata/ascii/makefile.mk (307 bytes, patch)
2002-04-24 00:41 UTC, Unknown
no flags Details | Diff
Patch for i18npool/cource/localedata/CJK/makefile.mk (301 bytes, patch)
2002-04-24 00:42 UTC, Unknown
no flags Details | Diff
Patch for i18npool/util/makefile.mk (271 bytes, patch)
2002-04-24 00:43 UTC, Unknown
no flags Details | Diff
Patch for padmin/source/makefile.mk (334 bytes, patch)
2002-04-24 00:44 UTC, Unknown
no flags Details | Diff
Patch for product/examples/cpp/counter/makefile.mk (315 bytes, patch)
2002-04-24 00:45 UTC, Unknown
no flags Details | Diff
Patch for product/examples/cpp/remoteclient/makefile.mk (336 bytes, patch)
2002-04-24 00:46 UTC, Unknown
no flags Details | Diff
Patch for product/util/makefile.mk (398 bytes, patch)
2002-04-24 00:49 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/corereflection/makefile.mk (375 bytes, patch)
2002-04-24 00:50 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/defaultregistry/makefile.mk (377 bytes, patch)
2002-04-24 00:51 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/implementationregistration/makefile.mk (399 bytes, patch)
2002-04-24 02:39 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/inspect/makefile.mk (359 bytes, patch)
2002-04-24 02:40 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/invocation/adapterfactory/makefile.mk (393 bytes, patch)
2002-04-24 02:46 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/invocation/makefile.mk (364 bytes, patch)
2002-04-24 02:49 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/javaloader/makefile.mk (415 bytes, patch)
2002-04-24 02:49 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/javavm/makefile.mk (357 bytes, patch)
2002-04-24 02:53 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/loader/makefile.mk (357 bytes, patch)
2002-04-24 02:54 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/namingservice/makefile.mk (380 bytes, patch)
2002-04-24 02:54 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/proxy/factory/makefile.mk (297 bytes, patch)
2002-04-24 02:55 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/registry/tdprovider/makefile.mk (385 bytes, patch)
2002-04-24 02:58 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/servicemanager/makefile.mk (373 bytes, patch)
2002-04-24 02:59 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/simpleregistry/makefile.mk (375 bytes, patch)
2002-04-24 03:00 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/tdmanager/makefile.mk (364 bytes, patch)
2002-04-24 03:00 UTC, Unknown
no flags Details | Diff
Patch for stoc/source/typeconv/makefile.mk (356 bytes, patch)
2002-04-24 03:01 UTC, Unknown
no flags Details | Diff
Patch for stoc/test/excomp/makefile.mk (354 bytes, patch)
2002-04-24 03:01 UTC, Unknown
no flags Details | Diff
Patch for stoc/test/javavm/makefile.mk (358 bytes, patch)
2002-04-24 03:02 UTC, Unknown
no flags Details | Diff
Patch for stoc/test/makefile.mk (333 bytes, patch)
2002-04-24 03:03 UTC, Unknown
no flags Details | Diff
Patch for stoc/test/testsmgr/cpnt/makefile.mk (370 bytes, patch)
2002-04-24 03:04 UTC, Unknown
no flags Details | Diff
Patch for ucb/source/ucp/package/makefile.mk (340 bytes, patch)
2002-04-24 03:04 UTC, Unknown
no flags Details | Diff
Patch for vcl/source/gdi/makefile.mk (253 bytes, patch)
2002-04-24 03:05 UTC, Unknown
no flags Details | Diff
Patch for connectivity/prj/build.lst (703 bytes, patch)
2002-04-24 06:05 UTC, Unknown
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this issue.
Description Unknown 2002-04-23 07:32:40 UTC
Currently, passing -P# to build or make when building a module will allow you to
build that module in parallel. Some modules will cause grief when built in
parallel, therefore need to be built sequentially. I have been investigating the
matter and have compiled some patches that will eventually enable developers to
use dmake to its full potential. We have seen dramatic results on IRIX
performing a distributed make on a multiprocessor machine.

I have identified most modules and directories that must be built sequentially
in order to prevent the build from coming to a screeching halt, and have added a
simple macro to enable the directory to be built sequentially.

To force a sequential build, all that is simply needed is

.SEQUENTIAL: {Target to be built sequentially}

I have placed a conditional in solenv/inc/settings.mk, in which a sequential
build is forced if the macro 'FORCE_SEQUENTIAL' is set to TRUE within the
makefile including settings.mk. I realise that it would make more sense for this
macro to be included in target.mk rather than settings, but it needs to be set
early on, otherwise it wont work in some cases.

I have created quite a few patches so far, and I expect to be creating more as I
go along.
Comment 1 Unknown 2002-04-23 07:39:55 UTC
Adding ooo1.0 keyword
Comment 2 Martin Hollmichel 2002-04-23 11:40:54 UTC
Ause, please review !
Comment 3 hjs 2002-04-23 12:01:08 UTC
could you attach the first couple of patches? i wondering how the
targets  needed for .SEQUENTIAL get defined.
Comment 4 Unknown 2002-04-24 00:35:43 UTC
Created attachment 1431 [details]
Patch for solenv/inc/settings.mk
Comment 5 Unknown 2002-04-24 00:38:29 UTC
Created attachment 1432 [details]
Patch for berkleydb/makefile.mk
Comment 6 Unknown 2002-04-24 00:39:11 UTC
Created attachment 1433 [details]
Patch for dtrans/source/cnttype/makefile.mk
Comment 7 Unknown 2002-04-24 00:39:55 UTC
Created attachment 1434 [details]
Patch for fileacces/source/makefile.mk
Comment 8 Unknown 2002-04-24 00:40:24 UTC
Created attachment 1435 [details]
Patch for framework/source/makefile.mk
Comment 9 Unknown 2002-04-24 00:40:55 UTC
Created attachment 1436 [details]
Patch for framework/util/makefile.mk
Comment 10 Unknown 2002-04-24 00:41:38 UTC
Created attachment 1437 [details]
Patch for i18npool/source/localedata/ascii/makefile.mk
Comment 11 Unknown 2002-04-24 00:42:38 UTC
Created attachment 1438 [details]
Patch for i18npool/cource/localedata/CJK/makefile.mk
Comment 12 Unknown 2002-04-24 00:43:13 UTC
Created attachment 1439 [details]
Patch for i18npool/util/makefile.mk
Comment 13 Unknown 2002-04-24 00:44:26 UTC
Created attachment 1440 [details]
Patch for padmin/source/makefile.mk
Comment 14 Unknown 2002-04-24 00:45:20 UTC
Created attachment 1441 [details]
Patch for product/examples/cpp/counter/makefile.mk
Comment 15 Unknown 2002-04-24 00:46:22 UTC
Created attachment 1442 [details]
Patch for product/examples/cpp/remoteclient/makefile.mk
Comment 16 Unknown 2002-04-24 00:49:14 UTC
Created attachment 1443 [details]
Patch for product/util/makefile.mk
Comment 17 Unknown 2002-04-24 00:50:37 UTC
Created attachment 1444 [details]
Patch for stoc/source/corereflection/makefile.mk
Comment 18 Unknown 2002-04-24 00:51:25 UTC
Created attachment 1445 [details]
Patch for stoc/source/defaultregistry/makefile.mk
Comment 19 sander_traveling 2002-04-24 01:35:17 UTC
I think a large number of these are just bugs in the makefile where
sufficent dependencies are not defined.

stoc and framework definately have worked in full pararllel mode
previously.
Comment 20 Unknown 2002-04-24 02:39:30 UTC
Created attachment 1447 [details]
Patch for stoc/source/implementationregistration/makefile.mk
Comment 21 Unknown 2002-04-24 02:40:06 UTC
Created attachment 1448 [details]
Patch for stoc/source/inspect/makefile.mk
Comment 22 Unknown 2002-04-24 02:45:17 UTC
I suspect you are right Sander, but for now we are just trying to get
a distributed make running without having to 'nurse' the build. Once
this objective is met, we will focus on refinement, as we just want to
get something in, so that we can build OOO_STABLE_1 in parallel 'out
of the box' without any build issues.
Comment 23 Unknown 2002-04-24 02:46:23 UTC
Created attachment 1449 [details]
Patch for stoc/source/invocation/adapterfactory/makefile.mk
Comment 24 Unknown 2002-04-24 02:49:10 UTC
Created attachment 1450 [details]
Patch for stoc/source/invocation/makefile.mk
Comment 25 Unknown 2002-04-24 02:49:43 UTC
Created attachment 1451 [details]
Patch for stoc/source/javaloader/makefile.mk
Comment 26 Unknown 2002-04-24 02:53:39 UTC
Created attachment 1452 [details]
Patch for stoc/source/javavm/makefile.mk
Comment 27 Unknown 2002-04-24 02:54:21 UTC
Created attachment 1453 [details]
Patch for stoc/source/loader/makefile.mk
Comment 28 Unknown 2002-04-24 02:54:55 UTC
Created attachment 1454 [details]
Patch for stoc/source/namingservice/makefile.mk
Comment 29 Unknown 2002-04-24 02:55:37 UTC
Created attachment 1455 [details]
Patch for stoc/source/proxy/factory/makefile.mk
Comment 30 Unknown 2002-04-24 02:58:24 UTC
Created attachment 1456 [details]
Patch for stoc/source/registry/tdprovider/makefile.mk
Comment 31 Unknown 2002-04-24 02:59:15 UTC
Created attachment 1457 [details]
Patch for stoc/source/servicemanager/makefile.mk
Comment 32 Unknown 2002-04-24 03:00:20 UTC
Created attachment 1458 [details]
Patch for stoc/source/simpleregistry/makefile.mk
Comment 33 Unknown 2002-04-24 03:00:59 UTC
Created attachment 1459 [details]
Patch for stoc/source/tdmanager/makefile.mk
Comment 34 Unknown 2002-04-24 03:01:27 UTC
Created attachment 1460 [details]
Patch for stoc/source/typeconv/makefile.mk
Comment 35 Unknown 2002-04-24 03:01:59 UTC
Created attachment 1461 [details]
Patch for stoc/test/excomp/makefile.mk
Comment 36 Unknown 2002-04-24 03:02:42 UTC
Created attachment 1462 [details]
Patch for stoc/test/javavm/makefile.mk
Comment 37 Unknown 2002-04-24 03:03:22 UTC
Created attachment 1463 [details]
Patch for stoc/test/makefile.mk
Comment 38 Unknown 2002-04-24 03:04:11 UTC
Created attachment 1464 [details]
Patch for stoc/test/testsmgr/cpnt/makefile.mk
Comment 39 Unknown 2002-04-24 03:04:44 UTC
Created attachment 1465 [details]
Patch for ucb/source/ucp/package/makefile.mk
Comment 40 Unknown 2002-04-24 03:05:18 UTC
Created attachment 1466 [details]
Patch for vcl/source/gdi/makefile.mk
Comment 41 Unknown 2002-04-24 03:08:48 UTC
Well, thats all I have for now, but there will be more to follow.
One thing to note is that a lot of these modules/directories will
build in parallel when built singularly from their respective
locations, but tend to break the build when a top level dmake is invoked.
Comment 42 Unknown 2002-04-24 06:05:52 UTC
Created attachment 1467 [details]
Patch for connectivity/prj/build.lst
Comment 43 hjs 2002-04-24 13:11:15 UTC
looking at the first couple of patches, it looks like you're treating
the symptoms, not the cause. SLOTARGET itself is quite unlikely to
cause problems when using "-Pn", searching for USE_SHLTARGET revealed
no use of this variable (maybe USE_SHLnTARGET n=1..9 was intended).
also in this case the problem is probably located somewhere in the
dependency chain of the prerequisites, but in the dependencies of
SHLnTARGET itself. on the other hand, these two parts of the build
process (compiling and linking) would have the biggest advantage of
using "-Pn".
thus poluting the makefiles with extra variables which hide the
problems for the cost of reduced build speed is not the approach i
would prefer.

if you have problems when building with "-Pn" i would like to help you
tracking down the cause and fix it.
 
Comment 44 Martin Hollmichel 2002-04-24 20:03:06 UTC
George, Ause, I don't think that this is a must for the ooo1.0 
release, I would like reset the ooo1.0 keyword.
Comment 45 Unknown 2002-04-26 02:37:11 UTC
I am quite sure that USE_SHLTARGET is being used, as this does make a
difference. If you take a look into solenv/inc/_tg_shl.mk, approx line
4260, you will see that the macro is assigned the name of the shared
library being built.
As for SLOTARGET, there is only one case so far where it is needed, (i
forgot where now), but there was no shared library being built but one
of those dummy .lib files.

You are right in saying that I am treating the symptoms and not the
cause, but I am in a hurry to at least get OO to compile in parallel
without having to nurse the build. My plan was to first identify all
areas where a distributed make would fail before I gave any further
attention to each problem.

If you would like to assist in tracking these problems down your help
will be greatly appreciated. I guess the best starting point is to go
through all directories where I have put the FORCE_SEQUENTIAL macro,
and identify the problem.

For now I will continue working in the same manner, but will not post
any more patches, but indicate where there are any further problems.

George
Comment 46 hjs 2002-06-06 12:14:44 UTC
i would like to close this one and star new issues for each upcomming
problem. that would be easier to handle for me. any comments?
Comment 47 hjs 2002-06-17 09:45:25 UTC
since there were no complains i'll close this issue, looking forward
to the seperate issues. 
Comment 48 hjs 2002-06-17 19:08:33 UTC
-