Bug#620491: [PATCH] setupcon always fails on boot - readonly /tmp
2011/4/2 Jindřich Makovička <makovick@gmail.com>:
> 2011/4/2 Anton Zinoviev <anton@lml.bas.bg>:
>>> This is related to init.d/keyboard-setup, and the "Setting preliminary
>>> keymap ... failed" message is displayed on every boot.
>>
>> Yes. The script /etc/init.d/console-setup will compile a keyboard
>> layout in /etc/console-setup/cached-*.kmap.gz. The next time the
>> machine reboots, /etc/init.d/keyboard-setup will find the precompiled
>> layout and there will be no need to create a temporary file.
>>
>> Anton Zinoviev
>>
>>
>
> Ah, now i see the cause: on my machine, both [ "$cached" -ot
> "$CONFIG2" ] and [ "$CONFIG2" -ot "$cached" ] are false since both
> files were modified the same time during an update. One of the -ot
> comparisons should be reversed and negated instead.
Updated and tested patch attached.
--
Jindrich Makovicka
--- setupcon.orig 2011-04-02 11:41:50.420865902 +0200
+++ setupcon 2011-04-03 14:16:00.000000000 +0200
@@ -698,8 +698,8 @@
if \
[ -z "$savekbdfile" -a -n "$do_save" ] \
&& [ ! -f "$cached" \
- -o "$cached" -ot "$CONFIG" \
- -o "$cached" -ot "$CONFIG2" ]
+ -o ! "$CONFIG" -ot "$cached" \
+ -o ! "$CONFIG2" -ot "$cached" ]
then
savekbdfile="$cached"
fi
@@ -904,7 +904,7 @@
freebsd) run plain ECHO kbdcontrol -l "$KMAP" ;;
esac
else
- TMPFILE=`mktemp /tmp/tmpkbd.XXXXXX` \
+ TMPFILE=`mktemp -q /tmp/tmpkbd.XXXXXX || mktemp -q /lib/init/rw/tmpkbd.XXXXXX` \
|| { echo Can not create temporary file >&2; exit 1; }
case "$do_kbd" in
linux)
@@ -933,7 +933,7 @@
filearg () {
case "$1" in
- *.kmap.gz|*.kbd|/tmp/tmpkbd.*)
+ *.kmap.gz|*.kbd|*/tmpkbd.*)
echo -n "/etc/console-setup/${savekbdfile##*/} "
;;
/*)
@@ -957,7 +957,7 @@
echo '#!/bin/sh' >"$setupdir"/bin/setupcon
echo '# A micro-version of setupcon with static configuration.' >>"$setupdir"/bin/setupcon
chmod +x "$setupdir"/bin/setupcon
- TMPFILE=`mktemp /tmp/console-setup.XXXXXX` \
+ TMPFILE=`mktemp -q /tmp/console-setup.XXXXXX || mktemp -q /lib/init/rw/console-setup.XXXXXX` \
|| { echo Can not create temporary file >&2; exit 1; }
echo "$SETUP" |
while read cmd args; do
Reply to: