From e5173b9127a42b7c6a209c278fbbcbcd29dcdccc Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Thu, 6 Dec 2012 16:43:24 -0600 Subject: [PATCH] migrate-to-run: do not require a reboot The script that migrates the @libexecdir@/rc/init.d directory to /run/openrc should not require a reboot. Reported-by: chainsaw@gentoo.org --- sh/init.sh.Linux.in | 8 ++++++++ sh/migrate-to-run.sh.in | 41 +++++++++++------------------------------ 2 files changed, 19 insertions(+), 30 deletions(-) diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in index 0eca7361..f45eae1f 100644 --- a/sh/init.sh.Linux.in +++ b/sh/init.sh.Linux.in @@ -51,6 +51,10 @@ if [ ! -d /run ]; then fi fi +if [ -L /run/openrc ]; then + rm /run/openrc +fi + if [ "$sys" = VSERVER ]; then rm -rf /run/* elif ! mountinfo -q /run; then @@ -84,5 +88,9 @@ if [ -e "$RC_LIBEXECDIR"/cache/deptree ]; then cp -p "$RC_LIBEXECDIR"/cache/* "$RC_SVCDIR" 2>/dev/null fi +if [ -e "$RC_LIBEXECDIR"/init.d ]; then + rm -rf "$RC_LIBEXECDIR"/init.d +fi + echo sysinit >"$RC_SVCDIR"/softlevel exit 0 diff --git a/sh/migrate-to-run.sh.in b/sh/migrate-to-run.sh.in index 73978e7c..b18c5418 100644 --- a/sh/migrate-to-run.sh.in +++ b/sh/migrate-to-run.sh.in @@ -11,38 +11,19 @@ fi if [ ! -d /run ]; then eerror "/run is not a directory." - eerror "This means the OpenRC dependency data cannot be migrated." - eerror "Please create the /run directory and reboot the system." - exit 1 -fi - -if ! mountinfo -q -f tmpfs /run; then - for x in /run/.* /run/*; do - case "$x" in - /run/.|/run/..) - continue - ;; - esac - if [ -e "$x" ]; then - eerror "Your /run directory contains files." - eerror "Please reboot the system." - exit 1 - fi - done - - mount -t tmpfs -o mode=0755,nosuid,nodev tmpfs /run 2> /dev/null - if [ $? != 0 ]; then - eerror "Unable to mount a tmpfs on /run." - eerror "This means the OpenRC dependency data cannot be migrated." - eerror "Please create the /run directory and reboot the system." - exit 1 - fi + eerror "moving /run to /run.pre-openrc" + mv /run /run.pre-openrc + mkdir /run fi rm -rf /run/openrc -cp -a "@LIBEXECDIR@/init.d" /run/openrc -rc-update -u -umount "@LIBEXECDIR@/init.d" -rm -rf "@LIBEXECDIR@/init.d" + +if ! mountinfo -q -f tmpfs /run; then + ln -s "@LIBEXECDIR@"/init.d /run/openrc +else + cp -a "@LIBEXECDIR@/init.d" /run/openrc + rc-update -u +fi + einfo "The OpenRC dependency data was migrated successfully." exit 0