Author: alexander
Date: 2005-07-27 08:32:29 -0600 (Wed, 27 Jul 2005)
New Revision: 414

Added:
   x86/branches/utf8/packages/lfs-bootscripts/font.dat
   x86/branches/utf8/packages/lfs-bootscripts/lang.dat
Modified:
   x86/branches/utf8/BUGS
   x86/branches/utf8/Makefile
   x86/branches/utf8/packages/Xorg/Makefile
   x86/branches/utf8/packages/dialog/Makefile
   x86/branches/utf8/packages/lfs-bootscripts/Makefile
   x86/branches/utf8/packages/lfs-bootscripts/console
   x86/branches/utf8/packages/lfs-bootscripts/langconf
Log:
Reworked language configurator (untested).
Built packages before links (or w3m?)


Modified: x86/branches/utf8/BUGS
===================================================================
--- x86/branches/utf8/BUGS      2005-07-27 04:30:19 UTC (rev 413)
+++ x86/branches/utf8/BUGS      2005-07-27 14:32:29 UTC (rev 414)
@@ -25,6 +25,9 @@
   length is incorrect and manual pages containing hyphens and other characters
   rendered by Groff as multibte ones are wrapped incorrectly.
 
+procps:
+  "watch" still doesn't display non-ASCII characters in UTF-8 locales.
+
 slang:
   slang 2.x supports UTF-8, but most slang-based apps either don't support
   UTF-8 or expect patched slang-1.4.9 instead of 2.x. Package removed.
@@ -49,3 +52,16 @@
 lynx:
   truncates text in the header and the status line prematurely (uses byte count
   instead of properly calculated string width).
+
+lfs-bootscripts:
+  language selector is untested.
+
+Xorg:
+  The locale-names patch is not well-tested, and the configurator installed
+  with the bootscripts uses locale names that works even without the patch.
+
+links:
+  This program handles input in UTF-8 locales properly only if started in
+  the graphical mode on the X display. Package will be replaced with w3m.
+  Will resurrect on request if someone writes a wrapper script that warns the
+  user about non-working configuration.

Modified: x86/branches/utf8/Makefile
===================================================================
--- x86/branches/utf8/Makefile  2005-07-27 04:30:19 UTC (rev 413)
+++ x86/branches/utf8/Makefile  2005-07-27 14:32:29 UTC (rev 414)
@@ -179,12 +179,12 @@
        ch-sysklogd ch-sysvinit ch-tar ch-udev ch-util-linux ch-environment
 
 blfs: ch-openssl ch-wget ch-reiserfsprogs ch-xfsprogs ch-nano ch-joe ch-screen 
ch-curl ch-zip \
-       ch-unzip ch-lynx ch-libxml2 ch-expat ch-subversion stop-here 
ch-lfs-bootscripts ch-docbook-xml ch-libxslt \
+       ch-unzip ch-lynx ch-libxml2 ch-expat ch-subversion ch-dialog 
ch-lfs-bootscripts ch-docbook-xml ch-libxslt \
        ch-docbook-xsl ch-html_tidy ch-LFS-BOOK ch-libpng ch-freetype 
ch-fontconfig ch-Xorg ch-freefont ch-inputattach \
-       ch-fonts-dejavu ch-update-fontsdir ch-libjpeg ch-libtiff ch-links 
ch-openssh ch-pkgconfig ch-glib2 \
+       ch-fonts-dejavu ch-update-fontsdir ch-libjpeg ch-libtiff stop-here 
ch-links ch-openssh ch-pkgconfig ch-glib2 \
        ch-libungif ch-imlib2 ch-pango ch-atk ch-gtk2 ch-cvs ch-popt ch-samba 
ch-libIDL ch-firefox ch-thunderbird \
        ch-startup-notification ch-gvim ch-xfce ch-lua ch-ion ch-irssi ch-xchat 
ch-tcpwrappers ch-portmap \
-       ch-nfs-utils ch-traceroute ch-dialog ch-ncftp ch-pciutils ch-nALFS 
ch-device-mapper ch-LVM2 ch-dhcpcd \
+       ch-nfs-utils ch-traceroute ch-ncftp ch-pciutils ch-nALFS 
ch-device-mapper ch-LVM2 ch-dhcpcd \
        ch-distcc ch-ppp ch-rp-pppoe ch-libaal ch-reiser4progs ch-squashfs 
ch-cpio ch-mutt ch-msmtp ch-slrn \
        ch-raidtools ch-eject ch-linux ch-klibc ch-unionfs ch-initramfs 
ch-cdrtools ch-blfs-bootscripts ch-syslinux
 

Modified: x86/branches/utf8/packages/Xorg/Makefile
===================================================================
--- x86/branches/utf8/packages/Xorg/Makefile    2005-07-27 04:30:19 UTC (rev 
413)
+++ x86/branches/utf8/packages/Xorg/Makefile    2005-07-27 14:32:29 UTC (rev 
414)
@@ -6,11 +6,12 @@
 DIR= xc
 FILE= X11R$(VRS)-src.tar.bz2
 PATCH= xorg-6.8.1-luit_race-1.patch
