allow systemd path to be defined by configure option.

The configure probes the host for systemd path information.

Upstream-Status: Inappropriate [Embedded]

Signed-off-by: Armin Kuster <akuster@mvista.com>

Index: ipmiutil-3.0.5/configure.ac
===================================================================
--- ipmiutil-3.0.5.orig/configure.ac
+++ ipmiutil-3.0.5/configure.ac
@@ -149,7 +149,6 @@ CROSS_LFLAGS=""
 CROSS_CFLAGS=""
 LIBSENSORS=""
 SAM2OBJ="isensor2.o ievents2.o"
-SYSTEMD_DIR=/usr/share/ipmiutil
 
 AC_ARG_ENABLE([useflags],
     [  --enable-useflags    include environment CFLAGS and LDFLAGS.],
@@ -200,29 +199,42 @@ AC_ARG_ENABLE([gpl],
 
 dnl Does this Linux have systemd enabled?  Otherwise use sysv init.
 AC_ARG_ENABLE([systemd],
-    [  --enable-systemd       enable systemd service type=notify support and %_unitdir [[default=disabled]]],)
-if test "x$enable_systemd" = "xyes"; then
-   GPL_CFLAGS="$GPL_CFLAGS -DENABLE_SYSTEMD"
-   # if systemd enabled, install service scripts in unitdir
-   which rpm >/dev/null 2>&1
-   if test  $? -eq 0 ; then
-	SYSTEMD_DIR=`rpm --eval "%{_unitdir}"`
-   else
-    SYSTEMD_DIR=/usr/share/ipmiutil
-   fi
+    [  --enable-systemd[=systemddir]      install systemd unit file.  If 'yes'
+        probe the system for unit directory.
+        If a path is specified, assume that
+        is a valid install path. [[default=disabled]]],)
+# Check whether --enable-systemd was given.
+if test "${enable_systemd+set}" = set; then :
+	withval=$enable_systemd; if test "$withval" = yes; then
+	GPL_CFLAGS="$GPL_CFLAGS -DENABLE_SYSTEMD"
+	if test -z "$systemddir"; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: checking location of the systemd unit files directory" >&5
+		$as_echo_n "checking location of the systemd unit files directory... " >&6; }
+		_rpmdir = ""
+		which rpm >/dev/null 2>&1
+		if test  $? -eq 0 ; then
+			_rpmdir = `rpm --eval "%{_unitdir}"`
+		fi
+		for systemd_d in ${datadir}/usr/share/ipmiutil ${_rpmdir} /usr/share/ipmiutil; do
+			if test -z "$systemddir"; then
+				if test -d "$systemd_d"; then
+					systemddir="$systemd_d"
+				fi
+			fi
+		done
+	fi
+	if test -n "$systemddir"; then
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $systemddir" >&5
+		$as_echo "$systemddir" >&6; }
+	else
+		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+		$as_echo "not found" >&6; }
+	fi
 else
-   # otherwise install the systemd service scripts in the data dir
-  SYSTEMD_DIR=/usr/share/ipmiutil
-  if test "x$sysname" != "xDarwin" ; then
-    if test  "x$os" != "xhpux" ; then
-      # MacOS and HP-UX: 'which' command returns 0 always
-      which rpm >/dev/null 2>&1
-      if test  $? -eq 0 ; then
-         datad=`rpm --eval "%{_datadir}"`
-         SYSTEMD_DIR=${datad}/ipmiutil
-      fi
-    fi
-  fi
+	if test "$withval" != no; then
+		systemddir=$withval
+	fi
+fi
 fi
 
 dnl start main logic
@@ -528,7 +540,7 @@ AC_SUBST(INS_LIB)
 AC_SUBST(SUBDIR_S)
 AC_SUBST(CROSS_CFLAGS)
 AC_SUBST(CROSS_LFLAGS)
-AC_SUBST(SYSTEMD_DIR)
+AC_SUBST(systemddir)
 AC_SUBST(SHR_LINK)
 AC_SUBST(pkgconfigdir)
 
Index: ipmiutil-3.0.5/scripts/Makefile.am
===================================================================
--- ipmiutil-3.0.5.orig/scripts/Makefile.am
+++ ipmiutil-3.0.5/scripts/Makefile.am
@@ -17,7 +17,8 @@ cronto = ${DESTDIR}${etcdir}/cron.daily
 sbinto = ${DESTDIR}${sbindir}
 varto  = ${DESTDIR}/var/lib/ipmiutil
 initto = ${DESTDIR}@INIT_DIR@
-sysdto = ${DESTDIR}@SYSTEMD_DIR@
+sysdto = ${DESTDIR}@systemddir@
+systemddir = @systemddir@
 sysvinit = ${datato}
 sbinfls = ialarms ihealth ifru igetevent ireset icmd isol ilan isensor isel iserial iwdt iconfig ipicmg ifirewall ifwum ihpm iuser
 
@@ -47,10 +48,14 @@ install:
 	${INSTALL_SCRIPT_SH} ipmi_port.sh ${sysvinit}/ipmi_port
 	${INSTALL_SCRIPT_SH} ipmi_info    ${sysvinit}/ipmi_info
 	${INSTALL_SCRIPT_SH} checksel     ${datato}
-	${INSTALL_DATA_SH} ipmiutil_wdt.service ${sysdto}
-	${INSTALL_DATA_SH} ipmiutil_asy.service ${sysdto}
-	${INSTALL_DATA_SH} ipmiutil_evt.service ${sysdto}
-	${INSTALL_DATA_SH} ipmi_port.service    ${sysdto}
+	
+	if [ ! -z "${systemddir}" ]; then \
+		$(MKDIR) ${sysdto}; \
+		${INSTALL_DATA_SH} ipmiutil_wdt.service ${sysdto}; \
+		${INSTALL_DATA_SH} ipmiutil_asy.service ${sysdto}; \
+		${INSTALL_DATA_SH} ipmiutil_evt.service ${sysdto}; \
+		${INSTALL_DATA_SH} ipmi_port.service    ${sysdto}; \
+	fi
 	${INSTALL_SCRIPT_SH} ipmiutil.env     ${datato}
 	${INSTALL_SCRIPT_SH} ipmiutil.pre     ${datato}
 	${INSTALL_SCRIPT_SH} ipmiutil.setup   ${datato}
