Package: sysv-rc-bootsplash
Version: 1.0.2-1
In debian testing, sysv-rc-bootsplash fails to patch /etc/init.d/rc
script.
# apt-get install --reinstall sysv-rc sysv-rc-bootsplash
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed
sysv-rc-bootsplash
0 upgraded, 1 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 0B/59.6kB of archives.
After unpacking 69.6kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Preconfiguring packages ...
(Reading database ... 122700 files and directories currently installed.)
Preparing to replace sysv-rc 2.86.ds1-20 (using
.../sysv-rc_2.86.ds1-20_all.deb) ...
Unpacking replacement sysv-rc ...
Setting up sysv-rc (2.86.ds1-20) ...
Selecting previously deselected package sysv-rc-bootsplash.
(Reading database ... 122700 files and directories currently installed.)
Unpacking sysv-rc-bootsplash (from .../sysv-rc-bootsplash_1.0.2-1_all.deb) ...
Setting up sysv-rc-bootsplash (1.0.2-1) ...
Testing if patches apply cleanly...
1 out of 10 hunks FAILED -- saving rejects to file /etc/init.d/rc.rej
Patches would not apply cleanly.
dpkg: error processing sysv-rc-bootsplash (--configure):
subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
sysv-rc-bootsplash
E: Sub-process /usr/bin/dpkg returned an error code (1)
It says, rejects can be found in rc.rej but no rc.rej is created. So
I've looked in your package. Running "patch /etc/init.d/rc --dry-run -bfs
/usr/share/sysv-rc-bootsplash/rc-bootsplash.patch || print_error" command does
not create rc.rej if patch fails. This is due to --dry-run switch.
Well, running it without --dry-run creates following rc.rej file:
***************
*** 72,77 ****
then
/sbin/unconfigured.sh
fi
fi
. /etc/default/rcS
--- 77,83 ----
then
/sbin/unconfigured.sh
fi
+ rc_splash "splash start" # let bootsplash know we are ready
fi
. /etc/default/rcS
I do not understand details of rc file but there is nothing similar to
the block above in the whole rc file. I have attached my rc file to this
mail.
Before sending this e-mail, I have tried version 1.0.4-1 and it works perfectly.
However, this version is in unstable and therefore bootsplash in testing
is broken. At least for me.
I like your work at debian bootsplash packages and I appreciate it very
much. Some time before a year I spent a lot of time to get bootsplash working.
But now it is soooo simple.
--
Stromek
#! /bin/sh
#
# rc
#
# Starts/stops services on runlevel changes.
#
# Optimization: A start script is not run when the service was already
# configured to run in the previous runlevel. A stop script is not run
# when the the service was already configured not to run in the previous
# runlevel.
#
# Authors:
# Miquel van Smoorenburg <[EMAIL PROTECTED]>
# Bruce Perens <[EMAIL PROTECTED]>
PATH=/sbin:/bin:/usr/sbin:/usr/bin
export PATH
# Un-comment the following for debugging.
# debug=echo
# Specify method used to enable concurrent init.d scripts.
# Valid options are 'none', 'shell' and 'startpar'
CONCURRENCY=none
# Make sure the name survive changing the argument list
scriptname="$0"
umask 022
on_exit() {
echo "error: '$scriptname' exited outside the expected code flow."
}
trap on_exit EXIT # Enable emergency handler
# Ignore CTRL-C only in this shell, so we can interrupt subprocesses.
trap ":" INT QUIT TSTP
# Set onlcr to avoid staircase effect.
stty onlcr 0>&1
# Decide if usplash progress bar should be activated or not. Override
# in /etc/default/rcS if required.
if type usplash_write >/dev/null 2>&1; then
SPLASH=true
else
SPLASH=false
fi
# Now find out what the current and what the previous runlevel are.
runlevel=$RUNLEVEL
# Get first argument. Set new runlevel to this argument.
[ "$1" != "" ] && runlevel=$1
if [ "$runlevel" = "" ]
then
echo "Usage: $scriptname <runlevel>" >&2
exit 1
fi
previous=$PREVLEVEL
[ "$previous" = "" ] && previous=N
export runlevel previous
. /etc/default/rcS
export VERBOSE
if [ -f /lib/lsb/init-functions ] ; then
. /lib/lsb/init-functions
else
log_daemon_msg() { echo $@; }
fi
#
# Stub to do progress bar ticks (currently just for usplash) on startup
#
startup_progress() {
$@
if [ "$SPLASH" = true ] ; then
step=$(($step + $step_change))
progress=$(($step * $progress_size / $num_steps + $first_step))
usplash_write "PROGRESS $progress" || true
fi
}
#
# Start script or program.
#
case "$CONCURRENCY" in
shell)
log_daemon_msg "Using shell-style concurrent boot"
startup() {
action=$1
shift
scripts="$@"
sh=sh
# Debian Policy �9.3.1 requires .sh scripts in runlevel S to be
sourced
# However, some important packages currently contain .sh scripts
# that do "exit" at some point, thus killing this process. Bad!
#[ S = "$runlevel" ] && sh=.
backgrounded=0
for script in $scripts ; do
case "$script" in
*.sh)
if [ "." = "$sh" ] ; then
set "$action"
RC_SAVE_PATH="$PATH"
startup_progress $debug . "$script"
PATH="$RC_SAVE_PATH"
else
startup_progress $debug $sh "$script"
$action
fi
;;
*)
startup_progress $debug "$script" $action &
backgrounded=1
;;
esac
done
[ 1 = "$backgrounded" ] && wait
}
;;
startpar)
log_daemon_msg "Using startpar-style concurrent boot"
startup() {
action=$1
shift
scripts="$@"
sh=sh
# Debian Policy �9.3.1 requires .sh scripts in runlevel S to be
sourced
# However, some important packages currently contain .sh scripts
# that do "exit" at some point, thus killing this process. Bad!
#[ S = "$runlevel" ] && sh=.
# Make sure .sh scripts are sourced in runlevel S
if [ "." = "$sh" ] ; then
newscripts=
for script in $scripts ; do
case "$script" in
*.sh)
set "$action"
RC_SAVE_PATH="$PATH"
startup_progress $debug . "$script"
PATH="$RC_SAVE_PATH"
;;
*)
newscripts="$newscripts $script"
;;
esac
done
scripts="$newscripts"
fi
# startpar is not able to handle time jumps. So the
# hwclock.sh scripts should not be executed from
# within startpar. The .sh hack above make this
# problem irrelevant. [pere 2005-09-10]
[ -n "$scripts" ] && startup_progress $debug startpar -a
$action $scripts
}
;;
none|*)
startup() {
action=$1
shift
scripts="$@"
sh=sh
# Debian Policy �9.3.1 requires .sh scripts in runlevel S to be
sourced
# However, some important packages currently contain .sh scripts
# that do "exit" at some point, thus killing this process. Bad!
#[ S = "$runlevel" ] && sh=.
for script in $scripts ; do
case "$script" in
*.sh)
if [ "." = "$sh" ] ; then
set "$action"
RC_SAVE_PATH="$PATH"
startup_progress $debug . "$script"
PATH="$RC_SAVE_PATH"
else
startup_progress $debug $sh "$script"
$action
fi
;;
*)
startup_progress $debug "$script" $action
;;
esac
done
}
;;
esac
# Is there an rc directory for this new runlevel?
if [ -d /etc/rc$runlevel.d ]
then
# Find out where in the progress bar the initramfs got to.
PROGRESS_STATE=0
if [ -f /dev/.initramfs/progress_state ]; then
. /dev/.initramfs/progress_state
fi
# Split the remaining portion of the progress bar into thirds
progress_size=$(((100 - $PROGRESS_STATE) / 3))
case "$runlevel" in
0|6)
ACTION=stop
# Count down from 0 to -100 and use the entire bar
first_step=0
progress_size=100
step_change=-1
;;
S)
ACTION=start
# Begin where the initramfs left off and use 2/3
# of the remaining space
first_step=$PROGRESS_STATE
progress_size=$(($progress_size * 2))
step_change=1
;;
*)
ACTION=start
# Begin where rcS left off and use the final 1/3 of
# the space (by leaving progress_size unchanged)
first_step=$(($progress_size * 2 + $PROGRESS_STATE))
step_change=1
;;
esac
if [ "$SPLASH" = true ] ; then
# Count the number of scripts we need to run (for usplash
# progress bar)
num_steps=0
for s in /etc/rc$runlevel.d/[SK]*; do
case "${s##/etc/rc$runlevel.d/S??}" in
gdm|xdm|kdm|reboot|halt)
break
;;
esac
num_steps=$(($num_steps + 1))
done
step=0
fi
# First, run the KILL scripts.
if [ "$previous" != N ]
then
# Run all scripts with the same level in parallel
CURLEVEL=""
for s in /etc/rc$runlevel.d/K*
do
level=$(echo $s | sed 's/.*\/K\([0-9][0-9]\).*/\1/')
if [ "$level" = "$CURLEVEL" ]
then
continue
fi
CURLEVEL=$level
SCRIPTS=""
for i in /etc/rc$runlevel.d/K$level*
do
# Check if the script is there.
[ ! -f $i ] && continue
#
# Find stop script in previous runlevel but
# no start script there.
#
suffix=${i#/etc/rc$runlevel.d/K[0-9][0-9]}
previous_stop=/etc/rc$previous.d/K[0-9][0-9]$suffix
previous_start=/etc/rc$previous.d/S[0-9][0-9]$suffix
#
# If there is a stop script in the previous
level
# and _no_ start script there, we don't
# have to re-stop the service.
#
[ -f $previous_stop ] && [ ! -f $previous_start
] && continue
# Stop the service.
SCRIPTS="$SCRIPTS $i"
done
startup stop $SCRIPTS
done
fi
# Now run the START scripts for this runlevel.
# Run all scripts with the same level in parallel
CURLEVEL=""
step=0
for s in /etc/rc$runlevel.d/S*
do
level=$(echo $s | sed 's/.*\/S\([0-9][0-9]\).*/\1/')
if [ "$level" = "$CURLEVEL" ]
then
continue
fi
CURLEVEL=$level
SCRIPTS=""
for i in /etc/rc$runlevel.d/S$level*
do
[ ! -f $i ] && continue
if [ "$previous" != N ]
then
#
# Find start script in previous runlevel and
# stop script in this runlevel.
#
suffix=${i#/etc/rc$runlevel.d/S[0-9][0-9]}
stop=/etc/rc$runlevel.d/K[0-9][0-9]$suffix
previous_start=/etc/rc$previous.d/S[0-9][0-9]$suffix
#
# If there is a start script in the previous
level
# and _no_ stop script in this level, we don't
# have to re-start the service.
#
[ -f $previous_start ] && [ ! -f $stop ] &&
continue
fi
SCRIPTS="$SCRIPTS $i"
done
startup $ACTION $SCRIPTS
done
fi
if [ S = "$runlevel" ]
then
#
# For compatibility, run the files in /etc/rc.boot too.
#
[ -d /etc/rc.boot ] && run-parts /etc/rc.boot
fi
trap - EXIT # Disable emergency handler
exit 0