+PATCH2= xorg-6.8.2-locale_names-1.patch
 URL= http://xorg.freedesktop.org/X11R$(VRS)/src-single/$(FILE)
 URL1= http://www.linuxfromscratch.org/patches/downloads/xorg/$(PATCH)
+URL2= http://www.linuxfromscratch.org/~alexander/$(PATCH2)
 
 
-
 #RULES
 
 .PHONY: clean chroot stage2
@@ -24,8 +25,10 @@
        @echo ""
        @if [ ! -f $(FILE) ] ; then $(WGET) $(URL) ; fi
        @if [ ! -f $(PATCH) ] ; then $(WGET) $(URL1) ; fi
+       @if [ ! -f $(PATCH2) ] ; then $(WGET) $(URL2) ; fi
        @if [ ! -d /usr/include/X11 ] ; then unpack $(FILE) && cd $(DIR) && \
         patch -Np1 -i ../$(PATCH) && \
+        patch -Np1 -i ../$(PATCH2) && \
         sed -i '/^SUBDIRS =/s/s etc$$//' programs/Xserver/Xprint/Imakefile && \
         pushd config/util && \
         make -f Makefile.ini lndir && \
@@ -40,7 +43,7 @@
         ln -sf ../X11R6/lib/X11 /usr/lib/X11 && \
         ln -sf ../X11R6/include/X11 /usr/include/X11 && \
         /sbin/ldconfig ; fi
-       @echo "/tmp/.ICE-unix dir 1777 root root" >> /etc/sysconfig/createfiles
+#      @echo "/tmp/.ICE-unix dir 1777 root root" >> /etc/sysconfig/createfiles
        @echo -e "#!/bin/sh\nexec /usr/X11R6/bin/X -nolisten tcp" 
>/etc/X11/xinit/xserverrc
        @chmod 755 /etc/X11/xinit/xserverrc
        @install -m644 $(ROOT)/etc/X11/xorg.conf /etc/X11/xorg.conf

Modified: x86/branches/utf8/packages/dialog/Makefile
===================================================================
--- x86/branches/utf8/packages/dialog/Makefile  2005-07-27 04:30:19 UTC (rev 
413)
+++ x86/branches/utf8/packages/dialog/Makefile  2005-07-27 14:32:29 UTC (rev 
414)
@@ -20,7 +20,8 @@
        @echo ""
        @if [ ! -f $(FILE) ] ; then $(WGET) $(URL) ; fi
        @if [ ! -f /usr/bin/dialog ] ; then unpack $(FILE) && cd $(DIR) && \
-        ./configure --prefix=/usr --enable-nls && make && make install ; fi
+        ./configure --prefix=/usr --enable-nls --enable-widec --with-ncursesw 
&& \
+        make && make install ; fi
        @make clean
 
 clean:

Modified: x86/branches/utf8/packages/lfs-bootscripts/Makefile
===================================================================
--- x86/branches/utf8/packages/lfs-bootscripts/Makefile 2005-07-27 04:30:19 UTC 
(rev 413)
+++ x86/branches/utf8/packages/lfs-bootscripts/Makefile 2005-07-27 14:32:29 UTC 
(rev 414)
@@ -22,7 +22,9 @@
        @if [ ! -f $(SRC)/$(FILE) ] ; then $(WGET) $(URL) && \
         mv $(FILE) $(SRC) ; fi
        @if [ ! -f /etc/rc.d/init.d/functions ] ; then unpack ${SRC}/${FILE} && 
\
-        cd ${DIR} && make install-livecd && \
+        cd ${DIR} && \
+        sed -i s/sane/cooked/ lfs/init.d/functions && \
+        make install-livecd && \
         install -m 755 lfs/init.d/mountkernfs /etc/rc.d/init.d && \
         ln -sf ../init.d/mountkernfs /etc/rc.d/rcsysinit.d/S00mountkernks && \
         install -m 755 ../udev /etc/rc.d/init.d/ && \
@@ -33,10 +35,13 @@
         ln -sf ../init.d/clkconf /etc/rc.d/rcsysinit.d/S59clkconf && \
         install -m 755 ../langconf /etc/rc.d/init.d/ && \
         ln -sf ../init.d/langconf /etc/rc.d/rcsysinit.d/S69langconf && \
+        mkdir -p /etc/langconf && \
+        install -m 644 ../font.dat /etc/langconf && \
+        install -m 644 ../lang.dat /etc/langconf && \
         install -m 755 ../console /etc/rc.d/init.d/ && \
         rm -f /etc/rc.d/rc0.d/S99halt && \
         rm -f /etc/rc.d/rc6.d/S99reboot && \
         rm -f /etc/rc.d/*/*mountsqfs /etc/rc.d/*/*startup ; fi
 
 clean:
-       @-rm -rf bootscripts
+       @-rm -rf $(DIR)

Modified: x86/branches/utf8/packages/lfs-bootscripts/console
===================================================================
--- x86/branches/utf8/packages/lfs-bootscripts/console  2005-07-27 04:30:19 UTC 
(rev 413)
+++ x86/branches/utf8/packages/lfs-bootscripts/console  2005-07-27 14:32:29 UTC 
(rev 414)
@@ -2,15 +2,14 @@
 ########################################################################
 # Begin $rc_base/init.d/console
 #
