On Mon, Apr 13, 2009 at 3:22 PM, Laurent PETIT <laurent.pe...@gmail.com>wrote:

> Hi,
>
> 2009/4/14 bradford cross <bradford.n.cr...@gmail.com>
>
>>
>>
>> On Mon, Apr 13, 2009 at 2:31 PM, Stephen C. Gilardi <squee...@mac.com>wrote:
>>
>>>  On Apr 13, 2009, at 4:58 PM, bradford cross wrote:
>>>>
>>>> I have written up my journeys so far:
>>>> http://bradfordcross.blogspot.com/2009/04/clojure-build-and-dependency-management.html
>>>>
>>>
>>> Thanks very much for the write-up!
>>>
>>> Given the recent discussions and interest in dependency management I
>>> thought I'd mention an idea in that area that I think is a good one.
>>>
>>> At ILC '09, Francois-Rene Rideau made a presentation about "xcvb":
>>>
>>> http://common-lisp.net/project/xcvb/
>>>
>>> which is intended to be a successor to Common Lisp's ASDF with some nice
>>> features.
>>>
>>> One of the issues it addresses is the possibly problematic behavior of a
>>> "same world" compiler as we have in Clojure AOT: build dependencies which
>>> are intended to be explicit and correct can be incorrect, but accidentally
>>> work.
>>>
>>> Here's an example:
>>>
>>>        A depends on B and C
>>>        E depends on A, B, and D, but only declares A and D
>>>
>>>        Compile A
>>>        Compile E
>>>
>>>        works
>>>
>>>        Now change A so it no longer depends on B.
>>>
>>>        Now compiling E "breaks". (And in the general case, the guy who
>>> made the change to A knows nothing about E.)
>>
>>
>> Yes, I have had nasty issues with this in the past.  IMO, explicitly
>> declaring deps and not relying on transitive resolution is the only way to
>> go.
>>
>
> I don't understand, the example given by Stuart does not rely on any
> transitive resolution mechanism, but rather plain explicit dependency
> declaration. So I think that transitive resolution is not the problem here.
> The problem is that the compilation of A had a side effect left that the
> compilation of E benefited from.
>

Right, let me restate it a different way.

The goal is to enforce explicit deps so that you cannot rely on side effects
that transitively resolve a dependency.

My point is there are a couple ways to deal with this:

1) each unit (project or whatever you want to call it) builds in a different
process
2) static analysis or dynamic analysis is injected into the build pipeline
and causes failure (or gives warnings) if you are relying on a transitive
resolution.



>
>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to 
clojure+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to