Whamcloud - gitweb
LU-831 header: struct bit field should be unsigned type
[fs/lustre-release.git] / build / mptlinux.spec.patch
1 --- mptlinux.spec.dist  2008-11-07 02:16:26.000000000 -0500
2 +++ mptlinux.spec       2009-12-01 14:17:11.000000000 -0500
3 @@ -1,13 +1,15 @@
4 +%{!?kernel_obj: %define kernel_obj ""}
5 +
6  %define name mptlinux
7  %define version 4.18.20.04
8 -%define release 1
9 -Summary: MPT Fusion drivers for 53C1030, FC9XX, and SAS Adapters
10 +%define release 1sun1
11 +Summary: Common files for the MPT Fusion drivers for 53C1030, FC9XX, and SAS Adapters
12  Name: %{name}
13  Version: %{version}
14  Release: %{release}
15  Vendor: LSI Logic
16  License: GPL
17 -Group: System Environment/Kernel
18 +Group: Utilities/System
19  Source0: %{name}-%{version}.tar.gz
20  Source1: fusion.mptctl
21  URL: http://www.lsilogic.com
22 @@ -22,238 +24,274 @@
23  Fibre Channel FC909, FC919, FC929, FC919X, FC929X, and FC949X adapters
24  SAS SAS1064, SAS1068, and SAS1078 adapters.
25  
26 +This package contains the common file(s).
27 +
28 +%package modules
29 +Summary: Kernel modules for the MPT Fusion drivers for 53C1030, FC9XX, and SAS Adapters
30 +Group: System Environment/Kernel
31 +Requires: mptlinux
32 +
33 +%description modules
34 +Drivers for (suse i686, x86_64, ia64 and updates) for the
35 +LSI Logic Fusion-MPT Architecture parts.
36 +These include the Ultra320 53C1030 and 53C1020 adapters.
37 +Fibre Channel FC909, FC919, FC929, FC919X, FC929X, and FC949X adapters
38 +SAS SAS1064, SAS1068, and SAS1078 adapters.
39 +
40 +This package contains the drivers.
41 +
42  # prep #########################################################################
43  %prep
44 +#exit 0
45  echo prep %{version}
46 -%setup -c -b 0
47 +%setup -c
48  
49  # build ########################################################################
50  %build
51 +#exit 0
52  echo build %{version}
53 +if [ "%{kernel_obj}" != "" ]; then
54 +       # dig the version out of the tree
55 +        LINUXRELEASEHEADER=%{kernel_obj}/include/linux/version.h
56 +        if [ -s %{kernel_obj}/include/linux/utsrelease.h ]; then
57 +            LINUXRELEASEHEADER=%{kernel_obj}/include/linux/utsrelease.h
58 +        fi
59 +        LINUXRELEASE=$(sed -ne 's/#define UTS_RELEASE "\(.*\)"$/\1/p' $LINUXRELEASEHEADER)
60 +
61 +       make build LINUX=%{kernel_obj} KERNEL=$LINUXRELEASE
62 +else
63  for i in /lib/modules/2.6.*; do
64 -       kernel=`basename ${i}`;
65 +       kernel=`basename ${i}`
66         if [ -f /lib/modules/${kernel}/source/drivers/message/fusion/Kconfig ]; then
67 -               make build KERNEL=$kernel;
68 -       fi;
69 -done;
70 +               make build KERNEL=$kernel
71 +       fi
72 +done
73 +fi
74  
75  # install ######################################################################
76  %install
77  echo install %{version}
78  echo "%defattr(-,root,root)" > $RPM_BUILD_DIR/file.list.%{name}
79 +echo "%defattr(-,root,root)" > $RPM_BUILD_DIR/file.list.%{name}-modules
80  echo "/etc/init.d/fusion.mptctl" >> $RPM_BUILD_DIR/file.list.%{name}
81  mkdir -p $RPM_BUILD_ROOT/etc/init.d
82 -cp -rf $RPM_SOURCE_DIR/fusion.mptctl $RPM_BUILD_ROOT/etc/init.d
83 +cp -f $RPM_SOURCE_DIR/fusion.mptctl $RPM_BUILD_ROOT/etc/init.d
84 +if [ "%{kernel_obj}" != "" ]; then
85 +       # dig the version out of the tree
86 +        LINUXRELEASEHEADER=%{kernel_obj}/include/linux/version.h
87 +        if [ -s %{kernel_obj}/include/linux/utsrelease.h ]; then
88 +            LINUXRELEASEHEADER=%{kernel_obj}/include/linux/utsrelease.h
89 +        fi
90 +        kernel="$(sed -ne 's/#define UTS_RELEASE "\(.*\)"$/\1/p' $LINUXRELEASEHEADER)"
91 +
92 +       #if [ ! -e /lib/modules/${kernel}/source/drivers/message/fusion/Kconfig ]; then
93 +       #       continue
94 +       #fi
95 +       MPTLINUX_IPATH=/lib/modules/${kernel}/updates/drivers/message/fusion
96 +       mkdir -p $RPM_BUILD_ROOT/lib/modules/${kernel}/{kernel,updates}/drivers/message/fusion
97 +
98 +       # create the file list used in %files to indicate which files are in package
99 +       for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
100 +               echo "$MPTLINUX_IPATH/${driver_name}" >> $RPM_BUILD_DIR/file.list.%{name}-modules
101 +       done
102 +
103 +       make install PREFIX=$RPM_BUILD_ROOT LINUX=%{kernel_obj} KERNEL=$kernel
104 +       # the Makefile hardcodes the destination path to
105 +       # $(PREFIX)/lib/modules/$(KERNEL)/kernel/drivers/message/fusion
106 +       # so lets move these to where they really go
107 +       # ideally, the Makefile should take this location as an (optional if you
108 +       # wish) argument
109 +       mv -f $RPM_BUILD_ROOT/lib/modules/${kernel}/kernel/drivers/message/fusion/* \
110 +             $RPM_BUILD_ROOT/$MPTLINUX_IPATH/
111 +else
112  for i in /lib/modules/2.6.*; do
113         kernel=`basename ${i}`
114         if [ ! -e /lib/modules/${kernel}/source/drivers/message/fusion/Kconfig ]; then
115 -               continue;
116 -       fi;
117 -       MPTLINUX_IPATH=/lib/modules/${kernel}/kernel/drivers/message/fusion
118 -       mkdir -p $RPM_BUILD_ROOT/lib/modules/${kernel}/kernel/drivers/message/fusion
119 +               continue
120 +       fi
121 +       MPTLINUX_IPATH=/lib/modules/${kernel}/updates/drivers/message/fusion
122 +       mkdir -p $RPM_BUILD_ROOT/lib/modules/${kernel}/{kernel,updates}/drivers/message/fusion
123  
124         # create the file list used in %files to indicate which files are in package
125         for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
126 -               echo "$MPTLINUX_IPATH/${driver_name}.new" >> $RPM_BUILD_DIR/file.list.%{name}
127 -       done;
128 +               echo "$MPTLINUX_IPATH/${driver_name}" >> $RPM_BUILD_DIR/file.list.%{name}-modules
129 +       done
130  
131         make install PREFIX=$RPM_BUILD_ROOT KERNEL=$kernel
132 -
133 -       for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
134 -               mv -f $RPM_BUILD_ROOT/$MPTLINUX_IPATH/${driver_name} \
135 -                       $RPM_BUILD_ROOT/$MPTLINUX_IPATH/${driver_name}.new
136 -       done;
137 -done;
138 -
139 -# pre #########################################################################
140 -%pre
141 -echo pre %{version}
142 -system_arch=`uname -m`
143 -if [ -f /etc/SuSE-release ] && [ ${system_arch} == i686 ]; then
144 -       system_arch=i586;
145 -fi;
146 -if [ %{_target_cpu} != ${system_arch} ]; then
147 -       echo "ERROR: Failed installing this rpm!!!!"
148 -       echo "This rpm is intended for %{_target_cpu} platform. It seems your system is ${system_arch}.";
149 -       exit 1;
150 -fi;
151 +       # the Makefile hardcodes the destination path to
152 +       # $(PREFIX)/lib/modules/$(KERNEL)/kernel/drivers/message/fusion
153 +       # so lets move these to where they really go
154 +       # ideally, the Makefile should take this location as an (optional if you
155 +       # wish) argument
156 +       mv -f $RPM_BUILD_ROOT/lib/modules/${kernel}/kernel/drivers/message/fusion/* \
157 +             $RPM_BUILD_ROOT/$MPTLINUX_IPATH/
158 +done
159 +fi
160  
161  # post #########################################################################
162 -%post
163 +%post modules
164  echo post %{version}
165  chkconfig fusion.mptctl --add >/dev/null 2>&1
166  if [ -f /etc/redhat-release ]; then
167         # RHEL 4
168 -       if [ -f /etc/modprobe.conf ] ; then
169 -               cp /etc/modprobe.conf /etc/modprobe.conf.orig.%{version};
170 -               sed -e '/mptbase/d' /etc/modprobe.conf > modprobe.edit;
171 -               sed -e '/mptscsih/d' modprobe.edit > modprobe.edit.1;
172 -               sed -e '/mptspi/d' modprobe.edit.1 > modprobe.edit.2;
173 -               sed -e '/mptfc/d' modprobe.edit.2 > modprobe.edit.3;
174 -               sed -e '/mptsas/d' modprobe.edit.3 > modprobe.edit;
175 -               echo "alias scsi_hostadapter mptspi" >> modprobe.edit;
176 -               echo "alias scsi_hostadapter1 mptfc" >> modprobe.edit;
177 -               echo "alias scsi_hostadapter2 mptsas" >> modprobe.edit;
178 -               mv -f modprobe.edit /etc/modprobe.conf;
179 -               rm -fr modprobe.edit.*;
180 -       fi;
181 +       # per the comments below, i can't see any modprobe.conf editing here that's
182 +       # valid
183 +       #if [ -f /etc/modprobe.conf ] ; then
184 +       #       cp /etc/modprobe.conf /etc/modprobe.conf.orig.mptlinux-%{version}
185 +               # i don't think this is kosher.  what sort of entries are
186 +               # being deleted here?
187 +               #sed -e '/mptbase/d' -e '/mptscsih/d' -e '/mptspi/d' \
188 +               #    -e '/mptfc/d' -e '/mptsas/d' /etc/modprobe.conf > /etc/modprobe.edit
189 +               # this really isn't kosher.  you can't assume that the
190 +               # administrator has not already defined the scsi_hostadapter
191 +               # aliases for some other HBA that's already in the system
192 +               #echo "alias scsi_hostadapter mptspi" >> /etc/modprobe.edit
193 +               #echo "alias scsi_hostadapter1 mptfc" >> /etc/modprobe.edit
194 +               #echo "alias scsi_hostadapter2 mptsas" >> /etc/modprobe.edit
195 +               #mv -f /etc/modprobe.edit /etc/modprobe.conf
196 +       #fi
197 +       :
198  elif [ -f /etc/SuSE-release ]; then
199         # SLES 9
200         if [ -f /etc/sysconfig/kernel ] ; then
201 -               cp /etc/sysconfig/kernel /etc/sysconfig/kernel.orig.%{version};
202 -               sed -e 's/mptscsih//g' /etc/sysconfig/kernel > kernel.edit;
203 -               sed -e 's/mptsas//g' kernel.edit > kernel.edit.1;
204 -               sed -e 's/mptfc//g' kernel.edit.1 > kernel.edit.2;
205 -               sed -e 's/mptspi//g' kernel.edit.2 > kernel.edit.3;
206 -               sed -e 's/INITRD_MODULES="/INITRD_MODULES="mptsas /g' kernel.edit.3 > kernel.edit.4;
207 -               sed -e 's/INITRD_MODULES="/INITRD_MODULES="mptfc /g' kernel.edit.4 > kernel.edit.5;
208 -               sed -e 's/INITRD_MODULES="/INITRD_MODULES="mptspi /g' kernel.edit.5 > kernel.edit;
209 -               mv -f kernel.edit /etc/sysconfig/kernel;
210 -               rm -fr kernel.edit.*;
211 -       fi;
212 +               cp /etc/sysconfig/kernel /etc/sysconfig/kernel.orig.mptlinux-%{version}
213 +               sed -e 's/mptscsih//g' -e 's/mptsas//g' -e 's/mptfc//g' \
214 +                   -e 's/mptspi//g' \
215 +                   -e 's/INITRD_MODULES="/INITRD_MODULES="mptsas /g' \
216 +                   -e 's/INITRD_MODULES="/INITRD_MODULES="mptfc /g' \
217 +                   -e 's/INITRD_MODULES="/INITRD_MODULES="mptspi /g' \
218 +                   /etc/sysconfig/kernel > /etc/sysconfig/kernel.edit
219 +               mv -f /etc/sysconfig/kernel.edit /etc/sysconfig/kernel
220 +       fi
221  fi
222  
223  # adding device nodes
224  if [ ! -e /dev/mptctl ]; then
225 -       echo "Creating /dev/mptctl ioctl node file";
226 -       mknod /dev/mptctl c 10 220;
227 -fi;
228 +       echo "Creating /dev/mptctl ioctl node file"
229 +       mknod /dev/mptctl c 10 220
230 +fi
231  
232 +# i think this is wrong.  we should not muck around with kernels we did not
233 +# install new drivers into.  but how to determine which kernels those are?
234 +# maybe look for the new driver in the /lib/modules/*/updates tree?
235  for i in /lib/modules/2.6.*; do
236 -       kernel=`basename ${i}`;
237 -       MPTLINUX_IPATH=/lib/modules/${kernel}/kernel/drivers/message/fusion
238 -       if [ ! -e $MPTLINUX_IPATH/mptbase.ko ] || \
239 -           [ ! -e $MPTLINUX_IPATH/mptbase.ko.new ]; then
240 -               continue;
241 -       fi;
242 +       kernel=`basename ${i}`
243  
244         if [ -f /etc/SuSE-release ] &&
245             [ ! -e /boot/initrd-${kernel} ]; then
246 -               continue;
247 -       fi;
248 +               continue
249 +       fi
250  
251 -       echo "The mpt driver for kernel ${kernel} is now version 4.18.20.04";
252 -       #backup original fusion drivers here if not already done
253 -       for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
254 -               if [ ! -e $MPTLINUX_IPATH/${driver_name}.orig ]; then
255 -                       cp $MPTLINUX_IPATH/${driver_name} \
256 -                               $MPTLINUX_IPATH/${driver_name}.orig
257 -               fi;
258 -               cp -f $MPTLINUX_IPATH/${driver_name}.new $MPTLINUX_IPATH/${driver_name}
259 -       done;
260 +       echo "The mpt driver for kernel ${kernel} is now version 4.18.20.04"
261         # Remake the initrd image for the user, depending on their OS
262         if [ -f /etc/redhat-release ]; then
263 -
264 -               # taking care of dud migration, by moving all the ko's to ko.orig
265 -               for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
266 -                       MPTLINUX_IPATH=/lib/modules/${kernel}/updates
267 -                       if [ -e $MPTLINUX_IPATH/${driver_name} ]; then
268 -                               mv $MPTLINUX_IPATH/${driver_name} \
269 -                                   $MPTLINUX_IPATH/${driver_name}.orig
270 -                       fi;
271 -               # to handle kmods partially need to handle week updates
272 -                       MPTLINUX_KPATH=/lib/modules/${kernel}/extra/mptbase
273 -                       if [ -e $MPTLINUX_KPATH/${driver_name} ]; then
274 -                               mv $MPTLINUX_KPATH/${driver_name} \
275 -                                   $MPTLINUX_KPATH/${driver_name}.orig
276 -                       fi;
277 -               done;
278 -
279                 # RHEL 4
280                 if [ -d /boot/efi/efi/redhat ]; then
281 -                       bootpart=/boot/efi/efi/redhat;
282 +                       bootpart=/boot/efi/efi/redhat
283                 elif [ -d /boot/efi ]; then
284 -                       bootpart=/boot/efi;
285 +                       bootpart=/boot/efi
286                 else
287 -                       bootpart=/boot;
288 +                       bootpart=/boot
289                 fi
290                 if [ ! -e ${bootpart}/initrd-${kernel}.img.orig ]; then
291                         echo Saving initrd-${kernel}.img in ${bootpart} directory.
292                         cp ${bootpart}/initrd-${kernel}.img \
293 -                           ${bootpart}/initrd-${kernel}.img.orig
294 -               fi;
295 +                           ${bootpart}/initrd-${kernel}.img.orig.mptlinux-%{version}
296 +               fi
297                 # Calling depmod
298 -               depmod -v ${kernel} > /dev/null 2>&1;
299 +               depmod -v ${kernel} > /dev/null 2>&1
300                 mkinitrd -f ${bootpart}/initrd-${kernel}.img ${kernel}
301         elif [ -f /etc/SuSE-release ]; then
302                 # SLES 9
303                 if [ ! -e /boot/initrd-${kernel}.orig ]; then
304                         echo Saving initrd-${kernel} in /boot directory.
305 -                       cp /boot/initrd-${kernel} /boot/initrd-${kernel}.orig
306 -               fi;
307 +                       cp /boot/initrd-${kernel} /boot/initrd-${kernel}.orig.mptlinux-%{version}
308 +               fi
309                 # Calling depmod
310 -               depmod -v ${kernel} > /dev/null 2>&1;
311 +               depmod -v ${kernel} > /dev/null 2>&1
312                 mk_initrd -k vmlinuz-${kernel} -i /boot/initrd-${kernel}
313 -       fi;
314 -done;
315 +       fi
316 +done
317  echo -e "post Install Done."
318  
319  # postun #######################################################################
320 -%postun
321 +%postun modules
322  echo postun %{version}
323  for i in /lib/modules/2.6.*; do
324 -       kernel=`basename ${i}`;
325 -       MPTLINUX_IPATH=/lib/modules/${kernel}/kernel/drivers/message/fusion
326 -       if [ ! -e $MPTLINUX_IPATH/mptbase.ko ] || \
327 -           [ -e $MPTLINUX_IPATH/mptbase.ko.new ]; then
328 -               continue;
329 -       fi;
330 +       kernel=`basename ${i}`
331 +       MPTLINUX_IPATH=/lib/modules/${kernel}/updates/drivers/message/fusion
332 +       if [ ! -e $MPTLINUX_IPATH/mptbase.ko ]; then
333 +               continue
334 +       fi
335         if [ ! -e /etc/init.d/fusion.mptctl ]; then
336 +               # why are we only doing this if the fustion.mptctl file
337 +               # *doesn't* exist?  running chkconfig on a file that doesn't
338 +               # exist is surely an error
339 +               #chkconfig fusion.mptctl --del >/dev/null 2>&1
340 +               :
341 +       else
342                 chkconfig fusion.mptctl --del >/dev/null 2>&1
343 -       fi;
344 -       if [ -f /etc/modprobe.conf.orig ]; then
345 +       fi
346 +
347 +       if [ -f /etc/modprobe.conf.orig.mptlinux-%{version} ]; then
348                 # RHEL 4
349 -               mv -f /etc/modprobe.conf.orig /etc/modprobe.conf;
350 -       elif [ -f /etc/sysconfig/kernel.orig ]; then
351 +               mv -f /etc/modprobe.conf.orig.mptlinux-%{version} /etc/modprobe.conf
352 +       elif [ -f /etc/sysconfig/kernel.orig.mptlinux-%{version} ]; then
353                 # SLES 9
354 -               mv -f /etc/sysconfig/kernel.orig /etc/sysconfig/kernel;
355 -       fi;
356 -       for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
357 -               if [ -f $MPTLINUX_IPATH/${driver_name}.orig ]; then
358 -                       mv -f $MPTLINUX_IPATH/${driver_name}.orig $MPTLINUX_IPATH/${driver_name}
359 -               fi;
360 -       done;
361 +               mv -f /etc/sysconfig/kernel.orig.mptlinux-%{version} /etc/sysconfig/kernel
362 +       fi
363         # restore original initrd images
364 +       # i don't think this is a good idea.  lots of stuff may have happened
365 +       # to the system between the time this backup was made and now that
366 +       # renders the original initrd images useless now
367 +       # probably should just generate new ones
368         if [ -f /etc/redhat-release ]; then
369  
370 -               # restoring the state of dud migration
371 -               for driver_name in mptbase.ko mptscsih.ko mptctl.ko mptlan.ko mptspi.ko mptfc.ko mptsas.ko; do
372 -                       MPTLINUX_IPATH=/lib/modules/${kernel}/udpates
373 -                       if [ -f $MPTLINUX_IPATH/${driver_name}.orig ]; then
374 -                               mv -f $MPTLINUX_IPATH/${driver_name}.orig $MPTLINUX_IPATH/${driver_name}
375 -                       fi;
376 -                       MPTLINUX_KPATH=/lib/modules/${kernel}/extra/mptbase
377 -                       if [ -e $MPTLINUX_KPATH/${driver_name}.orig ]; then
378 -                               mv -f $MPTLINUX_KPATH/${driver_name}.orig $MPTLINUX_KPATH/${driver_name}
379 -                       fi;
380 -               done;
381 -
382                 # RHEL 4
383                 if [ -d /boot/efi/efi/redhat ]; then
384 -                       bootpart=/boot/efi/efi/redhat;
385 +                       bootpart=/boot/efi/efi/redhat
386                 elif [ -d /boot/efi ]; then
387 -                       bootpart=/boot/efi;
388 +                       bootpart=/boot/efi
389                 else
390 -                       bootpart=/boot;
391 +                       bootpart=/boot
392                 fi
393 -               if [ -f ${bootpart}/initrd-${kernel}.img.orig ]; then
394 -                       mv -f ${bootpart}/initrd-${kernel}.img.orig ${bootpart}/initrd-${kernel}.img;
395 -               fi;
396 +               #if [ -f ${bootpart}/initrd-${kernel}.img.orig.mptlinux-%{version} ]; then
397 +               #       mv -f ${bootpart}/initrd-${kernel}.img.orig.mptlinux-%{version} ${bootpart}/initrd-${kernel}.img
398 +               #fi
399 +               # Calling depmod
400 +               depmod -v ${kernel} > /dev/null 2>&1
401 +               mkinitrd -f ${bootpart}/initrd-${kernel}.img ${kernel}
402         elif [ -f /etc/SuSE-release ]; then
403                 # SLES 9
404 -               if [ -f /boot/initrd-${kernel}.orig ]; then
405 -                       mv -f /boot/initrd-${kernel}.orig /boot/initrd-${kernel};
406 -               fi;
407 -       fi;
408 -       depmod -v ${kernel} > /dev/null 2>&1;
409 -done;
410 +               #if [ -f /boot/initrd-${kernel}.orig.mptlinux-%{version} ]; then
411 +               #       mv -f /boot/initrd-${kernel}.orig.mptlinux-%{version} /boot/initrd-${kernel}
412 +               #fi
413 +               # Calling depmod
414 +               depmod -v ${kernel} > /dev/null 2>&1
415 +               mk_initrd -k vmlinuz-${kernel} -i /boot/initrd-${kernel}
416 +       fi
417 +done
418  echo -e "Uninstall Done."
419  
420  # files ########################################################################
421  %files -f ../file.list.%{name}
422 +%files modules -f ../file.list.%{name}-modules
423  
424  # changelog  ###################################################################
425  %changelog
426 +* Fri Jun 11 2010 Brian J. Murrell <brian.murrell@oracle.com>
427 + - update to 4.18.20.04
428 +* Wed Oct 28 2009 Brian J. Murrell <Brian.Murrell@Sun.COM>
429 + - split into modules and non-modules packages so that multiple
430 +   modules packages can be installed, for several kernels
431 + - don't fiddle with files once RPM has installed them
432 + - put modules into the updates tree under the modules dir, where
433 +   they belong
434 + - don't use the "orig" initrd, but generate a new one on removal
435 +   + the orig initrd could very well no longer be suitable
436 + - don't edit the modprobe.conf file as that's a job for the admin
437 +   + we really can't assume which other scsi_host_adapters are in
438 +     the machine and what position we are to take relative to them
439  * Tue Apr 24 2007 Eric Moore <Eric.Moore@lsi.com>
440   - Fix RHEL5 DUD to RPM migration
441  * Tue Apr 17 2007 Eric Moore <Eric.Moore@lsi.com>