Bug 1005529

Summary: rpmbuild failed link to dir
Product: [Fedora] Fedora Reporter: Knut J BJuland <knutjbj>
Component: rpmAssignee: Packaging Maintenance Team <packaging-team-maint>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 19CC: ffesti, jzeleny, novyjindrich, packaging-team-maint, pknirsch, pmatilai
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-09-09 06:48:59 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:

Description Knut J BJuland 2013-09-08 06:43:29 UTC
Description of problem:


Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1. download latest oracle java and timeupdate
2. download http://www.city-fan.org/ftp/contrib/java/java-1.7.0-oracle-1.7.0.25-1.0.cf.nosrc.rpm
3. rpmbuild -bb java-1.7.0-oracle.spec

Actual results:

Not a directory: /home/knutjbj/rpmbuild/BUILDROOT/java-1.7.0-oracle-1.7.0.25-1.0.cf.x86_64/usr/lib/jvm/jre-1.7.0-oracle.x86_64
    Not a directory: /home/knutjbj/rpmbuild/BUILDROOT/java-1.7.0-oracle-1.7.0.25-1.0.cf.x86_64/usr/lib/jvm-exports/jre-1.7.0-oracle.x86_64


Expected results:
Should build as I have build it on Fedora 19 before without altering Spec file

Additional info:

Comment 1 Panu Matilainen 2013-09-09 06:48:59 UTC
(In reply to Knut J BJuland from comment #0)
> Expected results:
> Should build as I have build it on Fedora 19 before without altering Spec
> file

The expectation is correct only as long as the former behavior (and the spec) was correct to begin with - similarly to compilers becoming stricter over time and refusing to compile code that older versions did. The issue here is that the spec specifies two symlinks to be directories (ie there's a trailing slash in %files):

%{_jvmdir}/%{jrelnk}/
%{_jvmjardir}/%{jrelnk}/

Rpm has previously ignored use of trailing slash and %dir on non-directory, but this can lead to silent packaging mistakes when upstream changes things between versions etc. So rpm >= 4.11 requires directory entries in %files to actually be directories in the buildroot.

NOTABUG, the spec simply has a minor thinko in it, easily fixed:

@@ -690,8 +690,8 @@
 %config(noreplace) %{_jvmdir}/%{jredir}/lib/security/javafx.policy
 %ghost %{_jvmdir}/%{jredir}/lib/security/local_policy.jar
 %ghost %{_jvmdir}/%{jredir}/lib/security/US_export_policy.jar
-%{_jvmdir}/%{jrelnk}/
-%{_jvmjardir}/%{jrelnk}/
+%{_jvmdir}/%{jrelnk}
+%{_jvmjardir}/%{jrelnk}
 %{_jvmjardir}/%{sdkdir}/
 %{_jvmprivdir}/%{policydir}/
 %{_mandir}/man1/java-%{name}.%{_arch}.1*