felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Richard S. Hall" <he...@ungoverned.org>
Subject Re: OBR resolver knows about a requirement of a missing requirement
Date Sat, 10 Mar 2012 23:32:13 GMT
I admit, I don't see it at first glance.

If you want to email me privately a zip of your setup to easily 
reproduce it, I could take a look.

-> richard

On 3/10/12 17:37 , matias san martin wrote:
> Hi Richard,Thank you for taking
> the time to analyze my problem. I don't think it is a problem of
> "logging", because if I print the number of missing requirements in the
> 2nd iteration (where the question rises), it prints that 2 reqs are
> missing (that would be Runner and InterRunner).
>
> At the bottom of this mail you can find the content of the repository.xml files I'm using
[1].
> Note that they are pasted all together but in my test they are separated in 3 different
files (corresponding to repo1,repo2,repo3). The names of the packages and bundles are ones
> I'm using in my test (in my original question they were simplified).
>
> These files were created using the bindex tool.
>
> I can share the bundles I'm using too (if they are needed). I'm really curious about
> this behavior and can't think of any explanation (note that I'm just
> starting using OSGi and Felix).
>
> Many thanks again for taking the time to try to understand the problem I'm presenting.
> Regards
> [1] Sorry I couldn't use a better way of posting the information (e.g. using
> pastebind or sth) because this mail was being detected as SPAM
>
>
> /////////////////////////////////////// REPOSITORY FILES //////////////////////////////////////////////////////
> <?xml version='1.0' encoding='utf-8'?>
> <?xml-stylesheet type='text/xsl' href='http://www.osgi.org/www/obr2html.xsl';?>
>
> <repository lastmodified='20120310183715.359' name='repository_1'>
>
> <resource id='test.osgi.dynload.bundle.echoer.console/1.0.0'
> presentationname='Console'
> symbolicname='test.osgi.dynload.bundle.echoer.console'
> uri='test.osgi.dynload.bundle.echoer.console_1.0.0.jar'
> version='1.0.0'>
>      <size>
>        1859
>      </size>
>      <capability name='bundle'>
>        <p n='manifestversion' v='2'/>
>        <p n='presentationname' v='Console'/>
>        <p n='symbolicname' v='test.osgi.dynload.bundle.echoer.console'/>
>        <p n='version' t='version' v='1.0.0'/>
>      </capability>
>      <capability name='package'>
>        <p n='package' v='test.osgi.dynload.bundle.echoer.console'/>
>        <p n='uses' v='test.osgi.dynload.bundle.inter.echoer'/>
>        <p n='version' t='version'
> v='1.0.0'/>
>      </capability>
>      <require
> extend='false'
> filter='(&(package=test.osgi.dynload.bundle.inter.echoer)(version&gt;=1.0.0)(!(version&gt;=2.0.0)))'
> multiple='false' name='package' optional='false'>
>        Import package test.osgi.dynload.bundle.inter.echoer ;version=[1.0.0,2.0.0)
>      </require>
>      <require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false' name='ee'
optional='false'>
>        Execution Environment (|(ee=JavaSE-1.6))
>      </require>
>    </resource>
>
> <resource id='test.osgi.dynload.bundle.interEch/1.0.0'
> presentationname='InterEch'
> symbolicname='test.osgi.dynload.bundle.interEch'
> uri='test.osgi.dynload.bundle.interEch_1.0.0.jar' version='1.0.0'>
>
> <size>
>        1968
>      </size>
>      <capability name='bundle'>
>        <p n='manifestversion' v='2'/>
>        <p n='presentationname' v='InterEch'/>
>        <p n='symbolicname' v='test.osgi.dynload.bundle.interEch'/>
>        <p n='version' t='version' v='1.0.0'/>
>      </capability>
>      <capability name='package'>
>        <p n='package' v='test.osgi.dynload.bundle.inter.echoer'/>
>        <p n='version' t='version' v='1.0.0'/>
>      </capability>
>      <require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false' name='ee'
optional='false'>
>        Execution
> Environment (|(ee=JavaSE-1.6))
>      </require>
>    </resource>
>
> <resource id='test.osgi.dynload.bundle.main/1.0.0'
> presentationname='Main' symbolicname='test.osgi.dynload.bundle.main'
> uri='test.osgi.dynload.bundle.main_1.0.0.jar' version='1.0.0'>
>      <size>
>        1720
>      </size>
>      <capability name='bundle'>
>        <p n='manifestversion' v='2'/>
>        <p n='presentationname' v='Main'/>
>        <p n='symbolicname' v='test.osgi.dynload.bundle.main'/>
>        <p n='version' t='version' v='1.0.0'/>
>      </capability>
>      <require extend='false' filter='(&(package=org.osgi.framework)(version&gt;=1.3.0))'
multiple='false'
> name='package' optional='false'>
>        Import package org.osgi.framework ;version=1.3.0
>      </require>
>
> <require extend='false'
> filter='(&(package=test.osgi.dynload.bundle.echoer.console)(version&gt;=1.0.0)(!(version&gt;=2.0.0)))'
> multiple='false' name='package' optional='false'>
>        Import package test.osgi.dynload.bundle.echoer.console ;version=[1.0.0,2.0.0)
>      </require>
>
> <require extend='false'
> filter='(&(package=test.osgi.dynload.bundle.inter.echoer)(version&gt;=1.0.0))'
> multiple='false' name='package' optional='false'>
>        Import package test.osgi.dynload.bundle.inter.echoer ;version=1.0.0
>      </require>
>
> <require extend='false'
>
> filter='(&(package=test.osgi.dynload.bundle.runner.thread)(version&gt;=1.0.0)(!(version&gt;=2.0.0)))'
> multiple='false' name='package' optional='false'>
>        Import package test.osgi.dynload.bundle.runner.thread ;version=[1.0.0,2.0.0)
>      </require>
>      <require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false' name='ee'
optional='false'>
>        Execution Environment (|(ee=JavaSE-1.6))
>      </require>
>    </resource>
> </repository>
>
> <!------------------------------------------------------------------------------------->
> <repository lastmodified='20120309202958.415' name='repository2'>
>
> <resource id='test.osgi.dynload.bundle.runner.thread/1.0.0'
> presentationname='Runner Thread'
> symbolicname='test.osgi.dynload.bundle.runner.thread'
> uri='test.osgi.dynload.bundle.runner.thread_1.0.0.jar'
> version='1.0.0'>
>      <size>
>        3030
>      </size>
>      <capability name='bundle'>
>        <p n='manifestversion' v='2'/>
>        <p n='presentationname' v='Runner Thread'/>
>        <p n='symbolicname' v='test.osgi.dynload.bundle.runner.thread'/>
>        <p n='version' t='version' v='1.0.0'/>
>      </capability>
>      <capability name='package'>
>        <p n='package' v='test.osgi.dynload.bundle.runner.thread'/>
>        <p n='uses' v='test.osgi.dynload.bundle.inter.echoer,test.osgi.dynload.bundle.inter.runner'/>
>        <p n='version'
> t='version' v='1.0.0'/>
>      </capability>
>
> <require extend='false'
> filter='(&(package=test.osgi.dynload.bundle.inter.echoer)(version&gt;=1.0.0)(!(version&gt;=2.0.0)))'
> multiple='false' name='package' optional='false'>
>        Import package test.osgi.dynload.bundle.inter.echoer ;version=[1.0.0,2.0.0)
>      </require>
>
> <require extend='false'
> filter='(&(package=test.osgi.dynload.bundle.inter.runner)(version&gt;=1.0.0)(!(version&gt;=2.0.0)))'
> multiple='false' name='package' optional='false'>
>        Import package test.osgi.dynload.bundle.inter.runner ;version=[1.0.0,2.0.0)
>      </require>
>      <require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false' name='ee'
optional='false'>
>
> Execution Environment (|(ee=JavaSE-1.6))
>      </require>
>    </resource>
> </repository>
>
> <!------------------------------------------------------------------------------------->
> <?xml version='1.0' encoding='utf-8'?>
> <?xml-stylesheet type='text/xsl' href='http://www.osgi.org/www/obr2html.xsl';?>
>
> <repository lastmodified='20120304150726.987' name='Repository3'>
>
> <resource id='test.osgi.dynload.bundle.interRun/1.0.0'
> presentationname='InterRun'
> symbolicname='test.osgi.dynload.bundle.interRun'
> uri='test.osgi.dynload.bundle.interRun_1.0.0.jar' version='1.0.0'>
>      <size>
>        1967
>      </size>
>      <capability name='bundle'>
>        <p n='manifestversion' v='2'/>
>        <p n='presentationname'
> v='InterRun'/>
>        <p n='symbolicname' v='test.osgi.dynload.bundle.interRun'/>
>        <p n='version' t='version' v='1.0.0'/>
>      </capability>
>      <capability name='package'>
>        <p n='package' v='test.osgi.dynload.bundle.inter.runner'/>
>        <p n='version' t='version' v='1.0.0'/>
>      </capability>
>      <require extend='false' filter='(|(ee=JavaSE-1.6))' multiple='false' name='ee'
optional='false'>
>        Execution Environment (|(ee=JavaSE-1.6))
>      </require>
>
> </resource>
> </repository>
>
>
>
> ////////////////////////////////////////////////////////////////////////////////////////////////////////////
>
>
>
>
>
>
>> ________________________________
>> De: Richard S. Hall<heavy@ungoverned.org>
>> Para: users@felix.apache.org
>> Enviado: sábado, 10 de marzo de 2012 2:02
>> Asunto: Re: OBR resolver knows about a requirement of a missing requirement
>>
>> Perhaps  you are printing the messages in the wrong spot while recursing...just a
thought. Otherwise, it might be necessary to see your repository.xml file.
>>
>>
>> "San Martín, Matías"<matias_sm@yahoo.com.ar>  wrote:
>>
>>> Hi everybody,
>>> first of all sorry about the odd mail subject, I will try to explain
>>> myself better.
>>>
>>> The context of the problem:
>>> =================
>>>
>>> I have the following bundles:
>>> Main
>>>     Depends on (packages): Console, InterConsole, Runner
>>> Console:
>>>     Depends on: InterConsole
>>>     Exports (package): Console
>>> InterConsole:
>>>     Exports: InterConsole
>>> Runner:
>>>     Depends on: InterConsole, InterRunner
>>>     Exports: Runner
>>> InterRunner:
>>>     Exports: InterRunner
>>> //////////////////////////
>>>
>>> I have the following OBR repositories:
>>> Repo1: (contains) Main, Console, InterConsole
>>> Repo2: Runner
>>> Repo3: InterRunner
>>> //////////////////////////
>>>
>>> Then I have this (pseudo)code/logic:
>>>
>>> 1- Install Repo1 in OBR repository admin
>>> 2- discover resource Main
>>> 3- get a new resolver
>>> 4- try to deploy Main
>>> 5- If there are missing dependencies, print them, else go to pont 9
>>> 6- Find repository that contains missing dependencies
>>> 7- Install repository found
>>> 8- Go to point 3
>>> 9- Bundle deployed
>>>
>>> The run output:
>>> ==========
>>>
>>> The execution of the logic just mentioned prints this:
>>> Got new resolver
>>> Missing dependency: InterRunner
>>> Missing dependency: Runner
>>> Installed Repository 3
>>> Installed Repository 2
>>> Got new resolver
>>> Bundle deployed
>>>
>>> The question/problem:
>>> ===============
>>> How is possible that the first resolver knows about the missing
>>> dependency InterRunner if the Runner is not known yet???!!!
>>>
>>> Any thoughts???
>>>
>>> Thank you in advance for taking the time to read and give any thought
>>> to
>>> my problem.
>>> Regards
>>
>>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
> For additional commands, e-mail: users-help@felix.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Mime
View raw message