-# Description : Sets keymap and screen font (LiveCD version)
+# Description : Sets keymap and screen font
 #
 # Authors     : Gerard Beekmans - [EMAIL PROTECTED]
 #              Alexander E. Patrakov
 #
-# Version     : 00.00-livecd
+# Version     : 00.03
 #
-# Notes       : Unlike the stock "console" script, this version guesses
-#               the correct font based on the user's locale.
+# Notes       :
 #
 ########################################################################
 
@@ -18,96 +17,88 @@
 . ${rc_functions}
 
 # Native English speakers probably don't have /etc/sysconfig/console at all
-if [ -f /etc/sysconfig/console ]; then
+if [ -f /etc/sysconfig/console ]
+then
        . /etc/sysconfig/console
 fi
 
-
-guess_font() {
-        CHARMAP=`locale charmap`
-
-       FONTTABLE='
-#Charset:FONT:ERROR_FLAG:CAVEAT
-ANSI_X3.4-1968:default-8x16:0:You forgot to (correctly) set your locale!
-BIG5:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-BIG5-HKSCS:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-CP1251:cyr-sun16 -m cp1251:0:
-CP1255:LatArCyrHeb-16 -m 8859-8:0:The "kbd" package does not support CP1255 
encoding, using ISO-8859-8 instead.
-EUC-JP:default-8x16:1:Japanese is not supported by this Live CD. Sorry.
-EUC-KR:default-8x16:1:Korean is not supported by this Live CD. Sorry.
-EUC-TW:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GB18030:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GB2312:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GBK:default-8x16:1:Chinese is not supported by this Live CD. Sorry.
-GEORGIAN-PS:default-8x16:1:Georgian is not supported by this Live CD. Sorry.
-ISO-8859-1:lat1-16 -m 8859-1:0:
-ISO-8859-2:lat2a-16 -m 8859-2:0:
-#ISO-8859-3:iso03.16 -m 8859-3:0:Line drawing characters are not available 
with this font.
-ISO-8859-3:LatArCyrHeb-16 -m 8859-3:0:Bright colors are not available with 
this font.
-#ISO-8859-5:iso05.16 -m 8859-5:0:Line drawing characters are not available 
with this font.
-ISO-8859-5:LatArCyrHeb-16 -m 8859-5:0:Bright colors are not available with 
this font.
-#ISO-8859-6:iso06.16 -m 8859-6:0:Line drawing characters are not available 
with this font.
-ISO-8859-6:LatArCyrHeb-16 -m 8859-6:0:Bright colors are not available with 
this font.
-ISO-8859-7:iso07u-16 -m 8859-7:0:
-ISO-8859-8:LatArCyrHeb-16 -m 8859-8:0:Bright colors are not available with 
this font.
-ISO-8859-9:cp857.16 -u /usr/share/kbd/consoletrans/cp857_to_uni.trans -m 
8859-9:0:
-#ISO-8859-10:iso10.16 -m 8859-10:0:Line drawing characters are not available 
with this font.
-ISO-8859-10:LatArCyrHeb-16 -m 8859-10:0:Bright colors are not available with 
this font.
-#ISO-8859-13:lat7-14 -m 8859-13:0:Line drawing characters are not available 
with this font.
-ISO-8859-13:LatArCyrHeb-16 -m 8859-13:0:Bright colors are not available with 
this font.
-ISO-8859-14:default-8x16:1:Welsh is not supported by this Live CD. Sorry.
-ISO-8859-15:lat0-16 -m 8859-15:0:
-#KOI8-R:koi8r-8x16 -u koi8r -m koi8-r:0:This font is ugly.
-KOI8-R:cyr-sun16 -m koi8-r:0:
-KOI8-T:cyr-sun16 -m koi8-r:0:The "kbd" package does not support KOI8-T 
encoding, using KOI8-R instead.
-KOI8-U:cyr-sun16 -m koi8-u:0:
-PT154:cyr-sun16 -m cp1251:0:The "kbd" package does not support PT154 encoding, 
using CP1251 instead.
-TCVN5712-1:default-8x16:1:Vietnamese is not supported by this Live CD. Sorry.
-TIS-620:default-8x16:1:Thai is not supported by this Live CD. Sorry.
-UTF-8:LatArCyrHeb-16:0:\033%GThis Live CD does not officially support UTF-8.
-'
-
-       FONTLINE=`echo "$FONTTABLE" | egrep "^$CHARMAP:"`
-       FONT=`echo "$FONTLINE" | cut -d ":" -f 2`
-       ERROR=`echo "$FONTLINE" | cut -d ":" -f 3`
-       FONT_PROBLEM=`echo "$FONTLINE" | cut -d ":" -f 4`
-
-       return $ERROR
+is_true() {
+       [ "$1" = "1" ] || [ "$1" = "yes" ] || [ "$1" = "true" ]
 }
 
+failed=0
+trap failed=1 ERR
+
 case "${1}" in
        start)
