Bug 182950

Summary: missing arch/xen/Makefile, or bad .spec
Product: [Fedora] Fedora Reporter: John Reiser <jreiser>
Component: kernelAssignee: Juan Quintela <quintela>
Status: CLOSED CURRENTRELEASE QA Contact: Brian Brock <bbrock>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: bstein, davej, mattdm, wtogami, xen-maint
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: 2.6.23-0.139.rc3.git10.fc8 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-08-27 21:22:48 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description John Reiser 2006-02-24 17:59:01 UTC
Description of problem:  The file arch/xen/Makefile is missing, yet is called
for by the recipe in kernel-2.6.spec.



Version-Release number of selected component (if applicable):
kernel-2.6.15-1.1977_FC5

How reproducible:
Always

Steps to Reproduce:
1. rpm --install kernel-2.6.15-1.1977_FC5.src.rpm
2. rpmbuild -ba --target i686 kernel-2.6.spec
3.
  
Actual results:
  [snip]
+ echo '# i386'
+ cat .config
+ for i in '*.config'
+ mv kernel-2.6.15-i686-xen0.config .config
++ head -1 .config
++ cut -b 3-
+ Arch=xen
+ make ARCH=xen nonint_oldconfig
Makefile:438: .../BUILD/kernel-2.6.15/linux-2.6.15.i686/arch/xen/Makefile: No
such file or directory
make: *** No rule to make target
`.../BUILD/kernel-2.6.15/linux-2.6.15.i686/arch/xen/Makefile'.  Stop.


Expected results:
Successful build

Additional info:

Comment 1 Stephen Tweedie 2006-03-15 21:44:02 UTC
Current spec files do not have any requirement for arch/xen: xen is built as a
sub-arch of the primary arch (i686, x86_64) these days, not as a separate arch.

This looks like you simply have a stale kernel config file left in your build
directory; can you reproduce this after removing all kernel-*.config files and
reinstalling a current kernel src rpm?  Please reopen if you still have trouble.

Comment 2 John Reiser 2006-03-15 22:44:50 UTC
If there was a stale kernel config file in directory BUILD/kernel-2.6.15, and if
this was the cause of the failed "Steps to Reproduce", then that is a bug in
kernel-2.6.spec because it does not establish the proper initial conditions.  As
long as the .spec is going to use "for i in *.config" (instead of an explicit
list of .config that the current .src.rpm contains) then there should be a "rm
-f *.config" somewhere before the *.config files are extracted.

This seems very similar to bug #185550.

Comment 3 John Reiser 2006-03-16 00:09:48 UTC
The "stale" configs come from SOURCES/kernel*.config, not from anywhere in
BUILD.  For instance, my SOURCES/kernel*.config now has 25 files, only 19 of
which were put there by the most recent kernel*.src.rpm.  The other 6 are left
over from March 2 (two weeks ago, "same" 2.6.15):
kernel-2.6.15-i686-guest-PAE.config etc.

The problem in the .spec starts with
-----
%ifarch %{all_x86}
%define all_arch_configs $RPM_SOURCE_DIR/kernel-%{kversion}-i?86*.config
-----
and continues with
-----
cp -f %{all_arch_configs} .


# now run oldconfig over all the config files
for i in *.config
-----

So that strategy initiates and propagates stale kernel*.config from SOURCES into
BUILD.  Not even the rpmbuild parameter "--clean" is effective at removing such
staleness.

Comment 4 John Reiser 2006-03-16 00:18:53 UTC
*** Bug 185550 has been marked as a duplicate of this bug. ***

Comment 10 Matthew Miller 2007-04-06 19:16:27 UTC
Fedora Core 5 and Fedora Core 6 are, as we're sure you've noticed, no longer
test releases. We're cleaning up the bug database and making sure important bug
reports filed against these test releases don't get lost. It would be helpful if
you could test this issue with a released version of Fedora or with the latest
development / test release. Thanks for your help and for your patience.

[This is a bulk message for all open FC5/FC6 test release bugs. I'm adding
myself to the CC list for each bug, so I'll see any comments you make after this
and do my best to make sure every issue gets proper attention.]


Comment 11 John Reiser 2007-04-07 21:40:36 UTC
The bug still applies to kernel-2.6.20-1.3045.fc7.src.rpm.  At line 1315 of the
.spec file:
-----
# now run oldconfig over all the config files
for i in *.config
do
-----
and "*.config" has not been removed before.  The result is that stale *.config
files (left over from other .src.rpm) will create errors.  The recipe of the
.spec file is not reliable because it does not guarantee a correct build.

I change the Version field of this bug report to "devel".


Comment 12 Matthew Miller 2007-04-08 18:28:03 UTC
thanks.

Comment 13 Dave Jones 2007-04-08 23:37:11 UTC
This is puzzling, as there's a 

@rm -f kernel-*-config

in the configs target of Makefile.config, which should get run before the spec
file runs oldconfig.

Maybe that's happening at the wrong place. Try tweaking that, to see if you can
get the desired effect.


Comment 14 Dave Jones 2007-08-27 19:19:49 UTC
the spec in rawhide has had quite an overhaul in recent times, including config
generation.  Does this change anything for the better?

Comment 15 John Reiser 2007-08-27 21:22:48 UTC
Yes, the .spec is now better because it removes .config files that cannot
pertain to the build at hand; see the quoted section below.  (This means that
simultaneous builds of different versions will encounter trouble, but that has
been true anyway.)

----- kernel-2.6.23-0.139.rc3.git10.fc8/SPECS/kernel.spec line 1192
# Remove configs not for the buildarch
for cfg in kernel-%{version}-*.config; do
  if [ `echo %{all_arch_configs} | grep -c $cfg` -eq 0 ]; then
    rm -f $cfg
  fi
done

%if !%{with_debug}
rm -f kernel-%{version}-*-debug.config
%endif

# now run oldconfig over all the config files
for i in *.config
do
  mv $i .config
-----