From Bugzilla Helper: User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.5) Gecko/20011012 Description of problem: I downloaded the latest IA64 bit kernel from RH (2.4.9-12) and did a compare agains their i386 2.4.9-12 kernel. While comparing the differences between the two kernels I noticed that each had their machine specific files (in the ia64 and i386 directories) as I would have expected them to. But what surprised me was there there were a number of source files that were different. And when I diff'ed them, they did not have anything IA64 specific. differences. It just seemed to be older versions of the file. Version-Release number of selected component (if applicable): How reproducible: Always Steps to Reproduce: 1. Diff ia32 2.4.9-12 kernel against ia64 2.4.9-12 kernel. Additional info:
This is not a bug unfortionatly; the ia64 kernel tree has several patches to generic code that are ia64 specific (they might not look like that but they are).... both kernels are generated from the same src.rpm where in the .spec file you can see which patches are %ifarch ia64 .... Likewise, i386 is the only architecture with the new pci dma api for now; we're working on making that work for ia64 and others too but right now it does't work yet.
Let me see if I can explain a little better. I downloaded the following two source RPMS. ftp://updates.redhat.com/7.1/en/os/ia64/kernel-source-2.4.9-12.ia64.rpm ftp://updates.redhat.com/7.1/en/os/i386/kernel-source-2.4.9-12.i386.rpm When I comparted the source files I noticed differences. Have a look at drivers/block/cciss.c. from the above two rpms. From the spec for the i386 rpm I see two cciss patches being applied. But, nothing ia64 specific. Also, you mention that both kernels are created from the same src.rpm file but I can't find this src.rpm that contains both the ia64 and i386 sources in one RPM.
If you have the 2.4.9-12 src.rpm you can get the sources for i386 by doing rpm -bp --target=i386 kernel-2.4.9-12.src.rpm and for ia64 rpm -bp --target=ia64 kernel-2.4.9-12.src.rpm (or maybe --target ia64, without the '=' as that seems to change depending on exact RPM version)
When I execute "rpm -tp --target=ia64 kernel-2.4.9-12.src.rpm" I get the following error: [root@pong /tmp]# rpm -tp --target=ia64 kernel-2.4.9-12.src.rpm Building target platforms: ia64 Building for target ia64 error: Name field must be present in package: (main package) error: Version field must be present in package: (main package) error: Release field must be present in package: (main package) error: Summary field must be present in package: (main package) error: Group field must be present in package: (main package) error: License field must be present in package: (main package)
-bp not -tp
When I use: rpm -bp --target=ia64 kernel-2.4.9-12.src.rpm I get the error: error: File /tmp/kernel-2.4.9-12.src.rpm does not appear to be a specfile. The man pages says: The argument used is -b if a spec file is being used to build the package and -t if RPM should look inside of a gzipped (or compressed) tar file for the spec file to use. After the first argument, the next argument (O) specifies the stages of building and packaging to be done and is one of: That is why I used -tp.
Oh duh indeed ;( (I normally build from spec files) so you can do it on the spec file that gets put in /usr/src/redhat/SPECS after you've "rpm -i kernel-2.4.9-12.src.rpm"'d it. The end effect will be the kernel tree as used for building the i386 and the ia64 kernel respectively, and that tree also gets used for creating the kernel-source rpm. And indeed, there are differences. More than I'd like, but that's something the ia64 architecture maintainer is trying to get fixed.(he works for HP as well)
OK, thanks. I now have a clear picture of everything. Thanks for the help.
I figured out why at least drivers/block/cciss.c is different between x86 and ia86. It turns out that the linux-2.4.9-blockhighmem.patch does not get applied to the ia64 kernel. So, we can consider this closed. Thanks for all the help.