[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: