[Oracleasm-commits] jlbec commits r320 - in trunk: . vendor/rhel4
svn-commits at oss.oracle.com
svn-commits at oss.oracle.com
Mon Nov 21 19:44:11 CST 2005
Author: jlbec
Date: 2005-11-21 19:44:10 -0600 (Mon, 21 Nov 2005)
New Revision: 320
Added:
trunk/vendor/rhel4/kernel.guess
Modified:
trunk/configure.in
trunk/mbvendor.m4
trunk/vendor/rhel4/Makefile
trunk/vendor/rhel4/oracleasm-2.6.9-EL.spec-generic.in
Log:
o Add MB_VENDOR_KERNEL() to mbvendor.m4. This macro discovers
kernel trees via vendor/VENDOR/kernel.guess.
o Add vendor kernel discovery to configure.in.
o Change configure.in to disable the module build if a valid kernel
is not found. Before, a kernel was required or an error occurred.
o Add vendor/rhel4/kernel.guess to discover/validate RHEL4 kernels.
o Modify vendor/rhel4/oracleasm-2.6.9-EL.spec-generic.in to use
--with-vendor and --with-vendorkernel.
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2005-11-21 22:12:27 UTC (rev 319)
+++ trunk/configure.in 2005-11-22 01:44:10 UTC (rev 320)
@@ -76,41 +76,47 @@
AC_SUBST(M64)
AC_SUBST(USERM64)
+AC_CHECK_SIZEOF(unsigned long)
+
MB_VENDOR()
+MB_VENDOR_KERNEL(vendordir)
if test "x$GCC" != "xyes"; then
AC_MSG_ERROR(GCC is required)
fi
-AC_MSG_CHECKING(for directory with kernel source)
-AC_ARG_WITH(kernel, [ --with-kernel=dir Path to the kernel source tree [/usr/src/linux]], kerneldir="$withval", [
- if test -d "/lib/modules/`uname -r`/build" -o -L "/lib/modules/`uname -r`/build"; then
+AC_MSG_CHECKING(for directory with kernel build tree)
+AC_ARG_WITH(kernel, [ --with-kernel=dir Path to the kernel build tree [/usr/src/linux]], kerneldir="$withval", [
+ if test -n "$vendordir"; then
+ kerneldir="$vendordir"
+ elif test -d "/lib/modules/`uname -r`/build" -o -L "/lib/modules/`uname -r`/build"; then
kerneldir="/lib/modules/`uname -r`/build"
else
kerneldir="/usr/src/linux"
fi
])
-AC_MSG_RESULT($kerneldir)
-KERNELDIR=$kerneldir
-AC_SUBST(KERNELDIR)
+if test ! -f "${kerneldir}/include/linux/autoconf.h"; then
+ AC_MSG_RESULT([not found])
+ KERNELDIR=
+else
+ AC_MSG_RESULT($kerneldir)
+ KERNELDIR="$kerneldir"
+ AC_SUBST(KERNELDIR)
+fi
-KERNELINC="$kerneldir/include"
+AC_MSG_CHECKING(for kernel version)
+if test -n "$KERNELDIR"; then
+ kernelinc="${KERNELDIR}/include"
-saved_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="-I$KERNELINC $CPPFLAGS"
-saved_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS $M64"
+ saved_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="-I${kernelinc} $CPPFLAGS"
+ saved_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $M64"
-AC_CHECK_SIZEOF(unsigned long)
-if test ! -f "$KERNELINC/linux/autoconf.h"; then
- AC_MSG_ERROR(No configured kernel include tree found)
-fi
-
-AC_MSG_CHECKING(for kernel version)
-rm -f conf.kvertest
-AC_TRY_RUN([
+ rm -f conf.kvertest
+ AC_TRY_RUN([
#include <stdio.h>
#include <linux/version.h>
@@ -129,8 +135,14 @@
return 1;
#endif
}],kversion=`cat conf.kvertest`, kversion="none")
-rm -f conf.kvertest
+ rm -f conf.kvertest
+ CPPFLAGS="$saved_CPPFLAGS"
+ CFLAGS="$saved_CFLAGS"
+else
+ kversion="none"
+fi
+
BUILD_DRIVER=
case "$kversion" in
2.6.*)
@@ -142,7 +154,7 @@
;;
*)
AC_MSG_RESULT([This module only supports kernel version 2.6.x, disabling driver build])
- ;;
+ ;;
esac
AC_SUBST(BUILD_DRIVER)
@@ -150,10 +162,7 @@
AC_SUBST(KERNELVER)
-CPPFLAGS="$saved_CPPFLAGS"
-CFLAGS="$saved_CFLAGS"
-
AC_OUTPUT([Config.make
include/linux/asm_module_version.h
vendor/common/oracleasm-support.spec-generic
Modified: trunk/mbvendor.m4
===================================================================
--- trunk/mbvendor.m4 2005-11-21 22:12:27 UTC (rev 319)
+++ trunk/mbvendor.m4 2005-11-22 01:44:10 UTC (rev 320)
@@ -1,3 +1,5 @@
+# MB_VENDOR([VARIABLE])
+# ---------------------
AC_DEFUN([MB_VENDOR],
[AC_MSG_CHECKING([for vendor])
AC_ARG_WITH(vendor, [ --with-vendor=VENDOR Vendor to tailor build defaults and packages to [common]],[
@@ -21,4 +23,51 @@
AC_MSG_RESULT([$mb_vendor])
fi
])
+ dnl Use 2.13 safe ifelse()
+ ifelse([$1], [], [], [
+ $1="$mb_vendor"
+ AC_SUBST($1)
+ ])
]) # MB_VENDOR
+
+# MB_VENDOR_KERNEL([VARIABLE])
+# ---------------------
+AC_DEFUN([MB_VENDOR_KERNEL],
+ [AC_MSG_CHECKING([for vendor kernel])
+ AC_ARG_WITH(vendorkernel, [ --with-vendorkernel=KERNELVERSION Vendor kernel version to compile against [detected]], [
+ mb_vendorkernel="$withval"
+ if test -z "$mb_vendor"; then
+ AC_MSG_RESULT([no vendor])
+ AC_MSG_ERROR([No vendor specified or discovered])
+ fi
+ if test -x "vendor/${mb_vendor}/kernel.guess"; then
+ mb_vkinclude="`vendor/${mb_vendor}/kernel.guess build ${mb_vendorkernel} 2>&AS_MESSAGE_LOG_FD`"
+ if test -z "$mb_vkinclude"; then
+ AC_MSG_RESULT([not found])
+ AC_MSG_ERROR([Vendor kernel $mb_vendorkernel not detected])
+ else
+ AC_MSG_RESULT([$mb_vkinclude])
+ fi
+ else
+ AC_MSG_RESULT([not supported])
+ AC_MSG_ERROR([Vendor $mb_vendor does not support kernel detection])
+ fi
+ ], [
+ if test -x "vendor/${mb_vendor}/kernel.guess"; then
+ mb_vkinclude="`vendor/${mb_vendor}/kernel.guess build 2>&AS_MESSAGE_LOG_FD`"
+ if test -z "$mb_vkinclude"; then
+ AC_MSG_RESULT([not found])
+ else
+ AC_MSG_RESULT([$mb_vkinclude])
+ fi
+ else
+ mb_vkinclude=
+ AC_MSG_RESULT([not supported])
+ fi
+ ])
+ dnl Use 2.13 safe ifelse()
+ ifelse([$1], [], [], [
+ $1="$mb_vkinclude"
+ AC_SUBST($1)
+ ])
+]) # MB_VENDOR_KERNEL
Modified: trunk/vendor/rhel4/Makefile
===================================================================
--- trunk/vendor/rhel4/Makefile 2005-11-21 22:12:27 UTC (rev 319)
+++ trunk/vendor/rhel4/Makefile 2005-11-22 01:44:10 UTC (rev 320)
@@ -4,6 +4,7 @@
DIST_FILES = \
oracleasm-2.6.9-EL.spec-generic.in \
+ kernel.guess \
rpmarch.guess \
Vendor.make \
vendor.guess
Added: trunk/vendor/rhel4/kernel.guess
===================================================================
--- trunk/vendor/rhel4/kernel.guess 2005-11-21 22:12:27 UTC (rev 319)
+++ trunk/vendor/rhel4/kernel.guess 2005-11-22 01:44:10 UTC (rev 320)
@@ -0,0 +1,137 @@
+#!/bin/sh
+
+
+RHEL4_KERNEL_BASE="/usr/src/kernels"
+
+
+guess_rhel4_arch()
+{
+ # This appears to DTRT (i686 on x86, ppc64 on pSeries).
+ uname -m
+}
+
+guess_rhel4_type()
+{
+ case "$1" in
+ *smp)
+ echo "smp"
+ ;;
+ *hugemem)
+ echo "hugemem"
+ ;;
+ *hugeproc)
+ echo "hugeproc"
+ ;;
+ *)
+ echo ""
+ ;;
+ esac
+}
+
+guess_rhel4_dir()
+{
+ KVER="$1"
+
+ DIRTYPE=`guess_rhel4_type "$KVER"`
+ ARCH=`guess_rhel4_arch`
+
+ if [ -z "$DIRTYPE" ]
+ then
+ echo "${1%${DIRTYPE}}-${ARCH}"
+ else
+ echo "${1%${DIRTYPE}}-${DIRTYPE}-${ARCH}"
+ fi
+}
+
+verfromdir()
+{
+ TESTDIR="$1"
+ if [ -r "${TESTDIR}/include/linux/version.h" ]
+ then
+ awk '/UTS_RELEASE/{gsub(/"/,"",$3); print $3}' "${TESTDIR}/include/linux/version.h"
+ fi
+}
+
+validate_dir()
+{
+ KVER="$1"
+ DIR="$2"
+
+ if [ ! -d "${RHEL4_KERNEL_BASE}/${DIR}" ]
+ then
+ return 1
+ elif [ ! -f "${RHEL4_KERNEL_BASE}/${DIR}/include/linux/autoconf.h" ]
+ then
+ return 1
+ elif [ ! -f "${RHEL4_KERNEL_BASE}/${DIR}/include/linux/version.h" ]
+ then
+ return 1
+ fi
+
+ if [ "$KVER" != "`verfromdir "${RHEL4_KERNEL_BASE}/${DIR}"`" ]
+ then
+ return 1
+ fi
+
+ return 0
+}
+
+# Takes a `uname -r` and returns "ver type", where ver
+# is 2.6.9-NN.EL and type is "smp" or the like.
+validate_version()
+{
+ KVER="$1"
+
+ dir=`guess_rhel4_dir "$KVER"`
+ if validate_dir "$KVER" "$dir"
+ then
+ echo "${RHEL4_KERNEL_BASE}/${dir}"
+ fi
+}
+
+find_version()
+{
+ # Find the most recent valid kernel
+ ls -1 -t "$RHEL4_KERNEL_BASE" | while read kdir
+ do
+ KVER="`verfromdir "${RHEL4_KERNEL_BASE}/${kdir}"`"
+ if validate_dir "$KVER" "$kdir"
+ then
+ echo "${RHEL4_KERNEL_BASE}/${kdir}"
+ break
+ fi
+ done
+}
+
+case "$1" in
+include|build)
+ if [ -n "$2" ]
+ then
+ KPATH="`validate_version "$2"`"
+ else
+ KVER="`uname -r`"
+ KPATH="`validate_version "$KVER"`"
+ if [ -z "$KPATH" ]
+ then
+ KPATH="`find_version`"
+ fi
+ fi
+ if [ -n "$KPATH" ]
+ then
+ if [ "$1" = "include" ]
+ then
+ KPATH="${KPATH}/include"
+ fi
+ echo "${KPATH}"
+ fi
+ ;;
+targets)
+ ;;
+"")
+ echo "Missing operation" >&2
+ ;;
+*)
+ echo "Invalid operation: $1" >&2
+ exit 1
+ ;;
+esac
Property changes on: trunk/vendor/rhel4/kernel.guess
___________________________________________________________________
Name: svn:executable
+ *
Modified: trunk/vendor/rhel4/oracleasm-2.6.9-EL.spec-generic.in
===================================================================
--- trunk/vendor/rhel4/oracleasm-2.6.9-EL.spec-generic.in 2005-11-21 22:12:27 UTC (rev 319)
+++ trunk/vendor/rhel4/oracleasm-2.6.9-EL.spec-generic.in 2005-11-22 01:44:10 UTC (rev 320)
@@ -134,12 +134,12 @@
--sharedstatedir=%{_sharedstatedir} \
--mandir=%{_mandir} \
--infodir=%{_infodir} \
- --with-kernel="$1"
+ --with-vendor=rhel4 \
+ --with-vendorkernel="$1"
}
%if %{buildup}
-KPATH="/usr/src/kernels/%{kver}-%{karch}"
-local_configure "${KPATH}"
+local_configure "%{kver}"
make QUIET=1
make DESTDIR="$RPM_BUILD_ROOT" INSTALL_MOD_PATH='$(DESTDIR)' install
@@ -154,8 +154,7 @@
%endif
%if %{buildsmp}
-KPATH="/usr/src/kernels/%{kver}-smp-%{karch}"
-local_configure "${KPATH}"
+local_configure "%{kver}smp"
make QUIET=1
make DESTDIR="$RPM_BUILD_ROOT" INSTALL_MOD_PATH='$(DESTDIR)' install
@@ -170,8 +169,7 @@
%endif
%if %{buildhugemem}
-KPATH="/usr/src/kernels/%{kver}-hugemem-%{karch}"
-local_configure "${KPATH}"
+local_configure "%{kver}hugemem"
make QUIET=1
make DESTDIR="$RPM_BUILD_ROOT" INSTALL_MOD_PATH='$(DESTDIR)' install
More information about the Oracleasm-commits
mailing list