Whamcloud - gitweb
381ba08391ef2278023734b8082eb458ef599fa7
[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
9 Summary: Lustre File System
10 Name: %{lustre_name}
11 Version: %{version}
12 Release: %{release}
13 License: GPL
14 Group: Utilities/System
15 Source: lustre-%{version}.tar.gz
16 URL: http://www.sun.com/software/products/lustre/index.xml
17 BuildRoot: %{_tmppath}/lustre-%{version}-root
18 Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre
19 Provides: lustre-lite = %{version}, lustre-lite-utils = %{version}
20 Requires: %{name}-modules = %{version}
21 # GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10
22
23 %description
24 Userspace tools and files for the Lustre file system.
25
26 %package modules
27 Summary: Kernel Lustre modules for Linux %{kversion}
28 Requires: modutils >= 2.4.10, kernel = %{kversion}
29 Group: Development/Kernel
30
31 %description modules
32 Lustre file system, server and network drivers for Linux %{kversion}.
33
34 %if ! %{is_client}
35 %package source
36 Summary: Object-Based Disk storage driver source
37 Group: Development/Kernel
38
39 %description source
40 Lustre sources for further development
41 %endif
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
91 %build
92 # if RPM_BUILD_NCPUS unset, set it
93 if [ -z "$RPM_BUILD_NCPUS" ] ; then
94     RPM_BUILD_NCPUS=$(egrep -c "^cpu[0-9]+" /proc/stat 2>/dev/null || echo 0 :)
95     if [ $RPM_BUILD_NCPUS -eq 0 ] ; then
96         RPM_BUILD_NCPUS=1
97     fi
98     if [ $RPM_BUILD_NCPUS -gt 8 ] ; then
99         RPM_BUILD_NCPUS=8
100     fi
101 fi
102
103 rm -rf $RPM_BUILD_ROOT
104
105 # Set an explicit path to our Linux tree, if we can.
106 cd $RPM_BUILD_DIR/lustre-%{version}
107 ./configure @ac_configure_args@ %{?configure_flags:configure_flags} \
108         --sysconfdir=%{_sysconfdir} \
109         --mandir=%{_mandir} \
110         --libdir=%{_libdir}
111 make -j $RPM_BUILD_NCPUS -s
112
113 %install
114 make install DESTDIR=$RPM_BUILD_ROOT
115 # hack to avoid changing the libsysio code for "make install"
116 rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a
117 # Remove ldiskfs module(s) - they are packaged by the ldiskfs .spec.
118 rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre-ldiskfs
119
120 # hack to include the llog_test module in lustre-tests
121 llog_base=$RPM_BUILD_DIR/lustre-%{version}/lustre/obdclass/llog_test
122 if [ -e ${llog_base}.ko ]; then
123   cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre
124 elif [ -e ${llog_base}.o ]; then
125   cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/kernel/fs/lustre
126 fi
127
128 # Create the pristine source directory.
129 cd $RPM_BUILD_DIR/lustre-%{version}
130 mkdir -p $RPM_BUILD_ROOT/usr/src
131 rm -f lustre-source
132 ln -s $RPM_BUILD_ROOT/usr/src lustre-source
133 make distdir distdir=lustre-source/lustre-%{version}
134 chmod -R go-w lustre-source/lustre-%{version}
135
136 cat >lustre.files <<EOF
137 %attr(-, root, root) /sbin/mount.lustre
138 %attr(-, root, root) /usr/sbin/*
139 %attr(-, root, root) /usr/bin/*
140
141 %attr(-, root, root) /usr/share/lustre
142
143 %attr(-, root, root) %{_libdir}/libptlctl.a
144 %attr(-, root, root) %{_libdir}/liblustreapi.a
145 %attr(-, root, root) /usr/include/lustre
146
147 %attr(-, root, root) %{_mandir}/man?/*
148
149 %attr(-, root, root) %{_libdir}/lustre/lc_common
150 EOF
151
152 if [ -f $RPM_BUILD_ROOT%{_libdir}/libcfsutil.a ] ; then
153   echo '%attr(-, root, root) %{_libdir}/libcfsutil.a' >>lustre.files
154 fi
155
156 if [ -f $RPM_BUILD_ROOT%{_libdir}/liblustre.so ] ; then
157   echo '%attr(-, root, root) %{_libdir}/liblustre.a' >>lustre.files
158   echo '%attr(-, root, root) %{_libdir}/liblustre.so' >>lustre.files
159 fi
160
161 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/utils/libiam.c ] ; then
162   echo '%attr(-, root, root) %{_libdir}/libiam.a' >>lustre.files
163 fi
164
165 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/snmp ] ; then
166   echo '%attr(-, root, root) %{_libdir}/lustre/snmp' >>lustre.files
167   echo '%attr(-, root, root) %{_datadir}/lustre/snmp/mibs' >>lustre.files
168 fi
169
170 # Have universal lustre headers 
171 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/lustre/lustre_idl.h ] ; then
172   echo '%attr(-, root, root) /usr/include/linux/lustre_user.h' >>lustre.files
173 else
174   echo '%attr(-, root, root) /usr/include/linux/lustre_idl.h' >>lustre.files
175 fi
176
177 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/linux/lustre_types.h ] ; then
178   echo '%attr(-, root, root) /usr/include/linux/lustre_types.h' >>lustre.files
179 fi
180
181 echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files
182 echo '%attr(-, root, root) /lib/modules/%{kversion}/kernel/fs/lustre/llog_test.*' >>lustre-tests.files
183 modules_excludes="llog_test"
184 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then
185   echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files
186 fi
187
188 pushd $RPM_BUILD_ROOT >/dev/null
189 find lib/modules/%{kversion}/kernel -type f | awk "!/($modules_excludes)/ {print \"/\"\$0}" >>$RPM_BUILD_DIR/lustre-%{version}/lustre-modules.files
190 popd >/dev/null
191
192 %files -f lustre.files
193
194 %files modules -f lustre-modules.files
195 %attr(-, root, root) %doc COPYING
196
197 %if ! %{is_client}
198 %files source
199 %attr(-, root, root) /usr/src/lustre-%{version}
200 %endif
201
202 # uncomment these lines to enable deps packages
203 # %files deps-sles
204 # %files deps-rhel
205
206 %files tests -f lustre-tests.files
207
208 %post modules
209 if [ -f /boot/System.map-%{kversion} ]; then
210         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
211 else
212         depmod -ae %{kversion} || exit 0
213 fi
214 cat <<EOF
215 Congratulations on finishing your Lustre installation!  To register  
216 your copy of Lustre and find out more about Lustre Support, Service,  
217 and Training offerings please visit
218
219 http://www.sun.com/software/products/lustre/lustre_reg.jsp
220 EOF
221
222 # for update from < v1.4.6
223
224 for f in /etc/modules.conf /etc/modprobe.conf /etc/modprobe.conf.local ; 
225 do
226         if [ -f $f ]; then
227                 if grep 'lustre llite' $f >/dev/null 2>/dev/null ; then
228                         [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
229                         TMPFILE=`mktemp $f.XXXXXX` && \
230                         rm -f $TMPFILE && touch $TMPFILE && \
231                         grep -v 'lustre llite' $f >> $TMPFILE && \
232                         mv $TMPFILE $f
233                 fi
234                 if egrep "^[^#]*(add below|install) ptlrpc" $f ; then
235                         [ ! -f $f.rpmsave ] && cp $f $f.rpmsave
236                         TMPFILE=`mktemp $f.XXXXXX` && \
237                         rm -f $TMPFILE && touch $TMPFILE && \
238                         sed -e "s/^[^#]*\(add below\|install\) ptlrpc.*/#&/" $f >> $TMPFILE && \
239                         mv $TMPFILE $f
240                 fi
241         fi
242 done
243
244 %postun modules
245 if [ -f /boot/System.map-%{kversion} ]; then
246         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
247 else
248         depmod -ae %{kversion} || exit 0
249 fi
250
251 %post tests
252 if [ -f /boot/System.map-%{kversion} ]; then
253         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
254 else
255         depmod -ae %{kversion} || exit 0
256 fi
257
258 %postun tests
259 if [ -f /boot/System.map-%{kversion} ]; then
260         depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
261 else
262         depmod -ae %{kversion} || exit 0
263 fi
264
265 %clean
266 rm -rf $RPM_BUILD_ROOT