[LEDE-DEV] mdadm: Fix config generation

Message ID 20171006082852.19799-1-rosenp@gmail.com
State New
Headers show
Series
  • [LEDE-DEV] mdadm: Fix config generation
Related show

Commit Message

Rosen Penev Oct. 6, 2017, 8:28 a.m.
The init script generated something like "DEVICE=/dev/sda" when it should have been generating "DEVICE /dev/sda". mdadm errors on this. Patch by jow.

Also changed the default sendmail path to /usr/sbin/sendmail. No package in LEDE provides /sbin/sendmail. msmtp provides /usr/sbin/sendmail so use that.

Also add a patch to fix file paths for mdadm runtime files. mdadm currently errors on them since /run is missing. Once /run is added to stock LEDE, this patch can be removed.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
---
 package/utils/mdadm/Makefile                       |  2 +-
 package/utils/mdadm/files/mdadm.init               | 11 ++++----
 .../utils/mdadm/patches/201-Fix-directories.patch  | 31 ++++++++++++++++++++++
 3 files changed, 37 insertions(+), 7 deletions(-)
 create mode 100644 package/utils/mdadm/patches/201-Fix-directories.patch

Patch

diff --git a/package/utils/mdadm/Makefile b/package/utils/mdadm/Makefile
index 1ed62d8174..5b2aa8e172 100644
--- a/package/utils/mdadm/Makefile
+++ b/package/utils/mdadm/Makefile
@@ -9,7 +9,7 @@  include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mdadm
 PKG_VERSION:=4.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 
 PKG_SOURCE_URL:=@KERNEL/linux/utils/raid/mdadm
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
diff --git a/package/utils/mdadm/files/mdadm.init b/package/utils/mdadm/files/mdadm.init
index e6624a776e..64a50b35de 100644
--- a/package/utils/mdadm/files/mdadm.init
+++ b/package/utils/mdadm/files/mdadm.init
@@ -34,14 +34,13 @@  mdadm_common() {
 	local cfg="$1"
 	local email devices
 
-	if [ -x /sbin/sendmail ]; then
-		append_option email "$cfg" email "MAILADDR"
-
+	if [ -x /usr/sbin/sendmail ]; then
+		config_get email "$cfg" email
+		[ -n "$email" ] && printf "MAILADDR %s\n" "$email" >> $CONF
 	fi
 
-	append_option devices "$cfg" devices DEVICE " "
-
-	printf "%s\n%s\n" "$email" "$devices" >> $CONF
+	config_list_foreach "$cfg" devices append_list_item devices " "
+	[ -n "$devices" ] && printf "DEVICE %s\n" "$devices" >> $CONF
 }
 
 mdadm_array() {
diff --git a/package/utils/mdadm/patches/201-Fix-directories.patch b/package/utils/mdadm/patches/201-Fix-directories.patch
new file mode 100644
index 0000000000..c795441b27
--- /dev/null
+++ b/package/utils/mdadm/patches/201-Fix-directories.patch
@@ -0,0 +1,31 @@ 
+diff --git a/mdadm.h b/mdadm.h
+index 71b8afb..1d8fca3 100644
+--- a/mdadm.h
++++ b/mdadm.h
+@@ -103,7 +103,7 @@ struct dlm_lksb {
+  * /run  seems to have emerged as the best standard.
+  */
+ #ifndef MAP_DIR
+-#define MAP_DIR "/run/mdadm"
++#define MAP_DIR "/tmp/run/mdadm"
+ #endif /* MAP_DIR */
+ /* MAP_FILE is what we name the map file we put in MAP_DIR, in case you
+  * want something other than the default of "map"
+@@ -120,7 +120,7 @@ struct dlm_lksb {
+  * boot process and stays up as long as possible during shutdown.
+  */
+ #ifndef MDMON_DIR
+-#define MDMON_DIR "/run/mdadm"
++#define MDMON_DIR "/tmp/run/mdadm"
+ #endif /* MDMON_DIR */
+ 
+ /* FAILED_SLOTS is where to save files storing recent removal of array
+@@ -128,7 +128,7 @@ struct dlm_lksb {
+  * slot for array recovery
+  */
+ #ifndef FAILED_SLOTS_DIR
+-#define FAILED_SLOTS_DIR "/run/mdadm/failed-slots"
++#define FAILED_SLOTS_DIR "/tmp/run/mdadm/failed-slots"
+ #endif /* FAILED_SLOTS */
+ 
+ #include	"md_u.h"