Alexey Varlamov said the following on 09.01.2008 16:07:
Folks,

We did a few iterations refactoring the subject - let's have one more access ;).
Why? There was a desire to have the following:
1) More fine-grained control over dependencies to empower modularity;
2) Unified approach and shared scripts across Harmony modules - VMs,
classlib, jdktools;
3) Reduce duplication of resources (traffic, space, etc) between
modules within the same workspace;
I'd also add 4) If possible, reuse resources in different workspaces.
This would be quite handy for committing purposes and for
multi-platform development.

Geir once introduced "common_resources" module, which IMO was a step
in the right direction, but it was not fully adapted thus not used
properly. Now the new build for DRLVM is a good stimulus and
opportunity to accomplish the task.

I suggest this time we deprive the classlib of it's state of Harmony
umbilicus and make the "common_resources" a "primordial" module ;)
The idea is to move all shared properties, definitions, tasks and
files to the single location. Besides, the same module should be used
as a central repository for downloading and storing external files.
So, each module would "request" needed resources via standard
facilities (ant tasks), automatically reusing duplicates. And the same
"common_resources" instance can be imported to several workspaces and
even shared between developers.

Yes I think it would be very nice to have, especially for creating source packages integrated into Linux distributions. Then files may be reused from the already installed on the system.

One thing I wonder about, if an external dependency is downloaded in source form, then common_resources would have to build it as well. E.g. drlvm build needs APR (actually it also patches it) and LOG4CXX. Do you think common_resources should contain only sources for APR or the already compiled binary?

How?
1) Roughly, the following files need to be moved from classlib to
common_resources:
make/properties.xml
make/depends.properties               # ? move only shared items to
simplify maintenance
depends/** except depends/files/    # ? there are several libs/zips +
make definitions being shared
Closer comparison of other make/build-*.xml ant scripts in classlib
and jdktools may give more candidates.
2) Implement tasks or macros for fetching resources, storing them and
providing uniform access: common_resources/download.xml svn.xml etc
3) Refactor make/depends.xml in respective modules to resolve bullet #1.

Surely the plan is very sketchy, we need to agree on general direction first.
Waiting for your comments/objections impatiently :)

I think that the change is good. Thank you very much for your effort in improving current build situation!

--
Gregory

Reply via email to