Bug 1136544

Summary: Could not open %files file /builddir/build/....../java-1.8.0-openjdk.files: No such file or directory
Product: [Fedora] Fedora Reporter: Karsten Hopp <karsten>
Component: java-1.8.0-openjdkAssignee: jiri vanek <jvanek>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: high Docs Contact:
Priority: medium    
Version: 21CC: ahughes, dbhole, jvanek, omajid
Target Milestone: ---   
Target Release: ---   
Hardware: ppc64le   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-09-04 12:55:38 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: 1071880    
Attachments:
Description Flags
patch for spec file to add ppc64le as a jit arch and a variant of ppc64 none

Description Karsten Hopp 2014-09-02 20:25:07 UTC
Description of problem:
The file list java-1.8.0-openjdk.files doesn't get created on ppc64le:

Processing files: java-1.8.0-openjdk-1.8.0.20-1.b26.fc21.ppc64le
error: Could not open %files file /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.20-1.b26.fc21.ppc64le/java-1.8.0-openjdk.files: No such file or directory
RPM build errors:
    Could not open %files file /builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.20-1.b26.fc21.ppc64le/java-1.8.0-openjdk.files: No such file or directory
Child return code was: 1

Version-Release number of selected component (if applicable):
java-1.8.0-openjdk-1.8.0.20-1.b26.fc21.

How reproducible:
always

Steps to Reproduce:
1. ppc-koji build --scratch f21 java-1.8.0-openjdk-1.8.0.20-1.b26.fc21.src.rpm
2.
3.

Actual results:
http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2068809

Expected results:


Additional info:

Comment 1 jiri vanek 2014-09-03 15:59:44 UTC
ok. the filtering is wrong, there is nowhere xYES in log

The regex is expecting something like
.../lib/ppc64le/...
 - {archinstall}

but on the the build is done into normal
.../lib/ppc64/..


I think that best solution is to get rid of this ppc64le archinstall value. It seems that it is not used, and notrmal ppc  is used instead.

Comment 2 jiri vanek 2014-09-03 16:01:56 UTC
One more note, if archinstall is broken like this, then not only filelist is corrupted.
fgrep archinstall form specfile - audio, jsa, systemtap.... everything points to ppc64le....

Comment 3 Omair Majid 2014-09-03 23:38:15 UTC
Created attachment 934236 [details]
patch for spec file to add ppc64le as a jit arch and a variant of ppc64

The attached patch (sort of) tries to address the problem and makes the ppc64le build a jit build (rather than zero).

But building this leads to weird errors, like:

/builddir/build/BUILD/java-1.8.0-openjdk-1.8.0.20-2.b26.fc21.ppc64le/jdk8/hotspot/src/cpu/ppc/vm/interp_masm_ppc_64.cpp:122:29: error: 'FunctionDescriptor' was not declared in this scope
      call_c(CAST_FROM_FN_PTR(FunctionDescriptor*,

FunctionDescriptor is defined in an #if !defined(ABI_ELFv2) block (in hotspot/src/cpu/ppc/vm/assembler_ppc.hpp) and the makfile (hotspot/make/linux/makefiles/ppc64.make) says '# Little endian machine uses ELFv2 ABI'

I am a little confused about the upstream build status of ppc64le now.

Comment 4 jiri vanek 2014-09-04 07:58:55 UTC
There is small error in your patch. To jit only ppc64le should be added. Not whole ppc swarm. Otherwise yes:(( I will push this change to rhel 7 and f21+f22

Comment 5 Omair Majid 2014-09-04 14:43:49 UTC
(In reply to jiri vanek from comment #4)
> To jit only ppc64le should be added. Not
> whole ppc swarm.

Are you sure about that? I figured the %{power64} macro indicates ppc64 and its variants. Upstream JIT exists for both ppc64be and ppc64le AFAIK.

Anyway, turns out the missing bit was the interpreter.. A scratch build [1] completed with the `--with-jvm-interpreter=cpp` argument suggested at [2]. Apparently only the cpp interpreter is supported on ppc64le. Please note that the scratch build built on ppc64(be) and ppc64le, with my original patch - the JIT is enabled for both.

I have pushed the ccp-interpreter change.

[1] http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2078350
[2] http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/2014-July/002065.html

Comment 6 Andrew John Hughes 2014-09-04 15:16:06 UTC
The original patch is correct; the only PPC platforms not supported by the PPC JIT is ppc32 and some early (<power5) versions of ppc64. ppc64be is actually better supported than ppc64le and the original reason we split them in 7 was so that Zero was still used for ppc64le, which didn't have support from the PPC port back then.

The cpp interpreter is used by the JIT on both architectures, I believe. What I don't understand is why this isn't automatically turned on for this architecture. In merging with 7, I fixed it to do this:

http://icedtea.classpath.org/hg/icedtea7-forest/hotspot/rev/43b9c3182bd1b0

Comment 7 Andrew John Hughes 2014-09-04 15:18:18 UTC
s/is ppc32/are ppc32/

Serves me right for rewording.