Whamcloud - gitweb
b=17485 Don't reset the lov_objid to last_id sent by OST
[fs/lustre-release.git] / lustre.spec.in
1 # lustre.spec
2 %{!?version: %define version @VERSION@}
3 %{!?kversion: %define kversion @LINUXRELEASE@}
4 %{!?release: %define release @RELEASE@}
5 %{!?lustre_name: %define lustre_name lustre}
6 %{!?build_lustre_tests: %define build_lustre_tests 1}
7
8 # in order to get kernel symset and/or kernel module dependencies into
9 # the RPM, in order to support weak-modules, the internal dependency gen-
10 # erator needs to be disabled
11 # this is done with (reduce the double % down to a single %):
12 #
13 # %%global _use_internal_dependency_generator 0
14 #
15 # on SLES10, /usr/lib/rpm/macros already sets this, so no harm in also
16 # defining it here (until Suse changes their mind)
17 #
18 # on RHEL5, however, we do need to explicitly disable the internal dep-
19 # endency generator and allow the external one be used
20 # but since RedHat's kABI is only a subset of the total kernel ABI, it
21 # doesn't include all of the symbols we (or OFED for that matter) need
22 # until RedHat includes all of the symbols we need in their symsets we
23 # cannot support weak-modules
24 # we did e-mail the maintainer of all of this stuff @redhat but got no
25 # response from them
26 #%%global _use_internal_dependency_generator 0
27
28 %define is_client %(bash -c "if [[ %{lustre_name} = *-client ]]; then echo -n '1'; else echo -n '0'; fi")
29 # for those uses that don't want the -smp/-bigsmp on the end of %kversion
30 %define krequires %(bash -c "echo %{kversion} | sed -e 's/.x86_64$//' -e 's/.i586$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//'")
31
32 Summary: Lustre File System
33 Name: %{lustre_name}
34 Version: %{version}
35 Release: %{release}
36 License: GPL
37 Group: Utilities/System
38 Source: lustre-%{version}.tar.gz
39 URL: http://www.sun.com/software/products/lustre/index.xml
40 BuildRoot: %{_tmppath}/lustre-%{version}-root
41 Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre
42 Provides: lustre-lite = %{version}, lustre-lite-utils = %{version}
43 Requires: %{name}-modules = %{version}
44 # GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10
45
46 %description
47 Userspace tools and files for the Lustre file system.
48
49 %package modules
50 Summary: Kernel Lustre modules for Linux %{kversion}
51 Requires: modutils >= 2.4.10, kernel = %{krequires}
52 Group: Development/Kernel
53
54 %description modules
55 Lustre file system, server and network drivers for Linux %{kversion}.
56
57 %package source
58 Summary: Object-Based Disk storage driver source
59 Group: Development/Kernel
60
61 %description source
62 Lustre sources for further development
63
64 # Since the RPMs we ship are to be used on both SLES and RHEL, we
65 # can't include any dependency information (since the package names
66 # are different on the two platforms).
67 #
68 # Instead, we can build these empty meta-packages that only include
69 # dependency information.  These let people get the correct
70 # dependencies for their platform and lets them use tools like yum and
71 # red carpet to install the correct files.
72 #
73 # Unfortunately I have not seen this come up on the lists much, so I
74 # have disabled them (by commenting out their empty files section
75 # below) until it's clear that they resolve more confusion than they
76 # add.
77
78 %package deps-sles
79 Summary: Lustre dependencies meta-package for SLES
80 Group: Utilities/System
81 Provides: lustre-deps = %{version}
82 Requires: %{name} = %{version}, sles-release
83 Conflicts: %{name}-deps-rhel
84
85 %description deps-sles
86 This package has RPM dependencies appropriate for SLES systems.
87
88 %package deps-rhel
89 Summary: Lustre dependencies meta-package for RHEL
90 Group: Utilities/System
91 Provides: lustre-deps = %{version}
92 Requires: %{name} = %{version}, redhat-release
93 Conflicts: %{name}-deps-sles
94
95 %description deps-rhel
96 This package has RPM dependencies appropriate for RHEL, RHL, and FC
97 systems.
98
99 %package tests
100 Summary: Lustre testing framework
101 Group: Development/Kernel
102 Provides: %{name}-tests = %{version}
103 Requires: %{name} = %{version}, %{name}-modules = %{version}
104
105 %description tests
106 This package contains a set of test binaries and scripts that are intended
107 to be used by the Lustre testing framework.
108
109 %prep
110 %setup -qn lustre-%{version}
111 ln lustre/ChangeLog ChangeLog-lustre
112 ln lnet/ChangeLog ChangeLog-lnet
113
114 %build
115 # if RPM_BUILD_NCPUS unset, set it
116 if [ -z "$RPM_BUILD_NCPUS" ] ; then
117     RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat 2>/dev/null || echo 0 :)
118     if [ $RPM_BUILD_NCPUS -eq 0 ] ; then
119         RPM_BUILD_NCPUS=1
120     fi
121     if [ $RPM_BUILD_NCPUS -gt 8 ] ; then
122         RPM_BUILD_NCPUS=8
123     fi
124 fi
125
126 rm -rf $RPM_BUILD_ROOT
127
128 # Set an explicit path to our Linux tree, if we can.
129 cd $RPM_BUILD_DIR/lustre-%{version}
130 # override %optflags so that the vendor's overzealous flags don't create
131 # build failures
132 %define optflags -g -O2 -Werror
133 CONFIGURE_ARGS=""
134 %if %{build_lustre_tests}
135 CONFIGURE_ARGS="$CONFIGURE_ARGS --enable-tests --enable-liblustre-tests"
136 %else
137 CONFIGURE_ARGS="$CONFIGURE_ARGS --disable-tests --disable-liblustre-tests"
138 %endif
139 %configure %{?configure_args:%configure_args} $CONFIGURE_ARGS
140 make -j $RPM_BUILD_NCPUS -s
141
142 %install
143 make install DESTDIR=$RPM_BUILD_ROOT
144 # hack to avoid changing the libsysio code for "make install"
145 rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a
146 # Remove ldiskfs module(s) - they are packaged by the ldiskfs .spec.
147 rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre-ldiskfs
148
149 # hack to include the llog_test module in lustre-tests
150 llog_base=$RPM_BUILD_DIR/lustre-%{version}/lustre/obdclass/llog_test
151 if [ -e ${llog_base}.ko ]; then
152   cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre
153 elif [ -e ${llog_base}.o ]; then
154   cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre
155 fi
156
157 # Create the pristine source directory.
158 cd $RPM_BUILD_DIR/lustre-%{version}
159 mkdir -p $RPM_BUILD_ROOT/usr/src
160 rm -f lustre-source
161 ln -s $RPM_BUILD_ROOT/usr/src lustre-source
162 make distdir distdir=lustre-source/lustre-%{version}
163 chmod -R go-w lustre-source/lustre-%{version}
164
165 cat >lustre.files <<EOF
166 %attr(-, root, root) /sbin/mount.lustre
167 %attr(-, root, root) /usr/sbin/*
168 %attr(-, root, root) /usr/bin/*
169
170 %attr(-, root, root) /usr/share/lustre
171
172 %attr(-, root, root) %{_libdir}/libptlctl.a
173 %attr(-, root, root) %{_libdir}/liblustreapi.a
174 %attr(-, root, root) /usr/include/lustre
175
176 %attr(-, root, root) %{_mandir}/man?/*
177
178 %attr(-, root, root) %{_libexecdir}/lustre/lc_common
179
180 %attr(-, root, root) %{_sysconfdir}/udev/rules.d/99-lustre.rules
181 EOF
182
183 if [ -f $RPM_BUILD_ROOT%{_libdir}/libcfsutil.a ] ; then
184   echo '%attr(-, root, root) %{_libdir}/libcfsutil.a' >>lustre.files
185 fi
186
187 if [ -f $RPM_BUILD_ROOT%{_libdir}/liblustre.so ] ; then
188   echo '%attr(-, root, root) %{_libdir}/liblustre.a' >>lustre.files
189   echo '%attr(-, root, root) %{_libdir}/liblustre.so' >>lustre.files
190 fi
191
192 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/utils/libiam.c ] ; then
193   echo '%attr(-, root, root) %{_libdir}/libiam.a' >>lustre.files
194 fi
195
196 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then
197   echo '%attr(-, root, root) %{_libdir}/lustre/snmp' >>lustre.files
198   echo '%attr(-, root, root) %{_datadir}/lustre/snmp/mibs' >>lustre.files
199 fi
200
201 # Have universal lustre headers 
202 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/lustre/lustre_idl.h ] ; then
203   echo '%attr(-, root, root) /usr/include/linux/lustre_user.h' >>lustre.files
204 else
205   echo '%attr(-, root, root) /usr/include/linux/lustre_idl.h' >>lustre.files
206 fi
207
208 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/linux/lustre_types.h ] ; then
209   echo '%attr(-, root, root) /usr/include/linux/lustre_types.h' >>lustre.files
210 fi
211
212 %if %{build_lustre_tests}
213 echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files
214 echo '%attr(-, root, root) /lib/modules/%{kversion}/kernel/fs/lustre/llog_test.*' >>lustre-tests.files
215 modules_excludes="|llog_test"
216 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then
217   echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files
218 fi
219 %endif
220
221 pushd $RPM_BUILD_ROOT >/dev/null
222 find lib/modules/%{kversion}/kernel -type f | awk "!/(ZZZZZZZZZZ$modules_excludes)/ {print \"%attr(-, root, root) /\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files
223 popd >/dev/null
224
225 %files -f lustre.files
226
227 %files modules -f lustre-modules.files
228 %attr(-, root, root) %doc COPYING
229 %attr(-, root, root) %doc ChangeLog-lustre
230 %attr(-, root, root) %doc ChangeLog-lnet
231
232 %files source
233 %attr(-, root, root) /usr/src/lustre-%{version}
234
235 # uncomment these lines to enable deps packages
236 # %files deps-sles
237 # %files deps-rhel
238
239 %if %{build_lustre_tests}
240 %files tests -f lustre-tests.files
241 %endif
242
243 %post modules
244 if [ -f /boot/System.map-%{kversion} ]; then
245         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
246 else
247         depmod -ae %{kversion} || exit 0
248 fi
249 cat <<EOF
250 Congratulations on finishing your Lustre installation!  To register  
251 your copy of Lustre and find out more about Lustre Support, Service,  
252 and Training offerings please visit
253
254 http://www.sun.com/software/products/lustre/lustre_reg.jsp
255 EOF
256
257 # for update from < v1.4.6
258
259 for f in /etc/modules.conf /etc/modprobe.conf /etc/modprobe.conf.local ; 
260 do
261         if [ -f $f ]; then
262                 if grep 'lustre llite' $f >/dev/null 2>/dev/null ; then
263                         [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
264                         TMPFILE=`mktemp $f.XXXXXX` && \
265                         rm -f $TMPFILE && touch $TMPFILE && \
266                         grep -v 'lustre llite' $f >> $TMPFILE && \
267                         mv $TMPFILE $f
268                 fi
269                 if egrep "^[^#]*(add below|install) ptlrpc" $f ; then
270                         [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
271                         TMPFILE=`mktemp $f.XXXXXX` && \
272                         rm -f $TMPFILE && touch $TMPFILE && \
273                         sed -e "s/^[^#]*\(add below\|install\) ptlrpc.*/#&/" $f >> $TMPFILE && \
274                         mv $TMPFILE $f
275                 fi
276         fi
277 done
278
279 # If the kernel was built to reject unsupported modules (e.g. not a Lustre
280 # kernel), and this hasn't been overridden in /etc/modprobe.d yet, then
281 # print a warning so that users are aware of this issue.
282 if sysctl kernel.unsupported >/dev/null 2>&1 &&
283    [ "$(sysctl -n kernel.unsupported 2>/dev/null)" = "0" ] &&
284     ! modprobe -c | grep -q "^allow_unsupported_modules[ \t]1" ; then
285      echo "
286      warning: the Lustre modules are not supported by Novell. To use Lustre
287               on this system, you should put
288
289      allow_unsupported_modules 1
290
291      into /etc/modprobe.d/unsupported_modules"
292 fi
293
294 %postun modules
295 if [ -f /boot/System.map-%{kversion} ]; then
296         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
297 else
298         depmod -ae %{kversion} || exit 0
299 fi
300
301 %if %{build_lustre_tests}
302 %post tests
303 if [ -f /boot/System.map-%{kversion} ]; then
304         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
305 else
306         depmod -ae %{kversion} || exit 0
307 fi
308
309 %postun tests
310 if [ -f /boot/System.map-%{kversion} ]; then
311         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
312 else
313         depmod -ae %{kversion} || exit 0
314 fi
315 %endif
316
317 %clean
318 rm -rf $RPM_BUILD_ROOT