modules: fix postinst generation for kernel modules
authorJohn Crispin <john@openwrt.org>
Fri, 10 Apr 2015 20:39:44 +0000 (20:39 +0000)
committerJohn Crispin <john@openwrt.org>
Fri, 10 Apr 2015 20:39:44 +0000 (20:39 +0000)
Fixes ticket #19352.

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
Signed-off-by: John Crispin <blogic@openwrt.org>
SVN-Revision: 45367

include/kernel.mk
package/base-files/files/lib/functions.sh

index 700736f..300da0d 100644 (file)
@@ -97,7 +97,7 @@ define ModuleAutoLoad
                                mkdir -p $(2)/etc/modules-boot.d; \
                                ln -s ../modules.d/$(1) $(2)/etc/modules-boot.d/; \
                        fi; \
-                       modules="$$$$$$$${modules:+$$$$$$$$modules}"; \
+                       modules="$$$$$$$${modules:+$$$$$$$$modules }$$$$$$$$mods"; \
                fi; \
        }; \
        add_module() { \
@@ -121,11 +121,11 @@ define ModuleAutoLoad
        if [ -n "$$$$$$$$modules" ]; then \
                mkdir -p $(2)/etc/modules.d; \
                mkdir -p $(2)/CONTROL; \
-               echo "#!/bin/sh" > $(2)/CONTROL/postinst; \
-               echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst; \
-               echo ". /lib/functions.sh" >> $(2)/CONTROL/postinst; \
-               echo "insert_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst; \
-               chmod 0755 $(2)/CONTROL/postinst; \
+               echo "#!/bin/sh" > $(2)/CONTROL/postinst-pkg; \
+               echo "[ -z \"\$$$$$$$$IPKG_INSTROOT\" ] || exit 0" >> $(2)/CONTROL/postinst-pkg; \
+               echo ". /lib/functions.sh" >> $(2)/CONTROL/postinst-pkg; \
+               echo "insert_modules $$$$$$$$modules" >> $(2)/CONTROL/postinst-pkg; \
+               chmod 0755 $(2)/CONTROL/postinst-pkg; \
        fi
 endef
 
index dc3b805..72d954d 100755 (executable)
@@ -154,10 +154,13 @@ config_list_foreach() {
 }
 
 insert_modules() {
-       [ -d /etc/modules.d ] && {
-               cd /etc/modules.d
-               sed 's/^[^#]/insmod &/' $* | ash 2>&- || :
-       }
+       for m in $*; do
+               if [ -f /etc/modules.d/$m ]; then
+                       sed 's/^[^#]/insmod &/' /etc/modules.d/$m | ash 2>&- || :
+               else
+                       modprobe $m
+               fi
+       done
 }
 
 default_prerm() {