-               if [ -n "${KEYMAP}" ]; then
-                       boot_mesg "Loading keymap: ${KEYMAP}..."
-                       loadkeys ${KEYMAP} &>/dev/null
-                       evaluate_retval
-               fi
+               boot_mesg "Setting up Linux console..."
+               # There should be no bogus failures below this line!
+               
+               # Figure out if a framebuffer console is used
+               [ -d /sys/class/graphics/fb0 ] && USE_FB=1 || USE_FB=0
+               
+               # Figure out the command to set the console into the
+               # desired mode
+               is_true "${UNICODE}" &&
+                       MODE_COMMAND="echo -en '\033%G' && kbd_mode -u" ||
+                       MODE_COMMAND="echo -en '[EMAIL PROTECTED](K' && 
kbd_mode -a"
+               
+               # On framebuffer consoles, font has to be set for each vt in
+               # UTF-8 mode. This doesn't hurt in non-UTF-8 mode also.
+               
+               ! is_true "${USE_FB}" || [ -z "${FONT}" ] ||
+                       MODE_COMMAND="${MODE_COMMAND} && setfont ${FONT}"
 
-               if [ -n "${KEYMAP_CORRECTIONS}" ]; then
-                       boot_mesg "Loading keymap corrections: 
${KEYMAP_CORRECTIONS}..."
+               # Apply that command to all consoles mentioned in
+               # /etc/inittab. Important: in the UTF-8 mode this should
+               # happen before setfont, otherwise a kernel bug will
+               # show up and the unicode map of the font will not be
+               # used.
+               # FIXME: Fedora Core also initializes two spare consoles
+               # - do we want that?
+               
+               # for TTY in `grep '^[^#].*respawn:/sbin/agetty' /etc/inittab |
+               #       grep -o '\btty[[:digit:]]*\b'`
+               #
+               # XXX Livecd doesn't use agetty, so the statement above
+               # doesn't work
+               for TTY in 1 2 3 4 5 6
+               do
+                       openvt -f -w -c ${TTY#tty} -- \
+                               /bin/sh -c "${MODE_COMMAND}"
+               done
+
+               # Set the font (if not already set above) and the keymap
+               is_true "${USE_FB}" ||  [ -z "${FONT}" ] || setfont $FONT
+               [ -z "${KEYMAP}" ] || loadkeys ${KEYMAP} &>/dev/null
+               [ -z "${KEYMAP_CORRECTIONS}" ] ||
                        loadkeys ${KEYMAP_CORRECTIONS} &>/dev/null
-                       evaluate_retval
-               fi
 
-               if [ -n "${FONT}" ]; then
-                       boot_mesg "Setting screen font to ${FONT}..."
-                       setfont $FONT &>/dev/null
-                       evaluate_retval
-               else
-                       guess_font
-                       boot_mesg "Setting screen font to ${FONT}..."
-                       boot_mesg_flush
-                       setfont $FONT &>/dev/null
-                       if [ ! -z "$FONT_PROBLEM" ] ; then
-                               boot_mesg "WARNING:\n${FONT_PROBLEM}" ${WARNING}
-                               boot_mesg_flush
-                       fi
-                       ( exit $ERROR )
-                       evaluate_retval
-               fi
+               # Linux kernel generates wrong bytes when composing
+               # in Unicode mode. That's why we disable dead keys in Unicode
+               # mode by default. If you need them, download
+               # 
http://chris.heathens.co.nz/linux/downloads/patches-2.6.4-cdh1.tar.gz
+               # Unpack and patch the kernel with p1_conv_8bit_to_uni.patch
+               # Other patches in that tarball give rejects.
+               # After patching, add "-m charset_of_your_keymap" to the FONT
+               # variable and set BROKEN_COMPOSE=false
+               # in /etc/sysconfig/console
+
+               [ -n "$BROKEN_COMPOSE" ] || BROKEN_COMPOSE="$UNICODE"
+               ! is_true "$BROKEN_COMPOSE" ||
+                       echo "" | loadkeys -c &>/dev/null
+               
+               # Convert the keymap from $LEGACY_CHARSET to UTF-8
+               [ -z "$LEGACY_CHARSET" ] ||
+                       dumpkeys -c "$LEGACY_CHARSET" | loadkeys -u &>/dev/null
+
+               # If any of the commands above failed, the trap at the
+               # top would set $failed to 1
+               ( exit $failed )
+               evaluate_retval
                ;;
        *)
-               echo "Usage: ${0} {start}"
+               echo $"Usage:" "${0} {start}"
                exit 1
                ;;
 esac

