be2net: backport fixes for RHEL 7.2
[~emulex/tmp/compat-rdma/.git] / compat-rdma.spec
1 #
2 # Copyright (c) 2012 Mellanox Technologies. All rights reserved.
3 #
4 # This Software is licensed under one of the following licenses:
5 #
6 # 1) under the terms of the "Common Public License 1.0" a copy of which is
7 #    available from the Open Source Initiative, see
8 #    http://www.opensource.org/licenses/cpl.php.
9 #
10 # 2) under the terms of the "The BSD License" a copy of which is
11 #    available from the Open Source Initiative, see
12 #    http://www.opensource.org/licenses/bsd-license.php.
13 #
14 # 3) under the terms of the "GNU General Public License (GPL) Version 2" a
15 #    copy of which is available from the Open Source Initiative, see
16 #    http://www.opensource.org/licenses/gpl-license.php.
17 #
18 # Licensee has the right to choose one of the above licenses.
19 #
20 # Redistributions of source code must retain the above copyright
21 # notice and one of the license notices.
22 #
23 # Redistributions in binary form must reproduce both the above copyright
24 # notice, one of the license notices in the documentation
25 # and/or other materials provided with the distribution.
26 #
27 #
28
29 %{!?configure_options: %define configure_options %{nil}}
30
31 %{!?KVERSION: %define KVERSION %(uname -r)}
32 %define krelver %(echo -n %{KVERSION} | sed -e 's/-/_/g')
33
34 %global WITH_SYSTEMD %(if ( test -d "/lib/systemd/system" > /dev/null || test -d "%{_prefix}/lib/systemd/system" > /dev/null); then echo -n '1'; else echo -n '0'; fi)
35
36 # Select packages to build
37 # Kernel module packages to be included into compat-rdma
38
39 %define build_mthca %(if ( echo %{configure_options} | grep "with-mthca-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
40 %define build_qib %(if ( echo %{configure_options} | grep "with-qib-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
41 %define build_ipath %(if ( echo %{configure_options} | grep "with-ipath_inf-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
42 %define build_ehca %(if ( echo %{configure_options} | grep "with-ehca-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
43 %define build_ipoib %(if ( echo %{configure_options} | grep "with-ipoib-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
44 %define build_sdp %(if ( echo %{configure_options} | grep "with-sdp-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
45 %define build_srp %(if ( echo %{configure_options} | grep "with-srp-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
46 %define build_srpt %(if ( echo %{configure_options} | grep "with-srp-target-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
47 %define build_iser %(if ( echo %{configure_options} | grep "with-iser-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
48 %define build_oiscsi %(if ( echo %{configure_options} | grep "with-iscsi-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
49 %define build_rds %(if ( echo %{configure_options} | grep "with-rds-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
50 %define build_cxgb3 %(if ( echo %{configure_options} | grep "with-cxgb3-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
51 %define build_cxgb4 %(if ( echo %{configure_options} | grep "with-cxgb4-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
52 %define build_nes %(if ( echo %{configure_options} | grep "with-nes-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
53 %define build_mlx4 %(if ( echo %{configure_options} | grep "with-mlx4-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
54 %define build_mlx5 %(if ( echo %{configure_options} | grep "with-mlx5-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
55 %define build_mlx4_en %(if ( echo %{configure_options} | grep "with-mlx4_en-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
56 %define build_qlgc_vnic %(if ( echo %{configure_options} | grep "with-qlgc_vnic-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
57 %define build_nfsrdma %(if ( echo %{configure_options} | grep "with-nfsrdma-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
58 %define build_ocrdma %(if ( echo %{configure_options} | grep "with-ocrdma-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
59 %define build_ibp_server %(if ( echo %{configure_options} | grep "with-ibp-server-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
60 %define build_ibscif %(if ( echo %{configure_options} | grep "with-ibscif-mod" > /dev/null ); then echo -n '1'; else echo -n '0'; fi)
61
62 %{!?LIB_MOD_DIR: %define LIB_MOD_DIR /lib/modules/%{KVERSION}/updates}
63
64 %{!?RDMA_CONF_DIR: %define RDMA_CONF_DIR /etc/infiniband}
65 %{!?MLXNET_CONF_DIR: %define MLXNET_CONF_DIR /etc/mlxethernet}
66
67 %{!?K_SRC: %define K_SRC /lib/modules/%{KVERSION}/source}
68 %{!?K_SRC_OBJ: %define K_SRC_OBJ /lib/modules/%{KVERSION}/build}
69
70 %{!?KERNEL_SOURCES: %define KERNEL_SOURCES /lib/modules/%{KVERSION}/source}
71
72 # Disable debugging
73 %define debug_package %{nil}
74 %define __check_files %{nil}
75
76 # Disable brp-lib64-linux
77 %ifarch x86_64 ia64
78 %define __arch_install_post %{nil}
79 %endif
80
81 %{!?_name: %define _name compat-rdma}
82 %{!?_version: %define _version @VERSION@}
83 %{!?_release: %define _release @RELEASE@}
84
85 Name: %{_name}
86 Version: %{_version}
87 Release: %{_release}
88 License: GPLv2 or BSD
89 Url: http://openfabrics.org/
90 Group: System Environment/Base
91 Source: %{_name}-%{_version}.tgz
92 Vendor: OpenFabrics
93 Requires: coreutils
94 Requires: kernel
95 Requires: pciutils
96 Requires: grep
97 Requires: perl
98 Requires: procps
99 Requires: module-init-tools
100 Requires: lsof
101 Summary: Infiniband Driver and ULPs kernel modules
102 %description
103 InfiniBand "verbs", Access Layer  and ULPs
104
105 %package -n compat-rdma-devel
106 Requires: coreutils
107 Requires: kernel
108 Requires: pciutils
109 Requires: compat-rdma
110 Version: %{_version}
111 Release: %{_release}
112 Summary: Infiniband Driver and ULPs kernel modules sources
113 Group: System Environment/Libraries
114 %description -n compat-rdma-devel
115 Core, HW and ULPs kernel modules sources
116
117 %prep
118 %setup -n %{_name}-%{_version}
119
120 %build
121 rm -rf $RPM_BUILD_ROOT
122 cd $RPM_BUILD_DIR/%{_name}-%{_version}
123
124 # Save clean sources for compat-rdma-devel
125 mkdir -p $RPM_BUILD_DIR/src
126 cp -a $RPM_BUILD_DIR/%{_name}-%{_version} $RPM_BUILD_DIR/src/
127
128 ./configure --prefix=%{_prefix} --kernel-version %{KVERSION} --with-linux %{K_SRC} --with-linux-obj %{K_SRC_OBJ} --modules-dir %{LIB_MOD_DIR} %{configure_options}
129
130 # Copy InfniBand include files after applying backport patches (if required)
131 mkdir -p $RPM_BUILD_DIR/src/%{_name}
132 cp -a $RPM_BUILD_DIR/%{_name}-%{_version}/include/ $RPM_BUILD_DIR/src/%{_name}
133 cp -a $RPM_BUILD_DIR/%{_name}-%{_version}/config*  $RPM_BUILD_DIR/src/%{_name}
134 cp -a $RPM_BUILD_DIR/%{_name}-%{_version}/compat*  $RPM_BUILD_DIR/src/%{_name}
135 cp -a $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts*  $RPM_BUILD_DIR/src/%{_name}
136 sed -i -e "s@\${CWD}@%{_prefix}/src/%{_name}@g" $RPM_BUILD_DIR/src/%{_name}/config.mk
137
138 %if %{build_ibp_server} || %{build_ibscif} || %{build_qib}
139   %{!?scif_symvers: %define scif_symvers %(echo -n '/lib/modules/%{KVERSION}/scif.symvers')}
140   test -f %{scif_symvers} && cat %{scif_symvers} >> ./Module.symvers
141 %endif
142
143 %if %{build_srpt}
144 if [ -f /usr/local/include/scst/Module.symvers ]; then
145         cat /usr/local/include/scst/Module.symvers >> ./Module.symvers
146 fi
147 %endif
148 export INSTALL_MOD_DIR=updates
149 make %{?_smp_mflags} kernel
150
151 %install
152 mkdir -p $RPM_BUILD_ROOT/%{_prefix}/src
153 cp -a $RPM_BUILD_DIR/src/%{_name}-%{_version} $RPM_BUILD_ROOT/%{_prefix}/src
154 cp -a $RPM_BUILD_DIR/src/%{_name} $RPM_BUILD_ROOT/%{_prefix}/src
155 rm -rf $RPM_BUILD_DIR/src
156
157 # Support external modules include dir for backward compatibility
158 cd $RPM_BUILD_ROOT/%{_prefix}/src/
159 ln -s %{_name} openib
160 cd -
161
162 make install_kernel MODULES_DIR=%{LIB_MOD_DIR} INSTALL_MOD_PATH=$RPM_BUILD_ROOT INSTALL_MOD_DIR=updates KERNELRELEASE=%{KVERSION}
163 cp -a compat.config $RPM_BUILD_ROOT/%{_prefix}/src/%{_name}
164 cp -a include/linux/compat_autoconf.h $RPM_BUILD_ROOT/%{_prefix}/src/%{_name}/include/linux
165
166 modsyms=`find $RPM_BUILD_DIR/%{_name}-%{_version} -name Module.symvers -o -name Modules.symvers`
167 if [ -n "$modsyms" ]; then
168         for modsym in $modsyms
169         do
170                 cat $modsym >> $RPM_BUILD_ROOT/%{_prefix}/src/%{_name}/Module.symvers
171         done
172 else
173         ./ofed_scripts/create_Module.symvers.sh
174         cp ./Module.symvers $RPM_BUILD_ROOT/%{_prefix}/src/%{_name}/Module.symvers
175 fi
176         
177 INFO=${RPM_BUILD_ROOT}%{RDMA_CONF_DIR}/info
178 /bin/rm -f ${INFO}
179 mkdir -p ${RPM_BUILD_ROOT}%{RDMA_CONF_DIR}
180 touch ${INFO}
181
182 cat >> ${INFO} << EOFINFO
183 #!/bin/bash
184
185 echo prefix=%{_prefix}
186 echo Kernel=%{KVERSION}
187 echo
188 echo "Configure options: %{configure_options}"
189 echo
190 EOFINFO
191
192 chmod +x ${INFO} > /dev/null 2>&1
193
194 %if "%{WITH_SYSTEMD}" == "1"
195 install -d $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system
196 install -m 0644 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/openibd.service $RPM_BUILD_ROOT/%{_prefix}/lib/systemd/system
197 %endif
198
199 # Copy infiniband configuration
200 install -d $RPM_BUILD_ROOT/%{RDMA_CONF_DIR}
201 install -m 0644 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/openib.conf $RPM_BUILD_ROOT/%{RDMA_CONF_DIR}
202 cat $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/openib.conf.tmp >> $RPM_BUILD_ROOT/%{RDMA_CONF_DIR}/openib.conf
203
204 # Install openib service script
205 install -d $RPM_BUILD_ROOT/etc/init.d
206 install -m 0755 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/openibd $RPM_BUILD_ROOT/etc/init.d
207
208 %if %{build_ibp_server} || %{build_ibscif}
209 # Also install ofed-mic script in init.d
210 install -m 0755 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/ofed-mic $RPM_BUILD_ROOT/etc/init.d
211 %endif
212
213 install -d $RPM_BUILD_ROOT/sbin
214 install -m 0755 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/sysctl_perf_tuning $RPM_BUILD_ROOT/sbin
215
216 %if %{build_mlx4} || %{build_mlx5}
217 install -d $RPM_BUILD_ROOT/%{_bindir}
218 install -m 0755 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/ibdev2netdev $RPM_BUILD_ROOT/%{_bindir}
219 %endif
220
221 %if %{build_mlx4_en}
222 install -d $RPM_BUILD_ROOT/sbin
223 install -m 0755 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/connectx_port_config $RPM_BUILD_ROOT/sbin
224 touch $RPM_BUILD_ROOT/%{RDMA_CONF_DIR}/connectx.conf
225 %endif
226
227 %if %{build_ibp_server} || %{build_ibscif}
228 install -d $RPM_BUILD_ROOT/etc/modprobe.d
229 install -m 0644 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/ibscif.conf $RPM_BUILD_ROOT/etc/modprobe.d/
230 install -d $RPM_BUILD_ROOT/usr/sbin
231 install -m 0755 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/ibscif-opt $RPM_BUILD_ROOT/usr/sbin
232 %endif
233
234 %if %{build_qib}
235 install -m 0755 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/truescale.cmds $RPM_BUILD_ROOT/%{RDMA_CONF_DIR}
236 %endif
237
238 %if %{build_ipoib}
239 install -d $RPM_BUILD_ROOT/etc/modprobe.d
240 install -m 0644 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/ib_ipoib.conf $RPM_BUILD_ROOT/etc/modprobe.d
241 %if %{build_ibp_server} || %{build_ibscif}
242 install -d $RPM_BUILD_ROOT/etc/sysconfig/mic
243 install -D -m 0644 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/ipoib.conf $RPM_BUILD_ROOT/etc/mpss/ipoib.conf
244 install -D -m 0644 $RPM_BUILD_DIR/%{_name}-%{_version}/docs/lustre-phi.txt $RPM_BUILD_ROOT/usr/share/doc/%{_name}-%{_version}/lustre-phi.txt
245 %endif
246 %endif
247
248 install -d $RPM_BUILD_ROOT/etc/udev/rules.d
249 install -m 0644 $RPM_BUILD_DIR/%{_name}-%{_version}/ofed_scripts/90-ib.rules $RPM_BUILD_ROOT/etc/udev/rules.d
250
251 %clean
252 rm -rf %{buildroot}
253
254 %pre
255
256 %pre -n compat-rdma-devel
257
258 %post
259 if [ $1 -ge 1 ]; then # 1 : This package is being installed or reinstalled
260     /sbin/depmod %{KVERSION}
261
262 if [[ -f /etc/redhat-release || -f /etc/rocks-release ]]; then        
263 perl -i -ne 'if (m@^#!/bin/bash@) {
264         print q@#!/bin/bash
265 #
266 # Bring up/down openib
267 #
268 # chkconfig: 2345 05 95
269 # description: Activates/Deactivates InfiniBand Driver to \
270 #              start at boot time.
271 #
272 ### BEGIN INIT INFO
273 # Provides:       openibd
274 ### END INIT INFO
275 @;
276                  } else {
277                      print;
278                  }' /etc/init.d/openibd
279
280         /sbin/chkconfig openibd off >/dev/null 2>&1 || true
281         /usr/bin/systemctl disable openibd >/dev/null  2>&1 || true
282         /sbin/chkconfig --del openibd >/dev/null 2>&1 || true
283
284         /sbin/chkconfig --add openibd >/dev/null 2>&1 || true
285         /sbin/chkconfig openibd on >/dev/null 2>&1 || true
286         /usr/bin/systemctl enable openibd >/dev/null  2>&1 || true
287
288         if [ -x /etc/init.d/ofed-mic ]; then
289             if ! ( /sbin/chkconfig --del ofed-mic > /dev/null 2>&1 ); then
290                     true
291             fi
292             if ! ( /sbin/chkconfig --add ofed-mic && /sbin/chkconfig ofed-mic off > /dev/null 2>&1 ); then
293                     true
294             fi
295         fi
296 fi
297
298 if [ -f /etc/SuSE-release ]; then
299     local_fs='$local_fs'
300     openiscsi=''
301     %if %{build_oiscsi}
302         openiscsi='open-iscsi'
303     %endif
304         perl -i -ne "if (m@^#!/bin/bash@) {
305         print q@#!/bin/bash
306 ### BEGIN INIT INFO
307 # Provides:       openibd
308 # Required-Start: $local_fs
309 # Required-Stop: opensmd $openiscsi
310 # Default-Start:  2 3 5
311 # Default-Stop: 0 1 2 6
312 # Description:    Activates/Deactivates InfiniBand Driver to \
313 #                 start at boot time.
314 ### END INIT INFO
315 @;
316                  } else {
317                      print;
318                  }" /etc/init.d/openibd
319
320         /sbin/chkconfig openibd off >/dev/null  2>&1 || true
321         /usr/bin/systemctl disable openibd >/dev/null  2>&1 || true
322         /sbin/insserv -r openibd >/dev/null 2>&1 || true
323
324         /sbin/insserv openibd >/dev/null 2>&1 || true
325         /sbin/chkconfig openibd on >/dev/null 2>&1 || true
326         /usr/bin/systemctl enable openibd >/dev/null  2>&1 || true
327 fi
328
329 if [ -f /etc/debian_version ]; then
330     local_fs='$local_fs'
331     openiscsi=''
332     %if %{build_oiscsi}
333         openiscsi='open-iscsi'
334     %endif
335         perl -i -ne "if (m@^#!/bin/bash@) {
336         print q@#!/bin/bash
337 ### BEGIN INIT INFO
338 # Provides:       openibd
339 # Required-Start: $local_fs
340 # Required-Stop: opensmd $openiscsi
341 # Default-Start:  2 3 5
342 # Default-Stop: 0 1 2 6
343 # Description:    Activates/Deactivates InfiniBand Driver to \
344 #                 start at boot time.
345 ### END INIT INFO
346 @;
347                  } else {
348                      print;
349                  }" /etc/init.d/openibd
350
351         if ! ( /usr/sbin/update-rc.d openibd defaults > /dev/null 2>&1 ); then
352                 true
353         fi
354 fi
355
356 %if "%{WITH_SYSTEMD}" == "1"
357 /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
358 %endif
359
360 fi # 1 : closed
361 # END of post
362
363 %post -n compat-rdma-devel
364
365 %preun
366 if [ $1 = 0 ]; then  # 1 : Erase, not upgrade
367           if [[ -f /etc/redhat-release || -f /etc/rocks-release ]]; then        
368                 /sbin/chkconfig openibd off >/dev/null 2>&1 || true
369                 /usr/bin/systemctl disable openibd >/dev/null  2>&1 || true
370                 /sbin/chkconfig --del openibd  >/dev/null 2>&1 || true
371                 if [ -x /etc/init.d/ofed-mic ]; then
372                     if ! ( /sbin/chkconfig --del ofed-mic  > /dev/null 2>&1 ); then
373                         true
374                     fi
375                 fi
376           fi
377           if [ -f /etc/SuSE-release ]; then
378                 /sbin/chkconfig openibd off >/dev/null 2>&1 || true
379                 /usr/bin/systemctl disable openibd >/dev/null  2>&1 || true
380                 /sbin/insserv -r openibd >/dev/null 2>&1 || true
381                 if [ -x /etc/init.d/ofed-mic ]; then
382                     if ! ( /sbin/insserv -r ofed-mic > /dev/null 2>&1 ); then
383                         true
384                     fi
385                 fi
386           fi
387           if [ -f /etc/debian_version ]; then
388                 if ! ( /usr/sbin/update-rc.d openibd remove > /dev/null 2>&1 ); then
389                         true
390                 fi
391           fi
392 fi
393
394 %postun
395 if [ $1 = 0 ]; then  # 1 : Erase, not upgrade
396         # Clean /etc/modprobe.d/ofed.conf   
397         # Remove previous configuration if exist
398         /sbin/depmod %{KVERSION}
399 %if "%{WITH_SYSTEMD}" == "1"
400 /usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
401 %endif
402 fi
403
404 %postun -n compat-rdma-devel
405
406 %files
407 %defattr(-,root,root,-)
408 %dir %{RDMA_CONF_DIR}
409 %config(noreplace) %{RDMA_CONF_DIR}/openib.conf
410 %if %{build_ibp_server} || %{build_ibscif}
411 %config %{_sysconfdir}/init.d/ofed-mic
412 %endif
413 %{RDMA_CONF_DIR}/info
414 /etc/init.d/openibd
415 %if "%{WITH_SYSTEMD}" == "1"
416 %{_prefix}/lib/systemd/system/openibd.service
417 %endif
418 /sbin/sysctl_perf_tuning
419 /etc/udev/rules.d/90-ib.rules
420 %{LIB_MOD_DIR}
421 %if %{build_qib}
422 %config(noreplace) %{RDMA_CONF_DIR}/truescale.cmds
423 %endif
424 %if %{build_ibp_server} || %{build_ibscif}
425 %config(noreplace) %{_sysconfdir}/modprobe.d/ibscif.conf
426 %endif
427 %if %{build_ipoib}
428 /etc/modprobe.d/ib_ipoib.conf
429 %if %{build_ibp_server} || %{build_ibscif}
430 %config(noreplace) %{_sysconfdir}/mpss/ipoib.conf
431 /usr/share/doc/%{_name}-%{_version}/lustre-phi.txt
432 %endif
433 %endif
434 %if %{build_mlx4} || %{build_mlx5}
435 %{_bindir}/ibdev2netdev
436 %endif
437 %if %{build_mlx4_en}
438 /sbin/connectx_port_config
439 %config(noreplace) %{RDMA_CONF_DIR}/connectx.conf
440 %endif
441
442 %files -n compat-rdma-devel
443 %defattr(-,root,root,-)
444 %dir %{_prefix}/src
445 %{_prefix}/src/%{_name}-%{_version}
446 %{_prefix}/src/%{_name}
447 %{_prefix}/src/openib
448
449 %changelog
450 * Thu Feb 16 2012 Vladimir Sokolovsky <vlad@mellanox.com>
451 - Created spec file for compat-rdma