commit 746b4a30195dc0088030faa4580ec84d5c2b2cd7
parent 13d257c0a8eacfb19427ff92a2d4cf115c0c156b
Author: ccx <ccx@te2000.cz>
Date: Wed, 6 Mar 2024 21:39:29 +0000
Convert to being built during install
Diffstat:
28 files changed, 1249 insertions(+), 1540 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,2 +1,3 @@
build
+out
*.sw[po]
diff --git a/Makefile b/Makefile
@@ -1,6 +1,7 @@
.PHONY: all clean
-ALL_TARGETS:= s6-rc.fileset postinstall.fileset postinstall.rsfilter config/etc/fstab
+ALL_TARGETS:= out/s6-rc.fileset out/postinstall.fileset out/postinstall.rsfilter out/etc/fstab
+CURRENT:=/run/current
AWK:=awk
SED:=sed
#FILESET_BIN_DIR:=$(dir $(realpath $(shell which fileset.awk)))
@@ -14,36 +15,57 @@ clean:
build/%.awk: %.aat common.aat
mkdir -p build
- $(AWK) -f $(AAT_BIN_DIR)/aat.awk "$<" >"$@.new"
- $(SED) -f $(AAT_BIN_DIR)/aat_macros.sed -i "$@.new"
- mv "$@.new" "$@"
+ $(AWK) -f $(AAT_BIN_DIR)/aat.awk '$<' >'$@.new'
+ $(SED) -f $(AAT_BIN_DIR)/aat_macros.sed -i '$@.new'
+ mv '$@.new' '$@'
-%.qawk: %.awk $(DATA_AWK)
- cat $(DATA_AWK) >"$@.new"
- $(AWK) -f $(AAT_BIN_DIR)/query.awk "$<" >>"$@.new"
- mv "$@.new" "$@"
+%.qawk: %.awk $(DATA_AWK) version_path.awk
+ cat $(DATA_AWK) version_path.awk >'$@.new'
+ $(AWK) -f $(AAT_BIN_DIR)/query.awk '$<' >>'$@.new'
+ mv '$@.new' '$@'
%.rsfilter: %.fileset
- RSFILTER="$@.new" fileset "$<" >/dev/null
- mv "$@.new" "$@"
+ RSFILTER='$@.new' fileset '$<' >/dev/null
+ mv '$@.new' '$@'
build/s6-rc-mount.awk: s6-rc-mount.aat parse_fs.include.awk rc-common.aat
build/s6-rc.awk: s6-rc.aat parse_fs.include.awk rc-common.aat rc-builder.include.awk
build/fstab.awk: fstab.aat parse_fs.include.awk rc-common.aat
-s6-rc.fileset: build/s6-rc.qawk build/s6-rc-mount.awk fs build/config
- $(AWK) -v sort_tmpfile="./build/s6-rc-mount.awk.tmp_sort" -f build/s6-rc-mount.awk fs >"$@.new"
- $(AWK) -v sort_tmpfile="./build/s6-rc.qawk.tmp_sort" -f build/s6-rc.qawk build/config >>"$@.new"
- mv "$@.new" "$@"
+out/s6-rc.fileset: build/s6-rc.qawk build/s6-rc-mount.awk fs build/config
+ mkdir -p out
+ rm -f ./build/execfile
+ $(AWK) -v sort_tmpfile=./build/s6-rc-mount.awk.tmp_sort -v execfile=./build/execfile -f version_path.awk -f build/s6-rc-mount.awk fs >'$@.new'
+ $(AWK) -v sort_tmpfile=./build/s6-rc.qawk.tmp_sort -v execfile=./build/execfile -f build/s6-rc.qawk build/config >>'$@.new'
+ if test -d out/s6-rc-source; then rm -r out/s6-rc-source; fi
+ mkdir ./out/s6-rc-source
+ fsapply ./out/s6-rc-source "$$PWD/"'$@.new'
+ mv '$@.new' '$@'
-config/etc/fstab: build/fstab.awk fs
- $(AWK) -f build/fstab.awk fs >"$@.new"
- mv "$@.new" "$@"
+out/etc/fstab: build/fstab.awk fs
+ mkdir -p out/etc
+ $(AWK) -f build/fstab.awk fs >'$@.new'
+ mv '$@.new' '$@'
build/config: build/config.awk
- $(AWK) -f "$<" </dev/null >"$@.new"
- mv "$@.new" "$@"
+ $(AWK) -f '$<' </dev/null >'$@.new'
+ mv '$@.new' '$@'
-postinstall.fileset: build/config build/postinstall.qawk
- $(AWK) -f build/postinstall.qawk build/config >"$@.new"
- mv "$@.new" "$@"
+.PHONY: build/postinstall.gen.fileset
+build/postinstall.gen.fileset:
+ (cd config && find etc -type d) >build/config.dirs
+ (cd config && find etc -type f) >build/config.files
+ printf '%s\n' >>build/config.files \
+ etc/fstab
+ sed <build/config.dirs >'$@.new' -Ee \
+ 's|.*|/&\t+\td|'
+ sed <build/config.files >'$@.new' -Ee \
+ 's|.*|/&\t+\tlf!\t$(CURRENT)/conf/&|'
+ rm build/config.dirs build/config.files
+ mv '$@.new' '$@'
+
+out/postinstall.fileset: build/config build/postinstall.qawk build/postinstall.gen.fileset
+ mkdir -p out
+ $(AWK) -f build/postinstall.qawk build/config >'$@.new'
+ cat build/postinstall.gen.fileset >>'$@.new'
+ mv '$@.new' '$@'
diff --git a/config.aat b/config.aat
@@ -9,7 +9,7 @@ tty_max=4
# Number of gettys to spawn (should be less 9 to not overlap with rescue getty)
getty_max=4
-tty_setfont=ter-v14n
+tty_setfont=ter-v16n
dev_manager=mdevd
@@ -88,9 +88,9 @@ id name
1000 ccx
]
-|#tinc_networks=[
-|#name
-|#ccx
-|#]
+#tinc_networks=[
+#name
+#ccx
+#]
|}
diff --git a/config/console_keymap/keymap b/config/console_keymap/keymap
@@ -0,0 +1,225 @@
+!include "/usr/share/keymaps/legacy/i386/qwerty/us.map.gz"
+
+!keymaps 0-6,8-9,12
+!keycode 29 = AltGr AltGr AltGr AltGr AltGr AltGr AltGr AltGr AltGr AltGr
+!keycode 42 = Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift
+!keycode 54 = Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift Uncaps_Shift
+!keycode 56 = Alt Alt Alt Alt Alt Alt Alt Alt Alt Alt
+!keycode 58 = Control Control Control Control Control Control Control Control Control Control
+!keycode 100 = Compose Compose Compose Compose Compose Compose Compose Compose Compose Compose
+
+
+!! former lctrl
+keycode 29 = AltGr
+ shift keycode 29 = AltGr
+ altgr keycode 29 = AltGr
+ altgr shift keycode 29 = AltGr
+ control keycode 29 = AltGr
+ control shift keycode 29 = AltGr
+ control altgr keycode 29 = AltGr
+ control altgr shift keycode 29 = AltGr
+ alt keycode 29 = AltGr
+ alt shift keycode 29 = AltGr
+ alt altgr keycode 29 = AltGr
+ alt altgr shift keycode 29 = AltGr
+ alt control keycode 29 = AltGr
+ alt control shift keycode 29 = AltGr
+ alt control altgr keycode 29 = AltGr
+ alt control altgr shift keycode 29 = AltGr
+
+!! shift
+keycode 42 = Uncaps_Shift
+ shift keycode 42 = Uncaps_Shift
+ altgr keycode 42 = Uncaps_Shift
+ altgr shift keycode 42 = Uncaps_Shift
+ control keycode 42 = Uncaps_Shift
+ control shift keycode 42 = Uncaps_Shift
+ control altgr keycode 42 = Uncaps_Shift
+ control altgr shift keycode 42 = Uncaps_Shift
+ alt keycode 42 = Uncaps_Shift
+ alt shift keycode 42 = Uncaps_Shift
+ alt altgr keycode 42 = Uncaps_Shift
+ alt altgr shift keycode 42 = Uncaps_Shift
+ alt control keycode 42 = Uncaps_Shift
+ alt control shift keycode 42 = Uncaps_Shift
+ alt control altgr keycode 42 = Uncaps_Shift
+ alt control altgr shift keycode 42 = Uncaps_Shift
+
+!! shift
+keycode 54 = Uncaps_Shift
+ shift keycode 54 = Uncaps_Shift
+ altgr keycode 54 = Uncaps_Shift
+ altgr shift keycode 54 = Uncaps_Shift
+ control keycode 54 = Uncaps_Shift
+ control shift keycode 54 = Uncaps_Shift
+ control altgr keycode 54 = Uncaps_Shift
+ control altgr shift keycode 54 = Uncaps_Shift
+ alt keycode 54 = Uncaps_Shift
+ alt shift keycode 54 = Uncaps_Shift
+ alt altgr keycode 54 = Uncaps_Shift
+ alt altgr shift keycode 54 = Uncaps_Shift
+ alt control keycode 54 = Uncaps_Shift
+ alt control shift keycode 54 = Uncaps_Shift
+ alt control altgr keycode 54 = Uncaps_Shift
+ alt control altgr shift keycode 54 = Uncaps_Shift
+
+!! former capslock
+keycode 58 = Control
+ shift keycode 58 = Control
+ altgr keycode 58 = Control
+ altgr shift keycode 58 = Control
+ control keycode 58 = Control
+ control shift keycode 58 = Control
+ control altgr keycode 58 = Control
+ control altgr shift keycode 58 = Control
+ alt keycode 58 = Control
+ alt shift keycode 58 = Control
+ alt altgr keycode 58 = Control
+ alt altgr shift keycode 58 = Control
+ alt control keycode 58 = Control
+ alt control shift keycode 58 = Control
+ alt control altgr keycode 58 = Control
+ alt control altgr shift keycode 58 = Control
+
+!! former altgr
+keycode 100 = Compose
+ shift keycode 100 = Compose
+ altgr keycode 100 = Compose
+ altgr shift keycode 100 = Compose
+ control keycode 100 = Compose
+ control shift keycode 100 = Compose
+ control altgr keycode 100 = Compose
+ control altgr shift keycode 100 = Compose
+ alt keycode 100 = Compose
+ alt shift keycode 100 = Compose
+ alt altgr keycode 100 = Compose
+ alt altgr shift keycode 100 = Compose
+ alt control keycode 100 = Compose
+ alt control shift keycode 100 = Compose
+ alt control altgr keycode 100 = Compose
+ alt control altgr shift keycode 100 = Compose
+
+
+!keymaps 0-3
+
+! keycode 16 = +q +Q adiaeresis Adiaeresis
+! keycode 17 = +w +W ecaron Ecaron
+! keycode 18 = +e +E eacute Eacute
+! keycode 19 = +r +R rcaron Rcaron
+! keycode 20 = +t +T dead_acute dead_doubleacute
+! keycode 21 = +y +Y yacute Yacute
+! keycode 22 = +u +U uacute Uacute
+! keycode 23 = +i +I iacute Iacute
+! keycode 24 = +o +O oacute Oacute
+! keycode 25 = +p +P oslash Ooblique
+!
+! keycode 30 = +a +A aacute Aacute
+! keycode 31 = +s +S scaron Scaron
+! keycode 32 = +d +D dead_diaeresis degree
+! keycode 33 = +f +F atilde Atilde
+! keycode 34 = +g +G dead_ogonek G
+! keycode 35 = +h +H dead_caron copyright
+! keycode 36 = +j +J dstroke Dstroke
+! !keycode 37 = +k +K dead_abovering asciitilde
+! keycode 38 = +l +L lstroke Lstroke
+! keycode 39 = semicolon colon uring Uring
+!
+! keycode 44 = +z +Z zcaron Zcaron
+! keycode 45 = +x +X dead_circumflex asciitilde
+! keycode 46 = +c +C ccaron Ccaron
+! keycode 47 = +v +V dead_grave registered
+! keycode 48 = +b +B dead_breve asciitilde
+! keycode 49 = +n +N ncaron Ncaron
+! keycode 50 = +m +M dead_macron mu
+
+
+!! per-modifier version
+
+altgr keycode 16 = adiaeresis
+altgr shift keycode 16 = Adiaeresis
+altgr keycode 17 = ecaron
+altgr shift keycode 17 = Ecaron
+altgr keycode 18 = eacute
+altgr shift keycode 18 = Eacute
+altgr keycode 19 = rcaron
+altgr shift keycode 19 = Rcaron
+altgr keycode 20 = dead_acute
+altgr shift keycode 20 = dead_doubleacute
+altgr keycode 21 = yacute
+altgr shift keycode 21 = Yacute
+altgr keycode 22 = uacute
+altgr shift keycode 22 = Uacute
+altgr keycode 23 = iacute
+altgr shift keycode 23 = Iacute
+altgr keycode 24 = oacute
+altgr shift keycode 24 = Oacute
+altgr keycode 25 = oslash
+altgr shift keycode 25 = Ooblique
+
+altgr keycode 30 = aacute
+altgr shift keycode 30 = Aacute
+altgr keycode 31 = scaron
+altgr shift keycode 31 = Scaron
+altgr keycode 32 = dead_diaeresis
+altgr shift keycode 32 = degree
+altgr keycode 33 = atilde
+altgr shift keycode 33 = Atilde
+altgr keycode 34 = dead_ogonek
+altgr shift keycode 34 = G
+altgr keycode 35 = dead_caron
+altgr shift keycode 35 = copyright
+altgr keycode 36 = dstroke
+altgr shift keycode 36 = Dstroke
+!keycode 37 = +k +K dead_abovering asciitilde
+altgr keycode 38 = lstroke
+altgr shift keycode 38 = Lstroke
+altgr keycode 39 = uring
+altgr shift keycode 39 = Uring
+
+altgr keycode 44 = zcaron
+altgr shift keycode 44 = Zcaron
+altgr keycode 45 = dead_circumflex
+altgr shift keycode 45 = asciitilde
+altgr keycode 46 = ccaron
+altgr shift keycode 46 = Ccaron
+altgr keycode 47 = dead_grave
+altgr shift keycode 47 = registered
+altgr keycode 48 = dead_breve
+altgr shift keycode 48 = asciitilde
+altgr keycode 49 = ncaron
+altgr shift keycode 49 = Ncaron
+altgr keycode 50 = dead_macron
+altgr shift keycode 50 = mu
+
+! ctrl+shift+hex numbers
+!include "/usr/share/keymaps/legacy/i386/include/unicode.map.gz"
+# Most people will prefer the default Unicode hex input
+# sequences (that use the keypad, with A-F represented
+# by the keys around the digits in natural order).
+# However, ISO-14755 suggests to use Ctrl-Shift and
+# the ordinary letters and digits. That is also possible
+# (but then Ctrl-Shift-2 will no longer be Ctrl-@).
+control shift keycode 11 = Hex_0
+control shift keycode 2 = Hex_1
+control shift keycode 3 = Hex_2
+control shift keycode 4 = Hex_3
+control shift keycode 5 = Hex_4
+control shift keycode 6 = Hex_5
+control shift keycode 7 = Hex_6
+control shift keycode 8 = Hex_7
+control shift keycode 9 = Hex_8
+control shift keycode 10 = Hex_9
+control shift keycode 30 = Hex_A
+control shift keycode 48 = Hex_B
+control shift keycode 46 = Hex_C
+control shift keycode 32 = Hex_D
+control shift keycode 18 = Hex_E
+control shift keycode 33 = Hex_F
+#
+# If the keyboard is in Unicode mode, then pressing
+# Ctrl-Shift, typing 4 hex digits and releasing Ctrl-Shift
+# will produce the unicode character with the given code.
+#
+
+include "./vimcompose-latin1"
+include "./vimcompose-multibyte"
diff --git a/config/console_keymap/vimcompose-latin1 b/config/console_keymap/vimcompose-latin1
@@ -0,0 +1,97 @@
+charset "iso-8859-1"
+!! extracted from vim help files, covers wider range to above vim-compose.latin1 file
+compose '!' 'I' to '¡' # 0xa1 161 INVERTED EXCLAMATION MARK
+compose 'C' 't' to '¢' # 0xa2 162 CENT SIGN
+compose 'P' 'd' to '£' # 0xa3 163 POUND SIGN
+compose 'C' 'u' to '¤' # 0xa4 164 CURRENCY SIGN
+compose 'Y' 'e' to '¥' # 0xa5 165 YEN SIGN
+compose 'B' 'B' to '¦' # 0xa6 166 BROKEN BAR
+compose 'S' 'E' to '§' # 0xa7 167 SECTION SIGN
+compose ''' ':' to '¨' # 0xa8 168 DIAERESIS
+compose 'C' 'o' to '©' # 0xa9 169 COPYRIGHT SIGN
+compose '-' 'a' to 'ª' # 0xaa 170 FEMININE ORDINAL INDICATOR
+compose '<' '<' to '«' # 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+compose 'N' 'O' to '¬' # 0xac 172 NOT SIGN
+compose '-' '-' to '' # 0xad 173 SOFT HYPHEN
+compose 'R' 'g' to '®' # 0xae 174 REGISTERED SIGN
+compose ''' 'm' to '¯' # 0xaf 175 MACRON
+compose 'D' 'G' to '°' # 0xb0 176 DEGREE SIGN
+compose '+' '-' to '±' # 0xb1 177 PLUS-MINUS SIGN
+compose '2' 'S' to '²' # 0xb2 178 SUPERSCRIPT TWO
+compose '3' 'S' to '³' # 0xb3 179 SUPERSCRIPT THREE
+compose ''' ''' to '´' # 0xb4 180 ACUTE ACCENT
+compose 'M' 'y' to 'µ' # 0xb5 181 MICRO SIGN
+compose 'P' 'I' to '¶' # 0xb6 182 PILCROW SIGN
+compose '.' 'M' to '·' # 0xb7 183 MIDDLE DOT
+compose ''' ',' to '¸' # 0xb8 184 CEDILLA
+compose '1' 'S' to '¹' # 0xb9 185 SUPERSCRIPT ONE
+compose '-' 'o' to 'º' # 0xba 186 MASCULINE ORDINAL INDICATOR
+compose '>' '>' to '»' # 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+compose '1' '4' to '¼' # 0xbc 188 VULGAR FRACTION ONE QUARTER
+compose '1' '2' to '½' # 0xbd 189 VULGAR FRACTION ONE HALF
+compose '3' '4' to '¾' # 0xbe 190 VULGAR FRACTION THREE QUARTERS
+compose '?' 'I' to '¿' # 0xbf 191 INVERTED QUESTION MARK
+compose 'A' '!' to 'À' # 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE
+compose 'A' ''' to 'Á' # 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE
+compose 'A' '>' to 'Â' # 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+compose 'A' '?' to 'Ã' # 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE
+compose 'A' ':' to 'Ä' # 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS
+compose 'A' 'A' to 'Å' # 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE
+compose 'A' 'E' to 'Æ' # 0xc6 198 LATIN CAPITAL LETTER AE
+compose 'C' ',' to 'Ç' # 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA
+compose 'E' '!' to 'È' # 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE
+compose 'E' ''' to 'É' # 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE
+compose 'E' '>' to 'Ê' # 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+compose 'E' ':' to 'Ë' # 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS
+compose 'I' '!' to 'Ì' # 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE
+compose 'I' ''' to 'Í' # 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE
+compose 'I' '>' to 'Î' # 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+compose 'I' ':' to 'Ï' # 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS
+compose 'D' '-' to 'Ð' # 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic)
+compose 'N' '?' to 'Ñ' # 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE
+compose 'O' '!' to 'Ò' # 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE
+compose 'O' ''' to 'Ó' # 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE
+compose 'O' '>' to 'Ô' # 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+compose 'O' '?' to 'Õ' # 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE
+compose 'O' ':' to 'Ö' # 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS
+compose '*' 'X' to '×' # 0xd7 215 MULTIPLICATION SIGN
+compose 'O' '/' to 'Ø' # 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE
+compose 'U' '!' to 'Ù' # 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE
+compose 'U' ''' to 'Ú' # 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE
+compose 'U' '>' to 'Û' # 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+compose 'U' ':' to 'Ü' # 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS
+compose 'Y' ''' to 'Ý' # 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE
+compose 'T' 'H' to 'Þ' # 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic)
+compose 's' 's' to 'ß' # 0xdf 223 LATIN SMALL LETTER SHARP S (German)
+compose 'a' '!' to 'à' # 0xe0 224 LATIN SMALL LETTER A WITH GRAVE
+compose 'a' ''' to 'á' # 0xe1 225 LATIN SMALL LETTER A WITH ACUTE
+compose 'a' '>' to 'â' # 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX
+compose 'a' '?' to 'ã' # 0xe3 227 LATIN SMALL LETTER A WITH TILDE
+compose 'a' ':' to 'ä' # 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS
+compose 'a' 'a' to 'å' # 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE
+compose 'a' 'e' to 'æ' # 0xe6 230 LATIN SMALL LETTER AE
+compose 'c' ',' to 'ç' # 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA
+compose 'e' '!' to 'è' # 0xe8 232 LATIN SMALL LETTER E WITH GRAVE
+compose 'e' ''' to 'é' # 0xe9 233 LATIN SMALL LETTER E WITH ACUTE
+compose 'e' '>' to 'ê' # 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX
+compose 'e' ':' to 'ë' # 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS
+compose 'i' '!' to 'ì' # 0xec 236 LATIN SMALL LETTER I WITH GRAVE
+compose 'i' ''' to 'í' # 0xed 237 LATIN SMALL LETTER I WITH ACUTE
+compose 'i' '>' to 'î' # 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX
+compose 'i' ':' to 'ï' # 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS
+compose 'd' '-' to 'ð' # 0xf0 240 LATIN SMALL LETTER ETH (Icelandic)
+compose 'n' '?' to 'ñ' # 0xf1 241 LATIN SMALL LETTER N WITH TILDE
+compose 'o' '!' to 'ò' # 0xf2 242 LATIN SMALL LETTER O WITH GRAVE
+compose 'o' ''' to 'ó' # 0xf3 243 LATIN SMALL LETTER O WITH ACUTE
+compose 'o' '>' to 'ô' # 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX
+compose 'o' '?' to 'õ' # 0xf5 245 LATIN SMALL LETTER O WITH TILDE
+compose 'o' ':' to 'ö' # 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS
+compose '-' ':' to '÷' # 0xf7 247 DIVISION SIGN
+compose 'o' '/' to 'ø' # 0xf8 248 LATIN SMALL LETTER O WITH STROKE
+compose 'u' '!' to 'ù' # 0xf9 249 LATIN SMALL LETTER U WITH GRAVE
+compose 'u' ''' to 'ú' # 0xfa 250 LATIN SMALL LETTER U WITH ACUTE
+compose 'u' '>' to 'û' # 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX
+compose 'u' ':' to 'ü' # 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS
+compose 'y' ''' to 'ý' # 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE
+compose 't' 'h' to 'þ' # 0xfe 254 LATIN SMALL LETTER THORN (Icelandic)
+compose 'y' ':' to 'ÿ' # 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/config/console_keymap/vimcompose-multibyte b/config/console_keymap/vimcompose-multibyte
@@ -0,0 +1,457 @@
+
+charset "iso-8859-2"
+compose 'A' '(' to 'Ã' # 0102 0258 LATIN CAPITAL LETTER A WITH BREVE
+compose 'a' '(' to 'ã' # 0103 0259 LATIN SMALL LETTER A WITH BREVE
+compose 'A' ';' to '¡' # 0104 0260 LATIN CAPITAL LETTER A WITH OGONEK
+compose 'a' ';' to '±' # 0105 0261 LATIN SMALL LETTER A WITH OGONEK
+compose 'C' ''' to 'Æ' # 0106 0262 LATIN CAPITAL LETTER C WITH ACUTE
+compose 'c' ''' to 'æ' # 0107 0263 LATIN SMALL LETTER C WITH ACUTE
+compose 'C' '<' to 'È' # 010C 0268 LATIN CAPITAL LETTER C WITH CARON
+compose 'c' '<' to 'è' # 010D 0269 LATIN SMALL LETTER C WITH CARON
+compose 'D' '<' to 'Ï' # 010E 0270 LATIN CAPITAL LETTER D WITH CARON
+compose 'd' '<' to 'ï' # 010F 0271 LATIN SMALL LETTER D WITH CARON
+compose 'D' '/' to 'Ð' # 0110 0272 LATIN CAPITAL LETTER D WITH STROKE
+compose 'd' '/' to 'ð' # 0111 0273 LATIN SMALL LETTER D WITH STROKE
+compose 'E' ';' to 'Ê' # 0118 0280 LATIN CAPITAL LETTER E WITH OGONEK
+compose 'e' ';' to 'ê' # 0119 0281 LATIN SMALL LETTER E WITH OGONEK
+compose 'E' '<' to 'Ì' # 011A 0282 LATIN CAPITAL LETTER E WITH CARON
+compose 'e' '<' to 'ì' # 011B 0283 LATIN SMALL LETTER E WITH CARON
+compose 'L' ''' to 'Å' # 0139 0313 LATIN CAPITAL LETTER L WITH ACUTE
+compose 'l' ''' to 'å' # 013A 0314 LATIN SMALL LETTER L WITH ACUTE
+compose 'L' '<' to '¥' # 013D 0317 LATIN CAPITAL LETTER L WITH CARON
+compose 'l' '<' to 'µ' # 013E 0318 LATIN SMALL LETTER L WITH CARON
+compose 'L' '/' to '£' # 0141 0321 LATIN CAPITAL LETTER L WITH STROKE
+compose 'l' '/' to '³' # 0142 0322 LATIN SMALL LETTER L WITH STROKE
+compose 'N' ''' to 'Ñ' # 0143 0323 LATIN CAPITAL LETTER N WITH ACUTE `
+compose 'n' ''' to 'ñ' # 0144 0324 LATIN SMALL LETTER N WITH ACUTE `
+compose 'N' '<' to 'Ò' # 0147 0327 LATIN CAPITAL LETTER N WITH CARON `
+compose 'n' '<' to 'ò' # 0148 0328 LATIN SMALL LETTER N WITH CARON `
+compose 'O' '"' to 'Õ' # 0150 0336 LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+compose 'o' '"' to 'õ' # 0151 0337 LATIN SMALL LETTER O WITH DOUBLE ACUTE
+compose 'R' ''' to 'À' # 0154 0340 LATIN CAPITAL LETTER R WITH ACUTE
+compose 'r' ''' to 'à' # 0155 0341 LATIN SMALL LETTER R WITH ACUTE
+compose 'R' '<' to 'Ø' # 0158 0344 LATIN CAPITAL LETTER R WITH CARON
+compose 'r' '<' to 'ø' # 0159 0345 LATIN SMALL LETTER R WITH CARON
+compose 'S' ''' to '¦' # 015A 0346 LATIN CAPITAL LETTER S WITH ACUTE
+compose 's' ''' to '¶' # 015B 0347 LATIN SMALL LETTER S WITH ACUTE
+compose 'S' ',' to 'ª' # 015E 0350 LATIN CAPITAL LETTER S WITH CEDILLA
+compose 's' ',' to 'º' # 015F 0351 LATIN SMALL LETTER S WITH CEDILLA
+compose 'S' '<' to '©' # 0160 0352 LATIN CAPITAL LETTER S WITH CARON
+compose 's' '<' to '¹' # 0161 0353 LATIN SMALL LETTER S WITH CARON
+compose 'T' ',' to 'Þ' # 0162 0354 LATIN CAPITAL LETTER T WITH CEDILLA
+compose 't' ',' to 'þ' # 0163 0355 LATIN SMALL LETTER T WITH CEDILLA
+compose 'T' '<' to '«' # 0164 0356 LATIN CAPITAL LETTER T WITH CARON
+compose 't' '<' to '»' # 0165 0357 LATIN SMALL LETTER T WITH CARON
+compose 'U' '0' to 'Ù' # 016E 0366 LATIN CAPITAL LETTER U WITH RING ABOVE
+compose 'u' '0' to 'ù' # 016F 0367 LATIN SMALL LETTER U WITH RING ABOVE
+compose 'U' '"' to 'Û' # 0170 0368 LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+compose 'u' '"' to 'û' # 0171 0369 LATIN SMALL LETTER U WITH DOUBLE ACUTE
+compose 'Z' ''' to '¬' # 0179 0377 LATIN CAPITAL LETTER Z WITH ACUTE
+compose 'z' ''' to '¼' # 017A 0378 LATIN SMALL LETTER Z WITH ACUTE
+compose 'Z' '.' to '¯' # 017B 0379 LATIN CAPITAL LETTER Z WITH DOT ABOVE
+compose 'z' '.' to '¿' # 017C 0380 LATIN SMALL LETTER Z WITH DOT ABOVE
+compose 'Z' '<' to '®' # 017D 0381 LATIN CAPITAL LETTER Z WITH CARON
+compose 'z' '<' to '¾' # 017E 0382 LATIN SMALL LETTER Z WITH CARON
+compose ''' '<' to '·' # 02C7 0711 CARON
+compose ''' '(' to '¢' # 02D8 0728 BREVE
+compose ''' '.' to 'ÿ' # 02D9 0729 DOT ABOVE
+compose ''' ';' to '²' # 02DB 0731 OGONEK
+compose ''' '"' to '½' # 02DD 0733 DOUBLE ACUTE ACCENT
+
+charset "iso-8859-3"
+compose 'C' '>' to 'Æ' # 0108 0264 LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+compose 'c' '>' to 'æ' # 0109 0265 LATIN SMALL LETTER C WITH CIRCUMFLEX
+compose 'C' '.' to 'Å' # 010A 0266 LATIN CAPITAL LETTER C WITH DOT ABOVE
+compose 'c' '.' to 'å' # 010B 0267 LATIN SMALL LETTER C WITH DOT ABOVE
+compose 'G' '>' to 'Ø' # 011C 0284 LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+compose 'g' '>' to 'ø' # 011D 0285 LATIN SMALL LETTER G WITH CIRCUMFLEX
+compose 'G' '(' to '«' # 011E 0286 LATIN CAPITAL LETTER G WITH BREVE
+compose 'g' '(' to '»' # 011F 0287 LATIN SMALL LETTER G WITH BREVE
+compose 'G' '.' to 'Õ' # 0120 0288 LATIN CAPITAL LETTER G WITH DOT ABOVE
+compose 'g' '.' to 'õ' # 0121 0289 LATIN SMALL LETTER G WITH DOT ABOVE
+compose 'H' '>' to '¦' # 0124 0292 LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+compose 'h' '>' to '¶' # 0125 0293 LATIN SMALL LETTER H WITH CIRCUMFLEX
+compose 'H' '/' to '¡' # 0126 0294 LATIN CAPITAL LETTER H WITH STROKE
+compose 'h' '/' to '±' # 0127 0295 LATIN SMALL LETTER H WITH STROKE
+compose 'I' '.' to '©' # 0130 0304 LATIN CAPITAL LETTER I WITH DOT ABOVE
+compose 'i' '.' to '¹' # 0131 0305 LATIN SMALL LETTER DOTLESS I
+compose 'J' '>' to '¬' # 0134 0308 LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+compose 'j' '>' to '¼' # 0135 0309 LATIN SMALL LETTER J WITH CIRCUMFLEX
+compose 'S' '>' to 'Þ' # 015C 0348 LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+compose 's' '>' to 'þ' # 015D 0349 LATIN SMALL LETTER S WITH CIRCUMFLEX
+!compose 'S' ',' to 'ª' # 015E 0350 LATIN CAPITAL LETTER S WITH CEDILLA
+!compose 's' ',' to 'º' # 015F 0351 LATIN SMALL LETTER S WITH CEDILLA
+compose 'U' '(' to 'Ý' # 016C 0364 LATIN CAPITAL LETTER U WITH BREVE
+compose 'u' '(' to 'ý' # 016D 0365 LATIN SMALL LETTER U WITH BREVE
+!compose 'Z' '.' to '¯' # 017B 0379 LATIN CAPITAL LETTER Z WITH DOT ABOVE
+!compose 'z' '.' to '¿' # 017C 0380 LATIN SMALL LETTER Z WITH DOT ABOVE
+!compose ''' '(' to '¢' # 02D8 0728 BREVE
+!compose ''' '.' to 'ÿ' # 02D9 0729 DOT ABOVE
+
+charset "iso-8859-4"
+compose 'A' '-' to 'À' # 0100 0256 LATIN CAPITAL LETTER A WITH MACRON
+compose 'a' '-' to 'à' # 0101 0257 LATIN SMALL LETTER A WITH MACRON
+!compose 'A' ';' to '¡' # 0104 0260 LATIN CAPITAL LETTER A WITH OGONEK
+!compose 'a' ';' to '±' # 0105 0261 LATIN SMALL LETTER A WITH OGONEK
+!compose 'C' '<' to 'È' # 010C 0268 LATIN CAPITAL LETTER C WITH CARON
+!compose 'c' '<' to 'è' # 010D 0269 LATIN SMALL LETTER C WITH CARON
+!compose 'D' '/' to 'Ð' # 0110 0272 LATIN CAPITAL LETTER D WITH STROKE
+!compose 'd' '/' to 'ð' # 0111 0273 LATIN SMALL LETTER D WITH STROKE
+compose 'E' '-' to 'ª' # 0112 0274 LATIN CAPITAL LETTER E WITH MACRON
+compose 'e' '-' to 'º' # 0113 0275 LATIN SMALL LETTER E WITH MACRON
+compose 'E' '.' to 'Ì' # 0116 0278 LATIN CAPITAL LETTER E WITH DOT ABOVE
+compose 'e' '.' to 'ì' # 0117 0279 LATIN SMALL LETTER E WITH DOT ABOVE
+!compose 'E' ';' to 'Ê' # 0118 0280 LATIN CAPITAL LETTER E WITH OGONEK
+!compose 'e' ';' to 'ê' # 0119 0281 LATIN SMALL LETTER E WITH OGONEK
+compose 'G' ',' to '«' # 0122 0290 LATIN CAPITAL LETTER G WITH CEDILLA
+compose 'g' ',' to '»' # 0123 0291 LATIN SMALL LETTER G WITH CEDILLA
+compose 'I' '?' to '¥' # 0128 0296 LATIN CAPITAL LETTER I WITH TILDE
+compose 'i' '?' to 'µ' # 0129 0297 LATIN SMALL LETTER I WITH TILDE
+compose 'I' '-' to 'Ï' # 012A 0298 LATIN CAPITAL LETTER I WITH MACRON
+compose 'i' '-' to 'ï' # 012B 0299 LATIN SMALL LETTER I WITH MACRON
+compose 'I' ';' to 'Ç' # 012E 0302 LATIN CAPITAL LETTER I WITH OGONEK
+compose 'i' ';' to 'ç' # 012F 0303 LATIN SMALL LETTER I WITH OGONEK
+compose 'K' ',' to 'Ó' # 0136 0310 LATIN CAPITAL LETTER K WITH CEDILLA
+compose 'k' ',' to 'ó' # 0137 0311 LATIN SMALL LETTER K WITH CEDILLA
+compose 'k' 'k' to '¢' # 0138 0312 LATIN SMALL LETTER KRA
+compose 'L' ',' to '¦' # 013B 0315 LATIN CAPITAL LETTER L WITH CEDILLA
+compose 'l' ',' to '¶' # 013C 0316 LATIN SMALL LETTER L WITH CEDILLA
+compose 'N' ',' to 'Ñ' # 0145 0325 LATIN CAPITAL LETTER N WITH CEDILLA `
+compose 'n' ',' to 'ñ' # 0146 0326 LATIN SMALL LETTER N WITH CEDILLA `
+compose 'N' 'G' to '½' # 014A 0330 LATIN CAPITAL LETTER ENG
+compose 'n' 'g' to '¿' # 014B 0331 LATIN SMALL LETTER ENG
+compose 'O' '-' to 'Ò' # 014C 0332 LATIN CAPITAL LETTER O WITH MACRON
+compose 'o' '-' to 'ò' # 014D 0333 LATIN SMALL LETTER O WITH MACRON
+compose 'R' ',' to '£' # 0156 0342 LATIN CAPITAL LETTER R WITH CEDILLA
+compose 'r' ',' to '³' # 0157 0343 LATIN SMALL LETTER R WITH CEDILLA
+!compose 'S' '<' to '©' # 0160 0352 LATIN CAPITAL LETTER S WITH CARON
+!compose 's' '<' to '¹' # 0161 0353 LATIN SMALL LETTER S WITH CARON
+compose 'T' '/' to '¬' # 0166 0358 LATIN CAPITAL LETTER T WITH STROKE
+compose 't' '/' to '¼' # 0167 0359 LATIN SMALL LETTER T WITH STROKE
+compose 'U' '?' to 'Ý' # 0168 0360 LATIN CAPITAL LETTER U WITH TILDE
+compose 'u' '?' to 'ý' # 0169 0361 LATIN SMALL LETTER U WITH TILDE
+compose 'U' '-' to 'Þ' # 016A 0362 LATIN CAPITAL LETTER U WITH MACRON
+compose 'u' '-' to 'þ' # 016B 0363 LATIN SMALL LETTER U WITH MACRON
+compose 'U' ';' to 'Ù' # 0172 0370 LATIN CAPITAL LETTER U WITH OGONEK
+compose 'u' ';' to 'ù' # 0173 0371 LATIN SMALL LETTER U WITH OGONEK
+!compose 'Z' '<' to '®' # 017D 0381 LATIN CAPITAL LETTER Z WITH CARON
+!compose 'z' '<' to '¾' # 017E 0382 LATIN SMALL LETTER Z WITH CARON
+!compose ''' '<' to '·' # 02C7 0711 CARON
+!compose ''' '.' to 'ÿ' # 02D9 0729 DOT ABOVE
+!compose ''' ';' to '²' # 02DB 0731 OGONEK
+
+!charset "iso-8859-5"
+!compose 'I' 'O' to '¡' # 0401 1025 CYRILLIC CAPITAL LETTER IO
+!compose 'D' '%' to '¢' # 0402 1026 CYRILLIC CAPITAL LETTER DJE
+!compose 'G' '%' to '£' # 0403 1027 CYRILLIC CAPITAL LETTER GJE
+!compose 'I' 'E' to '¤' # 0404 1028 CYRILLIC CAPITAL LETTER UKRAINIAN IE
+!compose 'D' 'S' to '¥' # 0405 1029 CYRILLIC CAPITAL LETTER DZE
+!compose 'I' 'I' to '¦' # 0406 1030 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+!compose 'Y' 'I' to '§' # 0407 1031 CYRILLIC CAPITAL LETTER YI
+!compose 'J' '%' to '¨' # 0408 1032 CYRILLIC CAPITAL LETTER JE
+!compose 'L' 'J' to '©' # 0409 1033 CYRILLIC CAPITAL LETTER LJE
+!compose 'N' 'J' to 'ª' # 040A 1034 CYRILLIC CAPITAL LETTER NJE
+!compose 'T' 's' to '«' # 040B 1035 CYRILLIC CAPITAL LETTER TSHE
+!compose 'K' 'J' to '¬' # 040C 1036 CYRILLIC CAPITAL LETTER KJE
+!compose 'V' '%' to '®' # 040E 1038 CYRILLIC CAPITAL LETTER SHORT U
+!compose 'D' 'Z' to '¯' # 040F 1039 CYRILLIC CAPITAL LETTER DZHE
+!compose 'A' '=' to '°' # 0410 1040 CYRILLIC CAPITAL LETTER A
+!compose 'B' '=' to '±' # 0411 1041 CYRILLIC CAPITAL LETTER BE
+!compose 'V' '=' to '²' # 0412 1042 CYRILLIC CAPITAL LETTER VE
+!compose 'G' '=' to '³' # 0413 1043 CYRILLIC CAPITAL LETTER GHE
+!compose 'D' '=' to '´' # 0414 1044 CYRILLIC CAPITAL LETTER DE
+!compose 'E' '=' to 'µ' # 0415 1045 CYRILLIC CAPITAL LETTER IE
+!compose 'Z' '%' to '¶' # 0416 1046 CYRILLIC CAPITAL LETTER ZHE
+!compose 'Z' '=' to '·' # 0417 1047 CYRILLIC CAPITAL LETTER ZE
+!compose 'I' '=' to '¸' # 0418 1048 CYRILLIC CAPITAL LETTER I
+!compose 'J' '=' to '¹' # 0419 1049 CYRILLIC CAPITAL LETTER SHORT I
+!compose 'K' '=' to 'º' # 041A 1050 CYRILLIC CAPITAL LETTER KA
+!compose 'L' '=' to '»' # 041B 1051 CYRILLIC CAPITAL LETTER EL
+!compose 'M' '=' to '¼' # 041C 1052 CYRILLIC CAPITAL LETTER EM
+!compose 'N' '=' to '½' # 041D 1053 CYRILLIC CAPITAL LETTER EN
+!compose 'O' '=' to '¾' # 041E 1054 CYRILLIC CAPITAL LETTER O
+!compose 'P' '=' to '¿' # 041F 1055 CYRILLIC CAPITAL LETTER PE
+!compose 'R' '=' to 'À' # 0420 1056 CYRILLIC CAPITAL LETTER ER
+!compose 'S' '=' to 'Á' # 0421 1057 CYRILLIC CAPITAL LETTER ES
+!compose 'T' '=' to 'Â' # 0422 1058 CYRILLIC CAPITAL LETTER TE
+!compose 'U' '=' to 'Ã' # 0423 1059 CYRILLIC CAPITAL LETTER U
+!compose 'F' '=' to 'Ä' # 0424 1060 CYRILLIC CAPITAL LETTER EF
+!compose 'H' '=' to 'Å' # 0425 1061 CYRILLIC CAPITAL LETTER HA
+!compose 'C' '=' to 'Æ' # 0426 1062 CYRILLIC CAPITAL LETTER TSE
+!compose 'C' '%' to 'Ç' # 0427 1063 CYRILLIC CAPITAL LETTER CHE
+!compose 'S' '%' to 'È' # 0428 1064 CYRILLIC CAPITAL LETTER SHA
+!compose 'S' 'c' to 'É' # 0429 1065 CYRILLIC CAPITAL LETTER SHCHA
+!compose '=' '"' to 'Ê' # 042A 1066 CYRILLIC CAPITAL LETTER HARD SIGN
+!compose 'Y' '=' to 'Ë' # 042B 1067 CYRILLIC CAPITAL LETTER YERU
+!compose '%' '"' to 'Ì' # 042C 1068 CYRILLIC CAPITAL LETTER SOFT SIGN
+!compose 'J' 'E' to 'Í' # 042D 1069 CYRILLIC CAPITAL LETTER E
+!compose 'J' 'U' to 'Î' # 042E 1070 CYRILLIC CAPITAL LETTER YU
+!compose 'J' 'A' to 'Ï' # 042F 1071 CYRILLIC CAPITAL LETTER YA
+!compose 'a' '=' to 'Ð' # 0430 1072 CYRILLIC SMALL LETTER A
+!compose 'b' '=' to 'Ñ' # 0431 1073 CYRILLIC SMALL LETTER BE
+!compose 'v' '=' to 'Ò' # 0432 1074 CYRILLIC SMALL LETTER VE
+!compose 'g' '=' to 'Ó' # 0433 1075 CYRILLIC SMALL LETTER GHE
+!compose 'd' '=' to 'Ô' # 0434 1076 CYRILLIC SMALL LETTER DE
+!compose 'e' '=' to 'Õ' # 0435 1077 CYRILLIC SMALL LETTER IE
+!compose 'z' '%' to 'Ö' # 0436 1078 CYRILLIC SMALL LETTER ZHE
+!compose 'z' '=' to '×' # 0437 1079 CYRILLIC SMALL LETTER ZE
+!compose 'i' '=' to 'Ø' # 0438 1080 CYRILLIC SMALL LETTER I
+!compose 'j' '=' to 'Ù' # 0439 1081 CYRILLIC SMALL LETTER SHORT I
+!compose 'k' '=' to 'Ú' # 043A 1082 CYRILLIC SMALL LETTER KA
+!compose 'l' '=' to 'Û' # 043B 1083 CYRILLIC SMALL LETTER EL
+!compose 'm' '=' to 'Ü' # 043C 1084 CYRILLIC SMALL LETTER EM
+!compose 'n' '=' to 'Ý' # 043D 1085 CYRILLIC SMALL LETTER EN
+!compose 'o' '=' to 'Þ' # 043E 1086 CYRILLIC SMALL LETTER O
+!compose 'p' '=' to 'ß' # 043F 1087 CYRILLIC SMALL LETTER PE
+!compose 'r' '=' to 'à' # 0440 1088 CYRILLIC SMALL LETTER ER
+!compose 's' '=' to 'á' # 0441 1089 CYRILLIC SMALL LETTER ES
+!compose 't' '=' to 'â' # 0442 1090 CYRILLIC SMALL LETTER TE
+!compose 'u' '=' to 'ã' # 0443 1091 CYRILLIC SMALL LETTER U
+!compose 'f' '=' to 'ä' # 0444 1092 CYRILLIC SMALL LETTER EF
+!compose 'h' '=' to 'å' # 0445 1093 CYRILLIC SMALL LETTER HA
+!compose 'c' '=' to 'æ' # 0446 1094 CYRILLIC SMALL LETTER TSE
+!compose 'c' '%' to 'ç' # 0447 1095 CYRILLIC SMALL LETTER CHE
+!compose 's' '%' to 'è' # 0448 1096 CYRILLIC SMALL LETTER SHA
+!compose 's' 'c' to 'é' # 0449 1097 CYRILLIC SMALL LETTER SHCHA
+!compose '=' ''' to 'ê' # 044A 1098 CYRILLIC SMALL LETTER HARD SIGN
+!compose 'y' '=' to 'ë' # 044B 1099 CYRILLIC SMALL LETTER YERU
+!compose '%' ''' to 'ì' # 044C 1100 CYRILLIC SMALL LETTER SOFT SIGN
+!compose 'j' 'e' to 'í' # 044D 1101 CYRILLIC SMALL LETTER E
+!compose 'j' 'u' to 'î' # 044E 1102 CYRILLIC SMALL LETTER YU
+!compose 'j' 'a' to 'ï' # 044F 1103 CYRILLIC SMALL LETTER YA
+!compose 'i' 'o' to 'ñ' # 0451 1105 CYRILLIC SMALL LETTER IO
+!compose 'd' '%' to 'ò' # 0452 1106 CYRILLIC SMALL LETTER DJE
+!compose 'g' '%' to 'ó' # 0453 1107 CYRILLIC SMALL LETTER GJE
+!compose 'i' 'e' to 'ô' # 0454 1108 CYRILLIC SMALL LETTER UKRAINIAN IE
+!compose 'd' 's' to 'õ' # 0455 1109 CYRILLIC SMALL LETTER DZE
+!compose 'i' 'i' to 'ö' # 0456 1110 CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+!compose 'y' 'i' to '÷' # 0457 1111 CYRILLIC SMALL LETTER YI
+!compose 'j' '%' to 'ø' # 0458 1112 CYRILLIC SMALL LETTER JE
+!compose 'l' 'j' to 'ù' # 0459 1113 CYRILLIC SMALL LETTER LJE
+!compose 'n' 'j' to 'ú' # 045A 1114 CYRILLIC SMALL LETTER NJE
+!compose 't' 's' to 'û' # 045B 1115 CYRILLIC SMALL LETTER TSHE
+!compose 'k' 'j' to 'ü' # 045C 1116 CYRILLIC SMALL LETTER KJE
+!compose 'v' '%' to 'þ' # 045E 1118 CYRILLIC SMALL LETTER SHORT U
+!compose 'd' 'z' to 'ÿ' # 045F 1119 CYRILLIC SMALL LETTER DZHE
+!compose 'N' '0' to 'ð' #0 2116 8470 NUMERO SIGN
+!
+!charset "iso-8859-6"
+!compose ',' '+' to '¬' # 060C 1548 ARABIC COMMA
+!compose ';' '+' to '»' # 061B 1563 ARABIC SEMICOLON
+!compose '?' '+' to '¿' # 061F 1567 ARABIC QUESTION MARK
+!compose 'H' ''' to 'Á' # 0621 1569 ARABIC LETTER HAMZA
+!compose 'a' 'M' to 'Â' # 0622 1570 ARABIC LETTER ALEF WITH MADDA ABOVE
+!compose 'a' 'H' to 'Ã' # 0623 1571 ARABIC LETTER ALEF WITH HAMZA ABOVE
+!compose 'w' 'H' to 'Ä' # 0624 1572 ARABIC LETTER WAW WITH HAMZA ABOVE
+!compose 'a' 'h' to 'Å' # 0625 1573 ARABIC LETTER ALEF WITH HAMZA BELOW
+!compose 'y' 'H' to 'Æ' # 0626 1574 ARABIC LETTER YEH WITH HAMZA ABOVE
+!compose 'a' '+' to 'Ç' # 0627 1575 ARABIC LETTER ALEF
+!compose 'b' '+' to 'È' # 0628 1576 ARABIC LETTER BEH
+!compose 't' 'm' to 'É' # 0629 1577 ARABIC LETTER TEH MARBUTA
+!compose 't' '+' to 'Ê' # 062A 1578 ARABIC LETTER TEH
+!compose 't' 'k' to 'Ë' # 062B 1579 ARABIC LETTER THEH
+!compose 'g' '+' to 'Ì' # 062C 1580 ARABIC LETTER JEEM
+!compose 'h' 'k' to 'Í' # 062D 1581 ARABIC LETTER HAH
+!compose 'x' '+' to 'Î' # 062E 1582 ARABIC LETTER KHAH
+!compose 'd' '+' to 'Ï' # 062F 1583 ARABIC LETTER DAL
+!compose 'd' 'k' to 'Ð' # 0630 1584 ARABIC LETTER THAL
+!compose 'r' '+' to 'Ñ' # 0631 1585 ARABIC LETTER REH
+!compose 'z' '+' to 'Ò' # 0632 1586 ARABIC LETTER ZAIN
+!compose 's' '+' to 'Ó' # 0633 1587 ARABIC LETTER SEEN
+!compose 's' 'n' to 'Ô' # 0634 1588 ARABIC LETTER SHEEN
+!compose 'c' '+' to 'Õ' # 0635 1589 ARABIC LETTER SAD
+!compose 'd' 'd' to 'Ö' # 0636 1590 ARABIC LETTER DAD
+!compose 't' 'j' to '×' # 0637 1591 ARABIC LETTER TAH
+!compose 'z' 'H' to 'Ø' # 0638 1592 ARABIC LETTER ZAH
+!compose 'e' '+' to 'Ù' # 0639 1593 ARABIC LETTER AIN
+!compose 'i' '+' to 'Ú' # 063A 1594 ARABIC LETTER GHAIN
+!compose '+' '+' to 'à' # 0640 1600 ARABIC TATWEEL
+!compose 'f' '+' to 'á' # 0641 1601 ARABIC LETTER FEH
+!compose 'q' '+' to 'â' # 0642 1602 ARABIC LETTER QAF
+!compose 'k' '+' to 'ã' # 0643 1603 ARABIC LETTER KAF
+!compose 'l' '+' to 'ä' # 0644 1604 ARABIC LETTER LAM
+!compose 'm' '+' to 'å' # 0645 1605 ARABIC LETTER MEEM
+!compose 'n' '+' to 'æ' # 0646 1606 ARABIC LETTER NOON
+!compose 'h' '+' to 'ç' # 0647 1607 ARABIC LETTER HEH
+!compose 'w' '+' to 'è' # 0648 1608 ARABIC LETTER WAW
+!compose 'j' '+' to 'é' # 0649 1609 ARABIC LETTER ALEF MAKSURA
+!compose 'y' '+' to 'ê' # 064A 1610 ARABIC LETTER YEH
+!compose ':' '+' to 'ë' # 064B 1611 ARABIC FATHATAN
+!compose '"' '+' to 'ì' # 064C 1612 ARABIC DAMMATAN
+!compose '=' '+' to 'í' # 064D 1613 ARABIC KASRATAN
+!compose '/' '+' to 'î' # 064E 1614 ARABIC FATHA
+!compose ''' '+' to 'ï' # 064F 1615 ARABIC DAMMA
+!compose '1' '+' to 'ð' # 0650 1616 ARABIC KASRA
+!compose '3' '+' to 'ñ' # 0651 1617 ARABIC SHADDA
+!compose '0' '+' to 'ò' # 0652 1618 ARABIC SUKUN
+!
+!charset "iso-8859-7"
+!compose 'A' '%' to '¶' # 0386 0902 GREEK CAPITAL LETTER ALPHA WITH TONOS
+!compose 'E' '%' to '¸' # 0388 0904 GREEK CAPITAL LETTER EPSILON WITH TONOS
+!compose 'Y' '%' to '¹' # 0389 0905 GREEK CAPITAL LETTER ETA WITH TONOS
+!compose 'I' '%' to 'º' # 038A 0906 GREEK CAPITAL LETTER IOTA WITH TONOS
+!compose 'O' '%' to '¼' # 038C 0908 GREEK CAPITAL LETTER OMICRON WITH TONOS
+!compose 'U' '%' to '¾' # 038E 0910 GREEK CAPITAL LETTER UPSILON WITH TONOS
+!compose 'W' '%' to '¿' # 038F 0911 GREEK CAPITAL LETTER OMEGA WITH TONOS
+!compose 'i' '3' to 'À' # 0390 0912 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+!compose 'A' '*' to 'Á' # 0391 0913 GREEK CAPITAL LETTER ALPHA
+!compose 'B' '*' to 'Â' # 0392 0914 GREEK CAPITAL LETTER BETA
+!compose 'G' '*' to 'Ã' # 0393 0915 GREEK CAPITAL LETTER GAMMA
+!compose 'D' '*' to 'Ä' # 0394 0916 GREEK CAPITAL LETTER DELTA
+!compose 'E' '*' to 'Å' # 0395 0917 GREEK CAPITAL LETTER EPSILON
+!compose 'Z' '*' to 'Æ' # 0396 0918 GREEK CAPITAL LETTER ZETA
+!compose 'Y' '*' to 'Ç' # 0397 0919 GREEK CAPITAL LETTER ETA
+!compose 'H' '*' to 'È' # 0398 0920 GREEK CAPITAL LETTER THETA
+!compose 'I' '*' to 'É' # 0399 0921 GREEK CAPITAL LETTER IOTA
+!compose 'K' '*' to 'Ê' # 039A 0922 GREEK CAPITAL LETTER KAPPA
+!compose 'L' '*' to 'Ë' # 039B 0923 GREEK CAPITAL LETTER LAMDA
+!compose 'M' '*' to 'Ì' # 039C 0924 GREEK CAPITAL LETTER MU
+!compose 'N' '*' to 'Í' # 039D 0925 GREEK CAPITAL LETTER NU
+!compose 'C' '*' to 'Î' # 039E 0926 GREEK CAPITAL LETTER XI
+!compose 'O' '*' to 'Ï' # 039F 0927 GREEK CAPITAL LETTER OMICRON
+!compose 'P' '*' to 'Ð' # 03A0 0928 GREEK CAPITAL LETTER PI
+!compose 'R' '*' to 'Ñ' # 03A1 0929 GREEK CAPITAL LETTER RHO
+!compose 'S' '*' to 'Ó' # 03A3 0931 GREEK CAPITAL LETTER SIGMA
+!compose 'T' '*' to 'Ô' # 03A4 0932 GREEK CAPITAL LETTER TAU
+!compose 'U' '*' to 'Õ' # 03A5 0933 GREEK CAPITAL LETTER UPSILON
+!compose 'F' '*' to 'Ö' # 03A6 0934 GREEK CAPITAL LETTER PHI
+!compose 'X' '*' to '×' # 03A7 0935 GREEK CAPITAL LETTER CHI
+!compose 'Q' '*' to 'Ø' # 03A8 0936 GREEK CAPITAL LETTER PSI
+!compose 'W' '*' to 'Ù' # 03A9 0937 GREEK CAPITAL LETTER OMEGA
+!compose 'J' '*' to 'Ú' # 03AA 0938 GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+!compose 'V' '*' to 'Û' # 03AB 0939 GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+!compose 'a' '%' to 'Ü' # 03AC 0940 GREEK SMALL LETTER ALPHA WITH TONOS
+!compose 'e' '%' to 'Ý' # 03AD 0941 GREEK SMALL LETTER EPSILON WITH TONOS
+!compose 'y' '%' to 'Þ' # 03AE 0942 GREEK SMALL LETTER ETA WITH TONOS
+!compose 'i' '%' to 'ß' # 03AF 0943 GREEK SMALL LETTER IOTA WITH TONOS
+!compose 'u' '3' to 'à' # 03B0 0944 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+!compose 'a' '*' to 'á' # 03B1 0945 GREEK SMALL LETTER ALPHA
+!compose 'b' '*' to 'â' # 03B2 0946 GREEK SMALL LETTER BETA
+!compose 'g' '*' to 'ã' # 03B3 0947 GREEK SMALL LETTER GAMMA
+!compose 'd' '*' to 'ä' # 03B4 0948 GREEK SMALL LETTER DELTA
+!compose 'e' '*' to 'å' # 03B5 0949 GREEK SMALL LETTER EPSILON
+!compose 'z' '*' to 'æ' # 03B6 0950 GREEK SMALL LETTER ZETA
+!compose 'y' '*' to 'ç' # 03B7 0951 GREEK SMALL LETTER ETA
+!compose 'h' '*' to 'è' # 03B8 0952 GREEK SMALL LETTER THETA
+!compose 'i' '*' to 'é' # 03B9 0953 GREEK SMALL LETTER IOTA
+!compose 'k' '*' to 'ê' # 03BA 0954 GREEK SMALL LETTER KAPPA
+!compose 'l' '*' to 'ë' # 03BB 0955 GREEK SMALL LETTER LAMDA
+!compose 'm' '*' to 'ì' # 03BC 0956 GREEK SMALL LETTER MU
+!compose 'n' '*' to 'í' # 03BD 0957 GREEK SMALL LETTER NU
+!compose 'c' '*' to 'î' # 03BE 0958 GREEK SMALL LETTER XI
+!compose 'o' '*' to 'ï' # 03BF 0959 GREEK SMALL LETTER OMICRON
+!compose 'p' '*' to 'ð' # 03C0 0960 GREEK SMALL LETTER PI
+!compose 'r' '*' to 'ñ' # 03C1 0961 GREEK SMALL LETTER RHO
+!compose '*' 's' to 'ò' # 03C2 0962 GREEK SMALL LETTER FINAL SIGMA
+!compose 's' '*' to 'ó' # 03C3 0963 GREEK SMALL LETTER SIGMA
+!compose 't' '*' to 'ô' # 03C4 0964 GREEK SMALL LETTER TAU
+!compose 'u' '*' to 'õ' # 03C5 0965 GREEK SMALL LETTER UPSILON
+!compose 'f' '*' to 'ö' # 03C6 0966 GREEK SMALL LETTER PHI
+!compose 'x' '*' to '÷' # 03C7 0967 GREEK SMALL LETTER CHI
+!compose 'q' '*' to 'ø' # 03C8 0968 GREEK SMALL LETTER PSI
+!compose 'w' '*' to 'ù' # 03C9 0969 GREEK SMALL LETTER OMEGA
+!compose 'j' '*' to 'ú' # 03CA 0970 GREEK SMALL LETTER IOTA WITH DIALYTIKA
+!compose 'v' '*' to 'û' # 03CB 0971 GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+!compose 'o' '%' to 'ü' # 03CC 0972 GREEK SMALL LETTER OMICRON WITH TONOS
+!compose 'u' '%' to 'ý' # 03CD 0973 GREEK SMALL LETTER UPSILON WITH TONOS
+!compose 'w' '%' to 'þ' # 03CE 0974 GREEK SMALL LETTER OMEGA WITH TONOS
+!compose '-' '3' to '¯' #3 2015 8213 HORIZONTAL BAR
+!compose ''' '6' to '¡' #6 2018 8216 LEFT SINGLE QUOTATION MARK
+!compose ''' '9' to '¢' #9 2019 8217 RIGHT SINGLE QUOTATION MARK
+!compose 'E' 'u' to '¤' #u 20AC 8364 EURO SIGN
+!
+!charset "iso-8859-8"
+!compose 'A' '+' to 'à' # 05D0 1488 HEBREW LETTER ALEF
+!compose 'B' '+' to 'á' # 05D1 1489 HEBREW LETTER BET
+!compose 'G' '+' to 'â' # 05D2 1490 HEBREW LETTER GIMEL
+!compose 'D' '+' to 'ã' # 05D3 1491 HEBREW LETTER DALET
+!compose 'H' '+' to 'ä' # 05D4 1492 HEBREW LETTER HE
+!compose 'W' '+' to 'å' # 05D5 1493 HEBREW LETTER VAV
+!compose 'Z' '+' to 'æ' # 05D6 1494 HEBREW LETTER ZAYIN
+!compose 'X' '+' to 'ç' # 05D7 1495 HEBREW LETTER HET
+!compose 'T' 'j' to 'è' # 05D8 1496 HEBREW LETTER TET
+!compose 'J' '+' to 'é' # 05D9 1497 HEBREW LETTER YOD
+!compose 'K' '%' to 'ê' # 05DA 1498 HEBREW LETTER FINAL KAF
+!compose 'K' '+' to 'ë' # 05DB 1499 HEBREW LETTER KAF
+!compose 'L' '+' to 'ì' # 05DC 1500 HEBREW LETTER LAMED
+!compose 'M' '%' to 'í' # 05DD 1501 HEBREW LETTER FINAL MEM
+!compose 'M' '+' to 'î' # 05DE 1502 HEBREW LETTER MEM
+!compose 'N' '%' to 'ï' # 05DF 1503 HEBREW LETTER FINAL NUN `
+!compose 'N' '+' to 'ð' # 05E0 1504 HEBREW LETTER NUN `
+!compose 'S' '+' to 'ñ' # 05E1 1505 HEBREW LETTER SAMEKH
+!compose 'E' '+' to 'ò' # 05E2 1506 HEBREW LETTER AYIN
+!compose 'P' '%' to 'ó' # 05E3 1507 HEBREW LETTER FINAL PE
+!compose 'P' '+' to 'ô' # 05E4 1508 HEBREW LETTER PE
+!compose 'Z' 'j' to 'õ' # 05E5 1509 HEBREW LETTER FINAL TSADI
+!compose 'Z' 'J' to 'ö' # 05E6 1510 HEBREW LETTER TSADI
+!compose 'Q' '+' to '÷' # 05E7 1511 HEBREW LETTER QOF
+!compose 'R' '+' to 'ø' # 05E8 1512 HEBREW LETTER RESH
+!compose 'S' 'h' to 'ù' # 05E9 1513 HEBREW LETTER SHIN
+!compose 'T' '+' to 'ú' # 05EA 1514 HEBREW LETTER TAV
+!compose '=' '2' to 'ß' #2 2017 8215 DOUBLE LOW LINE
+!
+!charset "iso-8859-9"
+!compose 'G' '(' to 'Ð' # 011E 0286 LATIN CAPITAL LETTER G WITH BREVE
+!compose 'g' '(' to 'ð' # 011F 0287 LATIN SMALL LETTER G WITH BREVE
+!compose 'I' '.' to 'Ý' # 0130 0304 LATIN CAPITAL LETTER I WITH DOT ABOVE
+!compose 'i' '.' to 'ý' # 0131 0305 LATIN SMALL LETTER DOTLESS I
+!!compose 'S' ',' to 'Þ' # 015E 0350 LATIN CAPITAL LETTER S WITH CEDILLA
+!!compose 's' ',' to 'þ' # 015F 0351 LATIN SMALL LETTER S WITH CEDILLA
+!
+!charset "iso-8859-10"
+!compose 'A' '-' to 'À' # 0100 0256 LATIN CAPITAL LETTER A WITH MACRON
+!compose 'a' '-' to 'à' # 0101 0257 LATIN SMALL LETTER A WITH MACRON
+!!compose 'A' ';' to '¡' # 0104 0260 LATIN CAPITAL LETTER A WITH OGONEK
+!!compose 'a' ';' to '±' # 0105 0261 LATIN SMALL LETTER A WITH OGONEK
+!!compose 'C' '<' to 'È' # 010C 0268 LATIN CAPITAL LETTER C WITH CARON
+!!compose 'c' '<' to 'è' # 010D 0269 LATIN SMALL LETTER C WITH CARON
+!!compose 'D' '/' to '©' # 0110 0272 LATIN CAPITAL LETTER D WITH STROKE
+!!compose 'd' '/' to '¹' # 0111 0273 LATIN SMALL LETTER D WITH STROKE
+!compose 'E' '-' to '¢' # 0112 0274 LATIN CAPITAL LETTER E WITH MACRON
+!compose 'e' '-' to '²' # 0113 0275 LATIN SMALL LETTER E WITH MACRON
+!compose 'E' '.' to 'Ì' # 0116 0278 LATIN CAPITAL LETTER E WITH DOT ABOVE
+!compose 'e' '.' to 'ì' # 0117 0279 LATIN SMALL LETTER E WITH DOT ABOVE
+!!compose 'E' ';' to 'Ê' # 0118 0280 LATIN CAPITAL LETTER E WITH OGONEK
+!!compose 'e' ';' to 'ê' # 0119 0281 LATIN SMALL LETTER E WITH OGONEK
+!compose 'G' ',' to '£' # 0122 0290 LATIN CAPITAL LETTER G WITH CEDILLA
+!compose 'g' ',' to '³' # 0123 0291 LATIN SMALL LETTER G WITH CEDILLA
+!compose 'I' '?' to '¥' # 0128 0296 LATIN CAPITAL LETTER I WITH TILDE
+!compose 'i' '?' to 'µ' # 0129 0297 LATIN SMALL LETTER I WITH TILDE
+!compose 'I' '-' to '¤' # 012A 0298 LATIN CAPITAL LETTER I WITH MACRON
+!compose 'i' '-' to '´' # 012B 0299 LATIN SMALL LETTER I WITH MACRON
+!compose 'I' ';' to 'Ç' # 012E 0302 LATIN CAPITAL LETTER I WITH OGONEK
+!compose 'i' ';' to 'ç' # 012F 0303 LATIN SMALL LETTER I WITH OGONEK
+!compose 'K' ',' to '¦' # 0136 0310 LATIN CAPITAL LETTER K WITH CEDILLA
+!compose 'k' ',' to '¶' # 0137 0311 LATIN SMALL LETTER K WITH CEDILLA
+!compose 'k' 'k' to 'ÿ' # 0138 0312 LATIN SMALL LETTER KRA
+!compose 'L' ',' to '¨' # 013B 0315 LATIN CAPITAL LETTER L WITH CEDILLA
+!compose 'l' ',' to '¸' # 013C 0316 LATIN SMALL LETTER L WITH CEDILLA
+!compose 'N' ',' to 'Ñ' # 0145 0325 LATIN CAPITAL LETTER N WITH CEDILLA `
+!compose 'n' ',' to 'ñ' # 0146 0326 LATIN SMALL LETTER N WITH CEDILLA `
+!compose 'N' 'G' to '¯' # 014A 0330 LATIN CAPITAL LETTER ENG
+!compose 'n' 'g' to '¿' # 014B 0331 LATIN SMALL LETTER ENG
+!compose 'O' '-' to 'Ò' # 014C 0332 LATIN CAPITAL LETTER O WITH MACRON
+!compose 'o' '-' to 'ò' # 014D 0333 LATIN SMALL LETTER O WITH MACRON
+!!compose 'S' '<' to 'ª' # 0160 0352 LATIN CAPITAL LETTER S WITH CARON
+!!compose 's' '<' to 'º' # 0161 0353 LATIN SMALL LETTER S WITH CARON
+!compose 'T' '/' to '«' # 0166 0358 LATIN CAPITAL LETTER T WITH STROKE
+!compose 't' '/' to '»' # 0167 0359 LATIN SMALL LETTER T WITH STROKE
+!compose 'U' '?' to '×' # 0168 0360 LATIN CAPITAL LETTER U WITH TILDE
+!compose 'u' '?' to '÷' # 0169 0361 LATIN SMALL LETTER U WITH TILDE
+!compose 'U' '-' to '®' # 016A 0362 LATIN CAPITAL LETTER U WITH MACRON
+!compose 'u' '-' to '¾' # 016B 0363 LATIN SMALL LETTER U WITH MACRON
+!compose 'U' ';' to 'Ù' # 0172 0370 LATIN CAPITAL LETTER U WITH OGONEK
+!compose 'u' ';' to 'ù' # 0173 0371 LATIN SMALL LETTER U WITH OGONEK
+!!compose 'Z' '<' to '¬' # 017D 0381 LATIN CAPITAL LETTER Z WITH CARON
+!!compose 'z' '<' to '¼' # 017E 0382 LATIN SMALL LETTER Z WITH CARON
+!compose '-' '3' to '½' #3 2015 8213 HORIZONTAL BAR
+!
+!charset "iso-8859-15"
+!compose 'O' 'E' to '¼' # 0152 0338 LATIN CAPITAL LIGATURE OE
+!compose 'o' 'e' to '½' # 0153 0339 LATIN SMALL LIGATURE OE
+!!compose 'S' '<' to '¦' # 0160 0352 LATIN CAPITAL LETTER S WITH CARON
+!!compose 's' '<' to '¨' # 0161 0353 LATIN SMALL LETTER S WITH CARON
+!compose 'Y' ':' to '¾' # 0178 0376 LATIN CAPITAL LETTER Y WITH DIAERESIS
+!!compose 'Z' '<' to '´' # 017D 0381 LATIN CAPITAL LETTER Z WITH CARON
+!!compose 'z' '<' to '¸' # 017E 0382 LATIN SMALL LETTER Z WITH CARON
+!compose 'E' 'u' to '¤' #u 20AC 8364 EURO SIGN
diff --git a/config/console_keymap/vimcompose-utf8 b/config/console_keymap/vimcompose-utf8
@@ -0,0 +1,98 @@
+charset "iso-8859-1"
+!! extracted from vim help files, covers wider range to above vim-compose.latin1 file
+compose '!' 'I' to '¡'
+ # 0xa1 161 INVERTED EXCLAMATION MARK
+compose 'C' 't' to '¢' # 0xa2 162 CENT SIGN
+compose 'P' 'd' to '£' # 0xa3 163 POUND SIGN
+compose 'C' 'u' to '¤' # 0xa4 164 CURRENCY SIGN
+compose 'Y' 'e' to 'Â¥' # 0xa5 165 YEN SIGN
+compose 'B' 'B' to '¦' # 0xa6 166 BROKEN BAR
+compose 'S' 'E' to '§' # 0xa7 167 SECTION SIGN
+compose ''' ':' to '¨' # 0xa8 168 DIAERESIS
+compose 'C' 'o' to '©' # 0xa9 169 COPYRIGHT SIGN
+compose '-' 'a' to 'ª' # 0xaa 170 FEMININE ORDINAL INDICATOR
+compose '<' '<' to '«' # 0xab 171 LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+compose 'N' 'O' to '¬' # 0xac 172 NOT SIGN
+compose '-' '-' to 'Â' # 0xad 173 SOFT HYPHEN
+compose 'R' 'g' to '®' # 0xae 174 REGISTERED SIGN
+compose ''' 'm' to '¯' # 0xaf 175 MACRON
+compose 'D' 'G' to '°' # 0xb0 176 DEGREE SIGN
+compose '+' '-' to '±' # 0xb1 177 PLUS-MINUS SIGN
+compose '2' 'S' to '²' # 0xb2 178 SUPERSCRIPT TWO
+compose '3' 'S' to '³' # 0xb3 179 SUPERSCRIPT THREE
+compose ''' ''' to '´' # 0xb4 180 ACUTE ACCENT
+compose 'M' 'y' to 'µ' # 0xb5 181 MICRO SIGN
+compose 'P' 'I' to '¶' # 0xb6 182 PILCROW SIGN
+compose '.' 'M' to '·' # 0xb7 183 MIDDLE DOT
+compose ''' ',' to '¸' # 0xb8 184 CEDILLA
+compose '1' 'S' to '¹' # 0xb9 185 SUPERSCRIPT ONE
+compose '-' 'o' to 'º' # 0xba 186 MASCULINE ORDINAL INDICATOR
+compose '>' '>' to '»' # 0xbb 187 RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+compose '1' '4' to '¼' # 0xbc 188 VULGAR FRACTION ONE QUARTER
+compose '1' '2' to '½' # 0xbd 189 VULGAR FRACTION ONE HALF
+compose '3' '4' to '¾' # 0xbe 190 VULGAR FRACTION THREE QUARTERS
+compose '?' 'I' to '¿' # 0xbf 191 INVERTED QUESTION MARK
+compose 'A' '!' to 'À' # 0xc0 192 LATIN CAPITAL LETTER A WITH GRAVE
+compose 'A' ''' to 'Ã' # 0xc1 193 LATIN CAPITAL LETTER A WITH ACUTE
+compose 'A' '>' to 'Â' # 0xc2 194 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+compose 'A' '?' to 'Ã' # 0xc3 195 LATIN CAPITAL LETTER A WITH TILDE
+compose 'A' ':' to 'Ä' # 0xc4 196 LATIN CAPITAL LETTER A WITH DIAERESIS
+compose 'A' 'A' to 'Ã…' # 0xc5 197 LATIN CAPITAL LETTER A WITH RING ABOVE
+compose 'A' 'E' to 'Æ' # 0xc6 198 LATIN CAPITAL LETTER AE
+compose 'C' ',' to 'Ç' # 0xc7 199 LATIN CAPITAL LETTER C WITH CEDILLA
+compose 'E' '!' to 'È' # 0xc8 200 LATIN CAPITAL LETTER E WITH GRAVE
+compose 'E' ''' to 'É' # 0xc9 201 LATIN CAPITAL LETTER E WITH ACUTE
+compose 'E' '>' to 'Ê' # 0xca 202 LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+compose 'E' ':' to 'Ë' # 0xcb 203 LATIN CAPITAL LETTER E WITH DIAERESIS
+compose 'I' '!' to 'Ì' # 0xcc 204 LATIN CAPITAL LETTER I WITH GRAVE
+compose 'I' ''' to 'Ã' # 0xcd 205 LATIN CAPITAL LETTER I WITH ACUTE
+compose 'I' '>' to 'ÃŽ' # 0xce 206 LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+compose 'I' ':' to 'Ã' # 0xcf 207 LATIN CAPITAL LETTER I WITH DIAERESIS
+compose 'D' '-' to 'Ã' # 0xd0 208 LATIN CAPITAL LETTER ETH (Icelandic)
+compose 'N' '?' to 'Ñ' # 0xd1 209 LATIN CAPITAL LETTER N WITH TILDE
+compose 'O' '!' to 'Ã’' # 0xd2 210 LATIN CAPITAL LETTER O WITH GRAVE
+compose 'O' ''' to 'Ó' # 0xd3 211 LATIN CAPITAL LETTER O WITH ACUTE
+compose 'O' '>' to 'Ô' # 0xd4 212 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+compose 'O' '?' to 'Õ' # 0xd5 213 LATIN CAPITAL LETTER O WITH TILDE
+compose 'O' ':' to 'Ö' # 0xd6 214 LATIN CAPITAL LETTER O WITH DIAERESIS
+compose '*' 'X' to '×' # 0xd7 215 MULTIPLICATION SIGN
+compose 'O' '/' to 'Ø' # 0xd8 216 LATIN CAPITAL LETTER O WITH STROKE
+compose 'U' '!' to 'Ù' # 0xd9 217 LATIN CAPITAL LETTER U WITH GRAVE
+compose 'U' ''' to 'Ú' # 0xda 218 LATIN CAPITAL LETTER U WITH ACUTE
+compose 'U' '>' to 'Û' # 0xdb 219 LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+compose 'U' ':' to 'Ü' # 0xdc 220 LATIN CAPITAL LETTER U WITH DIAERESIS
+compose 'Y' ''' to 'Ã' # 0xdd 221 LATIN CAPITAL LETTER Y WITH ACUTE
+compose 'T' 'H' to 'Þ' # 0xde 222 LATIN CAPITAL LETTER THORN (Icelandic)
+compose 's' 's' to 'ß' # 0xdf 223 LATIN SMALL LETTER SHARP S (German)
+compose 'a' '!' to 'Ã ' # 0xe0 224 LATIN SMALL LETTER A WITH GRAVE
+compose 'a' ''' to 'á' # 0xe1 225 LATIN SMALL LETTER A WITH ACUTE
+compose 'a' '>' to 'â' # 0xe2 226 LATIN SMALL LETTER A WITH CIRCUMFLEX
+compose 'a' '?' to 'ã' # 0xe3 227 LATIN SMALL LETTER A WITH TILDE
+compose 'a' ':' to 'ä' # 0xe4 228 LATIN SMALL LETTER A WITH DIAERESIS
+compose 'a' 'a' to 'Ã¥' # 0xe5 229 LATIN SMALL LETTER A WITH RING ABOVE
+compose 'a' 'e' to 'æ' # 0xe6 230 LATIN SMALL LETTER AE
+compose 'c' ',' to 'ç' # 0xe7 231 LATIN SMALL LETTER C WITH CEDILLA
+compose 'e' '!' to 'è' # 0xe8 232 LATIN SMALL LETTER E WITH GRAVE
+compose 'e' ''' to 'é' # 0xe9 233 LATIN SMALL LETTER E WITH ACUTE
+compose 'e' '>' to 'ê' # 0xea 234 LATIN SMALL LETTER E WITH CIRCUMFLEX
+compose 'e' ':' to 'ë' # 0xeb 235 LATIN SMALL LETTER E WITH DIAERESIS
+compose 'i' '!' to 'ì' # 0xec 236 LATIN SMALL LETTER I WITH GRAVE
+compose 'i' ''' to 'Ã' # 0xed 237 LATIN SMALL LETTER I WITH ACUTE
+compose 'i' '>' to 'î' # 0xee 238 LATIN SMALL LETTER I WITH CIRCUMFLEX
+compose 'i' ':' to 'ï' # 0xef 239 LATIN SMALL LETTER I WITH DIAERESIS
+compose 'd' '-' to 'ð' # 0xf0 240 LATIN SMALL LETTER ETH (Icelandic)
+compose 'n' '?' to 'ñ' # 0xf1 241 LATIN SMALL LETTER N WITH TILDE
+compose 'o' '!' to 'ò' # 0xf2 242 LATIN SMALL LETTER O WITH GRAVE
+compose 'o' ''' to 'ó' # 0xf3 243 LATIN SMALL LETTER O WITH ACUTE
+compose 'o' '>' to 'ô' # 0xf4 244 LATIN SMALL LETTER O WITH CIRCUMFLEX
+compose 'o' '?' to 'õ' # 0xf5 245 LATIN SMALL LETTER O WITH TILDE
+compose 'o' ':' to 'ö' # 0xf6 246 LATIN SMALL LETTER O WITH DIAERESIS
+compose '-' ':' to '÷' # 0xf7 247 DIVISION SIGN
+compose 'o' '/' to 'ø' # 0xf8 248 LATIN SMALL LETTER O WITH STROKE
+compose 'u' '!' to 'ù' # 0xf9 249 LATIN SMALL LETTER U WITH GRAVE
+compose 'u' ''' to 'ú' # 0xfa 250 LATIN SMALL LETTER U WITH ACUTE
+compose 'u' '>' to 'û' # 0xfb 251 LATIN SMALL LETTER U WITH CIRCUMFLEX
+compose 'u' ':' to 'ü' # 0xfc 252 LATIN SMALL LETTER U WITH DIAERESIS
+compose 'y' ''' to 'ý' # 0xfd 253 LATIN SMALL LETTER Y WITH ACUTE
+compose 't' 'h' to 'þ' # 0xfe 254 LATIN SMALL LETTER THORN (Icelandic)
+compose 'y' ':' to 'ÿ' # 0xff 255 LATIN SMALL LETTER Y WITH DIAERESIS
diff --git a/config/etc/fstab b/config/etc/fstab
@@ -1,13 +0,0 @@
-/dev/mapper/vg-alpine_root / xfs noatime,nosuid 0 0
-sysfs /sys sysfs rw 0 0
-proc /proc proc rw 0 0
-devtmpfs /dev devtmpfs rw,nosuid 0 0
-devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0
-shm /dev/shm tmpfs rw,nosuid,nodev,relatime 0 0
-mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec 0 0
-none /run/cgroup cgroup2 rw 0 0
-/dev/sda1 /boot ext4 ro,nosuid 0 0
-/dev/mapper/vg-home /home xfs noatime,nosuid 0 0
-/dev/mmcblk0p1 /mnt/sd f2fs ro,nosuid,nodev 0 0
-/dev/mapper/vg-containers /mnt/volumes/containers xfs nosuid,noatime 0 0
-/dev/mapper/vg-containers_user /mnt/volumes/containers/user xfs nosuid,noatime 0 0
diff --git a/config/etc/mkinitfs/mkinitfs.conf b/config/etc/mkinitfs/mkinitfs.conf
@@ -1 +0,0 @@
-features="ata base ext4 keymap kms mmc nvme raid scsi virtio xfs lvm"
diff --git a/config/etc/profile.d/run_current_command.sh b/config/etc/profile.d/run_current_command.sh
@@ -0,0 +1,8 @@
+# prepend /command to $PATH if not already present
+case ":$PATH:" in
+ *:"/run/current/command":*)
+ ;;
+ *)
+ PATH="/run/current/command${PATH:+:$PATH}"
+ ;;
+esac
diff --git a/config/etc/profile.d/slashcommand.sh b/config/etc/profile.d/slashcommand.sh
@@ -1,8 +0,0 @@
-# prepend /command to $PATH if not already present
-case ":$PATH:" in
- *:"/command":*)
- ;;
- *)
- PATH="/command${PATH:+:$PATH}"
- ;;
-esac
diff --git a/config/etc/skel/.config/zsh/.zshenv b/config/etc/skel/.config/zsh/.zshenv
@@ -0,0 +1,25 @@
+# nice PS4 with elapsed seconds (to two decimal places) and subshell indication
+if zmodload zsh/system; then # to get actual pid
+ setopt PROMPT_SUBST
+ if [[ $TERM == (xterm|rxvt|screen|linux|console|Eterm|putty)* ]]; then
+ # first color is for main shell process, second is subshell
+ PS4_PID_COLORS=(cyan magenta)
+ PS4='+%B${SECONDS} %F{${PS4_PID_COLORS[1+($$ != ${sysparams[pid]})]}}%N%f:%F{yellow}%i%f>%b '
+ else
+ PS4='+%B${SECONDS} ${sysparams[pid]} %N:%i>%b '
+ fi
+
+ # two digits after the decimal point
+ typeset -g -F 2 SECONDS
+ # typeset -F 2 SECONDS # do it twice, some bug I don't understand
+fi
+
+if [[ -o login ]]; then
+ # Set default XDG directories so apps (and /etc/zsh/*) will make use of them
+ : ${XDG_DATA_HOME:=$HOME/.local/share}
+ : ${XDG_CONFIG_HOME:=$HOME/.config}
+ : ${XDG_STATE_HOME:=$HOME/.local/state}
+ : ${XDG_CACHE_HOME:=$HOME/.cache}
+ export XDG_DATA_HOME XDG_CONFIG_HOME XDG_STATE_HOME XDG_CACHE_HOME
+fi
+# vim: ft=zsh noet ts=4 sts=4 sw=4
diff --git a/config/etc/skel/.config/zsh/.zshrc b/config/etc/skel/.config/zsh/.zshrc
@@ -0,0 +1,93 @@
+setopt extended_history inc_append_history hist_find_no_dups hist_expire_dups_first
+HISTFILE=${XDG_DATA_HOME:-$HOME/.local/share}/zsh/history
+HISTSIZE=2000
+SAVEHIST=1000
+
+alias ll='ls -lh --full-time'
+alias ns='netstat -ltup'
+
+setopt warn_create_global
+prompt_hash_color_zshrc() {
+ local h c
+ # djbhash, simple string hash function to generate distinct numbers for similar strings
+ h=5381
+ for c in ${(s::)1}; do
+ h=$(( ( (h << 5) + h + #c ) % 0xffffffff ))
+ done
+
+ local -a color_list
+ # List of colors bright enough to be readable against dark background
+ if (($+FG_COLOR_NUMBERS)); then
+ color_list=( $=FG_COLOR_NUMBERS )
+ elif [[ $terminfo[colors] == 256 ]]; then
+ color_list=(
+ 23 24 25 26 27 28 29
+ 30 31 32 33 34 35 36 37 38 39
+ 40 41 42 43 44 45 46 47 48 49
+ 50 51
+ 61 62 63 64 65 66 67 68 69
+ 70 71 72 73 74 75 76 77 78 79
+ 80 81 82 83 84 85 86 87
+ 94 95 96 97 98 99
+ 100 101 102 103 104 105 106 107 108 109
+ 110 111 112 113 114 115 116 117 118 119
+ 120 121 122 123 126 127 128 129
+ 130 131 132 133 134 135 136 137 138 139
+ 140 141 142 143 144 145 146 147 148 149
+ 150 151 152 153 154 155 156 157 158 159
+ 160 161 162 163 164 165 166 167 168 169
+ 170 171 172 173 174 175 176 177 178 179
+ 180 181 182 183 184 185 186 187 188 189
+ 190 191 192 193 194 195 196 197 198 199
+ 200 201
+ )
+ else
+ color_list=( 1 2 3 5 6 7 9 10 11 13 14 15 )
+ fi
+ printf '%%F{%d}' $color_list[$h%$#color_list+1]
+}
+
+(){ # prompt
+ local prompt_char prompt_color_host prompt_color_jobs prompt_color_errno prompt_color_dir prompt_color_user prompt_base
+
+ if [[ ${LC_ALL:-${LC_MESSAGES:-$LANG}} == *.UTF-8 ]]; then
+ if (($UID)); then
+ prompt_char='â–·'
+ else
+ prompt_char='â–¶'
+ fi
+ else
+ if (($UID)); then
+ prompt_char='%%'
+ else
+ prompt_char='#'
+ fi
+ fi
+
+ prompt_color_host="%b%F{green}"
+ prompt_color_jobs="%b%F{cyan}"
+ prompt_color_errno="%B%F{yellow}"
+ prompt_color_dir="%B%F{yellow}"
+
+ if [[ $terminfo[colors] == 256 ]]; then
+ autoload string_hash_color
+ prompt_color_host="%b$(prompt_hash_color_zshrc $HOST)"
+ prompt_color_errno="%b%F{214}"
+ prompt_color_dir="%b%F{214}"
+ fi
+
+ prompt_color_user=$prompt_color_host
+
+ if [[ $UID -eq 0 ]]; then
+ prompt_color_dir="%B%F{red}"
+ fi
+
+ prompt_base="${prompt_color_user}%n${prompt_color_host}@%m%k ${prompt_color_dir}%1~"
+ PS1="%(?..${prompt_color_errno}<%?>)%(1j.${prompt_color_jobs}{%j}.)$prompt_base ${prompt_char}%b%f%k "
+ PS2="$prompt_base %_> %b%f%k"
+ PS3="$prompt_base ?# %b%f%k"
+}
+unset -f prompt_hash_color_zshrc
+
+autoload -Uz compinit
+compinit
diff --git a/config/etc/update-extlinux.conf b/config/etc/update-extlinux.conf
@@ -1,74 +0,0 @@
-# configuration for extlinux config builder
-
-# overwrite
-# Overwrite current /boot/extlinux.conf. If this is not '1' we will only
-# write to /boot/extlinux.conf.new
-overwrite=0
-
-# vesa_menu
-# use fancy vesa menu (vesamenu.c32) menus, won't work with serial
-vesa_menu=0
-
-# default_kernel_opts
-# default kernel options
-default_kernel_opts=init=/current/init/bin/init rootflags=noatime
-
-# modules
-# modules which should be loaded before pivot_root
-modules=sd-mod,usb-storage,ext4,xfs,lvm
-
-# root
-# root device - if not specified, will be guessed using
-# blkid -o export /dev/root
-root=/dev/mapper/vg-spark_root
-
-# verbose
-# if set to non-zero, update-extlinux will be a lot more verbose.
-verbose=1
-
-# hidden
-# if set to non-zero, the boot menu will be hidden by default.
-hidden=0
-
-# timeout
-# number of seconds to wait before booting default
-timeout=3
-
-# default
-# default kernel to boot
-default=virt
-
-# serial_port
-# serial port number - if not specified, serial console will be disabled
-serial_port=
-
-# serial_baud
-# the baudrate for the serial port. Will use 115200 if unset
-serial_baud=115200
-
-# xen_opts
-# options to hand to xen hypervisor, useful ones are:
-# dom0_mem=384M (give domain-0 environment 384M ram)
-xen_opts=dom0_mem=384M
-
-# if you copy /usr/share/syslinux/reboot.c32 to /boot/, a menu entry
-# will be auto-generated for it
-
-# if you copy hdt.c32, libgpl.c32, and libmenu.c32 from /usr/share/syslinux/
-# to /boot/, a menu entry will be auto-generated for HDT
-
-# if you download and install /boot/memtest, then if HDT is present it
-# will use it, else a separate menu entry will be auto-generated for
-# memtest
-
-# optional password
-# you can generate a SHA512 password using: mkpasswd
-#
-# if you assign a password, you should make this file world-unreadable
-#
-# if a password is assigned, the menu entries can't be edited at boot
-# time, and HDT if present is password-protected
-#
-# you can also include "MENU PASSWD" in any custom entries you have in
-# /etc/update-extlinux.d/
-password=''
diff --git a/config/etc/zsh/zshrc.d/90_warn_deploy_ssh_key.zsh b/config/etc/zsh/zshrc.d/90_warn_deploy_ssh_key.zsh
@@ -1,9 +0,0 @@
-[[ $UID == 0 && -o login ]] && () {
- setopt local_options extended_glob
- local files warn='%K{yellow}%F{black}WARNING%k%f'
- local -a pubkeys=( /etc/ssh/ssh_host_*_key.pub(N) )
- (($#pubkeys)) || return 0
- files=$(grep -l change_me@deploy $pubkeys) || return 0
- printf >&2 "%s\n" "${(%)warn} There are shared deployment ssh host keys in $files; please remove them and create fresh set of keys."
-}
-# vim: set ft=zsh ts=4:
diff --git a/config/etc/hostname b/config/hostname
diff --git a/install b/install
@@ -1,52 +0,0 @@
-#!/bin/zsh
-setopt no_unset warn_create_global extended_glob
-zmodload -F zsh/stat b:zstat || exit $?
-zmodload -m -F zsh/files b:zf_\* || exit $?
-#zmodload zsh/zutil || exit $? # for zparseopts
-#zmodload zsh/datetime || exit $? # for $EPOCHREALTIME
-
-die_ret() {
- local ret
- ret=$1
- shift
- printf >&2 '%s\n' "$@"
- exit $ret
-}
-die() {
- die_ret 1 "$@"
-}
-die100() { # 100: wrong usage
- die_ret 100 "$@"
-}
-die111() { # 111: system call failed
- die_ret 111 "$@"
-}
-
-install_to_all() {
- local orig_cwd=$PWD
- cd $ALL_DIR || exit $?
- mkdir s6-rc-source || exit $?
- ./command/fsapply ./s6-rc-source $PWD/conf/s6-rc.fileset || exit $?
- [[ -f ./s6-rc-source/ok-all/type ]] || die111 \
- "Failed to generate s6-rc source directory"
- ./command/s6-rc-compile ./s6-rc-db ./s6-rc-source || exit $?
- ./init-maker/install $PWD || exit $?
- local cmd
- for cmd in init/bin/*; do
- s6-ln -s ../$cmd ./command/$cmd:t || exit $?
- done
- cat >motd <<EOF
-Welcome to $(<conf/static/etc/hostname)!
-This system has configuration managed in $orig_cwd (last change on $(GIT_DIR=$orig_cwd/.git git show -s --pretty='format:%ai by %an'))
-EOF
-}
-typeset -f -t install_to_all
-
-typeset -g ALL_DIR=$0:h:h
-if [[ $ALL_DIR == /versions/all.* ]]; then
- path=( $ALL_DIR/command "$path[@]" )
- #fpath=( $ALL_DIR/zsh-functions "$fpath[@]" )
- install_to_all || exit $?
-else
- die100 "Fatal: ${(qqq)0}: This script needs to be run from versioned directory as a part of installation procedure."
-fi
diff --git a/parse_fs.include.awk b/parse_fs.include.awk
@@ -12,12 +12,12 @@ BEGIN{
fail = 0
}
-function q(s) { # quote string for execline
- gsub(/\\/, "\\\\", s)
- gsub(/\n/, "\\n", s)
- gsub(/\"/, "\\\"", s)
- return "\"" s "\""
-}
+#function q(s) { # quote string for execline
+# gsub(/\\/, "\\\\", s)
+# gsub(/\n/, "\\n", s)
+# gsub(/\"/, "\\\"", s)
+# return "\"" s "\""
+#}
function fatal_mtp(s){
print mountpoints[mtp] ": Error: " s " [" mtp "]" >"/dev/stderr"
@@ -71,6 +71,17 @@ function get(name) {
return mtp_get(mtp, name)
}
+# execline quoted get function
+function qget(name) {
+ if(name == "") {
+ return q(mtp)
+ }
+ if(name == "remount_options") {
+ return get("options") == "defaults" ? "remount" : q("remount," get("options"))
+ }
+ return q(get(name))
+}
+
function set(name, value) {
if(name in param_validator) {
if(value !~ ("^" param_validator[name] "$")) {
@@ -203,13 +214,6 @@ function process_record( name, i, mtp2) {
}
}
-
- q_file = q(mtp)
- q_spec = q(get("source"))
- q_vfstype = q(get("type"))
- q_remount_options = get("options") == "defaults" ? "remount" : q("remount," get("options"))
- q_options = q(get("options"))
-
write_oneshot()
if((mtp,"bundles") in params) {
diff --git a/postinstall b/postinstall
@@ -1,15 +1,18 @@
#!/bin/zsh
setopt no_unset warn_create_global extended_glob
-zmodload -F zsh/stat b:zstat || exit $?
-zmodload -m -F zsh/files b:zf_\* || exit $?
-#zmodload zsh/zutil || exit $? # for zparseopts
-zmodload zsh/datetime || exit $? # for $EPOCHREALTIME
+
+# error handling
+typeset -ga revert
die_ret() {
- local ret
+ local ret step
ret=$1
shift
printf >&2 '%s\n' "$@"
+ for step in $revert; do
+ printf >&2 '* Running revert step: %s\n' $step
+ $step
+ done
exit $ret
}
die() {
@@ -21,88 +24,30 @@ die100() { # 100: wrong usage
die111() { # 111: system call failed
die_ret 111 "$@"
}
-
-ensure_symlink() {
- local target
- if ! [[ -e $1 ]]; then
- s6-ln -s $2 $1 || return $?
- fi
-
- if [[ $2 == /* ]]; then
- target=$2:A
- else
- target=$1:h/$2
- target=$target:A
- fi
-
- if ! [[ -h $1 ]]; then
- echo >&2 "Error: not a symlink: ${(qqq)1}"
- return 1
- elif [[ $1:A != $target ]]; then
- echo >&2 "Error: ${(qqq)1} points to ${(qqq)1:A} instead of ${(qqq)target}"
- return 1
- fi
+-() {
+ "$@" || die_ret $? "Command failed: $*"
}
-symlink_static_file() {
- [[ $1 == /* ]] || die "symlink_static_file: requires absolute path"
- local relative_base up rel1 rel2
- rel1=./conf/static$1
- [[ -f $rel1 ]] || die111 "Cannot symlink: file does not exist: ${(qqq)rel1}"
- relative_base=$1:h
- until [[ ${${:-$relative_base/$up}:P} == / ]] ; do
- up=../$up
- done
- rel2=$relative_base/$up/current/conf/static$1
- [[ $rel1:P == $rel2:P ]] || die "Directory mismatch"
-
- if [[ ! -L $1 && -f $1 ]]; then
- mv $1 $1.orig.$EPOCHSECONDS || exit $?
- fi
- ensure_symlink $1 ${up}current/conf/static$1 || return $?
-}
+# modules
+- zmodload -F zsh/stat b:zstat
+- zmodload -m -F zsh/files b:zf_\*
+- zmodload zsh/datetime # for $EPOCHREALTIME
+# functions
link_changed() {
- local pre post
- if (($+preinstall_current)); then
- pre=${${:-$preinstall_current_p/$1}:P}
- else
- pre=
- fi
- post=${${:-/current/$1}:P}
+ local prev cur
+ prev=${${:-$prev_version/$1}:P}
+ post=${${:-$current/$1}:P}
[[ "$pre" != "$post" ]]
}
-setup_static_symlinks() {
- symlink_static_file /etc/hostname || return $?
- symlink_static_file /etc/fstab || return $?
- symlink_static_file /etc/profile.d/slashcommand.sh || return $?
- symlink_static_file /etc/mkinitfs/mkinitfs.conf || return $?
- symlink_static_file /etc/ssh/sshd_config || return $?
- symlink_static_file /etc/update-extlinux.conf || return $?
- symlink_static_file /etc/zsh/zshrc.d/90_warn_deploy_ssh_key.zsh || return $?
-
- # Not static, generated in ./install
- if [[ ! -L /etc/motd && -f /etc/motd ]]; then
- mv /etc/motd /etc/motd.orig.$EPOCHSECONDS || exit $?
- fi
- ensure_symlink /etc/motd ../current/motd || return $?
-}
-
-setup_skel() {
- ./command/link-skel || return $?
-}
-
-setup_storage() {
-}
-
setup_rc() {
local diff_ret
# Check if s6-rc definition changed
- diff --recursive --unified $preinstall_current_p/s6-rc-source ./s6-rc-source; diff_ret=$?
+ diff --recursive --unified $prev_version/config/s6-rc-source ./config/s6-rc-source; diff_ret=$?
(( $diff_ret == 0 || $diff_ret == 1 )) || \
die111 "Could not diff s6-rc-source directories; exitcode $diff_ret"
- if link_changed package; then
+ if link_changed command/s6-rc; then
if (( $diff_ret == 1 )); then
# Both s6-rc DB source and installed software changed.
# s6-rc-format-upgrade to tmpdir, then s6-rc-update
@@ -111,7 +56,7 @@ setup_rc() {
s6-rc-compile $tmp_db $preinstall_current_p/s6-rc-source || return $?
s6-rc-format-upgrade -v2 $tmp_db || return $?
s6-rc-update -v2 /current/s6-rc-db/ || return $?
- rm -r $tmp_db || return $?
+ zf_rm -r $tmp_db || return $?
else
# Installed software changed but s6-rc DB source is the same.
# s6-rc-format-upgrade to new compiled DB directly
@@ -122,6 +67,8 @@ setup_rc() {
# s6-rc-update to new compiled DB directly
s6-rc-update -v2 /current/s6-rc-db/ || return $?
fi
+ s6-rc -v2 -u -t 30000 change ok-all
+ true
}
setup_containers() {
@@ -154,43 +101,69 @@ setup_fileset() {
$rsync --delete-excluded --log-file $SETUP_DIR/rsync.log.get / $SETUP_DIR/files.pre/ || return $?
cp -a --reflink=auto $SETUP_DIR/files.pre $SETUP_DIR/files.post || return $?
./command/fsapply $SETUP_DIR/files.post $PWD/conf/postinstall.fileset || exit $?
- mkdir $SETUP_DIR/files.bak || return $?
+ zf_mkdir $SETUP_DIR/files.bak || return $?
+ revert+=( revert_fileset )
$rsync --log-file $SETUP_DIR/rsync.log.put $SETUP_DIR/files.post/ / --backup --backup-dir=$SETUP_DIR/files.bak || return $?
}
-postinstall() {
- typeset -g SETUP_DIR=/versions/postinstall/$EPOCHSECONDS.$ALL_DIR:t
- cd $ALL_DIR || exit $?
- mkdir -p $SETUP_DIR
-
- ensure_symlink /command current/command || return $?
+revert_fileset() {
+ $rsync --log-file $SETUP_DIR/rsync.log.revert $SETUP_DIR/files.bak/ /
+}
- setup_static_symlinks || return $?
+setup_containers() {
+ execlineb -P ./conf/s6-rc-source/containers/up || return $?
+}
- if [[ -d /run/s6-rc/ ]]; then
- # TODO: determine mountpoint changes
- setup_storage || return $?
- mount -a || return $?
+# main function
+postinstall() {
+ - cd $current
+ typeset -g SETUP_DIR
+ if (( $# )); then
+ SETUP_DIR=$versions/postinstall/$EPOCHSECONDS.$this_version
+ else
+ SETUP_DIR=$versions/postinstall/$EPOCHSECONDS.$this_version..$prev_version:t
fi
+ - zf_mkdir -p $SETUP_DIR
- setup_fileset || return $?
+ - setup_fileset
- if [[ -d /run/s6-rc/ ]]; then
- setup_rc || return $?
+ if (( $# )); then
+ - setup_rc
+ - setup_containers
fi
-
- setup_skel || return $?
- setup_containers || return $?
-
exit 0
}
typeset -ft postinstall
-typeset -g ALL_DIR=$0:h:h
-if [[ $ALL_DIR != /versions/all.* ]]; then
- die100 "Fatal: ${(qqq)0}: This script needs to be run from versioned directory as a part of installation procedure."
-fi
+typeset -g versions current this_version
+current=/run/current # @@current@@
+versions=/versions # @@versions@@
+this_version=$0:A:h:h:t
+
+# arguments and validation
+() {
+ local linked_path=$current/command/install-as-current-environment.postinstall
+ if (( $# > 1 )); then
+ die100 "Fatal: ${(qqq)0}: Too many arguments"
+ fi
+ if [[ $0:A != $versions/* ]]; then
+ die100 "Fatal: ${(qqq)0}: This script expects to be installed under ${(qqq)versions}."
+ fi
+ if [[ $0:A != $linked_path ]]; then
+ die111 "Fatal: ${(qqq)0}: This script needs to be run after installing the given environment as ${(qqq)current}."
+ fi
+ if (( $# )); then
+ if [[ $1:P != $versions/* ]]; then
+ die111 "Fatal: ${(qqq)0}: Old version doesn't seem to be inside ${(qqq)versions}: ${(qqq)1}."
+ fi
+ typeset -g prev_version=$1:P
+ if ! [[ $prev_version:t == env.* ]]; then
+ die111 "Unexpected previous environment name: ${(qqq)prev_version}"
+ fi
+ fi
+ if ! [[ $this_version == env.* ]]; then
+ die111 "Unexpected current environment name: ${(qqq)this_version}"
+ fi
+}
-path=( $ALL_DIR/command "$path[@]" )
-#fpath=( $ALL_DIR/zsh-functions "$fpath[@]" )
-postinstall || exit $?
+- postinstall "$@"
diff --git a/postinstall.aat b/postinstall.aat
@@ -61,34 +61,6 @@
|}
|### postinstall.fileset ###
|END{
-|#/boot +
-|#/boot/extlinux.conf +
-|#CN # Managed by /usr/src/core-system
-|# DEFAULT menu.c32
-|# PROMPT 0
-|# MENU TITLE Alpine/Linux Boot Menu
-|# #MENU HIDDEN
-|# #MENU AUTOBOOT Alpine will be booted automatically in # seconds.
-|# TIMEOUT 30
-|#
-|# LABEL virt
-|# MENU LABEL Current linux-virt
-|# LINUX vmlinuz-virt
-|# INITRD initramfs-virt
-|# APPEND root=/dev/mapper/vg-spark_root init=/current/init/bin/init modules=sd-mod,usb-storage,ext4,xfs,lvm rootflags=noatime
-|#
-|# LABEL virt-previous
-|# MENU LABEL Previous linux-virt
-|# LINUX vmlinuz-virt
-|# INITRD initramfs-virt
-|# APPEND root=/dev/mapper/vg-spark_root init=/previous/init/bin/init modules=sd-mod,usb-storage,ext4,xfs,lvm rootflags=noatime
-|#|split("libutil.c32 libcom32.c32 mboot.c32 menu.c32 vesamenu.c32", extlinux_modules, " ")
-|#|for(n in extlinux_modules) {
-|#| mod = extlinux_modules[n]
-|#/boot/{{mod}} +
-|#? cmp "$fname" '/usr/share/syslinux/{{mod}}'
-|#! cp -va '/usr/share/syslinux/{{mod}}' "$fname"
-|#|}
/etc +
/etc/group +
@@ -113,4 +85,11 @@
|passwd_user("ccx:x:1000:1000:Jan Pobrislo:/home/ccx:/bin/zsh")
|#shadow_user("ccx:*:10000::::::")
+/etc/skel +
+/etc/skel/.config + d m750
+/etc/skel/.cache + d m750
+/etc/skel/.local + d m755
+/etc/skel/.local/state + d m750
+/etc/skel/.local/share + d m755
+/etc/skel/.local/share/zsh + d m750
|}
diff --git a/postinstall.fileset b/postinstall.fileset
@@ -1,164 +0,0 @@
-
-/etc +
-/etc/group +
-? grep -qEe '^sshd:x:22:$' "$fname"
-! if grep -qEe '^[^:]*:[^:]*:22:' "$fname"; then
- sed -ire 's|^[^:]*:[^:]*:22:|sshd:x:22:|' "$fname"
- else
- printf '%s\n' 'sshd:x:22:' >> "$fname"
- fi
-? grep -qEe '^dhcpcd:x:546:$' "$fname"
-! if grep -qEe '^[^:]*:[^:]*:546:' "$fname"; then
- sed -ire 's|^[^:]*:[^:]*:546:|dhcpcd:x:546:|' "$fname"
- else
- printf '%s\n' 'dhcpcd:x:546:' >> "$fname"
- fi
-? grep -qEe '^ccx:x:1000:$' "$fname"
-! if grep -qEe '^[^:]*:[^:]*:1000:' "$fname"; then
- sed -ire 's|^[^:]*:[^:]*:1000:|ccx:x:1000:|' "$fname"
- else
- printf '%s\n' 'ccx:x:1000:' >> "$fname"
- fi
-# Groups for /dev permissions (mdevd.conf): disk, input, uucp
-? grep -qEe '^disk:x:6:root,adm$' "$fname"
-! if grep -qEe '^[^:]*:[^:]*:6:' "$fname"; then
- sed -ire 's|^[^:]*:[^:]*:6:|disk:x:6:root,adm|' "$fname"
- else
- printf '%s\n' 'disk:x:6:root,adm' >> "$fname"
- fi
-? grep -qEe '^input:x:966:xorg$' "$fname"
-! if grep -qEe '^[^:]*:[^:]*:966:' "$fname"; then
- sed -ire 's|^[^:]*:[^:]*:966:|input:x:966:xorg|' "$fname"
- else
- printf '%s\n' 'input:x:966:xorg' >> "$fname"
- fi
-? grep -qEe '^uucp:x:14:ccx$' "$fname"
-! if grep -qEe '^[^:]*:[^:]*:14:' "$fname"; then
- sed -ire 's|^[^:]*:[^:]*:14:|uucp:x:14:ccx|' "$fname"
- else
- printf '%s\n' 'uucp:x:14:ccx' >> "$fname"
- fi
-
-/etc/passwd f +
-?i grep -q '^root:.*:/bin/zsh$'
-!f sed -Ee 's|^(root:.*:)[^:]*$|\1/bin/zsh|'
-
-/etc/passwd f +
-!f awk 'BEGIN { FS=OFS=":"; seen=0; line="sshd:x:22:22:sshd:/dev/null:/sbin/nologin"; split(line, a) }
- { uids[$3] = $0 }
- $1 == a[1] {
- for(n in a) {
- if(a[n] != $n) {
- print "error: differing present and requested lines" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " $0 >>"/dev/stderr"
- exit 1
- }
- }
- seen = 1
- }
- { print $0 }
- END {
- if(seen == 0) {
- if(a[3] in uids) {
- print "error: user record with requested UID already present" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " uids[a[3]] >>"/dev/stderr"
- exit 1
- }
- print line
- }
- }'
-/etc/shadow f +
-!f awk 'BEGIN { FS=OFS=":"; seen=0; line="sshd:!::0:::::"; split(line, a) }
- $1 == a[1] {
- for(n in a) {
- if(a[n] != $n) {
- print "error: differing present and requested lines" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " $0 >>"/dev/stderr"
- exit 1
- }
- }
- seen = 1
- }
- { print $0 }
- END {
- if(seen == 0) {
- print line
- }
- }'
-
-/etc/passwd f +
-!f awk 'BEGIN { FS=OFS=":"; seen=0; line="dhcpcd:x:546:546:sshd:/dev/null:/sbin/nologin"; split(line, a) }
- { uids[$3] = $0 }
- $1 == a[1] {
- for(n in a) {
- if(a[n] != $n) {
- print "error: differing present and requested lines" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " $0 >>"/dev/stderr"
- exit 1
- }
- }
- seen = 1
- }
- { print $0 }
- END {
- if(seen == 0) {
- if(a[3] in uids) {
- print "error: user record with requested UID already present" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " uids[a[3]] >>"/dev/stderr"
- exit 1
- }
- print line
- }
- }'
-/etc/shadow f +
-!f awk 'BEGIN { FS=OFS=":"; seen=0; line="dhcpcd:!::0:::::"; split(line, a) }
- $1 == a[1] {
- for(n in a) {
- if(a[n] != $n) {
- print "error: differing present and requested lines" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " $0 >>"/dev/stderr"
- exit 1
- }
- }
- seen = 1
- }
- { print $0 }
- END {
- if(seen == 0) {
- print line
- }
- }'
-
-/etc/passwd f +
-!f awk 'BEGIN { FS=OFS=":"; seen=0; line="ccx:x:1000:1000:Jan Pobrislo:/home/ccx:/bin/zsh"; split(line, a) }
- { uids[$3] = $0 }
- $1 == a[1] {
- for(n in a) {
- if(a[n] != $n) {
- print "error: differing present and requested lines" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " $0 >>"/dev/stderr"
- exit 1
- }
- }
- seen = 1
- }
- { print $0 }
- END {
- if(seen == 0) {
- if(a[3] in uids) {
- print "error: user record with requested UID already present" >>"/dev/stderr"
- print "requested: " line >>"/dev/stderr"
- print "present: " uids[a[3]] >>"/dev/stderr"
- exit 1
- }
- print line
- }
- }'
-
diff --git a/postinstall.rsfilter b/postinstall.rsfilter
@@ -1,8 +0,0 @@
-+ /etc
-+ /etc/group
-+ /etc/passwd
-+ /etc/passwd
-+ /etc/shadow
-+ /etc/passwd
-+ /etc/shadow
-+ /etc/passwd
diff --git a/rc-builder.include.awk b/rc-builder.include.awk
@@ -150,7 +150,7 @@ function finish(){
}
function finish_el(){
finish()
- print "\t#!/command/execlineb -P"
+ print "\t#!"exec_path("execlineb")" -P"
}
function run_arg(cmd){
assert_service_type("longrun", "run_arg(\"" cmd "\")")
diff --git a/rc-common.aat b/rc-common.aat
@@ -22,20 +22,20 @@
|}
|function runscript_el_cgroup_v2(svc_name) {
/{{svc_name}}/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/{{svc_name}} }
- redirfd -w 1 /run/cgroup/s6-rc/{{svc_name}}/cgroup.procs
- printf "%s" ${SERVICE_PID}
+CN #!{{exec_path("execlineb")}} -P
+ {{qconfig("getpid")}} SERVICE_PID
+ {{qconfig("foreground")}} {
+ {{qconfig("importas")}} -i SERVICE_PID SERVICE_PID
+ {{qconfig("if")}} { {{qconfig("test")}} -d /run/cgroup }
+ {{qconfig("if")}} { {{qconfig("mkdir")}} -p /run/cgroup/s6-rc/{{svc_name}} }
+ {{qconfig("redirfd")}} -w 1 /run/cgroup/s6-rc/{{svc_name}}/cgroup.procs
+ {{qconfig("printf")}} "%s" ${SERVICE_PID}
}
- unexport SERVICE_PID
+ {{qconfig("unexport")}} SERVICE_PID
|}
|function runscript_simple(svc_name, cmd) {
|runscript_el_cgroup_v2(svc_name)
- fdmove -c 2 1
+ {{qconfig("fdmove")}} -c 2 1
{{cmd}}
m755
|}
@@ -43,8 +43,8 @@ m755
| longrun(name "-log", "mount-run-cgroup\nrootfs")
/{{name}}-log/consumer-for cN {{name}} m640
|runscript_el_cgroup_v2(name "-log")
- if { mkdir -p /var/log/{{name}} }
- s6-log -b -- n10 s10240000 t /var/log/{{name}}
+ {{qconfig("if")}} { {{qconfig("mkdir")}} -p /var/log/{{name}} }
+ {{qconfig("s6-log")}} -b -- n10 s10240000 t /var/log/{{name}}
m755
| longrun(name, deps)
/{{name}}/producer-for cN {{name}}-log m640
diff --git a/s6-rc-mount.aat b/s6-rc-mount.aat
@@ -4,17 +4,17 @@
|function write_oneshot() {
|oneshot(svc_name, dependencies())
|if(down_umount()) {
-/{{svc_name}}/down cN s6-umount {{q_file}} m644
+/{{svc_name}}/down cN {{qconfig("s6-umount")}} {{qget()}} m644
|} else if (down_readonly()) {
-/{{svc_name}}/down cN mount -o remount,ro {{q_file}} m644
+/{{svc_name}}/down cN {{qconfig("mount")}} -o remount,ro {{qget()}} m644
|}
/{{svc_name}}/up
CN # mount {{get("source")}} on {{mtp}}
|if(boolean("mkdir")) {
- if { mkdir -p {{q_file}} }
+ {{qconfig("if")}} { {{qconfig("mkdir")}} -p {{qget()}} }
|}
- if -n -t { mount -t {{q_vfstype}} -o {{q_remount_options}} {{q_spec}} {{q_file}} }
- mount -t {{q_vfstype}} -o {{q_options}} {{q_spec}} {{q_file}}
+ {{qconfig("if")}} -n -t { {{qconfig("mount")}} -t {{qget("type")}} -o {{qget("remount_options")}} {{qget("source")}} {{qget()}} }
+ {{qconfig("mount")}} -t {{qget("type")}} -o {{qget("options")}} {{qget("source")}} {{qget()}}
|}
|### include main loop / parsing code ###
@awk parse_fs.include.awk
diff --git a/s6-rc.aat b/s6-rc.aat
@@ -18,9 +18,9 @@
|start_oneshot("loopback")
|enabled_bundle("net-all")
|up()
- if { ip link set lo up }
- if -nt { ip addr add 127.0.0.1/8 dev lo brd + }
- pipeline { ip addr show dev lo } grep -q "inet 127\\.0\\.0\\.1"
+ {{qexec("if")}} { {{qexec("ip")}} link set lo up }
+ {{qexec("if")}} -nt { {{qexec("ip")}} addr add 127.0.0.1/8 dev lo brd + }
+ {{qexec("pipeline")}} { {{qexec("ip")}} ip addr show dev lo } {{qexec("grep")}} -q "inet 127\\.0\\.0\\.1"
|end()
|if(find("static_ip.rows")) {
@@ -29,11 +29,11 @@
|in_bundle("net-" get("i.iface"))
|add_to_bundle("net-all", "net-" get("i.iface"))
|up()
- if { ip link set {<i.iface>} up }
- if -nt { ip addr add {<i.ip>}/{<i.prefix>} dev {<i.iface>} }
- pipeline { ip addr show dev {<i.iface>} } grep -F -q -e "inet {<i.ip>}/{<i.prefix>} "
+ {{qexec("if")}} { {{qexec("ip")}} link set {<i.iface>} up }
+ {{qexec("if")}} -nt { {{qexec("ip")}} addr add {<i.ip>}/{<i.prefix>} dev {<i.iface>} }
+ {{qexec("pipeline")}} { {{qexec("ip")}} ip addr show dev {<i.iface>} } {{qexec("grep")}} -F -q -e "inet {<i.ip>}/{<i.prefix>} "
|down()
- ip addr del {<i.ip>} dev {<i.iface>}
+ {{qexec("ip")}} addr del {<i.ip>} dev {<i.iface>}
|end()
@endfor
|}
@@ -43,11 +43,11 @@
|start_oneshot(with_counter("net-" get("i.iface") "-route"), list_services_with_counter("net-" get("i.iface") "-ip"))
|in_bundle("net-" get("i.iface"))
|up()
- if { ip link set {<i.iface>} up }
- if -nt { ip route add dev {<i.iface>} {<i.spec>} }
- pipeline { ip route show dev {<i.iface>} {<i.spec>} } grep -q .
+ {{qexec("if")}} { {{qexec("ip")}} link set {<i.iface>} up }
+ {{qexec("if")}} -nt { {{qexec("ip")}} route add dev {<i.iface>} {<i.spec>} }
+ {{qexec("pipeline")}} { {{qexec("ip")}} route show dev {<i.iface>} {<i.spec>} } grep -q .
|down()
- ip route del dev {<i.iface>} {<i.spec>}
+ {{qexec("ip")}} route del dev {<i.iface>} {<i.spec>}
|end()
@endfor
|}
@@ -65,13 +65,13 @@
|start_oneshot("hostname")
|in_bundle("ok-all-but-tty")
|up()
- hostname -F /etc/hostname
+ {{qexec("hostname")}} -F {{qconfig("hostname")}}
|end()
|start_oneshot("loadkeys", "kbd_mode")
|enabled_bundle("ok-all-but-tty")
|up()
- loadkeys --unicode /root/keymap
+ {{qexec("cd")}} {{qconfig("config/console_keymap")}} {{qexec("loadkeys")}} --unicode keymap
|end()
|### per-TTY services ###
@@ -80,13 +80,13 @@
|start_longrun("tty" tty, "ok-sysinit")
|in_bundle("gettys")
|run_el()
- foreground { /command/issue-gen }
- env LOGIN_TTY=/dev/tty{{tty}} /sbin/getty -l login-keepenv 38400 tty{{tty}} linux
+ {{qexec("foreground")}} { {{qconfig("issue-gen")}} }
+ {{qconfig("env")}} LOGIN_TTY=/dev/tty{{tty}} {{qconfig("getty")}} -l {{qconfig("login-keepenv")}} 38400 tty{{tty}} linux
|finish_el()
- redirfd -w 1 /dev/tty{{tty}}
- fdmove -c 2 1
- foreground { s6-echo "\nwaiting for session cleanup" }
- flock /run/ttylock/tty{{tty}} true
+ {{qexec("redirfd")}} -w 1 /dev/tty{{tty}}
+ {{qexec("fdmove")}} -c 2 1
+ {{qexec("foreground")}} { {{qexec("s6-echo")}} "\nwaiting for session cleanup" }
+ {{qexec("flock")}} /run/ttylock/tty{{tty}} {{qexec("true")}}
|end()
|}
@@ -114,14 +114,14 @@
|up()
# description="Set the dmesg level for a cleaner boot"
# dmesg_level=1
- dmesg -n1
+ {{qexec("dmesg")}} -n1
|end()
|start_oneshot("modules", "dmesg")
|in_bundle("ok-all-but-tty")
|up()
@for i in modprobe_modules
- foreground { modprobe {<i.module>} }
+ {{qexec("foreground")}} { {{qexec("modprobe")}} {<i.module>} }
@endfor
|end()
@@ -133,7 +133,7 @@
|start_oneshot("mdevd-coldplug", "mount-dev mount-sys modules mdevd")
|up()
- mdevd-coldplug
+ {{qexec("mdevd-coldplug")}}
|end()
|start_oneshot("udev-coldplug", "mount-dev mount-sys modules udev")
@@ -149,8 +149,8 @@
|start_longrun("mdevd", "mount-dev") # TODO add "mount-proc mount-sys", add logger
|notification_fd(3)
|run() # TODO use run_el() or run_arg()
- #!/command/execlineb -P
- mdevd -D 3 -f /current/conf/etc/mdevd.conf
+ #!{{exec_path("execlineb")}} -P
+ {{qexec("mdevd")}} -D 3 -f {{qconfig("mdevd.conf")}}
|end()
|start_longrun("udev", "mount-sys mount-proc mount-dev") # TODO add logger
@@ -169,20 +169,20 @@
|start_oneshot("swapon-vg-swap", "dev-coldplug")
|in_bundle("ok-all-but-tty")
|up()
- swapon /dev/vg/swap
+ {{qexec("swapon")}} /dev/vg/swap
|down()
- swapoff /dev/vg/swap
+ {{qexec("swapoff")}} /dev/vg/swap
|end()
|start_oneshot("mount-tmp-X11", "ok-sysinit")
|in_bundle("ok-mount")
|up()
- if { mkdir -p /tmp/.X11-unix /run/X11 }
- if { chmod 771 /run/X11 }
- if { chown root:xorg /run/X11 }
- mount --bind /run/X11 /tmp/.X11-unix
+ {{qexec("if")}} { {{qexec("mkdir")}} -p /tmp/.X11-unix /run/X11 }
+ {{qexec("if")}} { {{qexec("chmod")}} 771 /run/X11 }
+ {{qexec("if")}} { {{qexec("chown")}} root:xorg /run/X11 }
+ {{qexec("mount")}} --bind /run/X11 /tmp/.X11-unix
|down()
- foreground { umount /tmp/.X11-unix }
+ {{qexec("foreground")}} { {{qexec("umount")}} /tmp/.X11-unix }
|end()
|start_oneshot("openrc", "ok-sysinit ok-mount modules")
@@ -258,9 +258,11 @@
|start_oneshot("containers", "ok-mount")
|enabled_bundle("ok-all-but-tty")
|up()
+ {{qenv("containers")}}
export TERM "linux"
if {
- zsh -lc "quiet=1 confz site_container_services"
+ export quiet 1
+ confz site_container_services
}
s6-svscanctl -a /run/service
|end()
@@ -324,7 +326,8 @@
|if(find("X_servers.rows")) {
/.scripts d m755
/.scripts/X.run
-CN #!/command/execlineb -P
+CN #!{{exec_path("execlineb")}} -P
+ {{qenv("containers")}}
fdmove -c 2 1
s6-envdir env
importas vtN vtN
diff --git a/s6-rc.fileset b/s6-rc.fileset
@@ -1,990 +0,0 @@
-/rootfs d m755
-/rootfs/type cN oneshot m644
-/rootfs/dependencies r
-/rootfs/down cN mount -o remount,ro "/" m644
-/rootfs/up
-CN # mount /dev/mapper/vg-alpine_root on /
- if -n -t { mount -t "xfs" -o "remount,noatime,nosuid" "/dev/mapper/vg-alpine_root" "/" }
- mount -t "xfs" -o "noatime,nosuid" "/dev/mapper/vg-alpine_root" "/"
-/mount-sys d m755
-/mount-sys/type cN oneshot m644
-/mount-sys/dependencies
-C
- rootfs
-
-m644
-/mount-sys/up
-CN # mount sysfs on /sys
- if { mkdir -p "/sys" }
- if -n -t { mount -t "sysfs" -o "remount,rw" "sysfs" "/sys" }
- mount -t "sysfs" -o "rw" "sysfs" "/sys"
-/mount-proc d m755
-/mount-proc/type cN oneshot m644
-/mount-proc/dependencies
-C
- rootfs
-
-m644
-/mount-proc/up
-CN # mount proc on /proc
- if { mkdir -p "/proc" }
- if -n -t { mount -t "proc" -o "remount,rw" "proc" "/proc" }
- mount -t "proc" -o "rw" "proc" "/proc"
-/mount-dev d m755
-/mount-dev/type cN oneshot m644
-/mount-dev/dependencies
-C
- rootfs
-
-m644
-/mount-dev/up
-CN # mount devtmpfs on /dev
- if { mkdir -p "/dev" }
- if -n -t { mount -t "devtmpfs" -o "remount,rw,nosuid" "devtmpfs" "/dev" }
- mount -t "devtmpfs" -o "rw,nosuid" "devtmpfs" "/dev"
-/mount-dev-pts d m755
-/mount-dev-pts/type cN oneshot m644
-/mount-dev-pts/dependencies
-C
- mount-dev
-
-m644
-/mount-dev-pts/up
-CN # mount devpts on /dev/pts
- if { mkdir -p "/dev/pts" }
- if -n -t { mount -t "devpts" -o "remount,rw,relatime,mode=600,ptmxmode=000" "devpts" "/dev/pts" }
- mount -t "devpts" -o "rw,relatime,mode=600,ptmxmode=000" "devpts" "/dev/pts"
-/mount-dev-shm d m755
-/mount-dev-shm/type cN oneshot m644
-/mount-dev-shm/dependencies
-C
- mount-dev
-
-m644
-/mount-dev-shm/up
-CN # mount shm on /dev/shm
- if { mkdir -p "/dev/shm" }
- if -n -t { mount -t "tmpfs" -o "remount,rw,nosuid,nodev,relatime" "shm" "/dev/shm" }
- mount -t "tmpfs" -o "rw,nosuid,nodev,relatime" "shm" "/dev/shm"
-/mount-dev-mqueue d m755
-/mount-dev-mqueue/type cN oneshot m644
-/mount-dev-mqueue/dependencies
-C
- mount-dev
-
-m644
-/mount-dev-mqueue/up
-CN # mount mqueue on /dev/mqueue
- if { mkdir -p "/dev/mqueue" }
- if -n -t { mount -t "mqueue" -o "remount,rw,nosuid,nodev,noexec" "mqueue" "/dev/mqueue" }
- mount -t "mqueue" -o "rw,nosuid,nodev,noexec" "mqueue" "/dev/mqueue"
-/mount-run-cgroup d m755
-/mount-run-cgroup/type cN oneshot m644
-/mount-run-cgroup/dependencies r
-/mount-run-cgroup/down cN s6-umount "/run/cgroup" m644
-/mount-run-cgroup/up
-CN # mount none on /run/cgroup
- if { mkdir -p "/run/cgroup" }
- if -n -t { mount -t "cgroup2" -o "remount,rw" "none" "/run/cgroup" }
- mount -t "cgroup2" -o "rw" "none" "/run/cgroup"
-/mount-boot d m755
-/mount-boot/type cN oneshot m644
-/mount-boot/dependencies
-C
- rootfs
-
-m644
-/mount-boot/down cN s6-umount "/boot" m644
-/mount-boot/up
-CN # mount /dev/sda1 on /boot
- if { mkdir -p "/boot" }
- if -n -t { mount -t "ext4" -o "remount,ro,nosuid" "/dev/sda1" "/boot" }
- mount -t "ext4" -o "ro,nosuid" "/dev/sda1" "/boot"
-/mount-home d m755
-/mount-home/type cN oneshot m644
-/mount-home/dependencies
-C
- rootfs
-
-m644
-/mount-home/down cN s6-umount "/home" m644
-/mount-home/up
-CN # mount /dev/mapper/vg-home on /home
- if { mkdir -p "/home" }
- if -n -t { mount -t "xfs" -o "remount,noatime,nosuid" "/dev/mapper/vg-home" "/home" }
- mount -t "xfs" -o "noatime,nosuid" "/dev/mapper/vg-home" "/home"
-/mount-mnt-sd d m755
-/mount-mnt-sd/type cN oneshot m644
-/mount-mnt-sd/dependencies
-C
- rootfs
-
-m644
-/mount-mnt-sd/down cN s6-umount "/mnt/sd" m644
-/mount-mnt-sd/up
-CN # mount /dev/mmcblk0p1 on /mnt/sd
- if { mkdir -p "/mnt/sd" }
- if -n -t { mount -t "f2fs" -o "remount,ro,nosuid,nodev" "/dev/mmcblk0p1" "/mnt/sd" }
- mount -t "f2fs" -o "ro,nosuid,nodev" "/dev/mmcblk0p1" "/mnt/sd"
-/mount-mnt-volumes-containers d m755
-/mount-mnt-volumes-containers/type cN oneshot m644
-/mount-mnt-volumes-containers/dependencies
-C
- rootfs
-
-m644
-/mount-mnt-volumes-containers/down cN s6-umount "/mnt/volumes/containers" m644
-/mount-mnt-volumes-containers/up
-CN # mount /dev/mapper/vg-containers on /mnt/volumes/containers
- if { mkdir -p "/mnt/volumes/containers" }
- if -n -t { mount -t "xfs" -o "remount,nosuid,noatime" "/dev/mapper/vg-containers" "/mnt/volumes/containers" }
- mount -t "xfs" -o "nosuid,noatime" "/dev/mapper/vg-containers" "/mnt/volumes/containers"
-/mount-mnt-volumes-containers-user d m755
-/mount-mnt-volumes-containers-user/type cN oneshot m644
-/mount-mnt-volumes-containers-user/dependencies
-C
- mount-mnt-volumes-containers
-
-m644
-/mount-mnt-volumes-containers-user/down cN s6-umount "/mnt/volumes/containers/user" m644
-/mount-mnt-volumes-containers-user/up
-CN # mount /dev/mapper/vg-containers_user on /mnt/volumes/containers/user
- if { mkdir -p "/mnt/volumes/containers/user" }
- if -n -t { mount -t "xfs" -o "remount,nosuid,noatime" "/dev/mapper/vg-containers_user" "/mnt/volumes/containers/user" }
- mount -t "xfs" -o "nosuid,noatime" "/dev/mapper/vg-containers_user" "/mnt/volumes/containers/user"
-/mount-sysinit d m755
-/mount-sysinit/type cN bundle m644
-/mount-sysinit/contents
-C mount-sys
- mount-proc
- mount-dev
- mount-dev-pts
- mount-dev-shm
- mount-dev-mqueue
- mount-run-cgroup
-m644
-
-/ok-localmount d m755
-/ok-localmount/type cN bundle m644
-/ok-localmount/contents
-C rootfs
- mount-boot
- mount-home
- mount-mnt-sd
- mount-mnt-volumes-containers
- mount-mnt-volumes-containers-user
-m644
-
-/ d m755
-
-
-
-
-
-
-
-/loopback d m755
-/loopback/type cN oneshot m644
-/loopback/dependencies r
-/loopback/up
-CN if { ip link set lo up }
- if -nt { ip addr add 127.0.0.1/8 dev lo brd + }
- pipeline { ip addr show dev lo } grep -q "inet 127\\.0\\.0\\.1"
-m644
-
-
-
-/dhcpcd-log d m755
-/dhcpcd-log/type cN longrun m644
-/dhcpcd-log/dependencies
-C mount-run-cgroup
- rootfs
-m644
-/dhcpcd-log/consumer-for cN dhcpcd m640
-/dhcpcd-log/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/dhcpcd-log }
- redirfd -w 1 /run/cgroup/s6-rc/dhcpcd-log/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /var/log/dhcpcd }
- s6-log -b -- n10 s10240000 t /var/log/dhcpcd
-m755
-/dhcpcd d m755
-/dhcpcd/type cN longrun m644
-/dhcpcd/dependencies
-C modules
- ok-mount
- ok-sysinit
-m644
-/dhcpcd/producer-for cN dhcpcd-log m640
-/dhcpcd/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/dhcpcd }
- redirfd -w 1 /run/cgroup/s6-rc/dhcpcd/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- fdmove -c 2 1
- dhcpcd --nobackground
-m755
-
-/unbound-log d m755
-/unbound-log/type cN longrun m644
-/unbound-log/dependencies
-C mount-run-cgroup
- rootfs
-m644
-/unbound-log/consumer-for cN unbound m640
-/unbound-log/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/unbound-log }
- redirfd -w 1 /run/cgroup/s6-rc/unbound-log/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /var/log/unbound }
- s6-log -b -- n10 s10240000 t /var/log/unbound
-m755
-/unbound d m755
-/unbound/type cN longrun m644
-/unbound/dependencies
-C loopback
- ok-mount
- ok-sysinit
-m644
-/unbound/producer-for cN unbound-log m640
-/unbound/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/unbound }
- redirfd -w 1 /run/cgroup/s6-rc/unbound/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- fdmove -c 2 1
- unbound -ddp
-m755
-
-/hostname d m755
-/hostname/type cN oneshot m644
-/hostname/dependencies r
-/hostname/up
-CN hostname -F /etc/hostname
-m644
-
-/loadkeys d m755
-/loadkeys/type cN oneshot m644
-/loadkeys/dependencies
-C kbd_mode
-m644
-/loadkeys/up
-CN loadkeys --unicode /root/keymap
-m644
-
-
-/tty1 d m755
-/tty1/type cN longrun m644
-/tty1/dependencies
-C ok-sysinit
-m644
-/tty1/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/tty1 }
- redirfd -w 1 /run/cgroup/s6-rc/tty1/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- foreground { /command/issue-gen }
- env LOGIN_TTY=/dev/tty1 /sbin/getty -l login-keepenv 38400 tty1 linux
-m755
-/tty1/finish
-CN #!/command/execlineb -P
- redirfd -w 1 /dev/tty1
- fdmove -c 2 1
- foreground { s6-echo "\nwaiting for session cleanup" }
- flock /run/ttylock/tty1 true
-m755
-/tty2 d m755
-/tty2/type cN longrun m644
-/tty2/dependencies
-C ok-sysinit
-m644
-/tty2/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/tty2 }
- redirfd -w 1 /run/cgroup/s6-rc/tty2/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- foreground { /command/issue-gen }
- env LOGIN_TTY=/dev/tty2 /sbin/getty -l login-keepenv 38400 tty2 linux
-m755
-/tty2/finish
-CN #!/command/execlineb -P
- redirfd -w 1 /dev/tty2
- fdmove -c 2 1
- foreground { s6-echo "\nwaiting for session cleanup" }
- flock /run/ttylock/tty2 true
-m755
-/tty3 d m755
-/tty3/type cN longrun m644
-/tty3/dependencies
-C ok-sysinit
-m644
-/tty3/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/tty3 }
- redirfd -w 1 /run/cgroup/s6-rc/tty3/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- foreground { /command/issue-gen }
- env LOGIN_TTY=/dev/tty3 /sbin/getty -l login-keepenv 38400 tty3 linux
-m755
-/tty3/finish
-CN #!/command/execlineb -P
- redirfd -w 1 /dev/tty3
- fdmove -c 2 1
- foreground { s6-echo "\nwaiting for session cleanup" }
- flock /run/ttylock/tty3 true
-m755
-/tty4 d m755
-/tty4/type cN longrun m644
-/tty4/dependencies
-C ok-sysinit
-m644
-/tty4/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/tty4 }
- redirfd -w 1 /run/cgroup/s6-rc/tty4/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- foreground { /command/issue-gen }
- env LOGIN_TTY=/dev/tty4 /sbin/getty -l login-keepenv 38400 tty4 linux
-m755
-/tty4/finish
-CN #!/command/execlineb -P
- redirfd -w 1 /dev/tty4
- fdmove -c 2 1
- foreground { s6-echo "\nwaiting for session cleanup" }
- flock /run/ttylock/tty4 true
-m755
-
-/kbd_mode-tty1 d m755
-/kbd_mode-tty1/type cN oneshot m644
-/kbd_mode-tty1/dependencies r
-/kbd_mode-tty1/up
-CN kbd_mode -u -C /dev/tty1
-m644
-/kbd_mode-tty2 d m755
-/kbd_mode-tty2/type cN oneshot m644
-/kbd_mode-tty2/dependencies r
-/kbd_mode-tty2/up
-CN kbd_mode -u -C /dev/tty2
-m644
-/kbd_mode-tty3 d m755
-/kbd_mode-tty3/type cN oneshot m644
-/kbd_mode-tty3/dependencies r
-/kbd_mode-tty3/up
-CN kbd_mode -u -C /dev/tty3
-m644
-/kbd_mode-tty4 d m755
-/kbd_mode-tty4/type cN oneshot m644
-/kbd_mode-tty4/dependencies r
-/kbd_mode-tty4/up
-CN kbd_mode -u -C /dev/tty4
-m644
-
-/setfont-tty1 d m755
-/setfont-tty1/type cN oneshot m644
-/setfont-tty1/dependencies r
-/setfont-tty1/up
-CN redirfd -r 0 /dev/tty1 setfont ter-v14n
-m644
-/setfont-tty2 d m755
-/setfont-tty2/type cN oneshot m644
-/setfont-tty2/dependencies r
-/setfont-tty2/up
-CN redirfd -r 0 /dev/tty2 setfont ter-v14n
-m644
-/setfont-tty3 d m755
-/setfont-tty3/type cN oneshot m644
-/setfont-tty3/dependencies r
-/setfont-tty3/up
-CN redirfd -r 0 /dev/tty3 setfont ter-v14n
-m644
-/setfont-tty4 d m755
-/setfont-tty4/type cN oneshot m644
-/setfont-tty4/dependencies r
-/setfont-tty4/up
-CN redirfd -r 0 /dev/tty4 setfont ter-v14n
-m644
-
-/dmesg d m755
-/dmesg/type cN oneshot m644
-/dmesg/dependencies r
-/dmesg/up
-CN # description="Set the dmesg level for a cleaner boot"
- # dmesg_level=1
- dmesg -n1
-m644
-
-/modules d m755
-/modules/type cN oneshot m644
-/modules/dependencies
-C dmesg
-m644
-/modules/up
-CN foreground { modprobe mt7921e }
- foreground { modprobe usb_storage }
- foreground { modprobe xhci_pci }
- foreground { modprobe kvm-amd }
- foreground { modprobe ccp }
- foreground { modprobe snd-hda-intel }
- foreground { modprobe snd_pci_acp3x }
- foreground { modprobe r8153_ecm }
-m644
-
-/cgroups d m755
-/cgroups/type cN oneshot m644
-/cgroups/dependencies
-C mount-run-cgroup
-m644
-/cgroups/up
-CN cgconfigparser -l /current/conf/etc/cgconfig.conf
-m644
-
-/mdevd-coldplug d m755
-/mdevd-coldplug/type cN oneshot m644
-/mdevd-coldplug/dependencies
-C mount-dev
- mount-sys
- modules
- mdevd
-m644
-/mdevd-coldplug/up
-CN mdevd-coldplug
-m644
-
-/udev-coldplug d m755
-/udev-coldplug/type cN oneshot m644
-/udev-coldplug/dependencies
-C mount-dev
- mount-sys
- modules
- udev
-m644
-/udev-coldplug/up
-CN udevadm settle
-m644
-
-/dev-coldplug d m755
-/dev-coldplug/type cN bundle m644
-/dev-coldplug/contents
-C mdevd-coldplug
-m644
-
-/mdevd d m755
-/mdevd/type cN longrun m644
-/mdevd/dependencies
-C mount-dev
-m644
-/mdevd/notification-fd cN 3 m644
-/mdevd/run
-CN #!/command/execlineb -P
- mdevd -D 3 -f /current/conf/etc/mdevd.conf
-m755
-
-/udev d m755
-/udev/type cN longrun m644
-/udev/dependencies
-C mount-sys
- mount-proc
- mount-dev
-m644
-/udev/notification-fd cN 3 m644
-/udev/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/udev }
- redirfd -w 1 /run/cgroup/s6-rc/udev/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- background {
- sh -xc "until /sbin/udevadm settle --timeout=120; do sleep 0.5; done; echo >&3 settled"
- #foreground { loopwhilex -x 0 if -nt { /sbin/udevadm settle --timeout=120 } foreground { sleep 0.1 } exit 1 }
- #fdmove -c 3 1
- #echo
- }
- fdclose 3
- /sbin/udevd
-m755
-
-/swapon-vg-swap d m755
-/swapon-vg-swap/type cN oneshot m644
-/swapon-vg-swap/dependencies
-C dev-coldplug
-m644
-/swapon-vg-swap/up
-CN swapon /dev/vg/swap
-m644
-/swapon-vg-swap/down
-CN swapoff /dev/vg/swap
-m644
-
-/mount-tmp-X11 d m755
-/mount-tmp-X11/type cN oneshot m644
-/mount-tmp-X11/dependencies
-C ok-sysinit
-m644
-/mount-tmp-X11/up
-CN if { mkdir -p /tmp/.X11-unix /run/X11 }
- if { chmod 771 /run/X11 }
- if { chown root:xorg /run/X11 }
- mount --bind /run/X11 /tmp/.X11-unix
-m644
-/mount-tmp-X11/down
-CN foreground { umount /tmp/.X11-unix }
-m644
-
-/openrc d m755
-/openrc/type cN oneshot m644
-/openrc/dependencies
-C ok-sysinit
- ok-mount
- modules
-m644
-/openrc/up
-CN export TERM "linux"
- foreground { /sbin/openrc boot }
- /sbin/openrc default
-m644
-/openrc/down
-CN export TERM "linux"
- /sbin/openrc shutdown
-m644
-
-/sshd-log d m755
-/sshd-log/type cN longrun m644
-/sshd-log/dependencies
-C mount-run-cgroup
- rootfs
-m644
-/sshd-log/consumer-for cN sshd m640
-/sshd-log/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/sshd-log }
- redirfd -w 1 /run/cgroup/s6-rc/sshd-log/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /var/log/sshd }
- s6-log -b -- n10 s10240000 t /var/log/sshd
-m755
-/sshd d m755
-/sshd/type cN longrun m644
-/sshd/dependencies
-C ssh_host_ed25519_key
- ssh_host_rsa_key
- ok-sysinit
-m644
-/sshd/producer-for cN sshd-log m640
-/sshd/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/sshd }
- redirfd -w 1 /run/cgroup/s6-rc/sshd/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- fdmove -c 2 1
- /usr/sbin/sshd -D -e -f /etc/ssh/sshd_config
-m755
-
-/ssh_host_ed25519_key d m755
-/ssh_host_ed25519_key/type cN oneshot m644
-/ssh_host_ed25519_key/dependencies
-C hostname
- rootfs
-m644
-/ssh_host_ed25519_key/up
-CN if -n -t { s6-test -f /etc/ssh/ssh_host_ed25519_key }
- ssh-keygen -N "" -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
-m644
-
-/ssh_host_rsa_key d m755
-/ssh_host_rsa_key/type cN oneshot m644
-/ssh_host_rsa_key/dependencies
-C hostname
- rootfs
-m644
-/ssh_host_rsa_key/up
-CN if -n -t { s6-test -f /etc/ssh/ssh_host_rsa_key }
- ssh-keygen -N "" -t rsa -b 4096 -f /etc/ssh/ssh_host_rsa_key
-m644
-
-
-/alsa-devices d m755
-/alsa-devices/type cN oneshot m644
-/alsa-devices/dependencies
-C modules
- udev
-m644
-/alsa-devices/up
-CN sh -c "
- retry=true
- while $retry; do
- retry=false
- for card in $(sed -n -e '/^ \\?[0-9]/{s/ *\\([0-9]*\\).*/\\1/;p}' /proc/asound/cards); do
- $retry && sleep 0.5
- test -e /dev/snd/controlC${card} || retry=true
- done
- $retry && sleep 0.5
- done
- :
- "
-m644
-
-/alsactl-rdaemon-log d m755
-/alsactl-rdaemon-log/type cN longrun m644
-/alsactl-rdaemon-log/dependencies
-C mount-run-cgroup
- rootfs
-m644
-/alsactl-rdaemon-log/consumer-for cN alsactl-rdaemon m640
-/alsactl-rdaemon-log/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/alsactl-rdaemon-log }
- redirfd -w 1 /run/cgroup/s6-rc/alsactl-rdaemon-log/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /var/log/alsactl-rdaemon }
- s6-log -b -- n10 s10240000 t /var/log/alsactl-rdaemon
-m755
-/alsactl-rdaemon d m755
-/alsactl-rdaemon/type cN longrun m644
-/alsactl-rdaemon/dependencies
-C alsa-devices
-m644
-/alsactl-rdaemon/producer-for cN alsactl-rdaemon-log m640
-/alsactl-rdaemon/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/alsactl-rdaemon }
- redirfd -w 1 /run/cgroup/s6-rc/alsactl-rdaemon/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- fdmove -c 2 1
- alsactl rdaemon
-m755
-
-/brightness d m755
-/brightness/type cN oneshot m644
-/brightness/dependencies
-C ok-sysinit
-m644
-/brightness/up
-CN foreground { redirfd -w 1 /sys/class/backlight/intel_backlight/brightness echo 800 }
- if { chgrp users /sys/class/backlight/intel_backlight/brightness }
- chmod g+w /sys/class/backlight/intel_backlight/brightness
-m644
-
-/tlp d m755
-/tlp/type cN oneshot m644
-/tlp/dependencies
-C ok-sysinit
-m644
-/tlp/up
-CN tlp init start
-m644
-/tlp/down
-CN tlp init stop
-m644
-
-/containers d m755
-/containers/type cN oneshot m644
-/containers/dependencies
-C ok-mount
-m644
-/containers/up
-CN export TERM "linux"
- if {
- zsh -lc "quiet=1 confz site_container_services"
- }
- s6-svscanctl -a /run/service
-m644
-
-/svscan-ccx-log d m755
-/svscan-ccx-log/type cN longrun m644
-/svscan-ccx-log/dependencies
-C ok-sysinit
- rootfs
-m644
-/svscan-ccx-log/consumer-for cN svscan-ccx m644
-/svscan-ccx-log/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/svscan-ccx-log }
- redirfd -w 1 /run/cgroup/s6-rc/svscan-ccx-log/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /run/user/1000.logs }
- if { ln -sf 1000.logs /run/user/ccx.logs }
- if { chown ccx: /run/user/1000.logs }
- if { chmod 700 /run/user/1000.logs }
- s6-setuidgid ccx
- s6-log -- t /run/user/1000.logs
-m755
-
-/svscan-ccx d m755
-/svscan-ccx/type cN longrun m644
-/svscan-ccx/dependencies
-C ok-sysinit
- rootfs
-m644
-/svscan-ccx/notification-fd cN 3 m644
-/svscan-ccx/producer-for cN svscan-ccx-log m644
-/svscan-ccx/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/svscan-ccx }
- redirfd -w 1 /run/cgroup/s6-rc/svscan-ccx/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /run/user/1000 }
- if { ln -sf 1000 /run/user/ccx }
- if { chown ccx: /run/user/1000 }
- if { chmod 700 /run/user/1000 }
- s6-setuidgid ccx
- if { mkdir -p /run/user/1000/service }
- s6-svscan -d 3 /run/user/1000/service
-m755
-
-/syncthing-log d m755
-/syncthing-log/type cN longrun m644
-/syncthing-log/dependencies
-C mount-run-cgroup
- rootfs
-m644
-/syncthing-log/consumer-for cN syncthing m640
-/syncthing-log/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/syncthing-log }
- redirfd -w 1 /run/cgroup/s6-rc/syncthing-log/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /var/log/syncthing }
- s6-log -b -- n10 s10240000 t /var/log/syncthing
-m755
-/syncthing d m755
-/syncthing/type cN longrun m644
-/syncthing/dependencies
-C ok-mount
-m644
-/syncthing/producer-for cN syncthing-log m640
-/syncthing/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/syncthing }
- redirfd -w 1 /run/cgroup/s6-rc/syncthing/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- /usr/bin/env HOME=/var/lib/syncthing
- s6-setuidgid syncthing
- syncthing -logflags 0
-m755
-
-
-/wpa_supplicant-log d m755
-/wpa_supplicant-log/type cN longrun m644
-/wpa_supplicant-log/dependencies
-C mount-run-cgroup
- rootfs
-m644
-/wpa_supplicant-log/consumer-for cN wpa_supplicant m640
-/wpa_supplicant-log/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/wpa_supplicant-log }
- redirfd -w 1 /run/cgroup/s6-rc/wpa_supplicant-log/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- if { mkdir -p /var/log/wpa_supplicant }
- s6-log -b -- n10 s10240000 t /var/log/wpa_supplicant
-m755
-/wpa_supplicant d m755
-/wpa_supplicant/type cN longrun m644
-/wpa_supplicant/dependencies
-C modules
- ok-sysinit
-m644
-/wpa_supplicant/producer-for cN wpa_supplicant-log m640
-/wpa_supplicant/run
-CN #!/command/execlineb -P
- getpid SERVICE_PID
- foreground {
- importas -i SERVICE_PID SERVICE_PID
- if { test -d /run/cgroup }
- if { mkdir -p /run/cgroup/s6-rc/wpa_supplicant }
- redirfd -w 1 /run/cgroup/s6-rc/wpa_supplicant/cgroup.procs
- printf "%s" ${SERVICE_PID}
- }
- unexport SERVICE_PID
- /sbin/wpa_supplicant
- -iwlan0
- -c/etc/wpa_supplicant/wpa_supplicant.conf
-m755
-
-
-
-/gettys d m755
-/gettys/type cN bundle m644
-/gettys/contents
-C tty1
- tty2
- tty3
- tty4
-m644
-
-/kbd_mode d m755
-/kbd_mode/type cN bundle m644
-/kbd_mode/contents
-C kbd_mode-tty1
- kbd_mode-tty2
- kbd_mode-tty3
- kbd_mode-tty4
-m644
-
-/net-all d m755
-/net-all/type cN bundle m644
-/net-all/contents
-C loopback
- dhcpcd
- unbound
- wpa_supplicant
-m644
-
-/ok-all d m755
-/ok-all/type cN bundle m644
-/ok-all/contents
-C ok-all-but-tty
- gettys
-m644
-
-/ok-all-but-tty d m755
-/ok-all-but-tty/type cN bundle m644
-/ok-all-but-tty/contents
-C net-all
- ok-mount
- hostname
- loadkeys
- setfont
- dmesg
- modules
- swapon-vg-swap
- sshd
- containers
- svscan-ccx
-m644
-
-/ok-mount d m755
-/ok-mount/type cN bundle m644
-/ok-mount/contents
-C ok-sysinit
- ok-localmount
- mount-tmp-X11
-m644
-
-/ok-sysinit d m755
-/ok-sysinit/type cN bundle m644
-/ok-sysinit/contents
-C mount-sysinit
- dev-coldplug
- cgroups
- mdevd
-m644
-
-/setfont d m755
-/setfont/type cN bundle m644
-/setfont/contents
-C setfont-tty1
- setfont-tty2
- setfont-tty3
- setfont-tty4
-m644
-
diff --git a/version_path.awk b/version_path.awk
@@ -0,0 +1,43 @@
+function get_package_path(name) {
+ if(!("pthbs_path_"name in ENVIRON)) {
+ print "version_path.awk: Fatal: path for package '"name"' not specified" >"/dev/stderr"
+ exit 2
+ }
+ return ENVIRON["pthbs_path_"name]
+}
+
+function exec_path(name) {
+ if(!length(execfile)) {
+ print "version_path.awk: Fatal: 'execfile' variable not specified" >"/dev/stderr"
+ exit 2
+ }
+ print name >>execfile
+ return get_package_path("core-system-conf") "/deps/command/" name
+}
+
+function q(s) { # quote string for execline
+ gsub(/\\/, "\\\\", s)
+ gsub(/\n/, "\\n", s)
+ gsub(/\"/, "\\\"", s)
+ return "\"" s "\""
+}
+
+function qexec(s) {
+ return q(exec_path(s))
+}
+
+function config_path(name) {
+ return get_package_path("core-system-conf") "/config/" name
+}
+
+function qconfig(s) {
+ return q(config_path(s))
+}
+
+function env_enter(name) {
+ return get_package_path(name)"/command/pthbs-enter"
+}
+
+function qenv(s) {
+ return q(env_enter(s))
+}