Added: x86/branches/utf8/packages/lfs-bootscripts/font.dat
===================================================================
--- x86/branches/utf8/packages/lfs-bootscripts/font.dat 2005-07-27 04:30:19 UTC 
(rev 413)
+++ x86/branches/utf8/packages/lfs-bootscripts/font.dat 2005-07-27 14:32:29 UTC 
(rev 414)
@@ -0,0 +1,31 @@
+# Charset      FONT                            ERROR?  CAVEAT
+ANSI_X3.4-1968 default-8x16                    0       You forgot to 
(correctly) set your locale!
+BIG5           default-8x16                    1       Chinese is not 
supported by this Live CD. Sorry.
+BIG5-HKSCS     default-8x16                    1       Chinese is not 
supported by this Live CD. Sorry.
+CP1251         cyr-sun16 -m cp1251             0
+CP1255         LatArCyrHeb-16 -m 8859-8        0       The "kbd" package does 
not support CP1255 encoding, using ISO-8859-8 instead.
+EUC-JP         default-8x16                    1       Japanese is not 
supported by this Live CD. Sorry.
+EUC-KR         default-8x16                    1       Korean is not supported 
by this Live CD. Sorry.
+EUC-TW         default-8x16                    1       Chinese is not 
supported by this Live CD. Sorry.
+GB18030                default-8x16                    1       Chinese is not 
supported by this Live CD. Sorry.
+GB2312         default-8x16                    1       Chinese is not 
supported by this Live CD. Sorry.
+GBK            default-8x16                    1       Chinese is not 
supported by this Live CD. Sorry.
+GEORGIAN-PS    default-8x16                    1       Georgian is not 
supported by this Live CD. Sorry.
+ISO-8859-1     lat1-16 -m 8859-1               0
+ISO-8859-2     lat2a-16 -m 8859-2              0
+ISO-8859-3     LatArCyrHeb-16 -m 8859-3        0       Bright colors are not 
available with this font.
+ISO-8859-5     LatArCyrHeb-16 -m 8859-5        0       Bright colors are not 
available with this font.
+ISO-8859-6     LatArCyrHeb-16 -m 8859-6        0       Bright colors are not 
available with this font.
+ISO-8859-7     iso07u-16 -m 8859-7             0
+ISO-8859-8     LatArCyrHeb-16 -m 8859-8        0       Bright colors are not 
available with this font.
+ISO-8859-9     cp857.16 -u /usr/share/kbd/consoletrans/cp857_to_uni.trans -m 
8859-9    0
+ISO-8859-10    LatArCyrHeb-16 -m 8859-10       0       Bright colors are not 
available with this font.
+ISO-8859-13    LatArCyrHeb-16 -m 8859-13       0       Bright colors are not 
available with this font.
+ISO-8859-14    default-8x16                    1       Welsh is not supported 
by this Live CD. Sorry.
+ISO-8859-15    lat0-16 -m 8859-15              0
+KOI8-R         cyr-sun16 -m koi8-r             0
+KOI8-T         cyr-sun16 -m koi8-r             0       The "kbd" package does 
not support KOI8-T encoding, using KOI8-R instead.
+KOI8-U         cyr-sun16 -m koi8-u             0
+PT154          cyr-sun16 -m cp1251             0       The "kbd" package does 
not support PT154 encoding, using CP1251 instead.
+TIS-620                default-8x16                    1       Thai is not 
supported by this Live CD. Sorry.
+UTF-8          LatArCyrHeb-16                  0

