Skip to content

Version 7.2.0 incorrectly separates Bundle-NativeCode clauses with commas instead of semicolons #7028

@nroduit

Description

@nroduit

Description

Version 7.2.0 introduces a breaking change in how Bundle-NativeCode manifest entries are formatted. The new version incorrectly separates native code clauses with commas and duplicates the platform attributes for each library, causing native library loading failures.

Expected Behavior (7.1.0)

The Bundle-NativeCode header should list all native libraries separated by semicolons, with the platform attributes (processor, osname) specified once at the end:

Bundle-NativeCode: natives/linux-amd64/libgluegen_rt. so; natives/linux
 -amd64/libjocl.so; natives/linux-amd64/libnativewindow_awt.so; native
 s/linux-amd64/libnewt_drm. so; natives/linux-amd64/libnativewindow_x11
 .so; natives/linux-amd64/libnativewindow_drm. so; natives/linux-amd64/
 libnewt_head.so; natives/linux-amd64/libjogl_mobile.so; natives/linux
 -amd64/libjogl_desktop.so; processor=x86-64; osname=Linux

Actual Behavior (7.2.0)

Version 7.2.0 separates each library with commas and duplicates the platform attributes for every entry:

Bundle-NativeCode: natives/linux-amd64/libgluegen_rt. so;osname=Linux;p
 rocessor=x86-64,natives/linux-amd64/libjocl.so;osname=Linux;processor
 =x86-64,natives/linux-amd64/libnativewindow_awt.so;osname=Linux;proce
 ssor=x86-64,natives/linux-amd64/libnewt_drm.so;osname=Linux;processor
 =x86-64,natives/linux-amd64/libnativewindow_x11.so;osname=Linux;proce
 ssor=x86-64,natives/linux-amd64/libnativewindow_drm.so;osname=Linux;p
 rocessor=x86-64,natives/linux-amd64/libnewt_head.so;osname=Linux;proc
 essor=x86-64,natives/linux-amd64/libjogl_mobile.so;osname=Linux;proce
 ssor=x86-64,natives/linux-amd64/libjogl_desktop.so;osname=Linux;proce
 ssor=x86-64

Source Input

Bundle-NativeCode: natives/linux-amd64/libgluegen_rt.so; \
      natives/linux-amd64/libjocl.so; \
      natives/linux-amd64/libnativewindow_awt.so; \
      natives/linux-amd64/libnewt_drm.so; \
      natives/linux-amd64/libnativewindow_x11.so; \
      natives/linux-amd64/libnativewindow_drm.so; \
      natives/linux-amd64/libnewt_head.so; \
      natives/linux-amd64/libjogl_mobile. so; \
      natives/linux-amd64/libjogl_desktop.so; \
      processor=x86-64; osname=Linux

Reference

According to the OSGi specification for Bundle-NativeCode (see this blog post), commas are used to separate alternative clauses (different native libraries for different platforms), while semicolons separate paths and attributes within the same clause.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions