Browse Source

rework service startup, do not hardcode into postinst scripts

Waldemar Brodkorb 9 years ago
parent
commit
120fa5a3bf

+ 1 - 1
mk/build.mk

@@ -455,7 +455,7 @@ $(ADK_TOPDIR)/adk/tools/pkgrebuild: $(ADK_TOPDIR)/adk/tools/pkgrebuild.c $(ADK_T
 $(ADK_TOPDIR)/adk/tools/depmaker: $(ADK_TOPDIR)/adk/tools/depmaker.c
 	@$(HOST_CC) $(HOST_CFLAGS) -o $@ $(ADK_TOPDIR)/adk/tools/depmaker.c
 
-menu .menu: $(wildcard package/*/Makefile) $(wildcard target/*/systems) $(wildcard target/*/systems/*) $(ADK_TOPDIR)/adk/tools/pkgmaker $(ADK_TOPDIR)/adk/tools/pkgrebuild
+menu .menu: $(wildcard package/*/Makefile) $(wildcard target/*/systems) $(wildcard target/*/systems/*) $(ADK_TOPDIR)/adk/tools/pkgmaker $(ADK_TOPDIR)/adk/tools/pkgrebuild $(wildcard target/*/collections)
 	@echo "Generating menu structure ..."
 	@$(BASH) $(ADK_TOPDIR)/scripts/create-menu
 	@$(ADK_TOPDIR)/adk/tools/pkgmaker

+ 1 - 0
mk/image.mk

@@ -41,6 +41,7 @@ extra-install:
 	@if [ ! -z $(extra) ];then $(CP) $(extra)/* ${TARGET_DIR};fi
 
 image-prepare-post:
+	$(BASH) $(ADK_TOPDIR)/scripts/update-rcconf
 	rng=/dev/arandom; test -e $$rng || rng=/dev/urandom; \
 	    dd if=$$rng bs=512 count=1 >>${TARGET_DIR}/etc/.rnd 2>/dev/null; \
 	    chmod 600 ${TARGET_DIR}/etc/.rnd

+ 0 - 3
mk/package.mk

@@ -176,9 +176,6 @@ $$(IDIR_$(1))/CONTROL/control: ${_PATCH_COOKIE}
 	@for file in conffiles preinst postinst prerm postrm; do \
 		[ ! -f ./files/$(2).$$$$file ] || cp ./files/$(2).$$$$file $$(IDIR_$(1))/CONTROL/$$$$file; \
 	done
-ifeq ($(ADK_RUNTIME_START_$(1)),y)
-	$(SED) "s#NO#YES#" $$(IDIR_$(1))/CONTROL/postinst
-endif
 ifneq ($(ADK_DEBUG),y)
 	@echo "Package: $$(shell echo $(2) | tr '_' '-')-dbg" > $(WRKDIR)/.$(2)-dbg.control
 	@echo "Section: debug" >> $(WRKDIR)/.$(2)-dbg.control

+ 1 - 1
package/base-files/src/etc/init.d/fs

@@ -27,7 +27,7 @@ for fs in $fstypes; do
 		grep $fs /proc/filesystems >/dev/null 2>&1
 		if [ $? -eq 0 ];then
 			[ -x /usr/sbin/fsck.$fs ] && {
-				logger -s -t 'Filesystem' "checking $fs filesystem on $disk"
+				logger -t 'Filesystem' "checking $fs filesystem on $disk"
 				fsck -p $disk >/dev/null
 			}
 			logger -t '' "Mounting local filesystems"

+ 0 - 12
package/busybox/Makefile

@@ -47,21 +47,9 @@ do-configure:
 do-build:
 	PATH='$(HOST_PATH)' $(MAKE) ${BB_MAKE_FLAGS} -C ${WRKBUILD} busybox
 
-BBDEFS:=(
-define BBDEF
-ifeq ($(ADK_RUNTIME_START_BUSYBOX_$(1)),y)
-BBDEFS+=echo BBDEF_$(1)=YES;
-else
-BBDEFS+=echo BBDEF_$(1)=NO;
-endif
-endef
-$(foreach OPTION,CROND WATCHDOG SYSLOGD INETD NTPD,$(eval $(call BBDEF,$(OPTION))))
-
 do-install:
 	PATH='$(HOST_PATH)' $(MAKE) ${BB_MAKE_FLAGS} -C ${WRKBUILD} install $(MAKE_TRACE)
 	$(CP) $(WRKINST)/* $(IDIR_BUSYBOX)/
-	$(INSTALL_DIR) $(IDIR_BUSYBOX)/etc
-	${BBDEFS} :) >$(IDIR_BUSYBOX)/etc/.bb_defaults
 ifeq ($(BUSYBOX_IFUPDOWN),y)
 	$(INSTALL_DIR) $(IDIR_BUSYBOX)/etc/init.d
 	$(INSTALL_BIN) ./files/network $(IDIR_BUSYBOX)/etc/init.d

+ 5 - 7
package/busybox/files/busybox.postinst

@@ -1,13 +1,11 @@
 #!/bin/sh
-if [ -z $IPKG_INSTROOT ];then chmod u+s /bin/busybox;fi
 . $IPKG_INSTROOT/etc/functions.sh
-. $IPKG_INSTROOT/etc/.bb_defaults
 add_rcconf network YES
-add_rcconf crond ${BBDEF_CROND}
-add_rcconf watchdog ${BBDEF_WATCHDOG}
+add_rcconf crond NO
+add_rcconf watchdog NO
 add_rcconf watchdog_flags '-t 10 -T 20'
-add_rcconf syslogd ${BBDEF_SYSLOGD}
+add_rcconf syslogd NO
 add_rcconf syslogd_flags '-C32'
-add_rcconf inetd ${BBDEF_INETD}
-add_rcconf ntpd ${BBDEF_NTPD}
+add_rcconf inetd NO
+add_rcconf ntpd NO
 add_rcconf ntpd_flags '-p time.fu-berlin.de'

+ 20 - 0
scripts/update-rcconf

@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+topdir=$(readlink -nf $(dirname $0)/.. 2>/dev/null || (cd $(dirname $0)/..; pwd -P))
+. $topdir/.config
+
+rcconf=$topdir/root_${ADK_TARGET_SYSTEM}_${ADK_TARGET_LIBC}/etc/rc.conf
+
+for service in $(grep ^ADK_RUNTIME_START_ $topdir/.config |grep -v ADK_RUNTIME_START_SERVICES);do
+	rcname=$(echo $service|sed -e "s#ADK_RUNTIME_START_##")
+	rcname=$(echo $rcname| sed -e "s#=y##")
+	rcname=$(echo $rcname| sed -e "s#^BUSYBOX_##")
+	rcname=$(echo $rcname| tr '[:upper:]' '[:lower:]')
+	if [ $ADK_PKG_XBMCBOX = "y" ];then
+		sed -i -e "s#$rcname=\"NO\"#$rcname=\"DAEMON\"#" $rcconf
+	else
+		sed -i -e "s#$rcname=\"NO\"#$rcname=\"YES\"#" $rcconf
+	fi
+done

+ 5 - 0
target/collections/xbmcbox

@@ -18,6 +18,11 @@ config ADK_PKG_XBMCBOX
 	select ADK_QUIET_KERNEL
 	select ADK_RUNTIME_QUIET_INIT
 	select ADK_TARGET_GPU_MEM_128
+	select ADK_RUNTIME_START_SERVICES
+	select ADK_RUNTIME_START_DROPBEAR
+	select ADK_RUNTIME_START_BUSYBOX_NTPD
+	select ADK_RUNTIME_START_BUSYBOX_SYSLOGD
+	select ADK_RUNTIME_START_XBMC
 	help
 	  Create a small xbmc box.
 

+ 7 - 0
target/config/Config.in.runtime

@@ -57,6 +57,7 @@ config ADK_QUIET_KERNEL
 
 choice
 prompt "bootup messages from initscripts"
+default ADK_RUNTIME_QUIET_INIT if ADK_PKG_XBMCBOX
 default ADK_RUNTIME_VERBOSE_INIT_VGA if ADK_TARGET_WITH_VGA || ADK_TARGET_QEMU_WITH_GRAPHIC || ADK_TARGET_QEMU_WITH_GRAPHIC_ONLY || ADK_TARGET_VBOX
 default ADK_RUNTIME_VERBOSE_INIT_SERIAL
 
@@ -75,6 +76,7 @@ endchoice
 choice
 prompt "start getty or shell after bootup"
 default ADK_RUNTIME_SHELL if ADK_PKG_TEST
+default ADK_RUNTIME_NONE if ADK_PKG_XBMCBOX
 default ADK_RUNTIME_GETTY
 
 config ADK_RUNTIME_GETTY
@@ -87,6 +89,11 @@ config ADK_RUNTIME_SHELL
 	help
 	  Start a shell after bootup
 
+config ADK_RUNTIME_NONE
+	boolean "start no shell nor getty after bootup"
+	help
+	  Do not start a shell or getty after bootup
+
 endchoice
 
 config ADK_RUNTIME_GETTY_VGA