[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: java architecture names and armhf/sh4



On 01/17/2012 10:24 AM, peter green wrote:
> While looking at armhf build failures I took a look at uwsgi I determined it was
> failing on armel, armhf, sh4 and powerpc due to using incorrect paths for java
> stuff (it's also failing on ia64 and alpha for what appears to be unrelated
> reasons). Specifically it was seting the following paths.
> 
> UWSGICONFIG_JVM_INCPATH='/usr/lib/jvm/java-6-openjdk-$(JAVA_ARCH)/include/
> -I/usr/lib/jvm/java-6-openjdk-$(JAVA_ARCH)/include/linux'
> UWSGICONFIG_JVM_LIBPATH='/usr/lib/jvm/java-6-openjdk-$(JAVA_ARCH)/jre/lib/$(JAVA_ARCH)/server/'
> 
> 
> Where JAVA_ARCH was defined by
> 
> $(eval JAVA_ARCH := $(shell /usr/share/javahelper/java-arch.sh))
> 
> After taking a look at packages.debian.org I worked out (haven't run any test
> builds yet) this could be fixed for armel and powerpc without breaking any
> architectures that have already built the package by changing those statements
> to the following.
> 
> UWSGICONFIG_JVM_INCPATH='/usr/lib/jvm/java-6-openjdk-$(DEB_HOST_ARCH)/include/
> -I/usr/lib/jvm/java-6-openjdk-$(DEB_HOST_ARCH)/include/linux'
> UWSGICONFIG_JVM_LIBPATH='/usr/lib/jvm/java-6-openjdk-$(DEB_HOST_ARCH)/jre/lib/$(JAVA_ARCH)/server/'
> 
> 
> Then defining DEB_HOST_ARCH in the usual way.
> 
> However on armhf and sh4 those paths don't hold.
> 
> On armhf /usr/share/javahelper/java-arch.sh returns "armhf" but libjvm.so is in
> /usr/lib/jvm/java-6-openjdk-armhf/jre/lib/arm/server/
> On sh4 /usr/share/javahelper/java-arch.sh appears to return* "sh4" but libjvm.so
> is in /usr/lib/jvm/java-6-openjdk-sh4/jre/lib/sh/server/
> 
> Now the question is how to fix the uwsgi build for armel, armhf, powerpc and
> sh4? I see four possibilities
> 1: modify /usr/share/javahelper/java-arch.sh to return "arm" on armhf and "sh"
> on sh4. Then make the change I mentioned above.
> 2: modify openjdk packaging so it installs in locations consistent with the name
> returned by java-arch.h on armhf and sh4. Then make the change I mentioned above.
> 3: Make the change I mentioned above and further add special cases for armhf and
> sh4.
> 4: Find some other way of determining java include and library locations which
> works on all architectures.

The name of the jre/lib/<arch> directory is unconnected to DEB_HOST_ARCH; please
use the names used by OpenJDK and gcj. If these should change, I'll add
compatibility symlinks for these directories so that they continue to work.

  Matthias


Reply to: