PSERIES64_ARCHS=
UP_ARCHS=
-# these should likely come from the target files too
-RDAC_VERSION="09.03.0C02.0013"
-MPTLINUX_VERSION="4.16.00.00-2"
-
-
# not in the target file any more
CONFIG=
}
-download_rdac() {
- local force="${1:-false}"
-
- if [ -n "$RDAC_VERSION" -a "$RDAC_VERSION" != "inkernel" ] &&
- ( $force || [ ! -r "$KERNELTREE/rdac-LINUX-${RDAC_VERSION}-source.tar.gz" ] ||
- [ ! -s "$KERNELTREE/rdac-LINUX-${RDAC_VERSION}-source.tar.gz" ] ); then
- if $DOWNLOAD; then
- local location="http://downloads.lustre.org/public/RDAC/"
- echo "Downloading $location/rdac-LINUX-${RDAC_VERSION}-source.tar.gz..."
- if ! wget -nv "$location/rdac-LINUX-${RDAC_VERSION}-source.tar.gz" \
- -O "$KERNELTREE/rdac-LINUX-${RDAC_VERSION}-source.tar.gz" ||
- [ ! -s "$KERNELTREE/rdac-LINUX-${RDAC_VERSION}-source.tar.gz" ]; then
- rm -f $KERNELTREE/rdac-LINUX-${RDAC_VERSION}-source.tar.gz
- fatal 1 "Could not download rdac-LINUX-${RDAC_VERSION}-source.tar.gz" \
- "from downloads.lustre.org."
- fi
- else
- fatal 1 "rdac-LINUX-${RDAC_VERSION}-source.tar.gz not found in kernel" \
- "directory $KERNELTREE."
- fi
- fi
-
- return 0
-}
-
-download_mptlinux() {
- local force="${1:-false}"
-
- if [ -n "$MPTLINUX_VERSION" -a "$MPTLINUX_VERSION" != "inkernel" ] &&
- ( $force || [ ! -r "$KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" ] ||
- [ ! -s "$KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" ] ); then
- if $DOWNLOAD; then
- local location="http://downloads.lustre.org/public/MPTLINUX/"
- echo "Downloading $location/MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip..."
- if ! wget -nv "$location/MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" \
- -O "$KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" ||
- [ ! -s "$KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" ]; then
- rm -f $KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip
- fatal 1 "Could not download MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip" \
- "from downloads.lustre.org."
- fi
- else
- fatal 1 "MPTLINUX_RHEL5_SLES10_PH15-${MPTLINUX_VERSION}.zip not found in kernel" \
- "directory $KERNELTREE."
- fi
- fi
-
- return 0
-}
-
load_target() {
EXTRA_VERSION_save="$EXTRA_VERSION"
}
-unpack_rdac() {
-
- if ! untar "$KERNELTREE/rdac-LINUX-${RDAC_VERSION}-source.tar.gz"; then
- return 1
- fi
- [ -d rdac-LINUX ] || ln -sf rdac-LINUX-[0-9][0-9].* rdac-LINUX
-
-}
-
-unpack_mptlinux() {
-
- if ! unzip -p $KERNELTREE/MPTLINUX_RHEL5_SLES10_PH15-4.16.00.00-2.zip | tar xzvf - srpms-2/mptlinux-4.16.00.00-2.src.rpm; then
- return 1
- fi
- mv srpms-2/mptlinux-4.16.00.00-2.src.rpm .
-
-}
-
unpack_lustre() {
if [ -z "$LUSTRE" ]; then
}
build_lustre() {
- local linux="$1"
- local linuxobj="$2"
cp "$LUSTRE" SOURCES
pushd lustre >/dev/null
echo "Building Lustre RPMs for: $BUILD_ARCHS..."
- local targets arch
+ targets=
for arch in $BUILD_ARCHS; do
targets="--target $arch $targets"
done
- local confoptions="--with-linux=${linux}"
+ local confoptions="--with-linux=${LINUX}"
if $PATCHLESS; then
- confoptions="--with-linux=${linux} --disable-server"
+ confoptions="--with-linux=${LINUX} --disable-server"
fi
- if [ "$linuxobj" != "" ]; then
- confoptions="$confoptions --with-linux-obj=${linuxobj}"
+ if [ ! "$LINUXOBJ" = "" ]; then
+ confoptions="$confoptions --with-linux-obj=${LINUXOBJ}"
fi
./configure $confoptions ${CONFIGURE_FLAGS}
if [ -n "$REUSEBUILD" ] && [ -d "$REUSEBUILD/$signature/$module" ]; then
if [ ! -f "$REUSEBUILD/$signature/$module/.lastused" ]; then
# the .lastused flag is populated at the end of the caching to
- # signal that the caching was completed. if that flag is not
+ # signal that the caching was completeld. if that flag is not
# there, then the cache is invalid (and should be removed in fact)
mv "$REUSEBUILD/$signature/$module"{,-bad-$(date +%s)} ||
fatal 1 "failed to clean up a bad cache in location" \
}
-build_mptlinux() {
- local LINUX="$1"
-
- local targets arch
- for arch in $BUILD_ARCHS; do
- targets="--target $arch $targets"
- done
+build_with_srpm() {
- local rpmbuildopt='-bb'
- if $NORPM; then
- rpmbuildopt='-bc'
- echo NORPM mode. Only compiling.
+ if ! $PATCHLESS; then
+ local kernel_extra_version
+ if ! kernel_extra_version=$(build_kernel_with_srpm); then
+ fatal 1 "Failed to build the kernel from it's SRPM"
fi
- # if only we could just rebuild the src.rpm. but the included spec
- # is a real pig's breakfast. just check out the patch we need to
- # apply to it to make it useful.
- #$RPMBUILD --rebuild \
- # --define "_topdir ${TOPDIR}" --target ${TARGET_ARCH} \
- # ${TOPDIR}/mptlinux-*.src.rpm
- rpm -ivh --define "_topdir ${TOPDIR}" ${TOPDIR}/mptlinux-*.src.rpm
-
- # now the big honkin' patch to the spec file
- pushd ${TOPDIR}/SPECS
- # to regen this patch use:
- # !!cd ~/rpm/SPECS/ && diff -u mptlinux.spec{.dist,}
- patch -p0 < ${TOPDIR}/lustre/build/mptlinux.spec.patch || fatal 1 "failed to patch mptlinux.spec"
- popd
-
- local targets arch
for arch in $BUILD_ARCHS; do
- targets="--target $arch $targets"
- done
- local rpmbuildopt='-bb'
- if $NORPM; then
- rpmbuildopt='-bc'
- echo NORPM mode. Only compiling.
+ local kernel_devel_rpm
+ if ! kernel_devel_rpm=$(find_rpm "$TOPDIR/RPMS/$arch/" provides "^$(devel_kernel_name $KERNEL_LUSTRE_NAMING) ="); then
+ fatal 1 "Failed to find a kernel development RPM in $TOPDIR/RPMS/$arch/"
fi
- if ! $RPMBUILD $targets $rpmbuildopt \
- --define "_tmppath /var/tmp" \
- --define "_topdir ${TOPDIR}" \
- --define "kernel_obj $LINUX" \
- ${TOPDIR}/SPECS/mptlinux.spec; then
- return 1
- fi
- if $DO_SRC; then
- if ! $RPMBUILD -bs \
- --define "_tmppath /var/tmp" \
- --define "_topdir ${TOPDIR}" \
- --define "kernel_obj $LINUX" \
- ${TOPDIR}/SPECS/mptlinux.spec; then
- return 1
- fi
+ # install the -devel RPM in preparation for the lustre build
+ # note that the EXTRA_VERSION_DELIMITER is *NOT* used in the
+ # version of the directory name under /usr/src
+ if ! lnxrel="$kernel_extra_version" unpack_linux_devel_rpm \
+ "$TOPDIR/RPMS/$arch/$kernel_devel_rpm" "-"; then
+ fatal 1 "Could not find the Linux tree in $TOPDIR/RPMS/$arch/$kernel_devel_rpm"
fi
-
- return 0
-
-}
-
-# build RDAC
-build_rdac() {
- local LINUX="$1"
-
- # note that we use an _, not a . before the spec on purpose. we are not
- # allowed to have more than one file with a .spec trailer in a tarball
- # that is supposed to be usable with rpmbuild
- cp lustre/build/rdac_spec ${TOPDIR}/SPECS/rdac.spec || fatal 1 "Could not find rdac.spec in lustre/build"
-
- local targets arch
- for arch in $BUILD_ARCHS; do
- targets="--target $arch $targets"
done
-
- local rpmbuildopt='-bb'
- if $NORPM; then
- rpmbuildopt='-bc'
- echo NORPM mode. Only compiling.
+ else
+ # need to find and unpack the vendor's own kernel-devel for patchless
+ # client build
+ local kernelrpm
+ if ! kernelrpm=$(find_linux_rpm "-$DEVEL_KERNEL_TYPE" ${EXTRA_VERSION_DELIMITER:-"-"}); then
+ fatal 1 "Could not find the kernel-$DEVEL_KERNEL_TYPE RPM in ${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
fi
-
- local distro
- case $DISTRO in
- rhel5) distro="REDHAT"
- ;;
- sles1*) distro="SUSE"
- ;;
- *) echo "$DISTRO not supported by RDAC, skipping"
- return 0
- ;;
- esac
- if ! $RPMBUILD $targets $rpmbuildopt --define "dist $distro" \
- --define "_tmppath /var/tmp" \
- --define "_topdir ${TOPDIR}" \
- --define "kernel_obj $LINUX" \
- ${TOPDIR}/SPECS/rdac.spec; then
- return 1
+ if ! lnxrel="$lnxrel" unpack_linux_devel_rpm "$kernelrpm" "-"; then
+ fatal 1 "Could not find the Linux tree in $kernelrpm"
fi
- if $DO_SRC; then
- if ! $RPMBUILD -bs --define "dist $distro" \
- --define "_tmppath /var/tmp" \
- --define "_topdir ${TOPDIR}" \
- --define "kernel_obj $LINUX" \
- ${TOPDIR}/SPECS/rdac.spec; then
- return 1
- fi
fi
- return 0
-}
-
-# build OFED
-# globals used:
-# TOPDIR
-# REUSEBUILD, REUSERPM
-# CONFIGURE_FLAGS
-
-build_ofed() {
- local linux="$1"
- local ofed_version="$2"
-
# before lustre, build kernel-ib
- if [ -n "$ofed_version" -a "$ofed_version" != "inkernel" ]; then
- if [ -n "$REUSEBUILD" ]; then
+ if [ -n "$OFED_VERSION" -a "$OFED_VERSION" != "inkernel" ]; then
# see if we can link to the reuse pool
- # XXX - hrm. i'm not convinced this doesn't belong in the reuse
- # "library"
+ # XXX - hrm. i'm not convinced this doesn't belong in the reuse "library"
local CAN_LINK_FOR_REUSE=false
touch $REUSEBUILD/$$
if cp -al $REUSEBUILD/$$ $TOPDIR/; then
CAN_LINK_FOR_REUSE=true
fi
rm $REUSEBUILD/$$
- fi
- local REUSE_SIGNATURE=$({ echo "$ofed_version";
- echo "$(find_linux_release ${linux})";
- cat "${linux}/include/linux/autoconf.h"; } |
- md5sum | cut -d" " -f1)
- if ! $REUSERPM || ! reuse ofed "$TOPDIR" "$CAN_LINK_FOR_REUSE" \
+ local REUSE_SIGNATURE=$({ echo "$OFED_VERSION"; echo "$(find_linux_release ${LINUXOBJ:-$LINUX})"; cat "${LINUXOBJ:-${LINUX}}/include/linux/autoconf.h"; } | md5sum | cut -d" " -f1)
+ if ! reuse ofed "$TOPDIR" "$CAN_LINK_FOR_REUSE" \
"$REUSE_SIGNATURE"; then
# stash away the existing built articles for a moment
mkdir bak
}
create_rpmbuild_dirs
# build it
- build_kernel_ib "${linux}"
+ build_kernel_ib "${LINUXOBJ:-${LINUX}}"
if ! store_for_reuse "$TOPDIR/{SPECS,SOURCES,BUILD,SRPMS,RPMS}" \
"ofed" "$REUSEBUILD" "$REUSE_SIGNATURE" \
"$CAN_LINK_FOR_REUSE"; then
cd kernel-ib-devel
# the actual ofed RPMs don't have the -rc$n or -$date string appened that
# might be present on the file
- local linuxrelease=$(find_linux_release "$linux")
- ofed_version=$(echo $ofed_version |
+ local ofed_version=$(echo $OFED_VERSION |
sed -re 's/-(20[0-9]{6,6}-[0-9]{4,4}|rc[0-9]*)$//')
- local rpm=$(ls $TOPDIR/RPMS/*/kernel-ib-devel-${ofed_version}-${linuxrelease//-/_}.*.rpm)
+ local rpm=$(ls $TOPDIR/RPMS/*/kernel-ib-devel-${ofed_version}-${LINUXRELEASE//-/_}.*.rpm)
rpm2cpio -itv < $rpm | cpio -id
CONFIGURE_FLAGS="--with-o2ib=$(pwd)/usr/src/ofa_kernel ${CONFIGURE_FLAGS}"
popd >/dev/null
fi
-}
-
-build_with_srpm() {
-
- if ! $PATCHLESS; then
- local kernel_extra_version
- if ! kernel_extra_version=$(build_kernel_with_srpm); then
- fatal 1 "Failed to build the kernel from it's SRPM"
- fi
-
- for arch in $BUILD_ARCHS; do
-
- local kernel_devel_rpm
- if ! kernel_devel_rpm=$(find_rpm "$TOPDIR/RPMS/$arch/" provides "^$(devel_kernel_name $KERNEL_LUSTRE_NAMING) ="); then
- fatal 1 "Failed to find a kernel development RPM in $TOPDIR/RPMS/$arch/"
- fi
-
- # install the -devel RPM in preparation for the lustre build
- # note that the EXTRA_VERSION_DELIMITER is *NOT* used in the
- # version of the directory name under /usr/src
- if ! lnxrel="$kernel_extra_version" unpack_linux_devel_rpm \
- "$TOPDIR/RPMS/$arch/$kernel_devel_rpm" "-"; then
- fatal 1 "Could not find the Linux tree in $TOPDIR/RPMS/$arch/$kernel_devel_rpm"
- fi
- done
- else
- # need to find and unpack the vendor's own kernel-devel for patchless
- # client build
- local kernelrpm
- if ! kernelrpm=$(find_linux_rpm "-$DEVEL_KERNEL_TYPE" ${EXTRA_VERSION_DELIMITER:-"-"}); then
- fatal 1 "Could not find the kernel-$DEVEL_KERNEL_TYPE RPM in ${KERNELRPMSBASE}/${lnxmaj}/${DISTRO}"
- fi
- if ! lnxrel="$lnxrel" unpack_linux_devel_rpm "$kernelrpm" "-"; then
- fatal 1 "Could not find the Linux tree in $kernelrpm"
- fi
- fi
-
- build_ofed "${LINUXOBJ:-$LINUX}" "$OFED_VERSION" || fatal 1 "error building OFED"
-
- build_rdac "${LINUXOBJ:-$LINUX}" || fatal 1 "error building RDAC"
-
- build_mptlinux "${LINUX}" || fatal 1 "error building mptlinux"
-
# now build Lustre
- if build_lustre "$LINUX" "$LINUXOBJ"; then
+ if build_lustre; then
# the build worked. resolve any symlinked files (i.e. from reuse)
# in RPMS/$arch to real files so that that that huge mess of
- # complication known as LTS can copy them yet somewhere else.
+ # complication knows as LTS can copy them yet somewhere else.
# is it any wonder this whole process is so damn so? anyone ever
# heard of hardlinks? it this cool new thing that allows you save
# tons of time and space by creating... well you can go read about
unpack_ofed || fatal 1 "Error unpacking OFED tarball"
fi
-if [ -n "$MPTLINUX_VERSION" -a "$MPTLINUX_VERSION" != "inkernel" ]; then
- download_mptlinux
- unpack_mptlinux || fatal 1 "Error unpacking MPTLINUX distribution"
-fi
-
-unpack_mptlinux || fatal 1 "Error unpacking mptlinux"
-
# make sure the RPM build environment is set up
create_rpmbuild_dirs
-if [ -n "$RDAC_VERSION" -a "$RDAC_VERSION" != "inkernel" ]; then
- download_rdac
- # we don't actually need to unpack this. just put it in the SOURCES dir
- #unpack_rdac || fatal 1 "Error unpacking RDAC tarball"
- cp "$KERNELTREE/rdac-LINUX-${RDAC_VERSION}-source.tar.gz" ${TOPDIR}/SOURCES/ ||
- fatal 1 "Error copying RDAC source tarball to RPM SOURCES dir"
-fi
-
trap '[ -n "$CCACHE" ] && ccache -s' EXIT
# if an unpacked kernel source tree was given on the command line
# just build lustre with it (nothing distro kernel specific here)
if [ -n "$LINUX" ]; then
- build_mptlinux "${LINUX}" || fatal 1 "error building mptlinux"
- build_ofed "${LINUX}" "$OFED_VERSION" || fatal 1 "error building OFED"
- build_rdac "${LINUX}" || fatal 1 "error building RDAC"
- build_lustre "$LINUX" "$LINUXOBJ"
+ build_lustre
else
if [ -f "${0%/*}/lbuild-$DISTRO" ]; then
seen_list=$(new_list)
+++ /dev/null
---- mptlinux.spec.dist 2008-11-07 02:16:26.000000000 -0500
-+++ mptlinux.spec 2009-10-28 12:10:05.000000000 -0400
-@@ -1,13 +1,15 @@
-+%{!?kernel_obj: %define kernel_obj ""}
-+
- %define name mptlinux
- %define version 4.16.00.00
--%define release 2
--Summary: MPT Fusion drivers for 53C1030, FC9XX, and SAS Adapters
-+%define release 2sun1
-+Summary: Common files for the MPT Fusion drivers for 53C1030, FC9XX, and SAS Adapters
- Name: %{name}
- Version: %{version}
- Release: %{release}
- Vendor: LSI Logic
- License: GPL
--Group: System Environment/Kernel
-+Group: Utilities/System
- Source0: %{name}-%{version}.tar.gz
- Source1: fusion.mptctl
- URL: http://www.lsilogic.com
-@@ -22,228 +24,284 @@
- Fibre Channel FC909, FC919, FC929, FC919X, FC929X, and FC949X adapters
- SAS SAS1064, SAS1068, and SAS1078 adapters.
-
-+This package contains the common file(s).
-+
-+%package modules
-+Summary: Kernel modules for the MPT Fusion drivers for 53C1030, FC9XX, and SAS Adapters
-+Group: System Environment/Kernel
-+Requires: mptlinux
-+
-+%description modules
-+Drivers for (suse i686, x86_64, ia64 and updates) for the
-+LSI Logic Fusion-MPT Architecture parts.
-+These include the Ultra320 53C1030 and 53C1020 adapters.
-+Fibre Channel FC909, FC919, FC929, FC919X, FC929X, and FC949X adapters
-+SAS SAS1064, SAS1068, and SAS1078 adapters.
-+
-+This package contains the drivers.
-+
- # prep #########################################################################
- %prep
-+#exit 0
- echo prep %{version}
--%setup -c -b 0
-+%setup -c
-
- # build ########################################################################
- %build
-+#exit 0
- echo build %{version}
-+if [ "%{kernel_obj}" != "" ]; then
-+ # dig the version out of the tree
-+ LINUXRELEASEHEADER=%{kernel_obj}/include/linux/version.h
-+ if [ -s %{kernel_obj}/include/linux/utsrelease.h ]; then
-+ LINUXRELEASEHEADER=%{kernel_obj}/include/linux/utsrelease.h
-+ fi
-+ LINUXRELEASE=$(sed -ne 's/#define UTS_RELEASE "\(.*\)"$/\1/p' $LINUXRELEASEHEADER)
-+
-+ make build LINUX=%{kernel_obj} KERNEL=$LINUXRELEASE
-+else
- for i in /lib/modules/2.6.*; do
-- kernel=`basename ${i}`;
-+ kernel=`basename ${i}`
- if [ -f /lib/modules/${kernel}/source/drivers/message/fusion/Kconfig ]; then
-- make build KERNEL=$kernel;
-- fi;
--done;
-+ make build KERNEL=$kernel
-+ fi
-+done
-+fi
-
- # install ######################################################################
- %install
- echo install %{version}
- echo "%defattr(-,root,root)" > $RPM_BUILD_DIR/file.list.%{name}
-+echo "%defattr(-,root,root)" > $RPM_BUILD_DIR/file.list.%{name}-modules
- echo "/etc/init.d/fusion.mptctl" >> $RPM_BUILD_DIR/file.list.%{name}
- mkdir -p $RPM_BUILD_ROOT/etc/init.d
--cp -rf $RPM_SOURCE_DIR/fusion.mptctl $RPM_BUILD_ROOT/etc/init.d
-+cp -f $RPM_SOURCE_DIR/fusion.mptctl $RPM_BUILD_ROOT/etc/init.d
-+if [ "%{kernel_obj}" != "" ]; then
-+ # dig the version out of the tree
-+ LINUXRELEASEHEADER=%{kernel_obj}/include/linux/version.h
-+ if [ -s %{kernel_obj}/include/linux/utsrelease.h ]; then
-+ LINUXRELEASEHEADER=%{kernel_obj}/include/linux/utsrelease.h
-+ fi
-+ kernel="$(sed -ne 's/#define UTS_RELEASE "\(.*\)"$/\1/p' $LINUXRELEASEHEADER)"
-+
-+ #if [ ! -e /lib/modules/${kernel}/source/drivers/message/fusion/Kconfig ]; then
-+ # continue
-+ #fi
-+ MPTLINUX_IPATH=/lib/modules/${kernel}/updates/drivers/message/fusion
-+ mkdir -p $RPM_BUILD_ROOT/lib/modules/${kernel}/{kernel,updates}/drivers/message/fusion
-+
-+ # create the file list used in %files to indicate which files are in package
-+ for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
-+ echo "$MPTLINUX_IPATH/${driver_name}" >> $RPM_BUILD_DIR/file.list.%{name}-modules
-+ done
-+
-+ make install PREFIX=$RPM_BUILD_ROOT LINUX=%{kernel_obj} KERNEL=$kernel
-+ # the Makefile hardcodes the destination path to
-+ # $(PREFIX)/lib/modules/$(KERNEL)/kernel/drivers/message/fusion
-+ # so lets move these to where they really go
-+ # ideally, the Makefile should take this location as an (optional if you
-+ # wish) argument
-+ mv -f $RPM_BUILD_ROOT/lib/modules/${kernel}/kernel/drivers/message/fusion/* \
-+ $RPM_BUILD_ROOT/$MPTLINUX_IPATH/
-+else
- for i in /lib/modules/2.6.*; do
- kernel=`basename ${i}`
- if [ ! -e /lib/modules/${kernel}/source/drivers/message/fusion/Kconfig ]; then
-- continue;
-- fi;
-- MPTLINUX_IPATH=/lib/modules/${kernel}/kernel/drivers/message/fusion
-- mkdir -p $RPM_BUILD_ROOT/lib/modules/${kernel}/kernel/drivers/message/fusion
-+ continue
-+ fi
-+ MPTLINUX_IPATH=/lib/modules/${kernel}/updates/drivers/message/fusion
-+ mkdir -p $RPM_BUILD_ROOT/lib/modules/${kernel}/{kernel,updates}/drivers/message/fusion
-
- # create the file list used in %files to indicate which files are in package
- for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
-- echo "$MPTLINUX_IPATH/${driver_name}.new" >> $RPM_BUILD_DIR/file.list.%{name}
-- done;
-+ echo "$MPTLINUX_IPATH/${driver_name}" >> $RPM_BUILD_DIR/file.list.%{name}-modules
-+ done
-
- make install PREFIX=$RPM_BUILD_ROOT KERNEL=$kernel
--
-- for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
-- mv -f $RPM_BUILD_ROOT/$MPTLINUX_IPATH/${driver_name} \
-- $RPM_BUILD_ROOT/$MPTLINUX_IPATH/${driver_name}.new
-- done;
--done;
-+ # the Makefile hardcodes the destination path to
-+ # $(PREFIX)/lib/modules/$(KERNEL)/kernel/drivers/message/fusion
-+ # so lets move these to where they really go
-+ # ideally, the Makefile should take this location as an (optional if you
-+ # wish) argument
-+ mv -f $RPM_BUILD_ROOT/lib/modules/${kernel}/kernel/drivers/message/fusion/* \
-+ $RPM_BUILD_ROOT/$MPTLINUX_IPATH/
-+done
-+fi
-
- # pre #########################################################################
--%pre
-+%pre modules
- echo pre %{version}
- system_arch=`uname -m`
- if [ -f /etc/SuSE-release ] && [ ${system_arch} == i686 ]; then
-- system_arch=i586;
--fi;
-+ system_arch=i586
-+fi
- if [ %{_target_cpu} != ${system_arch} ]; then
- echo "ERROR: Failed installing this rpm!!!!"
-- echo "This rpm is intended for %{_target_cpu} platform. It seems your system is ${system_arch}.";
-- exit 1;
--fi;
-+ echo "This rpm is intended for %{_target_cpu} platform. It seems your system is ${system_arch}."
-+ exit 1
-+fi
-
- # post #########################################################################
--%post
-+%post modules
- echo post %{version}
- chkconfig fusion.mptctl --add >/dev/null 2>&1
- if [ -f /etc/redhat-release ]; then
- # RHEL 4
-- if [ -f /etc/modprobe.conf ] ; then
-- cp /etc/modprobe.conf /etc/modprobe.conf.orig.%{version};
-- sed -e '/mptbase/d' /etc/modprobe.conf > modprobe.edit;
-- sed -e '/mptscsih/d' modprobe.edit > modprobe.edit.1;
-- sed -e '/mptspi/d' modprobe.edit.1 > modprobe.edit.2;
-- sed -e '/mptfc/d' modprobe.edit.2 > modprobe.edit.3;
-- sed -e '/mptsas/d' modprobe.edit.3 > modprobe.edit;
-- echo "alias scsi_hostadapter mptspi" >> modprobe.edit;
-- echo "alias scsi_hostadapter1 mptfc" >> modprobe.edit;
-- echo "alias scsi_hostadapter2 mptsas" >> modprobe.edit;
-- mv -f modprobe.edit /etc/modprobe.conf;
-- rm -fr modprobe.edit.*;
-- fi;
-+ # per the comments below, i can't see any modprobe.conf editing here that's
-+ # valid
-+ #if [ -f /etc/modprobe.conf ] ; then
-+ # cp /etc/modprobe.conf /etc/modprobe.conf.orig.mptlinux-%{version}
-+ # i don't think this is kosher. what sort of entries are
-+ # being deleted here?
-+ #sed -e '/mptbase/d' -e '/mptscsih/d' -e '/mptspi/d' \
-+ # -e '/mptfc/d' -e '/mptsas/d' /etc/modprobe.conf > /etc/modprobe.edit
-+ # this really isn't kosher. you can't assume that the
-+ # administrator has not already defined the scsi_hostadapter
-+ # aliases for some other HBA that's already in the system
-+ #echo "alias scsi_hostadapter mptspi" >> /etc/modprobe.edit
-+ #echo "alias scsi_hostadapter1 mptfc" >> /etc/modprobe.edit
-+ #echo "alias scsi_hostadapter2 mptsas" >> /etc/modprobe.edit
-+ #mv -f /etc/modprobe.edit /etc/modprobe.conf
-+ #fi
- elif [ -f /etc/SuSE-release ]; then
- # SLES 9
- if [ -f /etc/sysconfig/kernel ] ; then
-- cp /etc/sysconfig/kernel /etc/sysconfig/kernel.orig.%{version};
-- sed -e 's/mptscsih//g' /etc/sysconfig/kernel > kernel.edit;
-- sed -e 's/mptsas//g' kernel.edit > kernel.edit.1;
-- sed -e 's/mptfc//g' kernel.edit.1 > kernel.edit.2;
-- sed -e 's/mptspi//g' kernel.edit.2 > kernel.edit.3;
-- sed -e 's/INITRD_MODULES="/INITRD_MODULES="mptsas /g' kernel.edit.3 > kernel.edit.4;
-- sed -e 's/INITRD_MODULES="/INITRD_MODULES="mptfc /g' kernel.edit.4 > kernel.edit.5;
-- sed -e 's/INITRD_MODULES="/INITRD_MODULES="mptspi /g' kernel.edit.5 > kernel.edit;
-- mv -f kernel.edit /etc/sysconfig/kernel;
-- rm -fr kernel.edit.*;
-- fi;
-+ cp /etc/sysconfig/kernel /etc/sysconfig/kernel.orig.mptlinux-%{version}
-+ sed -e 's/mptscsih//g' -e 's/mptsas//g' -e 's/mptfc//g' \
-+ -e 's/mptspi//g' \
-+ -e 's/INITRD_MODULES="/INITRD_MODULES="mptsas /g' \
-+ -e 's/INITRD_MODULES="/INITRD_MODULES="mptfc /g' \
-+ -e 's/INITRD_MODULES="/INITRD_MODULES="mptspi /g' \
-+ /etc/sysconfig/kernel > /etc/sysconfig/kernel.edit
-+ mv -f /etc/sysconfig/kernel.edit /etc/sysconfig/kernel
-+ fi
- fi
-
- # adding device nodes
- if [ ! -e /dev/mptctl ]; then
-- echo "Creating /dev/mptctl ioctl node file";
-- mknod /dev/mptctl c 10 220;
--fi;
-+ echo "Creating /dev/mptctl ioctl node file"
-+ mknod /dev/mptctl c 10 220
-+fi
-
-+# i think this is wrong. we should not muck around with kernels we did not
-+# install new drivers into. but how to determine which kernels those are?
-+# maybe look for the new driver in the /lib/modules/*/updates tree?
- for i in /lib/modules/2.6.*; do
-- kernel=`basename ${i}`;
-- MPTLINUX_IPATH=/lib/modules/${kernel}/kernel/drivers/message/fusion
-- if [ ! -e $MPTLINUX_IPATH/mptbase.ko ] || \
-- [ ! -e $MPTLINUX_IPATH/mptbase.ko.new ]; then
-- continue;
-- fi;
-+ kernel=`basename ${i}`
-
- if [ -f /etc/SuSE-release ] &&
- [ ! -e /boot/initrd-${kernel} ]; then
-- continue;
-- fi;
-+ continue
-+ fi
-
-- echo "The mpt driver for kernel ${kernel} is now version 4.16.00.00";
-- #backup original fusion drivers here if not already done
-- for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
-- if [ ! -e $MPTLINUX_IPATH/${driver_name}.orig ]; then
-- cp $MPTLINUX_IPATH/${driver_name} \
-- $MPTLINUX_IPATH/${driver_name}.orig
-- fi;
-- cp -f $MPTLINUX_IPATH/${driver_name}.new $MPTLINUX_IPATH/${driver_name}
-- done;
-+ echo "The mpt driver for kernel ${kernel} is now version 4.16.00.00"
- # Remake the initrd image for the user, depending on their OS
- if [ -f /etc/redhat-release ]; then
--
-- # taking care of dud migration, by moving all the ko's to ko.orig
-- for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
-- MPTLINUX_IPATH=/lib/modules/${kernel}/updates
-- if [ -e $MPTLINUX_IPATH/${driver_name} ]; then
-- mv $MPTLINUX_IPATH/${driver_name} \
-- $MPTLINUX_IPATH/${driver_name}.orig
-- fi;
-- done;
--
- # RHEL 4
- if [ -d /boot/efi/efi/redhat ]; then
-- bootpart=/boot/efi/efi/redhat;
-+ bootpart=/boot/efi/efi/redhat
- elif [ -d /boot/efi ]; then
-- bootpart=/boot/efi;
-+ bootpart=/boot/efi
- else
-- bootpart=/boot;
-+ bootpart=/boot
- fi
- if [ ! -e ${bootpart}/initrd-${kernel}.img.orig ]; then
- echo Saving initrd-${kernel}.img in ${bootpart} directory.
- cp ${bootpart}/initrd-${kernel}.img \
-- ${bootpart}/initrd-${kernel}.img.orig
-- fi;
-+ ${bootpart}/initrd-${kernel}.img.orig.mptlinux-%{version}
-+ fi
- # Calling depmod
-- depmod -v ${kernel} > /dev/null 2>&1;
-+ depmod -v ${kernel} > /dev/null 2>&1
- mkinitrd -f ${bootpart}/initrd-${kernel}.img ${kernel}
- elif [ -f /etc/SuSE-release ]; then
- # SLES 9
- if [ ! -e /boot/initrd-${kernel}.orig ]; then
- echo Saving initrd-${kernel} in /boot directory.
-- cp /boot/initrd-${kernel} /boot/initrd-${kernel}.orig
-- fi;
-+ cp /boot/initrd-${kernel} /boot/initrd-${kernel}.orig.mptlinux-%{version}
-+ fi
- # Calling depmod
-- depmod -v ${kernel} > /dev/null 2>&1;
-+ depmod -v ${kernel} > /dev/null 2>&1
- mk_initrd -k vmlinuz-${kernel} -i /boot/initrd-${kernel}
-- fi;
--done;
-+ fi
-+done
- echo -e "post Install Done."
-
- # postun #######################################################################
--%postun
-+%postun modules
- echo postun %{version}
- for i in /lib/modules/2.6.*; do
-- kernel=`basename ${i}`;
-- MPTLINUX_IPATH=/lib/modules/${kernel}/kernel/drivers/message/fusion
-- if [ ! -e $MPTLINUX_IPATH/mptbase.ko ] || \
-- [ -e $MPTLINUX_IPATH/mptbase.ko.new ]; then
-- continue;
-- fi;
-+ kernel=`basename ${i}`
-+ MPTLINUX_IPATH=/lib/modules/${kernel}/updates/drivers/message/fusion
-+ if [ ! -e $MPTLINUX_IPATH/mptbase.ko ]; then
-+ continue
-+ fi
- if [ ! -e /etc/init.d/fusion.mptctl ]; then
-+ # why are we only doing this if the fustion.mptctl file
-+ # *doesn't* exist? running chkconfig on a file that doesn't
-+ # exist is surely an error
-+ #chkconfig fusion.mptctl --del >/dev/null 2>&1
-+ :
-+ else
- chkconfig fusion.mptctl --del >/dev/null 2>&1
-- fi;
-- if [ -f /etc/modprobe.conf.orig ]; then
-+ fi
-+
-+ if [ -f /etc/modprobe.conf.orig.mptlinux-%{version} ]; then
- # RHEL 4
-- mv -f /etc/modprobe.conf.orig /etc/modprobe.conf;
-- elif [ -f /etc/sysconfig/kernel.orig ]; then
-+ mv -f /etc/modprobe.conf.orig.mptlinux-%{version} /etc/modprobe.conf
-+ elif [ -f /etc/sysconfig/kernel.orig.mptlinux-%{version} ]; then
- # SLES 9
-- mv -f /etc/sysconfig/kernel.orig /etc/sysconfig/kernel;
-- fi;
-- for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
-- if [ -f $MPTLINUX_IPATH/${driver_name}.orig ]; then
-- mv -f $MPTLINUX_IPATH/${driver_name}.orig $MPTLINUX_IPATH/${driver_name}
-- fi;
-- done;
-+ mv -f /etc/sysconfig/kernel.orig.mptlinux-%{version} /etc/sysconfig/kernel
-+ fi
- # restore original initrd images
-+ # i don't think this is a good idea. lots of stuff may have happened
-+ # to the system between the time this backup was made and now that
-+ # renders the original initrd images useless now
-+ # probably should just generate new ones
- if [ -f /etc/redhat-release ]; then
-
-- # restoring the state of dud migration
-- for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
-- MPTLINUX_IPATH=/lib/modules/${kernel}/udpates
-- if [ -f $MPTLINUX_IPATH/${driver_name}.orig ]; then
-- mv -f $MPTLINUX_IPATH/${driver_name}.orig $MPTLINUX_IPATH/${driver_name}
-- fi;
-- done;
--
- # RHEL 4
- if [ -d /boot/efi/efi/redhat ]; then
-- bootpart=/boot/efi/efi/redhat;
-+ bootpart=/boot/efi/efi/redhat
- elif [ -d /boot/efi ]; then
-- bootpart=/boot/efi;
-+ bootpart=/boot/efi
- else
-- bootpart=/boot;
-+ bootpart=/boot
- fi
-- if [ -f ${bootpart}/initrd-${kernel}.img.orig ]; then
-- mv -f ${bootpart}/initrd-${kernel}.img.orig ${bootpart}/initrd-${kernel}.img;
-- fi;
-+ #if [ -f ${bootpart}/initrd-${kernel}.img.orig.mptlinux-%{version} ]; then
-+ # mv -f ${bootpart}/initrd-${kernel}.img.orig.mptlinux-%{version} ${bootpart}/initrd-${kernel}.img
-+ #fi
-+ # Calling depmod
-+ depmod -v ${kernel} > /dev/null 2>&1
-+ mkinitrd -f ${bootpart}/initrd-${kernel}.img ${kernel}
- elif [ -f /etc/SuSE-release ]; then
- # SLES 9
-- if [ -f /boot/initrd-${kernel}.orig ]; then
-- mv -f /boot/initrd-${kernel}.orig /boot/initrd-${kernel};
-- fi;
-- fi;
-- depmod -v ${kernel} > /dev/null 2>&1;
--done;
-+ #if [ -f /boot/initrd-${kernel}.orig.mptlinux-%{version} ]; then
-+ # mv -f /boot/initrd-${kernel}.orig.mptlinux-%{version} /boot/initrd-${kernel}
-+ #fi
-+ # Calling depmod
-+ depmod -v ${kernel} > /dev/null 2>&1
-+ mk_initrd -k vmlinuz-${kernel} -i /boot/initrd-${kernel}
-+ fi
-+done
- echo -e "Uninstall Done."
-
- # files ########################################################################
- %files -f ../file.list.%{name}
-+%files modules -f ../file.list.%{name}-modules
-
- # changelog ###################################################################
- %changelog
-+* Wed Oct 28 2009 Brian J. Murrell <Brian.Murrell@Sun.COM>
-+ - split into modules and non-modules packages so that multiple
-+ modules packages can be installed, for several kernels
-+ - don't fiddle with files once RPM has installed them
-+ - put modules into the updates tree under the modules dir, where
-+ they belong
-+ - don't use the "orig" initrd, but generate a new one on removal
-+ + the orig initrd could very well no longer be suitable
-+ - don't edit the modprobe.conf file as that's a job for the admin
-+ + we really can't assume which other scsi_host_adapters are in
-+ the machine and what position we are to take relative to them
- * Tue Apr 24 2007 Eric Moore <Eric.Moore@lsi.com>
- - Fix RHEL5 DUD to RPM migration
- * Tue Apr 17 2007 Eric Moore <Eric.Moore@lsi.com>
+++ /dev/null
-%{!?kernel_obj: %define kernel_obj /lib/modules/$(uname -r)/build}
-# legal values are REDHAT and SUSE. default to REDHAT
-%{!?dist: %define dist REDHAT}
-
-%define version 09.03.0C02.0013
-
-Name: rdac
-License: GPL
-Group: System/Kernel
-Summary: Multipathing tools
-Version: %{version}
-Release: 1
-Source: http://codeman.central.sun.com/LSI/USR-SDLC/RDAC-Linux/rdac-LINUX-%{version}-source.tar.gz
-#?? BuildRequires: kernel-source kernel-syms
-BuildRoot: %{_tmppath}/rdac-%{version}-root
-
-%description
-This package provides the mppUtil (multipathing command line utilities).
-
-%package modules
-Summary: Multipathing driver for disk subsystems.
-Group: System/Kernel
-
-%description modules
-This package provides the multipathing kernel modules.
-
-%prep
-if true; then
-#exit 0
-%setup -n linuxrdac-%{version}
-else
-cd linuxrdac-%{version}
-fi
-find_linux_release() {
- local SRCDIR="$1"
-
- local LINUXRELEASEHEADER=$SRCDIR/include/linux/version.h
- if [ -s $SRCDIR/include/linux/utsrelease.h ]; then
- LINUXRELEASEHEADER=$SRCDIR/include/linux/utsrelease.h
- fi
-
- sed -ne 's/#define UTS_RELEASE "\(.*\)"$/\1/p' $LINUXRELEASEHEADER
-
-}
-
-# need to fix up silly Makefile madness
-chmod u+w Makefile
-ed Makefile << EOF
-/^GCC_CHK_FLAG :=/c
-GCC_CHK_FLAG := 1
-.
-/^DIST :=/c
-DIST := %{dist}
-.
-/^%{dist}_KERNEL_CHECK :=/c
-%{dist}_KERNEL_CHECK := 1
-.
-/^OS_VER :=/c
-OS_VER := $(find_linux_release %{kernel_obj})
-.
-g/install -o root -g root -m [0-9]\{4,4\}/s//install/
-wq
-EOF
-
-# and other silliness
-#ed genfileattributes << "EOF"
-#EOF
-sed -i -e 's/\/bin\/\(basename\)/\1/g' -e 's/\/bin\/\(awk\)/\1/g' genfileattributes
-
-#sed -i -e 's/install -o root -g root/install/g Makefile
-
-%build
-#exit 0
-export KERNEL_OBJ=%{kernel_obj}
-make all
-
-%install
-rm -rf $RPM_BUILD_ROOT
-export KERNEL_OBJ=%{kernel_obj}
-DIST=%{dist}
-make DEST_DIR=$RPM_BUILD_ROOT copyfiles copyrpmfiles
-install -m 0755 -D mpp_rcscript.$DIST $RPM_BUILD_ROOT/etc/init.d/mpp
-gzip $RPM_BUILD_ROOT/usr/share/man/man9/RDAC.9
-gzip $RPM_BUILD_ROOT/usr/share/man/man1/mppBusRescan.1
-ln -s mppBusRescan $RPM_BUILD_ROOT/usr/sbin/hot_add
-ln -s mppBusRescan.1.gz $RPM_BUILD_ROOT/usr/share/man/man1/hot_add.1.gz
-gzip $RPM_BUILD_ROOT/usr/share/man/man1/mppUpdate.1
-gzip $RPM_BUILD_ROOT/usr/share/man/man1/mppUtil.1
-install -m 0444 -D mpp.conf $RPM_BUILD_ROOT/etc/mpp.conf
-touch devicemapping
-install -m 0755 -d $RPM_BUILD_ROOT/var/mpp
-install -m 0644 -D devicemapping $RPM_BUILD_ROOT/var/mpp/devicemapping
-rm devicemapping
-rm -rf $RPM_BUILD_ROOT/opt/mpp/.mppLnx_rpm_helpers
-
-%post modules
-depmod -a
-
-%files
-%defattr (-,root,root)
-/usr/sbin/hot_add
-/usr/share/man/man1/hot_add.1.gz
-%attr (755,root,root) /etc/init.d/mpp
-%attr (444,root,root) %config(noreplace) /etc/mpp.conf
-%attr (755,root,root) %dir /var/mpp
-%attr (644,root,root) %config(noreplace) /var/mpp/devicemapping
-%attr (755,root,root) %dir /opt/mpp
-%defattr (0500,root,root)
-/opt/mpp/genuniqueid
-/opt/mpp/mppSupport
-/opt/mpp/lsvdev
-/opt/mpp/mppiscsi_umountall
-/usr/sbin/mppBusRescan
-/opt/mpp/mppMkInitrdHelper
-/usr/sbin/mppUpdate
-/usr/sbin/mppUtil
-%defattr (0644,root,root)
-/usr/share/man/man1/mppBusRescan.1.gz
-/usr/share/man/man1/mppUpdate.1.gz
-/usr/share/man/man1/mppUtil.1.gz
-/usr/share/man/man9/RDAC.9.gz
-
-%files modules
-%defattr (0644,root,root)
-/lib/modules
-
-
-%changelog
-* Fri Oct 23 2009 - brian@sun.com 09.03.0C02.0013-1
- - initial packaging