Red Hat Bugzilla – Bug 832053
Investigate why *.so are present in .eclipse
Last modified: 2014-01-12 19:27:14 EST
Those files should not be present here:
[kdaniel@kdanielX220Fedora bundles]$ pwd
[kdaniel@kdanielX220Fedora bundles]$ find . -name *.so
But what is interesting, they *are* extracted where it is required:
[kdaniel@kdanielX220Fedora eclipse]$ pwd
[kdaniel@kdanielX220Fedora eclipse]$ find . -name "*.so"
My current understanding is that Eclipse processes cascaded configuration, not cascaded temp location for osgi innern files, therefore the /usr/lib*/eclipse/configuration/org.eclipse.osgi/* is completely ignored...
I don't think I can change it.
Krzysztof, there is o.e.equinox.initializer which was used to fix this issue. See http://git.eclipse.org/c/linuxtools/org.eclipse.linuxtools.eclipse-build.git/tree/eclipse-build/build.xml#n930 for details.We need to fix that as this was causing a problem before due to our so files having same version-qualifier but different contents due to patches (this might have been fixed lately?). Still we would better not have so files copied to ~/.eclipse as this was causing problems with nfs-mounted homes.
I'm aware of the initializer, and I do call it in eclipse.spec.
The problem is that initializer correctly extracts libs in /usr/lib64/eclipse/configuration, but Eclipse ignores them because of a cascaded configuration and falls back on user home.
I will check the osgi implementation to see how it searches for paths.
My system has:
The most important bit here is the number between bundles/ and /1 which is the number of the Osgi bundle. The problem is that those numbers are not constant. The may change each time the configuration is changed (new packages are installed using dropins) or eclipse -clean is called.
The read-only configuration just cannot work. The only thing that initializer was doing was extracting so's and allowing for further processing of them, and, in some-cases, preventing from unpacking in user.home, but only if the assigned numbers were matching (but since now we are using reconciler heavily, the chances for that are next to 0).
I found this:
"The 6 depends on the order in which plugins get installed in osgi.
This order is uncontrolled. The only way to know is to run once which does not
mean to run a UI. For example you can try running with -initialize."
This means that we can't eliminite *.so files from user.home (unless we heavily patch OSGi itself).
There may be something I can do upstream.
For the record:
The issue was introduced by sorting the bundles.info. Earlier bundles.info was unsorted, and new content was just appended. After sorting bundles.info, the id (number) of bundles assigned by OSGi is changed, and therefore it is not possible to reuse the *.so files anymore.
The patch cannot be reverted, because bundles needs to be sorted after the version to ensure that always the latest bundle is wired when import-package is used. We can't have both sortings at once.
There is new hope :-).
Fixed by extracting plugins with *.so during the build.