From 82d3918d7a1c625f98fcf607c7a450f18b7e60bd Mon Sep 17 00:00:00 2001 From: William Hubbs Date: Wed, 22 Feb 2012 20:44:32 -0600 Subject: move rc_svcdir to /run/openrc on Linux systems If you are not using linux, this should not affect you. If you are using linux, from this point forward, openrc requires the /run directory to be a mounted tmpfs. If it is, you can run @LIBEXECDIR@/sh/migrate-to-run.sh as root to migrate your dependency tree and state information to the new location. If it is not, you must create the /run directory as root with permissions 755 then reboot your system. reported-by: Maxim Kammerer X-Gentoo-Bug: 401059 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=401059 --- sh/migrate-to-run.sh.in | 50 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 sh/migrate-to-run.sh.in (limited to 'sh/migrate-to-run.sh.in') diff --git a/sh/migrate-to-run.sh.in b/sh/migrate-to-run.sh.in new file mode 100644 index 0000000..f296a5c --- /dev/null +++ b/sh/migrate-to-run.sh.in @@ -0,0 +1,50 @@ +#!@SHELL@ +# Copyright (c) 2012 William Hubbs +# Released under the 2-clause BSD license. + +. "@LIBEXECDIR@/sh/functions.sh" + +if ! mountinfo -q -f tmpfs "@LIBEXECDIR@/init.d"; then + einfo "The OpenRC dependency data has already been migrated." + exit 0 +fi + +if [ ! -d "@PREFIX@/run" ]; then + eerror "'@PREFIX@/run' is not a directory." + eerror "This means the OpenRC dependency data cannot be migrated." + eerror "Please create the '@PREFIX@/run' directory and reboot the system." + exit 1 +fi + +if ! mountinfo -q -f tmpfs "@PREFIX@/run"; then + local x + for x in "@PREFIX@/run/."* "@PREFIX@/run/"*; do + case "$x" in + "@PREFIX@/run/."|"@PREFIX@/run/..") + continue + ;; + esac + if [ -e "$x" ]; then + eerror "Your '@PREFIX@/run' directory contains files." + eerror "Please reboot the system." + exit 1 + fi + done + + mount -t tmpfs -o mode=0755,nosuid,nodev \ + tmpfs "@PREFIX@/run" 2> /dev/null + if [ $? != 0 ]; then + eerror "Unable to mount a tmpfs on '@PREFIX@/run'." + eerror "This means the OpenRC dependency data cannot be migrated." + eerror "Please create the '@PREFIX@/run' directory and reboot the system." + exit 1 + fi +fi + +rm -rf "@PREFIX@/run/openrc" +cp -a "@LIBEXECDIR@/init.d" "@PREFIX@/run/openrc" +rc-update -u +rm -rf "@LIBEXECDIR@/init.d" +umount "@LIBEXECDIR@/init.d" +einfo "The OpenRC dependency data was migrated successfully." +exit 0 -- cgit v1.2.3