uhttpd: handle reload after uhttpd-mod-ubus installation using postinst
authorRafał Miłecki <rafal@milecki.pl>
Wed, 27 Dec 2023 15:20:45 +0000 (16:20 +0100)
committerRafał Miłecki <rafal@milecki.pl>
Sat, 27 Jan 2024 09:36:43 +0000 (10:36 +0100)
Use postinst script to reload service instead of uci-defaults hack. It's
possible thanks to recent base-files change that executes postinst after
uci-defaults.

This fixes support for uhttpd customizations. It's possible (again) to
adjust uhttpd config with custom uci-defaults before it gets started.

Cc: Hauke Mehrtens <hauke@hauke-m.de>
Fixes: d25d281fd668 ("uhttpd: Reload config after uhttpd-mod-ubus was added")
Ref: b799dd3c705d ("base-files: execute package's "postinst" after executing uci-defaults")
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
(cherry picked from commit 1f11a4e28336c07aca61dd3b4fef01ef872a362d)

package/network/services/uhttpd/Makefile
package/network/services/uhttpd/files/ubus.default

index 02a02405fd69eae7af6133ea1573aa628dea5673..37117bf91192f42475453c893cb183ddd7afbbb1 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=uhttpd
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE_PROTO:=git
 PKG_SOURCE_URL=$(PROJECT_GIT)/project/uhttpd.git
@@ -107,6 +107,13 @@ define Package/uhttpd-mod-ubus/install
        $(INSTALL_DATA) ./files/ubus.default $(1)/etc/uci-defaults/00_uhttpd_ubus
 endef
 
+define Package/uhttpd-mod-ubus/postinst
+#!/bin/sh
+if [ -z "$${IPKG_INSTROOT}" ]; then
+       /etc/init.d/uhttpd reload
+fi
+endef
+
 define Package/uhttpd-mod-ucode/install
        $(INSTALL_DIR) $(1)/usr/lib
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/uhttpd_ucode.so $(1)/usr/lib/
index 474016c1c55705597e2558560d589c0f40d81e56..d0a218a0ad9d1e9077cd27f743a147971aae7cbe 100644 (file)
@@ -1,17 +1,11 @@
 #!/bin/sh
 
-commit=0
-
 if [ -z "$(uci -q get uhttpd.main.ubus_prefix)" ]; then
        uci set uhttpd.main.ubus_prefix=/ubus
-       commit=1
 fi
 
 [ "$(uci -q get uhttpd.main.ubus_socket)" = "/var/run/ubus.sock" ] && {
        uci set uhttpd.main.ubus_socket='/var/run/ubus/ubus.sock'
-       commit=1
 }
 
-[ "$commit" = 1 ] && uci commit uhttpd && /etc/init.d/uhttpd reload
-
 exit 0