On 03/27/2015 03:38 PM, Deepak Bhole wrote:
* Farkas Levente <lfarkas(a)lfarkas.org> [2015-03-27 10:05]:
> hi,
> i'm try to build a java package for epel-6 which use java-8.
> unfortunately it seem it's not enough to simple add
> BuildRequires: java-1.8.0-openjdk-devel
> since it's install it, but also still install during the mock setup
> session old java packages ie:
> java-1.5.0-gcj x86_64 1.5.0.0-29.1.el6 os
> 137 k
> java-1.6.0-sun x86_64 1:1.6.0.45-1jpp.1.el6 os
> 25 M
> java-1.7.0-ibm x86_64 1:1.7.0.5.0-1jpp.2.el6_4 os
> 73 M
> java-1.7.0-ibm-devel x86_64 1:1.7.0.5.0-1jpp.2.el6_4 os
> 7.5 M
> java-1.7.0-oracle x86_64 1:1.7.0.45-1jpp.2.el6_4 os
> 28 M
> and i'm not bale to exclude them. in rpm the is a Obsoletes: but there
> is no such thing as "BuildRequiresObsoletes":-(
>
> what's more i can't run system-switch-java since it's required root
> access and there is no command line option to switch to a given specific
> java version.
>
> so during build the system use the default javac which is not java8 but
> ibm's java7 (IBM J9 VM (build 2.6, JRE 1.7.0).
>
> is there any way to force java8? or is there any way to exclude other
> java vm jre to install into mock during build?
>
Hi,
One of your dependencies likely requires java or java-devel, or perhaps
even a versioned 6/7, which is why this seems to be happening.
That said though, how are sun/oracle/ibm jdks showing up? They are not
in base rhel and AFAIK EPEL does not pull from Supplementary, does it?
You can force your build to use a different JVM in a couple of ways:
1. If you are calling javac directly, use
/usr/lib/jvm/java-1.8.0-openjdk/bin/javac
2. If there is additional complexity in the build e.g. ant/maven are
being used, try setting JAVA_HOME and overriding PATH to put OpenJDK8
first i.e. do:
$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
$ export PATH=$JAVA_HOME/bin:${PATH}
This should force the usage of OpenJDK8.
the real problem here is that java-1.8.0-openjdk do NOT provides java!
so all other packages which requires java try to install older version,
but since it's install java-1.8.0-openjdk it can't install
java-1.7.0-openjdk.
and this itself cause a lot's of other problems:
- first of all older jdk will be installed (sun, ibm, oracle) and if it
can't find any other version then the build failed.
- the system default java never will be java-1.8.0-openjdk so all tools
will be use a different java.
- even if i set in the spec file:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$JAVA_HOME/bin:${PATH}
ant clean
Error: Could not find or load main class
org.apache.tools.ant.launch.Launcher
the reason probably the same as in:
https://bugzilla.redhat.com/show_bug.cgi?id=983394
https://bugzilla.redhat.com/show_bug.cgi?id=982683
but jpackage-utils not updated on epel-6 and epel-7 (javapackages-tools)
so currently it's not possible.
anyway i fill a bug about it:
https://bugzilla.redhat.com/show_bug.cgi?id=1208832
--
Levente "Si vis pacem para bellum!"