Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 577756 - dev-java/jssc missing required libjssc.so
Summary: dev-java/jssc missing required libjssc.so
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Java (show other bugs)
Hardware: All All
: Normal normal (vote)
Assignee: Java team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-19 05:22 UTC by maurerpe
Modified: 2016-07-07 09:43 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Updated ebuild (jssc-2.8.0.ebuild,1.23 KB, text/plain)
2016-03-19 05:23 UTC, maurerpe
Details
jssc-2.8.0-library-load.patch (jssc-2.8.0-library-load.patch,4.46 KB, patch)
2016-03-19 05:24 UTC, maurerpe
Details | Diff
jssc-2.8.0-r1.ebuild (jssc-2.8.0-r1.ebuild,1.36 KB, text/plain)
2016-03-19 09:47 UTC, Patrice Clement
Details

Note You need to log in before you can comment on or make changes to this bug.
Description maurerpe 2016-03-19 05:22:51 UTC
The dev-java/jssc ebuild in portage does not compile and install the necessary libjssc.so file.

I have an updated ebuild that builds the library installs it in the proper lib directory and patches jssc to be able to find it.

jssc by default bundles the .so file in the .jar uses 100 lines of code to:
   1) determine the os it is running on
   2) select one of the 3 bundled dynamic libraries (windows, linux, and macos)
   3) if that library is not compatible with your system you are sol.
   4) unzip the library to a temporary directory
   5) construct a full path the extracted library
   6) dynamically load it.
This is done every time the a java program uses jssc.  All so they can say the .jar file is all you need.

I went with a much more gentoo approach and compiled and installed the library to /usr/${libdir} (respecting CFLAGS, running default QA checks and stripping) and replaced the 100 lines with:
System.loadLibrary("libjssc")

files attached in my arduino-overlay:
https://github.com/maurerpe/arduino-overlay
Comment 1 maurerpe 2016-03-19 05:23:29 UTC
Created attachment 428564 [details]
Updated ebuild
Comment 2 maurerpe 2016-03-19 05:24:13 UTC
Created attachment 428566 [details, diff]
jssc-2.8.0-library-load.patch
Comment 3 maurerpe 2016-03-19 05:31:24 UTC
---------------------------------------------------------
With portage version no libjssc.so in /usr/lib or in jssc.jar

# emerge -1a dev-java/jssc::gentoo

# equery files dev-java/jssc
 * Searching for jssc in dev-java ...
 * Contents of dev-java/jssc-2.8.0:
/usr
/usr/share
/usr/share/jssc
/usr/share/jssc/lib
/usr/share/jssc/lib/jssc.jar
/usr/share/jssc/package.env

# unzip -l /usr/share/jssc/lib/jssc.jar
Archive:  /usr/share/jssc/lib/jssc.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  03-19-2016 01:28   META-INF/
       68  03-19-2016 01:28   META-INF/MANIFEST.MF
        0  03-19-2016 01:28   jssc/
     4171  03-19-2016 01:28   jssc/SerialPortList.class
     1754  03-19-2016 01:28   jssc/SerialPortException.class
     1576  03-19-2016 01:28   jssc/SerialPortEvent.class
    12901  03-19-2016 01:28   jssc/SerialPort.class
      956  03-19-2016 01:28   jssc/SerialPortTimeoutException.class
     1323  03-19-2016 01:28   jssc/SerialPort$EventThread.class
     5636  03-19-2016 01:28   jssc/SerialNativeInterface.class
     2852  03-19-2016 01:28   jssc/SerialPort$LinuxEventThread.class
      188  03-19-2016 01:28   jssc/SerialPort$1.class
      182  03-19-2016 01:28   jssc/SerialPortEventListener.class
     1935  03-19-2016 01:28   jssc/SerialPortList$1.class
---------                     -------
    33542                     14 files

---------------------------------------------------------------
With my updated build, libjssc.so is in /usr/lib

# emerge -1a dev-java/jssc::arduino-overlay

# equery files dev-java/jssc
 * Searching for jssc in dev-java ...
 * Contents of dev-java/jssc-2.8.0:
/usr
/usr/lib64
/usr/lib64/libjssc.so -> libjssc.so.2.8.0
/usr/lib64/libjssc.so.2.8.0
/usr/share
/usr/share/jssc
/usr/share/jssc/lib
/usr/share/jssc/lib/jssc.jar
/usr/share/jssc/package.env

# unzip -l /usr/share/jssc/lib/jssc.jar
Archive:  /usr/share/jssc/lib/jssc.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  03-17-2016 23:33   META-INF/
       68  03-17-2016 23:33   META-INF/MANIFEST.MF
     3499  03-17-2016 23:33   jssc/SerialNativeInterface.class
      188  03-17-2016 23:33   jssc/SerialPort$1.class
    12901  03-17-2016 23:33   jssc/SerialPort.class
     1576  03-17-2016 23:33   jssc/SerialPortEvent.class
      182  03-17-2016 23:33   jssc/SerialPortEventListener.class
     1323  03-17-2016 23:33   jssc/SerialPort$EventThread.class
     1754  03-17-2016 23:33   jssc/SerialPortException.class
     2852  03-17-2016 23:33   jssc/SerialPort$LinuxEventThread.class
     1935  03-17-2016 23:33   jssc/SerialPortList$1.class
     4171  03-17-2016 23:33   jssc/SerialPortList.class
      956  03-17-2016 23:33   jssc/SerialPortTimeoutException.class
---------                     -------
    31405                     13 files
Comment 4 Patrice Clement gentoo-dev 2016-03-19 09:44:27 UTC
Good catch. Thanks for filing this report.

I've reworked your ebuild a tiny bit. Will upload it shortly for review.
Comment 5 Patrice Clement gentoo-dev 2016-03-19 09:47:18 UTC
Created attachment 428580 [details]
jssc-2.8.0-r1.ebuild

This is my attempt.
Comment 6 Patrice Clement gentoo-dev 2016-03-19 09:49:13 UTC
Here's what gets generated by the ebuild after execution:
monsieurp@epsilon ~/gentoo/dev-java/jssc $ find /var/tmp/portage/dev-java/jssc-2.8.0-r1/image/ -type f
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/lib64/libjssc.so.2.8.0
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/constant-values.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/serialized-form.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/overview-tree.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/index.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/allclasses-noframe.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/stylesheet.css
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/script.js
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/help-doc.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/index-all.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/allclasses-frame.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/deprecated-list.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/SerialPortTimeoutException.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/SerialPortException.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/SerialPortEvent.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/package-summary.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/package-frame.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/package-tree.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/SerialPortEventListener.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/SerialPort.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/SerialPortList.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/jssc/SerialNativeInterface.html
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/doc/jssc-2.8.0-r1/html/api/package-list
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/jssc/package.env
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/jssc/lib/jssc.jar
/var/tmp/portage/dev-java/jssc-2.8.0-r1/image/usr/share/jssc/sources/jssc-src.zip
Comment 7 William L. Thomson Jr. 2016-03-19 16:06:07 UTC
(In reply to Patrice Clement from comment #5)
> Created attachment 428580 [details]
> jssc-2.8.0-r1.ebuild
> 
> This is my attempt.

java-pkg_doso *.so

Though looking at the java-utils-2.eclass, not sure if it should be doins or dolib

doins "${lib}" || die "failed to install ${lib}"
Comment 8 maurerpe 2016-03-19 21:42:11 UTC
Patrice's ebuild is much cleaner than mine and I can confirm that it compiles installs, works, and fixes this issue.

# equery files dev-java/jssc
 * Searching for jssc in dev-java ...
 * Contents of dev-java/jssc-2.8.0-r1:
/usr
/usr/lib64
/usr/lib64/libjssc.so -> libjssc.so.2.8.0
/usr/lib64/libjssc.so.2.8.0
/usr/share
/usr/share/jssc
/usr/share/jssc/lib
/usr/share/jssc/lib/jssc.jar
/usr/share/jssc/package.env

# unzip -l /usr/share/jssc/lib/jssc.jar
Archive:  /usr/share/jssc/lib/jssc.jar
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  03-19-2016 17:36   META-INF/
       68  03-19-2016 17:36   META-INF/MANIFEST.MF
        0  03-19-2016 17:36   jssc/
     4171  03-19-2016 17:36   jssc/SerialPortList.class
     1754  03-19-2016 17:36   jssc/SerialPortException.class
     1576  03-19-2016 17:36   jssc/SerialPortEvent.class
    12901  03-19-2016 17:36   jssc/SerialPort.class
      956  03-19-2016 17:36   jssc/SerialPortTimeoutException.class
     1323  03-19-2016 17:36   jssc/SerialPort$EventThread.class
     3499  03-19-2016 17:36   jssc/SerialNativeInterface.class
     2852  03-19-2016 17:36   jssc/SerialPort$LinuxEventThread.class
      188  03-19-2016 17:36   jssc/SerialPort$1.class
      182  03-19-2016 17:36   jssc/SerialPortEventListener.class
     1935  03-19-2016 17:36   jssc/SerialPortList$1.class
---------                     -------
    31405                     14 files
Comment 9 Patrice Clement gentoo-dev 2016-03-19 21:45:36 UTC
Perfect. Thanks. Will commit it shortly.
Comment 10 Patrice Clement gentoo-dev 2016-03-19 21:49:52 UTC
commit b9d7d11ecc603f1c52825ab0b0f83985966febdf (HEAD -> master)
Author:     Patrice Clement <monsieurp@gentoo.org>
AuthorDate: Sat Mar 19 21:35:20 2016 +0000
Commit:     Patrice Clement <monsieurp@gentoo.org>
CommitDate: Sat Mar 19 21:35:20 2016 +0000

dev-java/jssc: Rewrite ebuild to properly compile missing .so.

Gentoo-Bug: https://bugs.gentoo.org/577756

Package-Manager: portage-2.2.26

dev-java/jssc/Manifest                            |   1 +
dev-java/jssc/files/jssc-2.8.0-library-load.patch | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
dev-java/jssc/jssc-2.8.0-r1.ebuild                |  61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 179 insertions(+)
create mode 100644 dev-java/jssc/files/jssc-2.8.0-library-load.patch
create mode 100644 dev-java/jssc/jssc-2.8.0-r1.ebuild
Comment 11 Marcus Comstedt 2016-07-07 09:43:19 UTC
The library is now installed, but it is not registered with java-pkg_regso.

Because if this, the directory it is in (/usr/lib64) does not get added to
java.library.path, and so the library can't be found at runtime.