You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@felix.apache.org by Benoît Thiébault <th...@artenum.com> on 2014/06/11 21:50:43 UTC

Felix 4.2.1 and 4.4.0 regression wrt native code (Win7)

Hi everyone,

I have an OSGi bundle containing native code that worked great with Felix 4.0.2.

I have switched to newer versions (originally 4.2.1 but also I tried with 4.4.0) and the bundle does not load anymore on Windows 7 64-bits (I haven’t tried the 32-bits version): I have a "No matching libraries found" error message. Java version is 1.6.0_37.

I don’t have the problem with native bundles on other platforms (I tried Debian Squeeze 64-bits and Mac OS Mavericks).

Do you know were this could come from? Is there a workaround, or better, a fix? Or should I go back to Felix 4.0.2 (which has difficulties with Java 7…)?

I have uploaded files here to reproduce the bug:
http://dev.artenum.com/blog/ben/download/FelixComparison_zip?action=download&nodecorator

It contains two versions of the Felix Framework (4.0.2 and 4.4.0), I just added the minimum required bundles in the bundle folder. Bundles in the bundle folder are identical. When you run the two Run.bat files, you obtain the attached screenshot. Bundle 4 loads in one case, not with Felix 4.4.0.

Below is also the Bundle-NativeCode definition in Maven Bundle plugin.

Thanks for you advice

Kind regards,

Ben




<plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                        <Export-Package>vtk;version=${vtk.version}</Export-Package>
                        <Embed-Dependency>*;groupId=vtk;artifactId=vtk</Embed-Dependency>
                        <Include-Resource>
                            vtk=dependencies/thirdparty/vtk-${vtk.version}/windows-x86_64,
                            {maven-resources}
                        </Include-Resource>
                        <Bundle-NativeCode>
vtk/awt.dll;
vtk/jawt.dll;
vtk/msvcp100.dll;
vtk/msvcr100.dll;
vtk/Cosmo.dll;
vtk/MapReduceMPI.dll;
vtk/VPIC.dll;
vtk/mpistubs.dll;
vtk/vtkCharts.dll;
vtk/vtkChartsJava.dll;
vtk/vtkCommon.dll;
vtk/vtkCommonJava.dll;
vtk/vtkDICOMParser.dll;
vtk/vtkFiltering.dll;
vtk/vtkFilteringJava.dll;
vtk/vtkGenericFiltering.dll;
vtk/vtkGenericFilteringJava.dll;
vtk/vtkGeovis.dll;
vtk/vtkGeovisJava.dll;
vtk/vtkGraphics.dll;
vtk/vtkGraphicsJava.dll;
vtk/vtkHybrid.dll;
vtk/vtkHybridJava.dll;
vtk/vtkIO.dll;
vtk/vtkIOJava.dll;
vtk/vtkImaging.dll;
vtk/vtkImagingJava.dll;
vtk/vtkInfovis.dll;
vtk/vtkInfovisJava.dll;
vtk/vtkNetCDF.dll;
vtk/vtkNetCDF_cxx.dll;
vtk/vtkParallel.dll;
vtk/vtkParallelJava.dll;
vtk/vtkRendering.dll;
vtk/vtkRenderingJava.dll;
vtk/vtkViews.dll;
vtk/vtkViewsJava.dll;
vtk/vtkVolumeRendering.dll;
vtk/vtkVolumeRenderingJava.dll;
vtk/vtkWidgets.dll;
vtk/vtkWidgetsJava.dll;
vtk/vtkalglib.dll;
vtk/vtkexoIIc.dll;
vtk/vtkexpat.dll;
vtk/vtkfreetype.dll;
vtk/vtkftgl.dll;
vtk/vtkjpeg.dll;
vtk/vtklibxml2.dll;
vtk/vtkmetaio.dll;
vtk/vtkpng.dll;
vtk/vtkproj4.dll;
vtk/vtksys.dll;
vtk/vtktiff.dll;
vtk/vtkverdict.dll;
vtk/vtkzlib.dll;
osname=win7;
processor=x86_64
                        </Bundle-NativeCode>
                    </instructions>
                </configuration>
            </plugin>

