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