On Fri, Jul 8, 2016 at 10:46 AM, Bhowmik, Bindul <bindulbhow...@gmail.com> wrote:
> On Fri, Jul 8, 2016 at 11:37 AM, sebb <seb...@gmail.com> wrote: > > On 8 July 2016 at 18:31, Gary Gregory <garydgreg...@gmail.com> wrote: > >> On Fri, Jul 8, 2016 at 10:07 AM, Marcelo Vanzin <van...@cloudera.com> > wrote: > >> > >>> Answering based on old knowledge of this code, but I don't believe it > >>> has changed... > >>> > >>> On Fri, Jul 8, 2016 at 9:36 AM, Gary Gregory <garydgreg...@gmail.com> > >>> wrote: > >>> > The delivered jar file contains a native .so file, and this .so file > is > >>> > _extracted_ and _installed_ on the user's machine at runtime? See > >>> > NativeCodeLoader.extractLibraryFile(). > >>> > >>> It's not really installed, but copied to a temp location. There might > >>> be flags to configure a permanent location (which would bypass this > >>> code that finds the library inside the jar), but I don't remember if > >>> that was added to crypto. > >>> > >>> This feature is borrowed from Snappy's java bindings, and is pretty > >>> helpful on distributed applications where a "launcher" app starts > >>> processes on a whole bunch of different machines (and needs these > >>> libraries). > >>> > >>> > Does this mean that the jar will contain all possible native formats > >>> (.so, > >>> > .dll, what about 32 vs. 64 bit, or are we only dealing with 64 bit?) > and > >>> > extract the right one at runtime for the current platform? Seems > wasteful > >>> > in space but portable and clever. > > One option could be to go the Eclipse way, the way they handle SWT > distributions which have native components[1]. Thinking more about it, > that might even be a better option given that the different binary > components may need to be built on different OSes. > > And from a consumption standpoint, if the user is using Maven, they > could use profiles to select the correct dependency. I have done > something like this for SWT on a project: > > <dependency> > <groupId>org.eclipse.swt</groupId> > <artifactId>${swt.artifact}</artifactId> > <version>${eclipse.swt.version}</version> > <scope>compile</scope> > </dependency> > > <profile> > <id>win64_x8664</id> > <activation> > <os> > <family>windows</family> > <arch>x86_64</arch> > </os> > </activation> > <properties> > <swt.artifact>swt-win32-win32-x86_64</swt.artifact> > </properties> > </profile> > <profile> > <id>linux64_x8664</id> > <activation> > <os> > <family>unix</family> > <arch>x86_64</arch> > </os> > </activation> > <properties> > <swt.artifact>swt-gtk-linux-x86_64</swt.artifact> > </properties> > </profile> > > Yeah, that seems like a more normal way to go. We've been making changes for 1.0 for a little while now (not _that_ long) but this would be a big change because the Maven coordinate business. Let's see what the rest if the community thinks. I am concerned as I've already stated as to what the current scheme means went Windows DLL support is done. It does not seem OK to include >1 native library in the jar. Gary > - Bindul > > [1] > http://download.eclipse.org/eclipse/downloads/drops4/R-4.6-201606061100/#SWT > > >>> > >>> That's the goal if multiple OSes are to be supported; I'm not sure how > >>> easy it would be to achieve with the current build system available > >>> (haven't really looked into it), but I have ideas of how to hack > >>> something like that in maven (using a few separate jobs per OS + a > >>> final job to collect everything). > >>> > >>> I've heard comments here about using JNA, so maybe this whole > >>> discussion will eventually become moot? > >>> > >> > >> The JNA code is in place, it's just much slower than the JNI path. > > > > Have you managed to get it going on Windows? > > > > So far I have failed. > > It's tricky getting JNA to find the crypto DLL, and then it hangs for > > me on the ERR_load_crypto_strings() call. > > [Or it is so slow that it seems like it is hanging] > > > > I was able to get SSLeay_version(int type) working in a simple app > > that does not do the ERR_load call. > > But if I leave out the ERR_load from OpenSslNativeJna.java the tests > still hang. > > > >> Gary > >> > >> > >>> > >>> -- > >>> Marcelo > >>> > >>> --------------------------------------------------------------------- > >>> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > >>> For additional commands, e-mail: dev-h...@commons.apache.org > >>> > >>> > >> > >> > >> -- > >> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org > >> Java Persistence with Hibernate, Second Edition > >> <http://www.manning.com/bauer3/> > >> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> > >> Spring Batch in Action <http://www.manning.com/templier/> > >> Blog: http://garygregory.wordpress.com > >> Home: http://garygregory.com/ > >> Tweet! http://twitter.com/GaryGregory > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory