Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1307224
Summary: | latest OpenJDK8 is FTBFS on aarch64 rawhide | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Peter Robinson <pbrobinson> | ||||||
Component: | java-1.8.0-openjdk | Assignee: | Andrew Haley <aph> | ||||||
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||||
Severity: | unspecified | Docs Contact: | |||||||
Priority: | unspecified | ||||||||
Version: | rawhide | CC: | ahughes, aph, dbhole, jerboaa, jvanek, msrb, omajid, pbrobinson, sgehwolf | ||||||
Target Milestone: | --- | ||||||||
Target Release: | --- | ||||||||
Hardware: | Unspecified | ||||||||
OS: | Unspecified | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | java-1.8.0-openjdk-1.8.0.72-6.b15.fc24 | Doc Type: | Bug Fix | ||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2016-02-18 08:44:41 UTC | Type: | Bug | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Bug Depends On: | |||||||||
Bug Blocks: | 922257 | ||||||||
Attachments: |
|
Description
Peter Robinson
2016-02-13 10:57:35 UTC
Adding Andrew Haley to CC. Seems to be caused by: /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp:197:65: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 template <class T> static const T& min (const T& a, const T& b) { ^ /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp:198:3: error: expected primary-expression before 'return' return (a > b) ? b : a; ^~~~~~ /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp:198:3: error: expected '}' before 'return' In file included from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/utilities/debug.hpp:28:0, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/runtime/globals.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/memory/allocation.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/memory/iterator.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/memory/genOopClosures.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/oops/klass.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/runtime/handles.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/memory/universe.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/code/oopRecorder.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/asm/codeBuffer.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/asm/assembler.hpp:28, from /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/precompiled/precompiled.hpp:29: /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/share/vm/utilities/globalDefinitions.hpp:1113:18: warning: variable templates only available with -std=c++14 or -std=gnu++14 #define min(a,b) Do_not_use_min_use_MIN2_instead ^ /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp:197:36: note: in expansion of macro 'min' template <class T> static const T& min (const T& a, const T& b) { ^~~ /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp:198:3: error: expected ';' before 'return' return (a > b) ? b : a; ^~~~~~ /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-5.b15.fc24.aarch64/openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp:199:1: error: expected declaration before '}' token } ^ Created attachment 1127233 [details]
Remove unneeded template from aarch64 sources
Spec file patch getting the build past the original failure.
Scratch build with patch in comment 2: http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3389510 It now fails in %check with: + JAVA_HOME=/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image + /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac -d . /builddir/build/SOURCES/TestCryptoLevel.java Error: missing `client' JVM at `/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/jre/lib/aarch64/client/libjvm.so'. Please install or use the JRE or JDK that contains these missing components. RPM build errors: error: Bad exit status from /var/tmp/rpm-tmp.Jq1dz8 (%check) (In reply to Severin Gehwolf from comment #3) > Scratch build with patch in comment 2: > http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3389510 > > It now fails in %check with: > + > JAVA_HOME=/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24. > aarch64/openjdk/build/jdk8.build/images/j2sdk-image > + > /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/ > build/jdk8.build/images/j2sdk-image/bin/javac -d . > /builddir/build/SOURCES/TestCryptoLevel.java > Error: missing `client' JVM at > `/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/ > openjdk/build/jdk8.build/images/j2sdk-image/jre/lib/aarch64/client/libjvm. > so'. > Please install or use the JRE or JDK that contains these missing components. > RPM build errors: > error: Bad exit status from /var/tmp/rpm-tmp.Jq1dz8 (%check) Look in images/j2sdk-image/jre/lib/amd64/jvm.cfg You should see -server KNOWN -client IGNORE (In reply to Andrew Haley from comment #4) > (In reply to Severin Gehwolf from comment #3) > > Scratch build with patch in comment 2: > > http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3389510 > > > > It now fails in %check with: > > + > > JAVA_HOME=/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24. > > aarch64/openjdk/build/jdk8.build/images/j2sdk-image > > + > > /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/ > > build/jdk8.build/images/j2sdk-image/bin/javac -d . > > /builddir/build/SOURCES/TestCryptoLevel.java > > Error: missing `client' JVM at > > `/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/ > > openjdk/build/jdk8.build/images/j2sdk-image/jre/lib/aarch64/client/libjvm. > > so'. > > Please install or use the JRE or JDK that contains these missing components. > > RPM build errors: > > error: Bad exit status from /var/tmp/rpm-tmp.Jq1dz8 (%check) > > Look in > > images/j2sdk-image/jre/lib/amd64/jvm.cfg > > You should see > > -server KNOWN > -client IGNORE OK. But why is "images/j2sdk-image/bin/javac -d ./builddir/build/SOURCES/TestCryptoLevel.java" selecting a client JVM anyway? Also, why did this work before? Looking at the build log of the last successful build on aarch64[1] I see this: + /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.71-1.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac -d . /builddir/build/SOURCES/TestCryptoLevel.java + /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.71-1.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/bin/java TestCryptoLevel Running with the unlimited policy. Note that this TestCryptoLevel check runs in %check now. It has been running in %build/%install before. [1] http://arm.koji.fedoraproject.org//packages/java-1.8.0-openjdk/1.8.0.71/1.b15.fc24/data/logs/aarch64/build.log On 02/15/2016 01:00 PM, bugzilla wrote: > OK. But why is "images/j2sdk-image/bin/javac -d > ./builddir/build/SOURCES/TestCryptoLevel.java" selecting a client JVM anyway? I think there's a guess in the build machinery which is based on the class of the machine it thinks it's running on. > Also, why did this work before? Looking at the build log of the last successful > build on aarch64[1] I see this: > + > /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.71-1.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac > -d . /builddir/build/SOURCES/TestCryptoLevel.java > + > /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.71-1.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/bin/java > TestCryptoLevel > Running with the unlimited policy. > > Note that this TestCryptoLevel check runs in %check now. It has been running in > %build/%install before. As I said, it's just a guess. "-client" should work. Andrew. (In reply to Andrew Haley from comment #6) > "-client" should work. I take it that should be "-server" ? (In reply to Severin Gehwolf from comment #7) > (In reply to Andrew Haley from comment #6) > > "-client" should work. > > I take it that should be "-server" ? Certainly not. If "-client" does not work, that is a bug. (In reply to Andrew Haley from comment #8) > (In reply to Severin Gehwolf from comment #7) > > (In reply to Andrew Haley from comment #6) > > > "-client" should work. > > > > I take it that should be "-server" ? > > Certainly not. If "-client" does not work, that is a bug. Very confusing. So the fix is to use "-client" explicitly which should circumvent guessing machinery and then be ignored. The result, thus, will be that the only server JVM will be used instead? (In reply to Severin Gehwolf from comment #9) > (In reply to Andrew Haley from comment #8) > > (In reply to Severin Gehwolf from comment #7) > > > (In reply to Andrew Haley from comment #6) > > > > "-client" should work. > > > > > > I take it that should be "-server" ? > > > > Certainly not. If "-client" does not work, that is a bug. > > Very confusing. So the fix is to use "-client" explicitly which should > circumvent guessing machinery and then be ignored. The result, thus, will be > that the only server JVM will be used instead? Hmm. Please show me the command which led to this error. Did it not contain "-client"? (In reply to Andrew Haley from comment #10) > Hmm. Please show me the command which led to this error. Did it not > contain "-client"? See comment 3. The command that was failing is a simple "javac TestCryptoLevel.java". It does not contain "-J-client" if that's what you mean. (In reply to Severin Gehwolf from comment #11) > See comment 3. The command that was failing is a simple "javac > TestCryptoLevel.java". It does not contain "-J-client" if that's what you > mean. Yes, that's exactly what I meant. I was assuming that the build machinery was passing "-client"; it sometimes does. You never said what the contents of images/j2sdk-image/jre/lib/amd64/jvm.cfg was. We really do need to know that. (In reply to Andrew Haley from comment #12) > (In reply to Severin Gehwolf from comment #11) > > > See comment 3. The command that was failing is a simple "javac > > TestCryptoLevel.java". It does not contain "-J-client" if that's what you > > mean. > > Yes, that's exactly what I meant. I was assuming that the build machinery > was passing "-client"; it sometimes does. You never said what the contents > of images/j2sdk-image/jre/lib/amd64/jvm.cfg was. We really do need to know > that. I don't have access to the builder (or Aarch64 HW) in order to be able to have a look. Peter would you be able to help? Looks like the builder for the task in comment 3 was aarch64-10a.arm.fedoraproject.org FWIW, here is a scratch build with explicit -J-client: http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3389926 It fails the same way: + export JAVA_HOME=/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image + JAVA_HOME=/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image + /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/bin/javac -J-client d . /builddir/build/SOURCES/TestCryptoLevel.java Error: missing `client' JVM at `/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/jre/lib/aarch64/client/libjvm.so'. Please install or use the JRE or JDK that contains these missing components. RPM build errors:
> I don't have access to the builder (or Aarch64 HW) in order to be able to
> have a look. Peter would you be able to help? Looks like the builder for the
> task in comment 3 was aarch64-10a.arm.fedoraproject.org
sure, if you need to just be able to kick off a build you can just do "arm-koji build --scratch f24 java-1.8.0-openjdk-NVR.src.rpm" to kick off a scratch build.
If you need me to extract something out of the buildroot or check something in there let me know exactly what you need.
If you have a general aarch64 machine you can also run the build in mock with f24 config.
(In reply to Andrew Haley from comment #12) > (In reply to Severin Gehwolf from comment #11) > > > See comment 3. The command that was failing is a simple "javac > > TestCryptoLevel.java". It does not contain "-J-client" if that's what you > > mean. > > Yes, that's exactly what I meant. I was assuming that the build machinery > was passing "-client"; it sometimes does. You never said what the contents > of images/j2sdk-image/jre/lib/amd64/jvm.cfg was. We really do need to know > that. I've pushed another scratch build[1] which shows the jvm.cfg. Output from the builder was: $ cat /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.72-6.b15.fc24.aarch64/openjdk/build/jdk8.build/images/j2sdk-image/jre/lib/aarch64/jvm.cfg # Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License version 2 only, as # published by the Free Software Foundation. Oracle designates this # particular file as subject to the "Classpath" exception as provided # by Oracle in the LICENSE file that accompanied this code. # # This code is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License # version 2 for more details (a copy is included in the LICENSE file that # accompanied this code). # # You should have received a copy of the GNU General Public License version # 2 along with this work; if not, write to the Free Software Foundation, # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. # # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA # or visit www.oracle.com if you need additional information or have any # questions. # # # List of JVMs that can be used as an option to java, javac, etc. # Order is important -- first in this list is the default JVM. # NOTE that this both this file and its format are UNSUPPORTED and # WILL GO AWAY in a future release. # # You may also select a JVM in an arbitrary location with the # "-XXaltjvm=<jvm_dir>" option, but that too is unsupported # and may not be available in a future release. # -client IF_SERVER_CLASS -server -server KNOWN -minimal KNOWN This is wrong. How do we change that? [1] http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3390171 Change the file in the OpenJDK sources. The OpenJDK 7 / IcedTea 2.x one reads: # n.b. server must be first so it is used as the default -server KNOWN -client ALIASED_TO -server -minimal ERROR http://icedtea.classpath.org/hg/release/icedtea7-forest-2.6/jdk/file/tip/src/solaris/bin/aarch64/jvm.cfg This seems related: http://hg.openjdk.java.net/aarch64-port/jdk8u/jdk/rev/2940c1ead99b Part of it seems to have been removed in a later merge (the java_md_solinux.c chunk). Chunk was removed here: http://hg.openjdk.java.net/aarch64-port/jdk8u/jdk/rev/9399aa7ef558 Incidentally, I had to revert the manpage part of this last week. (In reply to Andrew John Hughes from comment #17) > Change the file in the OpenJDK sources. The OpenJDK 7 / IcedTea 2.x one > reads: > > # n.b. server must be first so it is used as the default > -server KNOWN > -client ALIASED_TO -server > -minimal ERROR It's best to copy it from the x86 version. Created attachment 1127549 [details]
Updated spec file patch fixing FTBFS
Successful scratch build with patch in comment 21: http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3391107 (In reply to Andrew Haley from comment #20) > (In reply to Andrew John Hughes from comment #17) > > Change the file in the OpenJDK sources. The OpenJDK 7 / IcedTea 2.x one > > reads: > > > > # n.b. server must be first so it is used as the default > > -server KNOWN > > -client ALIASED_TO -server > > -minimal ERROR > > > It's best to copy it from the x86 version. So is the one in 7 also wrong? (In reply to Andrew John Hughes from comment #23) > (In reply to Andrew Haley from comment #20) > > (In reply to Andrew John Hughes from comment #17) > > > Change the file in the OpenJDK sources. The OpenJDK 7 / IcedTea 2.x one > > > reads: > > > > > > # n.b. server must be first so it is used as the default > > > -server KNOWN > > > -client ALIASED_TO -server > > > -minimal ERROR > > > > > > It's best to copy it from the x86 version. > > So is the one in 7 also wrong? I don't think so. Rather, the logic which accesses this file is different. (In reply to Andrew Haley from comment #20) > (In reply to Andrew John Hughes from comment #17) > > Change the file in the OpenJDK sources. The OpenJDK 7 / IcedTea 2.x one > > reads: > > > > # n.b. server must be first so it is used as the default > > -server KNOWN > > -client ALIASED_TO -server > > -minimal ERROR > > It's best to copy it from the x86 version. For clarity: that's the AMD64 version. Fixed in rawhide. See: http://arm.koji.fedoraproject.org/koji/buildinfo?buildID=349414 |