On Thu, 2008-07-24 at 09:12 +0100, Mark McLoughlin wrote:
On Wed, 2008-07-23 at 17:41 -0700, Roland McGrath wrote:
> For simplicity and consistency in the .spec file, we'll
install a file for
> all variants even when it's an empty placeholder. For the magic, the diff
> below probably covers it (wholly untested). Then it's up to BuildKernel
> just to add/remove ldconfig-kernelcap.conf as part of the build (perhaps
> eventually done by the upstream makefiles).
So, for Xen, we'll want something like this until it's done upstream:
Index: devel/kernel.spec
===================================================================
--- devel.orig/kernel.spec 2008-07-24 08:49:22.000000000 +0100
+++ devel.orig/kernel.spec 2008-07-24 08:49:22.000000000 +0100
@@ -1312,6 +1312,13 @@ BuildKernel() {
make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install
KERNELRELEASE=$KernelVer mod-fw=
%ifarch %{vdso_arches}
make -s ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install
KERNELRELEASE=$KernelVer
+ if grep '^CONFIG_XEN=y$' .config
>/dev/null; then
+ echo > ldconfig-kernelcap.conf "\
+# This directive teaches ldconfig to search in nosegneg subdirectories
+# and cache the DSOs there with extra bit 0 set in their hwcap match
+# fields. In Xen guest kernels, the vDSO tells the dynamic linker to
+# search in nosegneg subdirectories and to match this extra hwcap bit
+# in the ld.so.cache file.
+hwcap 0 nosegneg"
+ fi
+ if [ ! -s ldconfig-kernelcap.conf ]; then
+ echo > ldconfig-kernelcap.conf "\
+# Placeholder file, no vDSO hwcap entries used in this kernel."
+ fi
+ %{__install} -D -m 444 ldconfig-kernelcap.conf \
+ $RPM_BUILD_ROOT/etc/ld.so.conf.d/kernel-$KernelVer.conf
%endif
Cheers,
Mark.