Added: x86/branches/utf8/packages/lfs-bootscripts/lang.dat
===================================================================
--- x86/branches/utf8/packages/lfs-bootscripts/lang.dat 2005-07-27 04:30:19 UTC 
(rev 413)
+++ x86/branches/utf8/packages/lfs-bootscripts/lang.dat 2005-07-27 14:32:29 UTC 
(rev 414)
@@ -0,0 +1,61 @@
+# DESCRIPTION                          LANG            KEYMAP          FONT    
LEGACY_CHARSET  XKEYMAP
+Default/Other                          C               ""              ""      
""              "us"
+English,_USA_(ISO-8859-1)              en_US           ""              ""      
""              "us"
+English,_USA_(UTF-8)                   en_US.UTF-8     ""              ""      
"iso-8859-1"    "us"
+English,_GB_(ISO-8859-1)               en_GB           "gb"            ""      
""              "uk"
+English,_GB_(UTF-8)                    en_GB.UTF-8     "gb"            ""      
"iso-8859-1"    "uk"
+English,_Australia_(ISO-8859-1)                en_AU           ""              
""      ""              "us"
+English,_Australia_(UTF-8)             en_AU.UTF-8     ""              ""      
"iso-8859-1"    "us"
+
+Belarusian_(CP1251)                    be_BY           "by2_win"       ""      
""              "us,by(winkeys)"
+Belarusian_(UTF-8)                     be_BY.UTF-8     "by"            ""      
"iso-8859-5"    "us,by(winkeys)"
+Brazilian,_ABNT2_keymap_(ISO-8859-1)   pt_BR           "br-abnt2"      ""      
""              "br-abnt2"
+Brazilian,_ABNT2_keymap_(UTF-8)                pt_BR.UTF-8     "br-abnt2"      
""      "iso-8859-1"    "br-abnt2"
+Bulgarian_(CP1251)                     bg_BG           "bg_bds-cp1251" ""      
""              "us,bds_enhanced"
+Bulgarian_(UTF-8)                      bg_BG.UTF-8     "bg_bds-utf8"   ""      
""              "us,bds_enhanced"
+French,_Canada_(ISO-8859-1)            fr_CA           "cf"            ""      
""              "ca_enhanced"
+French,_Canada_(UTF-8)                 fr_CA.UTF-8     "cf"            ""      
"iso-8859-1"    "ca_enhanced"
+Czech_(ISO-8859-2)                     cs_CZ           "cz"            ""      
""              "cz"
+Czech_(UTF-8)                          cs_CZ.UTF-8     "cz"            ""      
"iso-8859-2"    "cz"
+Danish_(ISO-8859-1)                    da_DK           "dk-latin1"     ""      
""              "dk"
+Danish_(UTF-8)                         da_DK.UTF-8     "dk-latin1"     ""      
"iso-8859-1"    "dk"
+Finnish_(ISO-8859-1)                   fi_FI           "fi-latin1"     ""      
""              "fi"
+Finnish_(ISO-8859-15)                  [EMAIL PROTECTED]       "fi-latin9"     
""      ""              "fi"
+Finnish_(UTF-8)                                fi_FI.UTF-8     "fi-latin9"     
""      "iso-8859-15"   "fi"
+French_(ISO-8859-1)                    fr_FR           "fr-latin1"     ""      
""              "fr"
+French_(ISO-8859-15)                   [EMAIL PROTECTED]       "fr-latin9"     
""      ""              "fr"
+French_(UTF-8)                         fr_FR.UTF-8     "fr-latin9"     ""      
"iso-8859-15"   "fr"
+German_(ISO-8859-1)                    de_DE           "de-latin1"     ""      
""              "de"
+German_(ISO-8859-15)                   [EMAIL PROTECTED]       
"de-latin1+euro2" ""    ""              "de"
+German_(UTF-8)                         de_DE.UTF-8     "de-latin1+euro2" ""    
"iso-8859-15"   "de"
+Greek_(ISO-8859-7)                     el_GR           "gr"            ""      
""              "us,el"
+Greek_(UTF-8)                          el_GR.UTF-8     "gr"            
"iso07u-16" "iso-8859-7" "us,el"
+Hungarian_(ISO-8859-2)                 hu_HU           "hu101"         ""      
""              "hu"
+Hungarian_(UTF-8)                      hu_HU.UTF-8     "hu101"         ""      
"iso-8859-2"    "hu"
+Icelandic_(ISO-8859-1)                 is_IS           "is-latin1"     ""      
""              "is"
+Icelandic_(UTF-8)                      is_IS.UTF-8     "is-latin1"     ""      
"iso-8859-1"    "is"
+Norwegian,_Bokmal_(ISO-8859-1)         nb_NO           "no-latin1"     ""      
""              "no"
+Norwegian,_Bokmal_(UTF-8)              nb_NO.UTF-8     "no-latin1"     ""      
"iso-8859-1"    "no"
+Norwegian,_Nynorsk_(ISO-8859-1)                nn_NO           "no-latin1"     
""      ""              "no"
+Norwegian,_Nynorsk_(UTF-8)             nn_NO.UTF-8     "no-latin1"     ""      
"iso-8859-1"    "no"
+Polish_(ISO-8859-2)                    pl_PL           "pl"            ""      
""              "pl2"
+Polish_(UTF-8)                         pl_PL.UTF-8     "pl"            ""      
"iso-8859-2"    "pl2
+Portuguese_(ISO-8859-1)                        pt_PT           "pt-latin1"     
""      ""              "pt"
+Portuguese_(ISO-8859-15)               [EMAIL PROTECTED]       "pt-latin9"     
""      ""              "pt"
+Portuguese_(UTF-8)                     pt_PT.UTF-8     "pt-latin9"     ""      
"iso-8859-15"   "pt"
+Russian_(CP1251)                       ru_RU.CP1251    "ru_win"        ""      
""              "us,ru(winkeys)"
+Russian_(KOI8-R)                       ru_RU.KOI8-R    "ru_ms"         ""      
""              "us,ru(winkeys)"
+Russian_(UTF-8)                                ru_RU.UTF-8     "ru_ms"         
""      "koi8-r"        "us,ru(winkeys)"
+Slovak,_QWERTZ_keyboard_(ISO-8859-2)   sk_SK           "sk-qwertz"     ""      
""              "sk"
+Slovak,_QWERTZ_keyboard_(UTF-8)                sk_SK.UTF-8     "sk-qwertz"     
""      "iso-8859-2"    "sk"
+Slovak,_QWERTY_keyboard_(ISO-8859-2)   sk_SK           "sk-qwerty"     ""      
""              "sk_qwerty"
+Slovak,_QWERTY_keyboard_(UTF-8)                sk_SK.UTF-8     "sk-qwerty"     
""      "iso-8859-2"    "sk_qwerty"
+Spanish_(ISO-8859-1)                   es_ES           "es"            ""      
""              "es"
+Spanish_(ISO-8859-15)                  [EMAIL PROTECTED]       "es+euro2"      
""      ""              "es"
+Spanish_(UTF-8)                                es_ES.UTF-8     "es+euro2"      
""      "iso-8859-15"   "es"
+Spanish,_Mexico_(ISO-8859-1)           es_MX           "la-latin1"     ""      
""              "la"
+Spanish,_Mexico_(UTF-8)                        es_MX.UTF-8     "la-latin1"     
""      "iso-8859-1"    "la"
+Swedish_(ISO-8859-1)                   sv_SE           "sv-latin1"     ""      
""              "se"
+Swedish_(UTF-8)                                sv_SE.UTF-8     "sv-latin1"     
""      "iso-8859-1"    "se"
+Ukrainian_(KOI8-U)                     uk_UA           "ua-ws"         ""      
""              "us,ua(winkeys)"
+Ukrainian_(UTF-8)                      uk_UA.UTF-8     "ua-utf-ws"     ""      
""              "us,ua(winkeys)"

