Message ID | 1407356782-3118-1-git-send-email-bernd.kuhls@t-online.de |
---|---|
State | Superseded |
Headers | show |
Bernd, All, On 2014-08-06 22:26 +0200, Bernd Kuhls spake thusly: > Xbmc uses the Groovy java package to generate API code, for details see > http://wiki.xbmc.org/index.php?title=Codegeneration#How_it_works > > Groovy itself is broken when used with gcj: > http://jira.codehaus.org/browse/GROOVY-3701 > > Xbmc recommends to use another java package instead, like openjdk: > http://forum.xbmc.org/showthread.php?tid=199742 > > Until we come up with a host package to provide a java setup and in order to > make autobuilder happy let´s reject gcj when we check for a java installation > on the host. > > Currently Xbmc is the only package using BR2_NEEDS_HOST_JAVA so changing the > behaviour of dependencies.sh has no side effects. > > Fixes > http://autobuild.buildroot.net/results/213/213d7454a1dc68cfb8f4c8d9508f52ebf8e58e33/ > http://autobuild.buildroot.net/results/639/639cda872cf36c122cbd6139dd76f6b51ac1864e/ > http://autobuild.buildroot.net/results/c9e/c9eb12c95b2939c64590692a82af8d84bbd90956/ > > Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > --- > support/dependencies/dependencies.sh | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh > index 88e5ad2..b09e376 100755 > --- a/support/dependencies/dependencies.sh > +++ b/support/dependencies/dependencies.sh > @@ -188,7 +188,19 @@ if grep ^BR2_TOOLCHAIN_BUILDROOT=y $BR2_CONFIG > /dev/null && \ > fi > > if grep -q ^BR2_NEEDS_HOST_JAVA=y $BR2_CONFIG ; then > - check_prog_host "java" > + JAVA=$(which java 2> /dev/null) > + if [ -z "$JAVA" ] ; then > + echo > + echo "You must install 'java' on your build machine"; > + exit 1; > + fi; Well, I'd keep the 'check_prog_host "java"' line, and would just add the lines below, replacing $JAVA witrh just 'java'. Regards, Yann E. MORIN. > + JAVA_GCJ=$($JAVA -version 2>&1 | grep gcj) > + if [ ! -z "$JAVA_GCJ" ] ; then > + echo > + echo "$JAVA_GCJ is not sufficient to compile your package selection." > + echo "Please install OpenJDK/IcedTea/Oracle Java." > + exit 1 ; > + fi > fi > > if grep -q ^BR2_NEEDS_HOST_JAVAC=y $BR2_CONFIG ; then > -- > 1.7.10.4 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
Bernd, All, I forgot some part of my review in my previous reply... On 2014-08-06 22:26 +0200, Bernd Kuhls spake thusly: > Xbmc uses the Groovy java package to generate API code, for details see > http://wiki.xbmc.org/index.php?title=Codegeneration#How_it_works > > Groovy itself is broken when used with gcj: > http://jira.codehaus.org/browse/GROOVY-3701 > > Xbmc recommends to use another java package instead, like openjdk: > http://forum.xbmc.org/showthread.php?tid=199742 > > Until we come up with a host package to provide a java setup and in order to > make autobuilder happy let´s reject gcj when we check for a java installation > on the host. > > Currently Xbmc is the only package using BR2_NEEDS_HOST_JAVA so changing the > behaviour of dependencies.sh has no side effects. > > Fixes > http://autobuild.buildroot.net/results/213/213d7454a1dc68cfb8f4c8d9508f52ebf8e58e33/ > http://autobuild.buildroot.net/results/639/639cda872cf36c122cbd6139dd76f6b51ac1864e/ > http://autobuild.buildroot.net/results/c9e/c9eb12c95b2939c64590692a82af8d84bbd90956/ > > Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > --- > support/dependencies/dependencies.sh | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh > index 88e5ad2..b09e376 100755 > --- a/support/dependencies/dependencies.sh > +++ b/support/dependencies/dependencies.sh > @@ -188,7 +188,19 @@ if grep ^BR2_TOOLCHAIN_BUILDROOT=y $BR2_CONFIG > /dev/null && \ > fi > > if grep -q ^BR2_NEEDS_HOST_JAVA=y $BR2_CONFIG ; then > - check_prog_host "java" > + JAVA=$(which java 2> /dev/null) > + if [ -z "$JAVA" ] ; then > + echo > + echo "You must install 'java' on your build machine"; > + exit 1; > + fi; > + JAVA_GCJ=$($JAVA -version 2>&1 | grep gcj) $ gcj -version gcj: error: unrecognized command line option ‘-version’ So I guess we should have: JAVA_GCJ="$(java --version 2>/dev/null |grep gcj)" Which would be empty for the JDK's java, but not for gcj. I prefer we rely on that, rather than the error mesage from gcj. Regards, Yann E. MORIN. > + if [ ! -z "$JAVA_GCJ" ] ; then > + echo > + echo "$JAVA_GCJ is not sufficient to compile your package selection." > + echo "Please install OpenJDK/IcedTea/Oracle Java." > + exit 1 ; > + fi > fi > > if grep -q ^BR2_NEEDS_HOST_JAVAC=y $BR2_CONFIG ; then > -- > 1.7.10.4 > > _______________________________________________ > buildroot mailing list > buildroot@busybox.net > http://lists.busybox.net/mailman/listinfo/buildroot
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote in news:20140813141110.GF3939@free.fr: >> + JAVA=$(which java 2> /dev/null) >> + if [ -z "$JAVA" ] ; then >> + echo >> + echo "You must install 'java' on your build machine"; >> + exit 1; >> + fi; >> + JAVA_GCJ=$($JAVA -version 2>&1 | grep gcj) > $ gcj -version > gcj: error: unrecognized command line option ‘-version’ > So I guess we should have: > JAVA_GCJ="$(java --version 2>/dev/null |grep gcj)" > Which would be empty for the JDK's java, but not for gcj. I prefer we > rely on that, rather than the error mesage from gcj. Hi, $JAVA contains the result of "which java" which is /usr/bin/java here. This corresponds to xbmc/codegenerator.mk, which also calls JAVA ?= $(shell which java) Executing /usr/bin/gcj directly is not desired ;) /usr/bin/java -version resolves to either $ /usr/bin/java -version java version "1.5.0" gij (GNU libgcj) version 4.7.2 or $ /usr/bin/java -version java version "1.7.0_65" OpenJDK Runtime Environment (IcedTea 2.5.1) (7u65-2.5.1-2~deb7u1) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode) on my system (Debian 7.6). Regards, Bernd
Bernd, All, On 2014-08-13 19:13 +0200, Bernd Kuhls spake thusly: > "Yann E. MORIN" <yann.morin.1998@free.fr> wrote in > news:20140813141110.GF3939@free.fr: > > >> + JAVA=$(which java 2> /dev/null) > >> + if [ -z "$JAVA" ] ; then > >> + echo > >> + echo "You must install 'java' on your build machine"; > >> + exit 1; > >> + fi; > >> + JAVA_GCJ=$($JAVA -version 2>&1 | grep gcj) > > $ gcj -version > > gcj: error: unrecognized command line option ???-version??? > > So I guess we should have: > > JAVA_GCJ="$(java --version 2>/dev/null |grep gcj)" > > Which would be empty for the JDK's java, but not for gcj. I prefer we > > rely on that, rather than the error mesage from gcj. > > Hi, > > $JAVA contains the result of "which java" which is /usr/bin/java here. This > corresponds to xbmc/codegenerator.mk, which also calls > > JAVA ?= $(shell which java) > > Executing /usr/bin/gcj directly is not desired ;) > > /usr/bin/java -version resolves to either > > $ /usr/bin/java -version > java version "1.5.0" > gij (GNU libgcj) version 4.7.2 > > or > > $ /usr/bin/java -version > java version "1.7.0_65" > OpenJDK Runtime Environment (IcedTea 2.5.1) (7u65-2.5.1-2~deb7u1) > OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode) OK, so 'java' from gcj accepts the same args as 'java' from the JDK. OK. So, I still say we should keep the original check, and then check that java is not from gcj : check_prog_host "java" if java -version 2>&1 |grep gcj >/dev/null 2>&1; then echo "Failed" exit 1 fi check_prog_host already calls 'which $1' so we're sure we can call 'java'. Regards, Yann E. MORIN.
"Yann E. MORIN" <yann.morin.1998@free.fr> wrote in
news:20140813212312.GI3939@free.fr:
> check_prog_host already calls 'which $1' so we're sure we can call 'java'.
Hi,
ok, I am going to send v2 with your suggestion added, but I would like to
keep the $JAVA_GCJ part to have a nicer looking error message, examples:
gij (GNU libgcj) version 4.7.2 is not sufficient to compile your package
selection.
Please install an OpenJDK/IcedTea/Oracle Java.
gij (GNU libgcj) version 4.6.3 is not sufficient to compile your package
selection.
Please install an OpenJDK/IcedTea/Oracle Java.
Regards, Bernd
diff --git a/support/dependencies/dependencies.sh b/support/dependencies/dependencies.sh index 88e5ad2..b09e376 100755 --- a/support/dependencies/dependencies.sh +++ b/support/dependencies/dependencies.sh @@ -188,7 +188,19 @@ if grep ^BR2_TOOLCHAIN_BUILDROOT=y $BR2_CONFIG > /dev/null && \ fi if grep -q ^BR2_NEEDS_HOST_JAVA=y $BR2_CONFIG ; then - check_prog_host "java" + JAVA=$(which java 2> /dev/null) + if [ -z "$JAVA" ] ; then + echo + echo "You must install 'java' on your build machine"; + exit 1; + fi; + JAVA_GCJ=$($JAVA -version 2>&1 | grep gcj) + if [ ! -z "$JAVA_GCJ" ] ; then + echo + echo "$JAVA_GCJ is not sufficient to compile your package selection." + echo "Please install OpenJDK/IcedTea/Oracle Java." + exit 1 ; + fi fi if grep -q ^BR2_NEEDS_HOST_JAVAC=y $BR2_CONFIG ; then
Xbmc uses the Groovy java package to generate API code, for details see http://wiki.xbmc.org/index.php?title=Codegeneration#How_it_works Groovy itself is broken when used with gcj: http://jira.codehaus.org/browse/GROOVY-3701 Xbmc recommends to use another java package instead, like openjdk: http://forum.xbmc.org/showthread.php?tid=199742 Until we come up with a host package to provide a java setup and in order to make autobuilder happy let´s reject gcj when we check for a java installation on the host. Currently Xbmc is the only package using BR2_NEEDS_HOST_JAVA so changing the behaviour of dependencies.sh has no side effects. Fixes http://autobuild.buildroot.net/results/213/213d7454a1dc68cfb8f4c8d9508f52ebf8e58e33/ http://autobuild.buildroot.net/results/639/639cda872cf36c122cbd6139dd76f6b51ac1864e/ http://autobuild.buildroot.net/results/c9e/c9eb12c95b2939c64590692a82af8d84bbd90956/ Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> --- support/dependencies/dependencies.sh | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)