Re: Felix 4.2.1 and 4.4.0 regression wrt native code (Win7)

Posted by "Richard S. Hall" <he...@ungoverned.org>.
On 6/12/14, 05:01 , Benoît Thiébault wrote:
> Hi again,
>
> I checked what version of Felix did break it:
>
> - Everything worked fine with Felix 4.0.3 that was released the 28th of December 2012
> - Version 4.2.0, released on the 11th of February 2013, broke it
>
> Isn’t this modification responsible for this?
> http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/R4LibraryClause.java?r1=1355580&r2=1441169
>
> It also seems to be related to bug https://issues.apache.org/jira/browse/FELIX-3363

If I had to guess, I'd say that the OS name being reported by the JVM 
(i.e., System.getProperty("os.name");) is not what we are expecting.

I don't have Windows to test, but if I set a breakpoint in 
R4LibraryClause.normalizeOSName() and manually edit 'value' to be 
"Windows 7", then it appears to resolve the bundle correctly on my Mac.

What value does your JVM report for os.name?

-> richard

>
> Thanks for your help,
>
> Kind regards,
>
> Ben
>
> Le 11 juin 2014 à 21:50, Benoît Thiébault <th...@artenum.com> a écrit :
>
>> Hi everyone,
>>
>> I have an OSGi bundle containing native code that worked great with Felix 4.0.2.
>>
>> I have switched to newer versions (originally 4.2.1 but also I tried with 4.4.0) and the bundle does not load anymore on Windows 7 64-bits (I haven’t tried the 32-bits version): I have a "No matching libraries found" error message. Java version is 1.6.0_37.
>>
>> I don’t have the problem with native bundles on other platforms (I tried Debian Squeeze 64-bits and Mac OS Mavericks).
>>
>> Do you know were this could come from? Is there a workaround, or better, a fix? Or should I go back to Felix 4.0.2 (which has difficulties with Java 7…)?
>>
>> I have uploaded files here to reproduce the bug:
>> http://dev.artenum.com/blog/ben/download/FelixComparison_zip?action=download&nodecorator
>>
>> It contains two versions of the Felix Framework (4.0.2 and 4.4.0), I just added the minimum required bundles in the bundle folder. Bundles in the bundle folder are identical. When you run the two Run.bat files, you obtain the attached screenshot. Bundle 4 loads in one case, not with Felix 4.4.0.
>>
>> Below is also the Bundle-NativeCode definition in Maven Bundle plugin.
>>
>> Thanks for you advice
>>
>> Kind regards,
>>
>> Ben
>>
>>
>> <Error.png>
>>
>> <plugin>
>>                  <groupId>org.apache.felix</groupId>
>>                  <artifactId>maven-bundle-plugin</artifactId>
>>                  <configuration>
>>                      <instructions>
>>                          <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
>>                          <Export-Package>vtk;version=${vtk.version}</Export-Package>
>>                          <Embed-Dependency>*;groupId=vtk;artifactId=vtk</Embed-Dependency>
>>                          <Include-Resource>
>>                              vtk=dependencies/thirdparty/vtk-${vtk.version}/windows-x86_64,
>>                              {maven-resources}
>>                          </Include-Resource>
>>                          <Bundle-NativeCode>
>> vtk/awt.dll;
>> vtk/jawt.dll;
>> vtk/msvcp100.dll;
>> vtk/msvcr100.dll;
>> vtk/Cosmo.dll;
>> vtk/MapReduceMPI.dll;
>> vtk/VPIC.dll;
>> vtk/mpistubs.dll;
>> vtk/vtkCharts.dll;
>> vtk/vtkChartsJava.dll;
>> vtk/vtkCommon.dll;
>> vtk/vtkCommonJava.dll;
>> vtk/vtkDICOMParser.dll;
>> vtk/vtkFiltering.dll;
>> vtk/vtkFilteringJava.dll;
>> vtk/vtkGenericFiltering.dll;
>> vtk/vtkGenericFilteringJava.dll;
>> vtk/vtkGeovis.dll;
>> vtk/vtkGeovisJava.dll;
>> vtk/vtkGraphics.dll;
>> vtk/vtkGraphicsJava.dll;
>> vtk/vtkHybrid.dll;
>> vtk/vtkHybridJava.dll;
>> vtk/vtkIO.dll;
>> vtk/vtkIOJava.dll;
>> vtk/vtkImaging.dll;
>> vtk/vtkImagingJava.dll;
>> vtk/vtkInfovis.dll;
>> vtk/vtkInfovisJava.dll;
>> vtk/vtkNetCDF.dll;
>> vtk/vtkNetCDF_cxx.dll;
>> vtk/vtkParallel.dll;
>> vtk/vtkParallelJava.dll;
>> vtk/vtkRendering.dll;
>> vtk/vtkRenderingJava.dll;
>> vtk/vtkViews.dll;
>> vtk/vtkViewsJava.dll;
>> vtk/vtkVolumeRendering.dll;
>> vtk/vtkVolumeRenderingJava.dll;
>> vtk/vtkWidgets.dll;
>> vtk/vtkWidgetsJava.dll;
>> vtk/vtkalglib.dll;
>> vtk/vtkexoIIc.dll;
>> vtk/vtkexpat.dll;
>> vtk/vtkfreetype.dll;
>> vtk/vtkftgl.dll;
>> vtk/vtkjpeg.dll;
>> vtk/vtklibxml2.dll;
>> vtk/vtkmetaio.dll;
>> vtk/vtkpng.dll;
>> vtk/vtkproj4.dll;
>> vtk/vtksys.dll;
>> vtk/vtktiff.dll;
>> vtk/vtkverdict.dll;
>> vtk/vtkzlib.dll;
>> osname=win7;
>> processor=x86_64
>>                          </Bundle-NativeCode>
>>                      </instructions>
>>                  </configuration>
>>              </plugin>


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


Re: Felix 4.2.1 and 4.4.0 regression wrt native code (Win7)

Posted by Benoît Thiébault <th...@artenum.com>.
Hi again,

I checked what version of Felix did break it:

- Everything worked fine with Felix 4.0.3 that was released the 28th of December 2012
- Version 4.2.0, released on the 11th of February 2013, broke it

Isn’t this modification responsible for this?
http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/util/manifestparser/R4LibraryClause.java?r1=1355580&r2=1441169

It also seems to be related to bug https://issues.apache.org/jira/browse/FELIX-3363 

Thanks for your help,

Kind regards,

Ben

Le 11 juin 2014 à 21:50, Benoît Thiébault <th...@artenum.com> a écrit :

> Hi everyone,
> 
> I have an OSGi bundle containing native code that worked great with Felix 4.0.2.
> 
> I have switched to newer versions (originally 4.2.1 but also I tried with 4.4.0) and the bundle does not load anymore on Windows 7 64-bits (I haven’t tried the 32-bits version): I have a "No matching libraries found" error message. Java version is 1.6.0_37.
> 
> I don’t have the problem with native bundles on other platforms (I tried Debian Squeeze 64-bits and Mac OS Mavericks).
> 
> Do you know were this could come from? Is there a workaround, or better, a fix? Or should I go back to Felix 4.0.2 (which has difficulties with Java 7…)?
> 
> I have uploaded files here to reproduce the bug:
> http://dev.artenum.com/blog/ben/download/FelixComparison_zip?action=download&nodecorator
> 
> It contains two versions of the Felix Framework (4.0.2 and 4.4.0), I just added the minimum required bundles in the bundle folder. Bundles in the bundle folder are identical. When you run the two Run.bat files, you obtain the attached screenshot. Bundle 4 loads in one case, not with Felix 4.4.0.
> 
> Below is also the Bundle-NativeCode definition in Maven Bundle plugin.
> 
> Thanks for you advice
> 
> Kind regards,
> 
> Ben
> 
> 
> <Error.png>
> 
> <plugin>
>                 <groupId>org.apache.felix</groupId>
>                 <artifactId>maven-bundle-plugin</artifactId>
>                 <configuration>
>                     <instructions>
>                         <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
>                         <Export-Package>vtk;version=${vtk.version}</Export-Package>
>                         <Embed-Dependency>*;groupId=vtk;artifactId=vtk</Embed-Dependency>
>                         <Include-Resource>
>                             vtk=dependencies/thirdparty/vtk-${vtk.version}/windows-x86_64,
>                             {maven-resources}
>                         </Include-Resource>
>                         <Bundle-NativeCode>
> vtk/awt.dll;
> vtk/jawt.dll;
> vtk/msvcp100.dll;
> vtk/msvcr100.dll;
> vtk/Cosmo.dll;
> vtk/MapReduceMPI.dll;
> vtk/VPIC.dll;
> vtk/mpistubs.dll;
> vtk/vtkCharts.dll;
> vtk/vtkChartsJava.dll;
> vtk/vtkCommon.dll;
> vtk/vtkCommonJava.dll;
> vtk/vtkDICOMParser.dll;
> vtk/vtkFiltering.dll;
> vtk/vtkFilteringJava.dll;
> vtk/vtkGenericFiltering.dll;
> vtk/vtkGenericFilteringJava.dll;
> vtk/vtkGeovis.dll;
> vtk/vtkGeovisJava.dll;
> vtk/vtkGraphics.dll;
> vtk/vtkGraphicsJava.dll;
> vtk/vtkHybrid.dll;
> vtk/vtkHybridJava.dll;
> vtk/vtkIO.dll;
> vtk/vtkIOJava.dll;
> vtk/vtkImaging.dll;
> vtk/vtkImagingJava.dll;
> vtk/vtkInfovis.dll;
> vtk/vtkInfovisJava.dll;
> vtk/vtkNetCDF.dll;
> vtk/vtkNetCDF_cxx.dll;
> vtk/vtkParallel.dll;
> vtk/vtkParallelJava.dll;
> vtk/vtkRendering.dll;
> vtk/vtkRenderingJava.dll;
> vtk/vtkViews.dll;
> vtk/vtkViewsJava.dll;
> vtk/vtkVolumeRendering.dll;
> vtk/vtkVolumeRenderingJava.dll;
> vtk/vtkWidgets.dll;
> vtk/vtkWidgetsJava.dll;
> vtk/vtkalglib.dll;
> vtk/vtkexoIIc.dll;
> vtk/vtkexpat.dll;
> vtk/vtkfreetype.dll;
> vtk/vtkftgl.dll;
> vtk/vtkjpeg.dll;
> vtk/vtklibxml2.dll;
> vtk/vtkmetaio.dll;
> vtk/vtkpng.dll;
> vtk/vtkproj4.dll;
> vtk/vtksys.dll;
> vtk/vtktiff.dll;
> vtk/vtkverdict.dll;
> vtk/vtkzlib.dll;
> osname=win7;
> processor=x86_64
>                         </Bundle-NativeCode>
>                     </instructions>
>                 </configuration>
>             </plugin>

-- 
Dr Benoît Thiébault
Project Manager

  Artenum Toulouse - Science & Groupware
  http://www.artenum.com

      Bâtiment Calfocenter
      10, rue Marguerite-Long
      31320 Castanet-Tolosan
      France
      Phone: +33 (0)5 82 95 19 00