Modified: x86/branches/utf8/packages/lfs-bootscripts/langconf
===================================================================
--- x86/branches/utf8/packages/lfs-bootscripts/langconf 2005-07-27 04:30:19 UTC 
(rev 413)
+++ x86/branches/utf8/packages/lfs-bootscripts/langconf 2005-07-27 14:32:29 UTC 
(rev 414)
@@ -1,53 +1,166 @@
 #!/bin/sh
+########################################################################
+# Begin $rc_base/init.d/langconf
+#
+# Description : Language and Keymap Configuration Script for the Live CD
+#
+# Authors     : Alexander E. Patrakov
+#
+# Version     : 00.00
+#
+# Notes       :
+#
+########################################################################
 
-# Get a well-defined sort order
-LC_ALL=C
-export LC_ALL
+SELECTED=
 
-if [ ! -z "$LANG" ] ; then
-       # Assume that the locale is already configured, and the
-       # keymap is satisfactory
-       exit 0
-fi
+DATABASE=/etc/langconf/lang.dat
+FONTDB=/etc/langconf/font.dat
 
-LOCALES=`cat /boot/isolinux/locales*.msg | grep _ | \
-    sed 's, ,\n,g' | grep -v '^$' | sort`
+same_locale() {
+       for term in language territory charmap
+       do
+               [ "`LC_ALL=$1 locale $term`" = "`LC_ALL=$2 locale $term`" ] || 
return 1
+       done
+       return 0
+}
 
-ARGS="C Default "
-for L in $LOCALES ; do
-       ARGS="$ARGS $L \"`LC_ALL=$L locale language`\" "
-done
+guess_selection() {
+       while read F_DESCRIPTION F_LANG F_KEYMAP F_FONT F_LEGACYCHARSET 
F_XKEYMAP
+       do
+               if [ -z "$F_DESCRIPTION" ] || [ "$F_DESCRIPTION" = "#" ]
+               then
+                       continue
+               fi
+               F_KEYMAP="${F_KEYMAP//\"/}"
+               F_FONT="${F_FONT//\"/}"
+               F_LEGACYCHARSET="${F_LEGACYCHARSET//\"/}"
+               F_XKEYMAP="${F_XKEYMAP//\"/}"
+               same_locale "$F_LANG" "$LANG" && SELECTED="$F_DESCRIPTION" && 
return 0
+       done <$DATABASE
+       exit 1
+}
 
-DLG_COMMAND="dialog --title \"Locale configuration\" --default-item C \
-    --timeout 20 --menu \"Select your locale from the list below\" 0 0 0 \
-    $ARGS"
+get_selection_dlg() {
+       ARGS=""
+       while read F_DESCRIPTION F_LANG F_KEYMAP F_FONT F_LEGACYCHARSET 
F_XKEYMAP
+       do
+               if [ -z "$F_DESCRIPTION" ] || [ "$F_DESCRIPTION" = "#" ]
+               then
+                       continue
+               fi
+               DESCRIPTION=`echo $F_DESCRIPTION | tr _ ' '`
+               ARGS="$ARGS \"$DESCRIPTION\" \"\""
+       done <$DATABASE
+       DLG_COMMAND="dialog --title \"Regional settings\" --timeout 20 \
+       --default-item \"Default/Other\" \
+       --menu \"Choose your locale and keymap\" -1 0 0 $ARGS"
+       SELECTED=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
 
-LANG_SELECTED=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+       if [ $? -ne 0 ] ; then
+               exit 0
+       fi
+}
 
-if [ $? -ne 0 ] ; then
-       exit 0
-fi
+guess_font() {
+       F_CHARMAP=`LC_ALL=$F_LANG locale charmap`
+       while IFS="     " read CHARMAP FONT ERROR CAVEAT
+       do
+               if [ "$F_CHARMAP" = "$CHARMAP" ]
+               then
+                       F_FONT="$FONT"
+                       if [ "$ERROR" = "1" ]
+                       then
+                               echo ERROR:
+                       fi
+                       if [ -n "$CAVEAT" ]
+                       then
+                               echo $CAVEAT
+                       fi
+               fi
+       done <$FONTDB
+}
 
