2011/4/2 Jindřich Makovička <makov...@gmail.com>: > 2011/4/2 Anton Zinoviev <an...@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