$ rpm -q rpm rpm-4.0.4-7x.18 Custom .spec file which requires a specific kernel be installed, snippet below: Release: 11.realtime Distribution: Red Hat Linux 7.3 / i386 BuildRequires: kernel >= 2.4.18.realtime.8 Serial: 4 Requires: rte-firewall The box I attempted to build this package on does -not- have kernel-2.4.18.realtime.8 or greater installed as listed below: [tanner@linux firewalls]$ rpm -qa | grep kerne kernel-2.4.18-realtime.7 kernel-2.4.18-realtime.6 kernel-source-2.4.18-realtime.7 kernel-2.4.18-realtime.7 Yet, RPM merrily compiles the package: [tanner@linux firewalls]$ rpm -bc freeswan.spec Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.28146 + umask 022 + cd /usr/src/redhat/BUILD + cd /usr/src/redhat/BUILD + rm -rf freeswan-1.98b + /bin/gzip -dc /usr/src/redhat/SOURCES/freeswan-1.98b.tar.gz + tar -xf - Make a small change to the .spec file, changing kernel to kernel-source, snippet follows: Release: 11.realtime Distribution: Red Hat Linux 7.3 / i386 BuildRequires: kernel-source >= 2.4.18.realtime.8 Serial: 4 Requires: rte-firewall [tanner@linux firewalls]$ rpm -bc freeswan.spec error: failed build dependencies: kernel-source >= 2.4.18-realtime.8 is needed by freeswan-1.98b-11.realtime It would appear the rpm-4.0.4-7x.18 does not honor the BuildRequires flag all the time.
What does rpm -q --whatprovides kernel say?
$ rpm -q --whatprovides kernel kernel-2.4.18-realtime.6 kernel-2.4.18-realtime.6 kernel-2.4.18-realtime.7 kernel-2.4.18-realtime.7 kernel-2.4.18-realtime.7 kernel-2.4.18-realtime.7
OK, I was looking for a Provides: kernel from a kernel-smp package, that would have explained. So what does "rpmbuild -bc -vv ..." say? The location where the dependency is satisfied looks like D: Requires: kernel YES (db provides)
$ rpm -bc -vv freeswan.spec D: opening db index /var/lib/rpm/Packages rdonly mode=0x0 D: locked db index /var/lib/rpm/Packages D: ========== +++ freeswan-1.98b-11.realtime D: opening db index /var/lib/rpm/Depends create mode=0x0 D: opening db index /var/lib/rpm/Providename rdonly mode=0x0 D: Requires: gmp-devel YES (db provides) D: Requires: libcap YES (db provides) D: YES A kernel = 2.4.18 B kernel >= 2.4.18-8.realtime D: Requires: kernel >= 2.4.18-8.realtime YES (db provides) D: opening db index /var/lib/rpm/Conflictname rdonly mode=0x0 D: closed db index /var/lib/rpm/Depends D: closed db index /var/lib/rpm/Conflictname D: closed db index /var/lib/rpm/Providename D: closed db index /var/lib/rpm/Packages
OK, the problem has to do with a missing release. The Provides: kernel = 2.4.18 in the match provides all releases of the kernel, which matches your BuildRequires:. You'll need to write your dependency differently, say as BuildRequires: /lib/modules/2.4.18.realtime.8