summaryrefslogtreecommitdiff
path: root/sh/migrate-to-run.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'sh/migrate-to-run.sh.in')
-rw-r--r--sh/migrate-to-run.sh.in50
1 files changed, 50 insertions, 0 deletions
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 <w.d.hubbs@gmail.com>
+# 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