[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Newsgroup Home]
|
[news.eclipse.technology.buckminster] Re: Strange exceptions using headless buckminster r07488
|
Hi Thomas,
I have noticed that you put .product file in the feature. But when you have
GUI product then it seems to be more convenient to put .product in
product.plugin project. Eg. plugin's plugin.xml specifies about image and
.product file specifies launcher icon. Therefore .product file in the feature
seems to be very natural place for headless product however for GUI product
plugin seems to be a better place.
Sincerely,
Vaidas
Thomas Hallgren wrote:
> Hi Vaidas,
> This should be fixed in core revision r07733. You will need the
> allowCircularDependency="true" advisorNode in the query since you indeed
> do have that, but you will no longer get the endless recursion from the
> LocalResolver.
>
> In Buckminster, we use this layout instead:
>
> +product.plugin
> \-- ..
>
> +product.feature
> +--+product.product
> +--+feature.xml
> | \--product.plugin
> \-- ..
>
> +other.plugins
> \-- ..
>
> We see the .product file more as an extension to the feature.
>
> An alternative is to not use a feature at all and instead let the .product
> file define all plug-ins that should be included. Either way, you get rid
> of the circular dependency.
>
> I'm uploading a new Buckminster version right now. It should be ready
> within the hour.
>
> - thomas
>
>
> vaidasn@xxxxxxxxx wrote:
>> Hi Thomas,
>>
>> Indeed this is circular dependency most likely caused by support for
>> .product files. I have played a little more with it, here is what I get.
>>
>> The project is structured in this way:
>>
>> +product.plugin
>> +--+product.product
>> | \--product.feature
>> \-- ..
>>
>> +product.feature
>> +--+feature.xml
>> | \--product.plugin
>> \-- ..
>>
>> +other.plugins
>> \-- ..
>>
>> Product file is in plugin. Product is feature based therefore it includes
>> the product.feature. On the other hand product.feature lists
>> product.plugin in its feature.xml. Before version 0.3.0 product files
>> where not parsed so there was no problem with my layout.
>>
>> I have tried several scenarios:
>>
>> 1) Materialize product.plugin. Then I get something working and I can
>> perform buckminster actions. However product.feature does not get
>> materialized. It seems that in this case product file is not considered
>> by buckminster.
>>
>> 2) Materialize product.feature. I get this error at resolve and can not
>> proceed further:
>>
>> Circular component dependency detected. Chain is product.plugin ->
>> product.feature -> product.plugin
>>
>> 3) I add advisor node to my cquery:
>>
>> <advisorNode namePattern="product.feature"
>> componentType="eclipse.feature" allowCircularDependency="true"/>
>>
>> Then I materialize everything successfully but get endless recursion on
>> perform action.
>>
>>
>> I hope this information helps,
>>
>> Vaidas
>>
>> Thomas Hallgren wrote:
>>
>>> Hi Vaidas,
>>> This is odd. I can't recall I've modified anything that would have an
>>> impact on the resolver. Are the things you're working on proprietary or
>>> is there a chance for me to look at it? I must get some more info
>>> somehow in order to address this.
>>>
>>> From the looks of it, you get an endless recursion in LocalResolver but
>>> I'm not sure why that would
>>> happen. Any chance you have introduced a circular dependency? If you
>>> have, it should be trapped and not result in a stack overflow so
>>> something is definitely wrong, but I'm still curious.
>>>
>>> Regards,
>>> Thomas Hallgren
>>>
>>> Vaidas Nargelas wrote:
>>>> Hi Thomas,
>>>>
>>>> I have upgraded buckminster to r07488 and headless r07406 and I can no
>>>> longer perform an action. When I do perform plugin_x#bundle.jar I get
>>>> this exception:
>>>>
>>>> java.lang.StackOverflowError
>>>> at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:446)
>>>> at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:517)
>>>> at
>>>> java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)
>>>> at
>>>> java.lang.StringCoding$StringEncoder.encode(StringCoding.java:240)
>>>> at java.lang.StringCoding.encode(StringCoding.java:272) at
>>>> java.lang.String.getBytes(String.java:947) at
>>>> java.io.UnixFileSystem.getBooleanAttributes0(Native Method) at
>>>> java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:228)
>>>> at java.io.File.exists(File.java:733) at
>>>> org.eclipse.buckminster.core.metadata.WorkspaceInfo.getMaterialization(WorkspaceInfo.java:397)
>>>> at
>>>> org.eclipse.buckminster.core.metadata.WorkspaceInfo.getMaterialization(WorkspaceInfo.java:419)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.localResolve(LocalResolver.java:190)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:405)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
>>>> at
>>>> org.eclipse.buckminster.core.resolver.LocalResolver.deepResolve(LocalResolver.java:450)
>>>> ...
>>>>
>>>> I can successfully perform the action with r7034.
>>>>
>>>> Thanks,
>>>>
>>>> Vaidas
>>