8000 Unable to include dynlib resources · Issue #6660 · bndtools/bnd · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Unable to include dynlib resources #6660
Open
@steinybot

Description

@steinybot

I am trying to include some native libraries which are in a maven repository using:

  lib/=${repo;org.weasis.thirdparty.org.opencv:libopencv_java:so:linux-x86-64;4.4.0.-dcm};lib:=true,\
  lib/=${repo;org.weasis.thirdparty.org.opencv:libopencv_java:so:linux-x86;4.4.0.-dcm};lib:=true,\
  lib/=${repo;org.weasis.thirdparty.org.opencv:libopencv_java:jnilib:macosx-x86-64;4.4.0.-dcm};lib:=true,\
  lib/=${repo;org.weasis.thirdparty.org.opencv:opencv_java:dll:windows-x86-64;4.4.0.-dcm};lib:=true,\
  lib/=${repo;org.weasis.thirdparty.org.opencv:opencv_java:dll:windows-x86;4.4.0.-dcm};lib:=true,\

First of all the 4.4.0.-dcm format really threw me. It is bizarre having to put . before the -. I couldn't find the documentation for this. I did eventually find the regex in:

private static final String VERSION_STRING = "(\\d{1,10})(\\.(\\d{1,10})(\\.(\\d{1,10})(\\.([-\\w]+))?)?)?";

After working around that gotcha, these all work fine except for the macOS one. It will fail because a file that ends in lib is assumed to be some kind of library:

if (f.getName()
.endsWith("lib"))
container = new Container(this, bsn, range, Container.TYPE.LIBRARY, f, null, attrs, db);
else
container = new Container(this, bsn, range, Container.TYPE.REPO, f, null, attrs, db);

When then blows up because of course a dynlib is a dynamically linked library, not a text file so this doesn't work:

// Are ww a library? If no, we are the result
if (getType() == TYPE.LIBRARY) {
// We are a library, parse the file. This is
// basically a specification clause per line.
// I.e. you can do bsn; version, bsn2; version. But also
// spread it out over lines.
try (BufferedReader rd = IO.reader(getFile(), Constants.DEFAULT_CHARSET)) {
String line;
while ((line = rd.readLine()) != null) {
line = line.trim();
if (!line.startsWith("#") && line.length() > 0) {
List<Container> list = project.getBundles(Strategy.HIGHEST, line, null);
result.addAll(list);
}
}
}
} else
result.add(this);

Metadata

Metadata

Assignees

No one assigned

    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

      0