wok-tiny annotate keyboard/receipt @ rev 153
No hard coded boot menu
author | Pascal Bellard <pascal.bellard@slitaz.org> |
---|---|
date | Fri Sep 20 21:15:35 2019 +0200 (2019-09-20) |
parents | 1a6a79b48e76 |
children | 1e55ea7da8de |
rev | line source |
---|---|
pascal@101 | 1 # SliTaz package receipt. |
pascal@101 | 2 |
pascal@101 | 3 PACKAGE="keyboard" |
pascal@101 | 4 VERSION="1.0" |
pascal@134 | 5 CATEGORY="base-system" |
pascal@101 | 6 SHORT_DESC="keyboard, locales and timezone settings" |
pascal@101 | 7 MAINTAINER="pascal.bellard@slitaz.org" |
pascal@101 | 8 LICENSE="GPL2" |
pascal@101 | 9 WEB_SITE="http://tiny.slitaz.org/" |
pascal@102 | 10 |
pascal@101 | 11 DEPENDS="base-tiny" |
pascal@102 | 12 BUILD_DEPENDS="advancecomp" |
pascal@101 | 13 |
pascal@101 | 14 # Rules to configure and make the package. |
pascal@101 | 15 compile_rules() |
pascal@101 | 16 { |
pascal@102 | 17 mkdir -p $DESTDIR/usr/share/i18n $stuff |
pascal@101 | 18 cd $stuff |
pascal@102 | 19 for i in kbd-busybox glibc-base glibc-locale ; do |
pascal@102 | 20 tazpkg get $i |
pascal@102 | 21 tazpkg extract $i* |
pascal@102 | 22 done |
pascal@102 | 23 cp -a kbd-busybox*/fs/usr/share/kmap $DESTDIR/usr/share |
pascal@102 | 24 cp -a glibc-*/fs/usr/share/i18n/locales $DESTDIR/usr/share/i18n |
pascal@102 | 25 cp -a glibc-*/fs/usr/share/zoneinfo $DESTDIR/usr/share |
pascal@102 | 26 cd $DESTDIR/usr/share |
pascal@102 | 27 for i in i18n/locales zoneinfo ; do |
pascal@102 | 28 ( cd $i; find * -type f | while read f; do |
pascal@102 | 29 grep -q $f $stuff/../receipt || rm -f $f; done ) |
pascal@102 | 30 find $i -type d | tac | while read d; do |
pascal@102 | 31 rmdir $d 2> /dev/null |
pascal@102 | 32 done |
pascal@102 | 33 done |
pascal@102 | 34 find kmap/*.kmap i18n/locales zoneinfo | cpio -o -H newc | \ |
pascal@102 | 35 gzip -9 > data.cpio.gz |
pascal@102 | 36 advdef -z4 data.cpio.gz |
pascal@102 | 37 cd $stuff/.. |
pascal@101 | 38 rm -rf $stuff |
pascal@101 | 39 } |
pascal@101 | 40 |
pascal@101 | 41 # Rules to gen a SliTaz package suitable for Tazpkg. |
pascal@101 | 42 genpkg_rules() |
pascal@101 | 43 { |
pascal@101 | 44 cp -a $install/. $fs/ |
pascal@101 | 45 } |
pascal@101 | 46 |
pascal@101 | 47 config_form() |
pascal@101 | 48 { |
pascal@101 | 49 cat <<EOT |
pascal@101 | 50 <script type="text/javascript"> |
pascal@101 | 51 |
pascal@101 | 52 var locale = [], timezone = []; |
pascal@101 | 53 function setdefault(kbd) |
pascal@101 | 54 { |
pascal@101 | 55 if (locale[kbd] != 'undefined') { |
pascal@101 | 56 document.getElementById("locale").value = locale[kbd]; |
pascal@101 | 57 } |
pascal@101 | 58 if (timezone[kbd] != 'undefined') { |
pascal@101 | 59 document.getElementById("timezone").value = timezone[kbd]; |
pascal@101 | 60 } |
pascal@101 | 61 } |
pascal@101 | 62 |
pascal@101 | 63 EOT |
pascal@101 | 64 awk 'BEGIN { n=0 } |
pascal@101 | 65 { |
pascal@101 | 66 print "locale[\"" $1 "\"] = \"" $2 "\";" |
pascal@101 | 67 if ($3 != "-") print "timezone[\"" $1 "\"] = \"" $3 "\";" |
pascal@101 | 68 gsub("_"," ",$4) |
pascal@101 | 69 name[n] = $4 |
pascal@101 | 70 kbd[n++] = $1 |
pascal@101 | 71 } |
pascal@101 | 72 END { |
pascal@101 | 73 print "</script>" |
pascal@101 | 74 print "<table>" |
pascal@101 | 75 print "<tr><td>Keyboard</td>" |
pascal@101 | 76 print "<td><select name=\"KEYBOARD\" onChange=\"setdefault(value)\">" |
pascal@101 | 77 for (i=0; i < n; i++) |
pascal@101 | 78 print " <option value=\"" kbd[i] "\">" name[i] "</option>" |
pascal@101 | 79 }' <<EOT | sed "s|value=\"$KEYBOARD\"|& selected=\"selected\"|" |
pascal@101 | 80 br-abnt2 pt_BR America/Sao_Paulo Brasil_(abnt2) |
pascal@101 | 81 us-acentos pt_BR America/Sao_Paulo Brasil_(us-acentos) |
pascal@101 | 82 cz-lat2 cs_CZ Europe/Prague Cesky |
pascal@101 | 83 dk-latin1 da_DK Europe/Copenhagen Danso |
pascal@101 | 84 de-latin1 de_DE Europe/Berlin Deutsch |
pascal@101 | 85 de_CH-latin1 de_CH Europe/Zurich Deutsch_Schweiz |
pascal@101 | 86 sg-latin1 de_CH Europe/Zurich Deutsch_Schweiz_(sg) |
pascal@101 | 87 uk en_GB Europe/London English_UK |
pascal@101 | 88 us en_US America/New_York English_US |
pascal@101 | 89 us-acentos en_US America/New_York English_US_(acentos) |
pascal@101 | 90 dvorak en_US America/New_York English_US_(dvorak) |
pascal@101 | 91 dvorak-l en_US America/New_York English_US_(dvorak-l) |
pascal@101 | 92 dvorak-r en_US America/New_York English_US_(dvorak-r) |
pascal@101 | 93 es es_ES Europe/Madrid Espanol |
pascal@101 | 94 fr-latin1 fr_FR Europe/Paris Francais |
pascal@101 | 95 be-latin1 fr_BE Europe/Brussels Francais_Belgique |
pascal@101 | 96 cf fr_CA America/Montreal Francais_Canada |
pascal@101 | 97 fr_CH-latin1 fr_CH Europe/Zurich Francais_Suisse |
pascal@101 | 98 croat hr_HR Europe/Zagreb Hrvatski |
pascal@101 | 99 is-latin1 is_IS Atlantic/Reykjavik Islenska |
pascal@101 | 100 it it_IT Europe/Rome Italiano |
pascal@101 | 101 jp106 ja_JP Asia/Tokyo Japanese |
pascal@101 | 102 hu hu_HU Europe/Budapest Magyar |
pascal@101 | 103 nl2 nl_NL Europe/Amsterdam Nederlands |
pascal@101 | 104 no-latin1 nb_NO Europe/Oslo Norsk_(Bokmal) |
pascal@101 | 105 no-latin1 nn_NO Europe/Oslo Norsk_(Nynorsk) |
pascal@101 | 106 pl2 pl_PL Europe/Warsaw Polski |
pascal@101 | 107 pt-latin1 pt_PT Europe/Lisbon Portugues |
pascal@101 | 108 ru ru_RU Europe/Moscow Russian |
pascal@101 | 109 slovene sl_SI Europe/Ljubljan Slovenski |
pascal@101 | 110 fi-latin1 fi_FI Europe/Helsinki Suomi |
pascal@101 | 111 se-lat6 sv_SE Europe/Stockholm Svenska |
pascal@101 | 112 trq tr_TR Asia/Istanbul Turkce |
pascal@101 | 113 tr_q-latin5 tr_TR Asia/Istanbul Turkce_(latin5) |
pascal@101 | 114 EOT |
pascal@101 | 115 cat <<EOT |
pascal@101 | 116 </select></td> |
pascal@101 | 117 </tr> |
pascal@101 | 118 <tr> |
pascal@101 | 119 <td>Locale</td> |
pascal@101 | 120 <td><select name="LOCALE" id="locale"> |
pascal@101 | 121 EOT |
pascal@101 | 122 ( cd /usr/share/i18n/locales ; ls ??_* ) | \ |
pascal@101 | 123 sed "s|.*| <option>&</option>|;s|>$LOCALE<| selected=\"selected\"&|" |
pascal@101 | 124 cat <<EOT |
pascal@101 | 125 </select></td> |
pascal@101 | 126 </tr> |
pascal@101 | 127 <tr> |
pascal@101 | 128 <td>Timezone</td> |
pascal@101 | 129 <td><select name="TIMEZONE" id="timezone"> |
pascal@101 | 130 EOT |
pascal@101 | 131 ( cd /usr/share/zoneinfo ; find */ -type f ) | \ |
pascal@101 | 132 sed "s|.*| <option>&</option>|;s|>$TIMEZONE<| selected=\"selected\"&|" |
pascal@101 | 133 cat <<EOT |
pascal@101 | 134 </select></td> |
pascal@101 | 135 </tr> |
pascal@101 | 136 </table> |
pascal@126 | 137 <input type="checkbox" name="USECMDLINE" ${USECMDLINE:+checked=checked }value="yes"> |
pascal@102 | 138 Use the kernel command line arguments <b><i>kmap=</i></b>, |
pascal@102 | 139 <b><i>lang=</i></b> and <b><i>tz=</i></b> (+200Kb). |
pascal@101 | 140 EOT |
pascal@101 | 141 } |
pascal@101 | 142 |
pascal@101 | 143 post_install() |
pascal@101 | 144 { |
pascal@142 | 145 if [ "$USECMDLINE" = "yes" ]; then |
pascal@102 | 146 mkdir $1/bin |
pascal@102 | 147 cat > $1/bin/loadkmap <<EOT |
pascal@102 | 148 #!/bin/sh |
pascal@102 | 149 |
pascal@102 | 150 cd /usr/share |
pascal@102 | 151 for i in \$(cat /proc/cmdline); do |
pascal@102 | 152 j=\${i#*=} |
pascal@102 | 153 case "\$i" in |
pascal@102 | 154 kmap=*) d=kmap |
pascal@102 | 155 j=\$j.kmap ;; |
pascal@102 | 156 lang=*) d=i18n/locales |
pascal@102 | 157 echo -e "LANG=\$j\nLC_ALL=\$j" > /etc/locale.conf ;; |
pascal@102 | 158 tz=*) d=zoneinfo |
pascal@102 | 159 echo "\$j" > /etc/TZ ;; |
pascal@102 | 160 *) continue |
pascal@102 | 161 esac |
pascal@102 | 162 rm -rf \$d |
pascal@102 | 163 zcat data.cpio.gz | cpio -id \$d/\$j 2>/dev/null |
pascal@102 | 164 done |
pascal@102 | 165 cat kmap/* | busybox loadkmap |
pascal@102 | 166 rm -f /bin/loadkmap data.cpio.gz |
pascal@102 | 167 EOT |
pascal@102 | 168 chmod +x $1/bin/loadkmap |
pascal@102 | 169 else |
pascal@102 | 170 rm -f $1/usr/share/data.cpio.gz |
pascal@102 | 171 fi |
pascal@102 | 172 for i in $1/usr/share/i18n/locales/* ; do |
pascal@142 | 173 [ $i = $1/usr/share/i18n/locales/$LOCALE ] || rm $i |
pascal@102 | 174 done |
pascal@102 | 175 [ -n "$LOCALE" ] && cat > $1/etc/locale.conf <<EOT |
pascal@102 | 176 LANG=$LOCALE |
pascal@102 | 177 LC_ALL=$LOCALE |
pascal@102 | 178 EOT |
pascal@102 | 179 find $1/usr/share/zoneinfo -type f | while read i; do |
pascal@142 | 180 [ $i = $1/usr/share/zoneinfo/$TIMEZONE ] || rm $i |
pascal@102 | 181 done |
pascal@102 | 182 rmdir $1/usr/share/zoneinfo/* 2> /dev/null |
pascal@102 | 183 [ -n "$TIMEZONE" ] && echo "$TIMEZONE" > $1/etc/TZ |
pascal@101 | 184 for i in $1/usr/share/kmap/*.kmap ; do |
pascal@142 | 185 [ $i = $1/usr/share/kmap/$KEYBOARD.kmap ] || rm $i |
pascal@101 | 186 done |
pascal@101 | 187 } |