buildr-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ittay Dror <ittay.d...@gmail.com>
Subject Re: transitive project dependencies
Date Fri, 18 Jul 2008 04:29:46 GMT
Or, maybe what is needed is to classify Artifact classes: There's 
RepositoryArtifact and BuildArtifact. both return 'dependencies' a 
'package' task is a type of BuildArtifact, and it gets its dependencies 
from the sibling compile task.

Ittay Dror wrote:
> Hi,
>
> I see this in the 'transitive' method:
>      when /([^:]+:){2,4}/ # A spec as opposed to a file name.
>        artifact = artifact(spec)
>        set |= [artifact] unless artifact.type == :pom
>        set |= POM.load(artifact.pom).dependencies.map { |spec| 
> artifact(spec) }
>      ....
>      when Project
>        set |= transitive(spec.packages)
>      when Rake::Task
>        set |= spec.respond_to?(:to_spec) ? transitive(spec.to_spec) : 
> [spec]
>
> so if I write compile.with(project('foo')), the method is recursively 
> called with the packages tasks, each is then turned to a spec which 
> then acts as if the artifact is in the repository, which means the 
> previous project should be installed, which is an unnecessary overhead 
> and I'm not sure will work as I'm not sure that a dependency on 
> 'install' is created anywhere.
>
> also, what if i pass an Artifact ? it is a Rake::Task and supports the 
> to_spec, so again buildr will look in the repository, and also will 
> turn the Artifact to a spec, even though it is good as is.
>
> am i wrong?
>
> if not, why not add something like:
>   when Rake::Task
>      if(spec.respond_to?(:dependencies)) then
>        set |= [spec]                  set |= 
> transitive(spec.dependencies)
>      else
>        set |= spec.respond_to?(:to_spec) ? transitive(spec.to_spec) : 
> [spec]
>      end
>
> also maybe add a 'when Artifact' before the 'when Rake::Task' clause, 
> and if the artifact is a repository artifact, try to read is pom, 
> otherwise, warn (to the user) that he should pass the project/task 
> that created the artifact.
>
> ittay
>

-- 
--
Ittay Dror <ittay.dror@gmail.com>



Mime
View raw message