From 3e08637e878c32a40cdcb84c6030fcdd0cb88196 Mon Sep 17 00:00:00 2001
From: Daniel Dickinson <openwrt@daniel.thecshore.com>
Date: Thu, 15 Oct 2015 06:23:26 -0400
Subject: [PATCH] mdadm: Fix missing conffile and add initscript

Start arrays on boot, stop them on shutdown, and enable
monitoring to syslog.

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
---
 package/utils/mdadm/Makefile           |  9 +++++++
 package/utils/mdadm/files/mdadm.config |  3 +++
 package/utils/mdadm/files/mdadm.init   | 34 ++++++++++++++++++++++++++
 3 files changed, 46 insertions(+)
 create mode 100644 package/utils/mdadm/files/mdadm.config
 create mode 100644 package/utils/mdadm/files/mdadm.init

diff --git a/package/utils/mdadm/Makefile b/package/utils/mdadm/Makefile
index 69eec5b389..0d5848c218 100644
--- a/package/utils/mdadm/Makefile
+++ b/package/utils/mdadm/Makefile
@@ -33,6 +33,11 @@ define Package/mdadm/description
  A tool for managing Linux Software RAID arrays.
 endef
 
+define Package/mdadm/conffiles
+/etc/mdadm.conf
+/etc/config/mdadm
+endef
+
 TARGET_CFLAGS += -ffunction-sections -fdata-sections
 TARGET_LDFLAGS += -Wl,--gc-sections
 
@@ -47,6 +52,10 @@ endef
 define Package/mdadm/install
 	$(INSTALL_DIR) $(1)/sbin
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/mdadm $(1)/sbin
+	$(INSTALL_DIR) $(1)/etc/init.d
+	$(INSTALL_BIN) ./files/mdadm.init $(1)/etc/init.d/mdadm
+	$(INSTALL_DIR) $(1)/etc/config
+	$(INSTALL_DATA) ./files/mdadm.config $(1)/etc/config/mdadm
 endef
 
 $(eval $(call BuildPackage,mdadm))
diff --git a/package/utils/mdadm/files/mdadm.config b/package/utils/mdadm/files/mdadm.config
new file mode 100644
index 0000000000..536228fae4
--- /dev/null
+++ b/package/utils/mdadm/files/mdadm.config
@@ -0,0 +1,3 @@
+config mdadm
+	option email root
+
diff --git a/package/utils/mdadm/files/mdadm.init b/package/utils/mdadm/files/mdadm.init
new file mode 100644
index 0000000000..9da4684fb1
--- /dev/null
+++ b/package/utils/mdadm/files/mdadm.init
@@ -0,0 +1,34 @@
+#!/bin/sh /etc/rc.common
+
+START=13
+STOP=98
+
+USE_PROCD=1
+PROG=/sbin/mdadm
+NAME=mdadm
+
+mdadm_email() {
+	local cfg="$1"
+	if [ ! -x /sbin/sendmail ]; then
+		return
+	fi
+	config_get email "$cfg" email
+}
+
+start_service() {
+	local email
+
+	config_load mdadm
+	config_foreach mdadm_email mdadm
+
+	$PROG --assemble --scan
+
+	procd_open_instance
+	procd_set_param command "$PROG" --monitor ${email:+--mail=$email} --syslog --scan
+	procd_close_instance
+}
+
+stop_service() {
+	$PROG --stop --scan
+}
+
-- 
2.30.2