-echo "LANG=$LANG_SELECTED" >>/etc/environment
-echo "LANG=$LANG_SELECTED ; export LANG" >>/etc/sysconfig/rc
-echo "LANG=$LANG_SELECTED ; export LANG" >>/etc/profile
+confirm() {
+       # TODO: simplify life for Dvorak users. They have to edit
+       # this using (awkward) qwerty keymap!
+       
+       DLG_COMMAND="dialog --title \"Confirm/edit settings\" \
+       --no-cancel \
+       --form \"Please review and, if necessary, edit the settings below.
+\n\nKeymap autoconversion is used only together with UTF-8 locales.
+If you don't need to convert your keymap to UTF-8 (e.g. because it
+is already in UTF-8, or because you don't want UTF-8), don't fill in
+that field.\" 0 0 5 \
+       \"Locale:\" 1 1 \"$F_LANG\" 1 30 40 0 \
+       \"Console keymap:\" 2 1 \"$F_KEYMAP\" 2 30 40 0 \
+       \"  autoconverted from charset:\" 3 1 \"$F_LEGACYCHARSET\" 3 30 40 0 \
+       \"Console font:\" 4 1 \"$F_FONT\" 4 30 40 0 \
+       \"X keymap:\" 5 1 \"$F_XKEYMAP\" 5 30 40 0"
+       SELECTION=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+       STATUS=$?
+       [ "$STATUS" != 0 ] && exit 1
+       eval "`echo "$SELECTION" | \
+               sed -e '1s,^,F_LANG=",' \
+               -e '2s,^,F_KEYMAP=",' \
+               -e '3s,^,F_LEGACYCHARSET=",' \
+               -e '4s,^,F_FONT=",' \
+               -e '5s,^,F_XKEYMAP=",' | sed -e 's,$,",'`"
+       return 0
+}
 
-KEYMAPS=`cat /boot/isolinux/keymaps.msg | grep -v ':' | grep -v '\[' | sort`
-ARGS="Default \"\" "
-for K in $KEYMAPS ; do
-       ARGS="$ARGS $K \"\" "
-done
-DLG_COMMAND="dialog --title \"Keyboard configuration\" --default-item Default \
-    --menu \"Select your keyboard layout from the list below\" 0 0 0 \
-    $ARGS"
-KEYMAP_SELECTED=`eval $DLG_COMMAND 3>&2 2>&1 1>&3`
+interactive_config() {
+       get_selection_dlg
+       F_SELECTED=`echo $SELECTED | tr ' ' _`
+       LINE=`grep "^$F_SELECTED" $DATABASE | sed 's,[[:space:]]\+,\n,g'`
+       eval "`echo "$LINE" | sed -e 's,+, ,g' -e 's,",,g' | \
+               sed -e '1d' \
+               -e '2s,^,F_LANG=",' \
+               -e '3s,^,F_KEYMAP=",' \
+               -e '4s,^,F_FONT=",' \
+               -e '5s,^,F_LEGACYCHARSET=",' \
+               -e '6s,^,F_XKEYMAP=",' | sed -e 's,$,",'`"
+       [ -z "$F_KEYMAP" ] && F_KEYMAP=defkeymap
+       [ -z "$F_FONT" ] && guess_font
+       [ -z "$F_XKEYMAP" ] && F_XKEYMAP=us
+       confirm
+}
 
-if [ $? -ne 0 ] ; then
-       exit 0
+noninteractive_config() {
+       guess_selection
+       F_LANG="$LANG"
+       # Accept overrides to our guesses if given on the command line
+       [ -z "$F_KEYMAP" ] && F_KEYMAP=defkeymap
+       [ -z "$F_FONT" ] && guess_font
+       [ -z "$F_XKEYMAP" ] && F_XKEYMAP=us
+       [ -n "$KEYMAP" ] && F_KEYMAP=${KEYMAP//+/ }
+       [ -n "$FONT" ] && F_FONT=${FONT//+/ }
+       [ -n "$LEGACY_CHARSET" ] && F_LEGACYCHARSET=$LEGACY_CHARSET
+       [ -n "$XKEYMAP" ] && F_XKEYMAP=$XKEYMAP
+}
+
+# Assume that noninteractive configuration is wanted if LANG is set
+if [ -n "$LANG" ]
+then
+       noninteractive_config
+else
+       interactive_config
 fi
 
-if [ "$KEYMAP_SELECTED" = "Default" ] ; then
-       exit 0
+# Write the settings out to configuration files
+echo "LANG=\"$F_LANG\" ; export LANG" >>/etc/profile
+
+echo "KEYMAP=\"$F_KEYMAP\"" >/etc/sysconfig/console
+echo "FONT=\"$F_FONT\"" >>/etc/sysconfig/console
+
+if [ "`LC_ALL="$F_LANG" locale charmap`" = "UTF-8" ]
+then
+       echo "UNICODE=1" >>/etc/sysconfig/console
+       echo "BROKEN_COMPOSE=0" >>/etc/sysconfig/console
+       if [ -n "$F_LEGACYCHARSET" ]
+       then
+               echo "LEGACY_CHARSET=\"$F_LEGACYCHARSET\"" 
>>/etc/sysconfig/console
+       fi
 fi
 
-echo "KEYMAP=$KEYMAP_SELECTED" >>/etc/sysconfig/console
+sed -i "s,\"us\",\"$F_XKEYMAP\"," /etc/X11/xorg.conf

-- 
http://linuxfromscratch.org/mailman/listinfo/livecd
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to