Current resolution:
A dependency framework that is based on ANT only was added to
build-and-test infra at r527838. The framework is result of merging
class library approach and newly proposed approach from [1] with some
modifications.
The current implementation is aimed:
-provide unified approach for downloading and storing external resources
-be simple and clear
-use only ANT tasks/types (i.e. get rid of using antcontrib)

Definitely it will be improved. So any suggestions, ideas, help in
testing, criticism are highly appreciated.

Here are some brief details about the current implementation:
each external resource is described in 'parameters.xml' file by the
set of properties:
parameters.external.<resorce_name>.<resource_property> (that was
suggested in [1]). The framework iterates over property set
(parameters.external.*.file). I wasn't able to find "standard way" to
make ANT to iterate over propertyset so I've implemented the first
approach that work for me but I assume there might be more elegant
solution. So it checks if the resource was downloaded or not. If it is
absent it is downloaded to depend/<resource_dir> directory. If there
is md5 check specified the framework verifies it.

[1] http://issues.apache.org/jira/browse/HARMONY-3501

Thanks,
Stepan.

On 4/3/07, Stepan Mishura wrote:
Hi all,

I'd like to hear opinions about choosing a way for managing library
dependencies.

Currently I'm reviewing proposal for improving build-and-test infra
[1][2]. One of declared features according to the proposal is:
 "Implemented Approach to share External Library Dependencies between different
  Test Suites allows to perform external dependencies fetching in one place by
  one means and to save time and internet traffic."

And the implementation [2] of the proposal contains a set of ANT
macros/targets that does library dependencies management for testing
suites. Briefly, a test suite may have a number of dependencies on
external libraries. It is proposed for suite to use parameters.xml
file to declare them. And the infra provides a common way for
downloading, unpacking and storing them in a 'local libraries
repository'. For example a suite can declare dependency on
'ant-contrib' in the following way:
<parameters>
   <external>
       <ant-contrib
           jar="ant-contrib-1.0b3.jar"
           
url="http://kent.dl.sourceforge.net/sourceforge/ant-contrib/ant-contrib-1.0b3-bin.zip";
           md5="c5a75fc28cbc52f09bd43b5506978601"
       />
   </external>
</parameters>

Alexander, could you add more details if my description is incomplete
(or not quite incorrect)?

Taking into account that build-and-test is going to grow I agree with
the proposal [1] (that we need common solution for managing library
dependencies). And I think that the proposal may be a good moment for
reconsidering library dependencies management. Currently Class
library, DRL VM and build-and-test infra use ANT tasks to manage
external dependencies in similar way: check whether a library exists,
if not – download it. Within Harmony we have subproject that also is
aimed to resolve the issue with libraries [3]. Also Maven was
mentioned in several discussions but I don't remember any proposal for
migrating to it.

I have browsed through documentation for Antlib for Maven 2.0[4] and
Ivy[5] and it seems for me that they may help us to find a common
approach for Harmony that can be tested with the build-and-test infra.
And class library with DRL VM will migrate later.

So the question is: are we OK with the current state (no common
approach and tool) and develop and support a set of ANT tasks that
covers needs of the build-and-test infra. Or does it make sense to
look for 'standard' solution (Antlib for Maven 2.0, Ivy or something
else)? I've red through several recommendations of the Web but … I
have no experience with using Maven or Ivy. So it is hard for me to
make deliberate choose.

Thoughts? Recommendations?

[1] http://mail-archives.apache.org/mod_mbox/harmony-dev/200703.mbox/[EMAIL 
PROTECTED]
[2] http://issues.apache.org/jira/browse/HARMONY-3501
[3] http://svn.apache.org/viewvc/harmony/enhanced/common_resources/
[4] http://maven.apache.org/ant-tasks.html
[5] http://incubator.apache.org/ivy/index.html

Thanks,
Stepan Mishura
Intel Enterprise Solutions Software Division

Reply via email to