saving uncommitted changes in /etc prior to emerge run

This commit is contained in:
2015-07-31 02:55:23 +02:00
committed by Hans Wurst
parent 4d9533ca0a
commit 5bededcf96
492 changed files with 5986 additions and 66593 deletions

View File

@@ -1,4 +1,4 @@
#!/sbin/runscript
#!/sbin/openrc-run
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
# Released under the 2-clause BSD license.
@@ -6,7 +6,7 @@ depend()
{
need localmount
before logger
after clock sysctl
after clock root sysctl
keyword -prefix -timeout
}
@@ -68,7 +68,7 @@ cleanup_var_run_dir()
do
# Clean stale sockets
if [ -S "$x" ]; then
if type fuser >/dev/null 2>&1; then
if command -v fuser >/dev/null 2>&1; then
fuser "$x" >/dev/null 2>&1 || rm -- "$x"
else
rm -- "$x"
@@ -117,19 +117,42 @@ migrate_to_run()
clean_run()
{
[ "$RC_SYS" = VSERVER ] && return 0
[ "$RC_SYS" = VSERVER -o "$RC_SYS" = LXC ] && return 0
local dir
# If / is still read-only due to a problem, this will fail!
if ! checkpath -W /; then
eerror "/ is not writable; unable to clean up underlying /run"
return 1
fi
if ! checkpath -W /tmp; then
eerror "/tmp is not writable; unable to clean up underlying /run"
return 1
fi
# Now we know that we can modify /tmp and /
# if mktemp -d fails, it returns an EMPTY string
# STDERR: mktemp: failed to create directory via template /tmp/tmp.XXXXXXXXXX: Read-only file system
# STDOUT: ''
rc=0
dir=$(mktemp -d)
mount --bind / $dir
rm -rf $dir/run/*
umount $dir
rm -rf $dir
if [ -n "$dir" -a -d $dir -a -w $dir ]; then
mount --bind / $dir && rm -rf $dir/run/* || rc=1
umount $dir
rm -rf $dir
else
rc=1
fi
if [ $rc -ne 0 ]; then
eerror "Could not clean up underlying /run on /"
return 1
fi
}
start()
{
# Remove any added console dirs
rm -rf "$RC_LIBEXECDIR"/console/*
if checkpath -W "$RC_LIBEXECDIR"; then
rm -rf "$RC_LIBEXECDIR"/console/*
fi
local logw=false runw=false extra=
# Ensure that our basic dirs exist
@@ -191,10 +214,13 @@ start()
if yesno $log_dmesg; then
if $logw || checkpath -W /var/log; then
# Create an 'after-boot' dmesg log
if [ "$RC_SYS" != VSERVER -a "$RC_SYS" != OPENVZ -a "$RC_SYS" != LXC ]; then
dmesg > /var/log/dmesg
chmod 640 /var/log/dmesg
fi
case "$RC_SYS" in
VSERVER|OPENVZ|LXC|SYSTEMD-NSPAWN) ;;
*)
dmesg > /var/log/dmesg
chmod 640 /var/log/dmesg
;;
esac
fi
fi