Browse code

Add package openipmi.

Change-Id: I5ff48799866a397104c760e181b4836d5b4524cd
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/3758
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>

xiaolin-vmware authored on 2017/09/14 07:12:25
Showing 3 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,12 @@
0
+[Unit]
1
+Description=IPMI Driver
2
+After=network.target
3
+
4
+[Service]
5
+Type=oneshot
6
+RemainAfterExit=yes
7
+ExecStart=/usr/libexec/openipmi-helper start
8
+ExecStop=/usr/libexec/openipmi-helper stop
9
+
10
+[Install]
11
+WantedBy=multi-user.target
0 12
new file mode 100644
... ...
@@ -0,0 +1,512 @@
0
+#!/bin/sh
1
+#############################################################################
2
+#
3
+# ipmi:		OpenIPMI Driver helper script
4
+#
5
+# Authors:	Jan Safranek <jsafrane@redhat.com>
6
+#
7
+# Based on IPMI init script by:
8
+#               Matt Domsch <Matt_Domsch@dell.com>
9
+#               Chris Poblete <Chris_Poblete@dell.com>
10
+#
11
+# Status return code bits
12
+# no bits set = no errors
13
+# bit 0 set = minimum modules aren't loaded
14
+# bit 1 set = requested feature module isn't loaded
15
+# bit 2 set = /dev/ipmi0 (or /dev/imb if using that instead) doesn't exist
16
+# bit 3 set = /dev/watchdog doesn't exist
17
+# bit 4 set = lockfile doesn't exist
18
+# bit 5 set = modules are loaded even when asked to be unloaded
19
+
20
+CONFIGFILE=/etc/sysconfig/ipmi
21
+# source config info
22
+[ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
23
+
24
+#############################################################################
25
+# GLOBALS
26
+#############################################################################
27
+MODULE_NAME="ipmi"
28
+INTF_NUM=0
29
+
30
+IPMI_SMB_MODULE_NAME="ipmi_smb"
31
+IPMI_SI_MODULE_NAME="ipmi_si"
32
+kernel=`uname -r | cut -d. -f1-2`
33
+if [ "${kernel}" == "2.4" ]; then
34
+    IPMI_SMB_MODULE_NAME="ipmi_smb_intf"
35
+    IPMI_SI_MODULE_NAME="ipmi_si_drv"
36
+fi
37
+
38
+MODULES_INTERFACES=""
39
+[ "${DEV_IPMI}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_devintf"
40
+[ "${IPMI_IMB}" = "yes" ] && MODULES_INTERFACES="${MODULES_INTERFACES} ipmi_imb"
41
+
42
+MODULES_FEATURES=""
43
+[ "${IPMI_WATCHDOG}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_watchdog"
44
+[ "${IPMI_POWEROFF}" = "yes" ] && MODULES_FEATURES="${MODULES_FEATURES} ipmi_poweroff"
45
+
46
+MODULES_HW=""
47
+[ "${IPMI_SI}"  = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SI_MODULE_NAME}"
48
+[ "${IPMI_SMB}" = "yes" ] && MODULES_HW="${MODULES_HW} ${IPMI_SMB_MODULE_NAME}"
49
+
50
+MODULES_BASE="ipmi_msghandler"
51
+MODULES="${MODULES_INTERFACES} ${MODULES_FEATURES} ${MODULES_HW} ${MODULES_BASE}"
52
+
53
+RETVAL=0
54
+LOCKFILE=/var/lock/subsys/ipmi
55
+DEV_IPMI_TIMEOUT=150
56
+
57
+UDEV_EXISTS=0
58
+if [ -e /sbin/udev -o -e /sbin/udevd ]; then
59
+    UDEV_EXISTS=1
60
+fi
61
+
62
+#############################################################################
63
+# NOTES:
64
+# * /dev/ipmi0 is unconditionally deleted here on ipmi_devintf unload,
65
+#   because SLES9 and RHEL4 kernels don't send a message for udev to delete
66
+#   it for us.
67
+# 
68
+#############################################################################
69
+
70
+modules_loaded_verbose()
71
+{
72
+	OnePlusLoaded=0
73
+	OnePlusUnloaded=0
74
+	for m in $@; do
75
+		if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
76
+			echo "$m module loaded."
77
+			OnePlusLoaded=1
78
+		else
79
+			echo "$m module not loaded."
80
+			OnePlusUnloaded=1
81
+		fi
82
+	done
83
+}
84
+
85
+modules_loaded()
86
+{
87
+	OnePlusLoaded=0
88
+	OnePlusUnloaded=0
89
+	for m in $@; do
90
+		if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
91
+			OnePlusLoaded=1
92
+		else
93
+			OnePlusUnloaded=1
94
+		fi
95
+	done
96
+}
97
+
98
+device_node_exists ()
99
+{
100
+	if [ -e "$1" ]; then
101
+		echo "$1 exists."
102
+		return 1
103
+	fi
104
+	echo "$1 does not exist."
105
+	return 0
106
+}
107
+
108
+minimum_modules_loaded()
109
+{
110
+        rc_base=1
111
+	rc_hw=1
112
+        modules_loaded_verbose "${MODULES_BASE}"
113
+	[ ${OnePlusLoaded} -eq 0 ] && rc_base=0
114
+	    
115
+	modules_loaded_verbose "${MODULES_HW}"
116
+	[ ${OnePlusLoaded} -eq 0 ] && rc_hw=0
117
+	
118
+	return $((rc_base && rc_hw))
119
+}
120
+
121
+#############################################################################
122
+
123
+load_si()
124
+{
125
+	if [ "${IPMI_SI}" = "yes" ]; then
126
+		modprobe ${IPMI_SI_MODULE_NAME} > /dev/null 2>&1
127
+		modules_loaded ${IPMI_SI_MODULE_NAME}
128
+		[ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
129
+	fi
130
+}
131
+
132
+load_smb()
133
+{
134
+	if [ "${IPMI_SMB}" = "yes" ]; then
135
+		modprobe ${IPMI_SMB_MODULE_NAME} > /dev/null 2>&1
136
+		modules_loaded ${IPMI_SMB_MODULE_NAME}
137
+		[ ${OnePlusLoaded} -ne 1 ] && RETVAL=$((RETVAL | 1))
138
+	fi
139
+}
140
+
141
+load_hw_modules()
142
+{
143
+	load_si
144
+	load_smb
145
+}
146
+
147
+start_watchdog_common()
148
+{
149
+	load_hw_modules
150
+	modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} > /dev/null 2>&1
151
+	modules_loaded ipmi_watchdog
152
+	[ ${OnePlusUnloaded} -ne 0 ] &&
153
+		RETVAL=$((RETVAL | 2)) &&
154
+		echo "Watchdog startup failed: cannot load ipmi_watchdog module" &&
155
+		return
156
+	if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then
157
+		mknod -m 0600 /dev/watchdog c 10 130
158
+		[ $? -ne 0 ] &&
159
+			RETVAL=$((RETVAL | 8)) &&
160
+			echo "Watchdog startup failed: cannot create /dev/watchdog" &&
161
+			return
162
+	fi
163
+}
164
+
165
+start_watchdog_quiet()
166
+{
167
+	[ "${IPMI_WATCHDOG}" != "yes" ] &&
168
+		return
169
+	start_watchdog_common
170
+}
171
+
172
+start_watchdog()
173
+{
174
+	[ "${IPMI_WATCHDOG}" != "yes" ] &&
175
+		RETVAL=$((RETVAL | 2)) &&
176
+		echo "Watchdog not configured" &&
177
+		return
178
+	start_watchdog_common
179
+}
180
+
181
+stop_watchdog()
182
+{
183
+	modprobe -q -r ipmi_watchdog > /dev/null 2>&1
184
+	modules_loaded ipmi_watchdog
185
+	if [ ${OnePlusLoaded} -ne 0 ]; then
186
+	    RETVAL=$((RETVAL | 32))
187
+	    echo "Watchog shutdown failed: cannot unload ipmi_watchdog module"
188
+	else
189
+	    if [ "${IPMI_WATCHDOG}" = "yes" ]; then
190
+		[ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog
191
+	    fi
192
+	fi
193
+}
194
+
195
+stop_watchdog_quiet()
196
+{
197
+	modprobe -q -r ipmi_watchdog > /dev/null 2>&1
198
+	modules_loaded ipmi_watchdog
199
+	if [ ${OnePlusLoaded} -ne 0 ]; then
200
+	    RETVAL=$((RETVAL | 32))
201
+	else
202
+	    if [ "${IPMI_WATCHDOG}" = "yes" ]; then
203
+		[ ${UDEV_EXISTS} -eq 0 ] && rm -f /dev/watchdog
204
+	    fi
205
+	fi
206
+}
207
+
208
+start_powercontrol_common()
209
+{
210
+	local poweroff_opts=""
211
+	load_hw_modules
212
+	if [ "${IPMI_POWERCYCLE}" == "yes" ]; then
213
+	    modinfo ipmi_poweroff 2>/dev/null | grep poweroff_control > /dev/null 2>&1 && \
214
+		poweroff_opts="poweroff_control=2"
215
+	    modinfo ipmi_poweroff 2>/dev/null | grep poweroff_powercycle > /dev/null 2>&1 && \
216
+		poweroff_opts="poweroff_powercycle=1"
217
+	fi
218
+	modprobe ipmi_poweroff "${poweroff_opts}" > /dev/null 2>&1
219
+	modules_loaded ipmi_poweroff
220
+	[ ${OnePlusUnloaded} -ne 0 ] &&
221
+		RETVAL=$((RETVAL | 2)) &&
222
+		echo "Powercontroll startup failed: cannot load ipmi_poweroff module" &&
223
+		return
224
+}
225
+
226
+start_powercontrol_quiet()
227
+{
228
+	[ "${IPMI_POWEROFF}" != "yes" ] &&
229
+		return
230
+	start_powercontrol_common
231
+}
232
+
233
+start_powercontrol()
234
+{
235
+	[ "${IPMI_POWEROFF}" != "yes" ] &&
236
+		RETVAL=$((RETVAL | 2)) &&
237
+		echo "Powercontroll not configured" &&
238
+		return
239
+	start_powercontrol_common
240
+}
241
+
242
+stop_powercontrol()
243
+{
244
+	modprobe -q -r ipmi_poweroff > /dev/null 2>&1
245
+	modules_loaded ipmi_poweroff
246
+	if [ ${OnePlusLoaded} -ne 0 ]; then
247
+	    RETVAL=$((RETVAL | 32))
248
+	    echo "Powercontroll shutdown failed: cannot unload ipmi_poweroff module"
249
+	fi
250
+}
251
+
252
+stop_powercontrol_quiet()
253
+{
254
+	modprobe -q -r ipmi_poweroff > /dev/null 2>&1
255
+	modules_loaded ipmi_poweroff
256
+	[ ${OnePlusLoaded} -ne 0 ] && RETVAL=$((RETVAL | 32))
257
+}
258
+
259
+#############################################################################
260
+unload_all_ipmi_modules()
261
+{
262
+	stop_watchdog_quiet
263
+	stop_powercontrol_quiet
264
+	for m in ${MODULES}; do
265
+		modprobe -q -r ${m} > /dev/null 2>&1
266
+	done
267
+        # delete interface node ONLY if ipmi_devintf is unloaded
268
+        [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] &&
269
+	        rm -f "/dev/ipmi${INTF_NUM}"
270
+}
271
+
272
+unload_ipmi_modules_leave_features()
273
+{
274
+	for m in ${MODULES_INTERFACES}; do
275
+		modprobe -q -r ${m} > /dev/null 2>&1
276
+	done
277
+        # delete interface node ONLY if ipmi_devintf is unloaded
278
+        [ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] &&
279
+	        rm -f "/dev/ipmi${INTF_NUM}"
280
+	lsmod | egrep -q "ipmi_(poweroff|watchdog)" > /dev/null 2>&1
281
+	if [ "$?" -ne "0" ]; then
282
+		stop_watchdog_quiet
283
+		stop_powercontrol_quiet
284
+		for m in ${MODULES}; do
285
+			modprobe -q -r ${m} > /dev/null 2>&1
286
+		done
287
+	fi
288
+}
289
+
290
+#############################################################################
291
+load_ipmi_modules ()
292
+{
293
+	local locdelay
294
+	modprobe ipmi_msghandler > /dev/null 2>&1
295
+	modules_loaded ipmi_msghandler
296
+	[ ${OnePlusLoaded} -ne 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
297
+	load_hw_modules
298
+	[ $((RETVAL & 1)) -eq 1 ] && unload_all_ipmi_modules && RETVAL=$((RETVAL | 1)) && return
299
+
300
+	if [ "${DEV_IPMI}" = "yes" ]; then
301
+		modprobe ipmi_devintf > /dev/null 2>&1
302
+		modules_loaded ipmi_devintf
303
+		RETVAL=$((RETVAL & ~2))
304
+		[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
305
+		if [ ${OnePlusLoaded} -eq 1 ]; then
306
+			if [ ${UDEV_EXISTS} -eq 0 ]; then
307
+				DEVMAJOR=`cat /proc/devices | awk '/ipmidev/{print $1}'`
308
+				rm -f /dev/ipmi${INTF_NUM}
309
+				mknod -m 0600 /dev/ipmi${INTF_NUM} c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
310
+			fi
311
+
312
+			# udev can take several seconds to create /dev/ipmi0, 
313
+			# but it happens asynchronously, so delay here
314
+			locdelay=${DEV_IPMI_TIMEOUT}
315
+			while [ ! -e /dev/ipmi${INTF_NUM} -a ${locdelay} -gt 0 ]; do
316
+				locdelay=$((locdelay - 1))
317
+				sleep 0.1
318
+			done
319
+		fi
320
+	fi
321
+
322
+	if [ "${IPMI_IMB}" = "yes" ]; then
323
+		modprobe ipmi_imb > /dev/null 2>&1
324
+		modules_loaded ipmi_imb
325
+		RETVAL=$((RETVAL & ~2))
326
+		[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
327
+		if [ ${OnePlusLoaded} -eq 1 ]; then
328
+			DEVMAJOR=`cat /proc/devices | awk '/imb/{print $1}'`
329
+			rm -f /dev/imb
330
+			mknod -m 0600 /dev/imb c ${DEVMAJOR} 0 || RETVAL=$((RETVAL | 4))
331
+		fi
332
+	fi
333
+
334
+	# Per Corey Minyard, essentially no one uses ipmi_radisys
335
+	# and we don't want to encourage its further use
336
+	# so it won't be handled here.
337
+	return
338
+}
339
+
340
+#############################################################################
341
+start()
342
+{
343
+	load_ipmi_modules
344
+	if [ ${RETVAL} -eq 0 ]; then
345
+		touch ${LOCKFILE}
346
+	else
347
+		if [ $((RETVAL & 1)) -eq 1 ]; then
348
+			echo "Startup failed."
349
+		else
350
+			touch ${LOCKFILE} && echo "Warning!?"
351
+		fi
352
+	fi
353
+	start_watchdog_quiet
354
+	start_powercontrol_quiet
355
+}
356
+
357
+#############################################################################
358
+stop()
359
+{
360
+	unload_ipmi_modules_leave_features
361
+	modules_loaded ${MODULES_INTERFACES}
362
+	if [ ${OnePlusLoaded} -ne 0 ]; then
363
+		RETVAL=$((RETVAL | 32))
364
+		echo "Shutdown failed, something may be in use"
365
+	else
366
+		rm -f ${LOCKFILE}
367
+	fi
368
+}
369
+
370
+stop_all()
371
+{
372
+	unload_all_ipmi_modules
373
+	modules_loaded ${MODULES}
374
+	if [ ${OnePlusLoaded} -ne 0 ]; then
375
+		RETVAL=$((RETVAL | 32))
376
+		echo "Shutdown failed, something may be in use"
377
+	else
378
+		rm -f ${LOCKFILE}
379
+	fi
380
+}
381
+
382
+#############################################################################
383
+restart()
384
+{
385
+	stop_all
386
+	RETVAL=0
387
+	start
388
+}
389
+
390
+#############################################################################
391
+
392
+reload()
393
+{
394
+	stop_all
395
+	RETVAL=0
396
+	start
397
+}
398
+
399
+#############################################################################
400
+
401
+status_all()
402
+{
403
+	minimum_modules_loaded
404
+	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
405
+	
406
+	modules_loaded_verbose ${MODULES_FEATURES} ${MODULES_INTERFACES}
407
+	[ ${OnePlusUnloaded} -ne 0 ] && RETVAL=$((RETVAL | 2))
408
+
409
+	if [ "${DEV_IPMI}" = "yes" ]; then 
410
+	    device_node_exists /dev/ipmi${INTF_NUM}
411
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
412
+	fi
413
+
414
+	if [ "${IPMI_IMB}" = "yes" ]; then
415
+	    device_node_exists /dev/imb
416
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
417
+	fi
418
+
419
+	if [ "${IPMI_WATCHDOG}" = "yes" ]; then
420
+	    device_node_exists /dev/watchdog
421
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 8))
422
+	fi
423
+
424
+	[ ! -e ${LOCKFILE} ] && RETVAL=$((RETVAL | 16))
425
+}
426
+
427
+status()
428
+{
429
+	minimum_modules_loaded
430
+	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
431
+	
432
+	if [ "${DEV_IPMI}" = "yes" ]; then 
433
+	    modules_loaded_verbose ipmi_devintf
434
+	    [ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
435
+
436
+	    device_node_exists /dev/ipmi${INTF_NUM}
437
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
438
+	fi
439
+
440
+	if [ "${IPMI_IMB}" = "yes" ]; then
441
+	    device_node_exists /dev/imb
442
+	    [ $? -eq 0 ] && RETVAL=$((RETVAL | 4))
443
+	fi
444
+}
445
+
446
+status_watchdog()
447
+{
448
+	minimum_modules_loaded
449
+	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
450
+
451
+	modules_loaded_verbose ipmi_watchdog
452
+	[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
453
+
454
+	device_node_exists /dev/watchdog
455
+	[ $? -eq 0 ] && RETVAL=$((RETVAL | 8))
456
+}
457
+
458
+status_powercontrol()
459
+{
460
+	minimum_modules_loaded
461
+	[ $? -eq 0 ] && RETVAL=$((RETVAL | 1))
462
+
463
+	modules_loaded_verbose ipmi_powercontrol
464
+	[ ${OnePlusLoaded} -eq 0 ] && RETVAL=$((RETVAL | 2))
465
+}
466
+
467
+#############################################################################
468
+usage ()
469
+{
470
+	echo $"Usage: $0 {start|stop|status" 1>&2
471
+	echo $"          restart|condrestart|try-restart|reload|force-reload" 1>&2
472
+	echo $"          start-watchdog|stop-watchdog|status-watchdog" 1>&2
473
+	echo $"          start-powercontrol|stop-powercontrol|status-powercontrol" 1>&2
474
+	echo $"          stop-all|status-all}" 1>&2
475
+	RETVAL=2
476
+}
477
+
478
+condrestart ()
479
+{
480
+	[ -e ${LOCKFILE} ] && restart
481
+}
482
+
483
+#############################################################################
484
+# MAIN
485
+#############################################################################
486
+case "$1" in
487
+	start) start ;;
488
+	stop)  stop ;;
489
+	restart) restart ;;
490
+	force-reload) reload ;;
491
+	reload) reload ;;
492
+	status)	status ;;
493
+	status-all) status_all ;;
494
+	condrestart) condrestart ;;
495
+	try-restart) condrestart ;;
496
+	start-watchdog) start_watchdog ;;
497
+	stop-watchdog) stop_watchdog ;;
498
+	status-watchdog) status_watchdog ;;
499
+	start-powercontrol) start_powercontrol ;;
500
+	stop-powercontrol) stop_powercontrol ;;
501
+	status-powercontrol) status_powercontrol ;;
502
+	stop-all) stop_all ;;
503
+	*) usage ;;
504
+esac
505
+
506
+exit ${RETVAL}
507
+
508
+#############################################################################
509
+# end of file
510
+#############################################################################
511
+
0 512
new file mode 100644
... ...
@@ -0,0 +1,179 @@
0
+Summary:        A shared library implementation of IPMI and the basic tools
1
+Name:           openipmi
2
+Version:        2.0.24
3
+Release:        1%{?dist}
4
+URL:            https://sourceforge.net/projects/openipmi/
5
+License:        LGPLv2+ and GPLv2+ or BSD
6
+Group:          System Environment/Base
7
+Vendor:         VMware, Inc.
8
+Distribution:   Photon
9
+Source0:        https://sourceforge.net/projects/openipmi/files/latest/download/%{name}-%{version}.tar.gz
10
+%define sha1    openipmi=f37656813a826a3147ed557c32408f8daa399c28
11
+Source1:        openipmi-helper
12
+Source2:        ipmi.service
13
+BuildRequires:  systemd
14
+BuildRequires:  perl
15
+BuildRequires:  popt-devel
16
+BuildRequires:  ncurses-devel
17
+BuildRequires:  openssl-devel
18
+BuildRequires:  swig
19
+Requires:       systemd
20
+
21
+%description
22
+This package contains a shared library implementation of IPMI and the
23
+basic tools used with OpenIPMI.
24
+
25
+%package        devel
26
+Summary:        Development files for OpenIPMI
27
+Group:          Utilities
28
+Requires:       openipmi = %{version}
29
+
30
+%description devel
31
+Contains additional files need for a developer to create applications
32
+and/or middleware that depends on libOpenIPMI
33
+
34
+%package        perl
35
+Summary:        Perl interface for OpenIPMI
36
+Group:          Utilities
37
+Requires:       openipmi = %{version}-%{release}, perl >= 5
38
+
39
+%description    perl
40
+A Perl interface for OpenIPMI.
41
+
42
+%package        python
43
+Summary:        Python interface for OpenIPMI
44
+Group:          Utilities
45
+Requires:       openipmi = %{version}-%{release}, python2
46
+
47
+%description    python
48
+A Python interface for OpenIPMI.
49
+
50
+%package        ui
51
+Summary:        User Interface (ui)
52
+Group:          Utilities
53
+Requires:       openipmi = %{version}-%{release}
54
+
55
+%description    ui
56
+This package contains a user interface
57
+
58
+%package        lanserv
59
+Summary:        Emulates an IPMI network listener
60
+Group:          Utilities
61
+Requires:       openipmi = %{version}-%{release}
62
+
63
+%description    lanserv
64
+This package contains a network IPMI listener.
65
+
66
+%prep
67
+%setup -n OpenIPMI-%{version}
68
+
69
+%build
70
+# USERFIX: Things you might have to add to configure:
71
+#  --with-tclcflags='-I /usr/include/tclN.M' --with-tcllibs=-ltclN.M
72
+#    Obviously, replace N.M with the version of tcl on your system.
73
+./configure                                 \
74
+    --prefix=/usr                           \
75
+    --with-tcl=no                           \
76
+    --disable-static                        \
77
+    --with-tkinter=no                       \
78
+    --docdir=%{_docdir}/%{name}-%{version}  \
79
+    --with-perl=yes                         \
80
+    --with-perlinstall=%{perl_vendorarch}   \
81
+    --sysconfdir=%{_sysconfdir}
82
+make
83
+
84
+%install
85
+make DESTDIR=%{buildroot} install
86
+install -d %{buildroot}/etc/init.d
87
+install -d %{buildroot}/etc/sysconfig
88
+install ipmi.init %{buildroot}/etc/init.d/ipmi
89
+install ipmi.sysconf %{buildroot}/etc/sysconfig/ipmi
90
+find %{buildroot}/%{_libdir} -name '*.la' -delete
91
+mkdir -p %{buildroot}/lib/systemd/system
92
+mkdir -p %{buildroot}/%{_libexecdir}
93
+cp %{SOURCE1} %{buildroot}/%{_libexecdir}/.
94
+cp %{SOURCE2} %{buildroot}/lib/systemd/system/ipmi.service
95
+chmod 755 %{buildroot}/%{_libexecdir}/openipmi-helper
96
+install -vdm755 %{buildroot}%{_libdir}/systemd/system-preset
97
+echo "disable ipmi.service" > %{buildroot}%{_libdir}/systemd/system-preset/50-ipmi.preset
98
+
99
+
100
+%preun
101
+%systemd_preun ipmi.service
102
+%post
103
+/sbin/ldconfig
104
+%systemd_post ipmi.service
105
+%postun
106
+/sbin/ldconfig
107
+%systemd_postun_with_restart ipmi.service
108
+
109
+%files
110
+%defattr(-,root,root)
111
+%{_libdir}/libOpenIPMIcmdlang.so.*
112
+%{_libdir}/libOpenIPMIposix.so.*
113
+%{_libdir}/libOpenIPMIpthread.so.*
114
+%{_libdir}/libOpenIPMI.so.*
115
+%{_libdir}/libOpenIPMIutils.so.*
116
+%doc COPYING COPYING.LIB FAQ INSTALL README README.Force
117
+%doc README.MotorolaMXP CONFIGURING_FOR_LAN COPYING.BSD
118
+%exclude /etc/init.d/ipmi
119
+%config(noreplace) %{_sysconfdir}/sysconfig/ipmi
120
+%{_libexecdir}/*
121
+/lib/systemd/system/ipmi.service
122
+%{_libdir}/systemd/system-preset/50-ipmi.preset
123
+
124
+%files perl
125
+%defattr(-,root,root)
126
+%{perl_vendorarch}
127
+%doc swig/OpenIPMI.i swig/perl/sample swig/perl/ipmi_powerctl
128
+
129
+%files python
130
+%defattr(-,root,root)
131
+%{_libdir}/python*/site-packages/*OpenIPMI.*
132
+%doc swig/OpenIPMI.i
133
+
134
+%files devel
135
+%defattr(-,root,root)
136
+%{_includedir}/OpenIPMI
137
+%{_libdir}/*.so
138
+%{_libdir}/pkgconfig
139
+%doc doc/IPMI.pdf
140
+
141
+%files ui
142
+%defattr(-,root,root)
143
+%{_bindir}/ipmi_ui
144
+%{_bindir}/ipmicmd
145
+%{_bindir}/openipmicmd
146
+%{_bindir}/openipmi_eventd
147
+%{_bindir}/ipmish
148
+%{_bindir}/openipmish
149
+%{_bindir}/solterm
150
+%{_bindir}/rmcp_ping
151
+%{_libdir}/libOpenIPMIui.so.*
152
+%{_mandir}/man1/ipmi_ui.1*
153
+%{_mandir}/man1/openipmicmd.1*
154
+%{_mandir}/man1/openipmish.1*
155
+%{_mandir}/man1/openipmigui.1*
156
+%{_mandir}/man1/solterm.1*
157
+%{_mandir}/man1/openipmi_eventd.1.gz
158
+%{_mandir}/man1/rmcp_ping.1*
159
+%{_mandir}/man7/ipmi_cmdlang.7*
160
+%{_mandir}/man7/openipmi_conparms.7*
161
+
162
+%files lanserv
163
+%defattr(-,root,root)
164
+%{_bindir}/ipmilan
165
+%{_bindir}/ipmi_sim
166
+%{_bindir}/sdrcomp
167
+%{_libdir}/libIPMIlanserv.so.*
168
+%config(noreplace) %{_sysconfdir}/ipmi/ipmisim1.emu
169
+%config(noreplace) %{_sysconfdir}/ipmi/lan.conf
170
+%{_mandir}/man8/ipmilan.8*
171
+%{_mandir}/man1/ipmi_sim.1.gz
172
+%{_mandir}/man5/ipmi_lan.5.gz
173
+%{_mandir}/man5/ipmi_sim_cmd.5.gz
174
+
175
+%changelog
176
+*   Mon Sep 11 2017 Xiaolin Li <xiaolinl@vmware.com> 2.0.24-1
177
+-   Initial build.  First version
178
+