Control: retitle -1 FTBFS: uses tempfile in build, appears to use deprecated which(1)
A closer look indicates that tempfile is only actually used to build the package. The apparent use of which(1) is actually a shell function, however… On Wed, Aug 18, 2021, at 16:18, Cyril Brulebois wrote: > > Presumably /installer-team/console-setup would be a better package to > > patch, unless cdebconf uses tempfile somehow. 😉 I'll see what I can > > do this evening. 🙂 > > Sure thing, miscompleted in my browser history plus slightly distracted, > sorry. As suggested before, I'm fluent in IRC, so I read what you meant. 😁 MY goof was breaking my initramfs, being _completely_ unable to read the tiny font, reverting to backup, futzing with it, seeing tempfile and which being called in setupcon, and having to go to work before I could dig much deeper. As noted, tempfile is only actually used to build the package. Fixed that. Left the function in setupcon alone. The apparent use of which all over the place is also a shell function, but the shell function just emulates command -v, so I subbed that out and removed the functions while I was at it. Tested the result on amd64 with amdgpu added to initramfs for early KMS so that I can take advantage of Plymouth for status messages I have some chance of being able to use, and a crypttab prompt that doesn't get lost in the impossibly small console text. I realized while composing the email that my patch has some trailing whitespace removal—nvim is configured to do that to source files as it's usually desirable for git sanity, but I should've trimmed those hunks out of the patch and retested. I don't have time to do that tonight because I can't conveniently just reboot right now, so I'll send you the patch as tested. Feel free to omit purely whitespace change hunks. You can maybe guess the major thrust of my attempts to fiddle with console-setup around the time this all happened: You don't even try to set the font in the initramfs anymore, and I've never actually figured out why Ubuntu's combination of console-setup and plymouth manages to just work and Debian's just doesn't—I've spent a little time prodding at packages from both. I mostly know my way around a Debian system I think—when I reinstalled this machine about two weeks ago, I found that neither old nor new installer was really set up to preserve my LUKS devices with LVM on them, keep some partitions and format others, etc … so I just grabbed a live USB and installed the system with debootstrap. It … was faster than trying ti figure out if or how Calamares could do that, and I know the shell of the old debian installer didn't provide shell UI I'd need to open the LUKS partitions so the partitioner could use them without obliterating anything "helpfully" for me. *shrug* I've gotten way off topic now, but I think I just need to write a hook to throw in setfont and the font to set along with some quick and dirty initramfs scripts to make sure it dances around plymouth. I had to do something similar with a MBP to work around proprietary Apple crap. Anyway, hope this is useful. Salsa didn't exist when last I might've had an account on it to be able to actually finish this up as a PR. I've considered changing that a time or two. Perhaps when the Covidium passes. Joseph
diff -Nru console-setup.orig/debian/console-setup.config console-setup/debian/console-setup.config --- console-setup.orig/debian/console-setup.config 2021-08-18 22:17:59.892444554 -0700 +++ console-setup/debian/console-setup.config 2021-08-18 22:42:21.524213193 -0700 @@ -64,7 +64,7 @@ # fontsets='Arabic-Fixed15 # Arabic-Fixed16 # Arabic-VGA14 -# ... +# ... # Vietnamese-Fixed18 # ' @@ -104,18 +104,6 @@ db_capb backup -which () { - local IFS - IFS=: - for i in $PATH; do - if [ -f "$i/$1" -a -x "$i/$1" ]; then - echo "$i/$1" - return 0 - fi - done - return 1 -} - available_fontfaces () { local prefix case "$CODESET" in @@ -195,14 +183,14 @@ } kernel=unknown -if which uname >/dev/null; then +if command -v uname >/dev/null; then case "`uname`" in *Linux*) kernel=linux ;; *FreeBSD*) kernel=freebsd ;; esac fi -if which locale 2>/dev/null >/dev/null; then +if command -v locale 2>/dev/null >/dev/null; then eval `locale` fi @@ -217,7 +205,7 @@ if [ "$locale" = C ]; then CHARMAP=ISO-8859-15 charmap_priority=high -elif which locale 2>/dev/null >/dev/null; then +elif command -v locale 2>/dev/null >/dev/null; then CHARMAP=`locale charmap` else CHARMAP=unknown diff -Nru console-setup.orig/debian/console-setup-udeb.postinst console-setup/debian/console-setup-udeb.postinst --- console-setup.orig/debian/console-setup-udeb.postinst 2021-08-18 22:17:59.892444554 -0700 +++ console-setup/debian/console-setup-udeb.postinst 2021-08-18 22:43:48.226081884 -0700 @@ -5,20 +5,6 @@ # Source debconf library. . /usr/share/debconf/confmodule -# The same as /usr/bin/which - in order to make "which" available before -# /usr is mounted -which () { - local IFS - IFS=: - for i in $PATH; do - if [ -x "$i/$1" ]; then - echo "$i/$1" - return 0 - fi - done - return 1 -} - # In d-i the config script is not executed automatically if [ -f /usr/share/console-setup/keyboard-configuration.config ]; then /usr/share/console-setup/keyboard-configuration.config || exit $? @@ -37,7 +23,7 @@ CONFIGFILE=/etc/default/keyboard if [ "$1" = "configure" -a ! -L "$CONFIGFILE" ]; then - + db_get keyboard-configuration/modelcode model="$RET" @@ -64,8 +50,8 @@ if ! grep "^ *${var}=" $CONFIGFILE >/dev/null; then echo "${var}=" >>$CONFIGFILE fi - done - + done + sed \ -e "s|^ *XKBMODEL=.*|XKBMODEL=\"$model\"|" \ -e "s|^ *XKBLAYOUT=.*|XKBLAYOUT=\"$layout\"|" \ @@ -73,7 +59,7 @@ -e "s|^ *XKBOPTIONS=.*|XKBOPTIONS=\"$options\"|" \ -e "s|^ *BACKSPACE=.*|BACKSPACE=\"${BACKSPACE:-guess}\"|" \ <$CONFIGFILE >$CONFIGFILE.tmp - + mv -f $CONFIGFILE.tmp $CONFIGFILE db_set keyboard-configuration/store_defaults_in_debconf_db true @@ -82,7 +68,7 @@ if \ [ -d /lib/debian-installer.d ] && keyboard_present then - if [ "$DISPLAY" ] && which setxkbmap >/dev/null; then + if [ "$DISPLAY" ] && command -v setxkbmap >/dev/null; then setxkbmap -option '' -model "$model" "$layout" "$variant" "$options" else case "`uname`" in diff -Nru console-setup.orig/debian/keyboard-configuration.config console-setup/debian/keyboard-configuration.config --- console-setup.orig/debian/keyboard-configuration.config 2021-08-18 22:17:59.892444554 -0700 +++ console-setup/debian/keyboard-configuration.config 2021-08-18 22:43:19.410790210 -0700 @@ -91,18 +91,6 @@ # regex_pattern_escape and regex_unescape. ###################################################################### -which () { - local IFS - IFS=: - for i in $PATH; do - if [ -f "$i/$1" -a -x "$i/$1" ]; then - echo "$i/$1" - return 0 - fi - done - return 1 -} - # Store default value into debconf db. Workaround #352697. db_default () { db_get keyboard-configuration/store_defaults_in_debconf_db @@ -160,7 +148,7 @@ ## KBDNAMES ## Will be replaced by all_kbdnames function: # all_kbdnames () { -# cat <<'EOF' +# cat <<'EOF' # C*model*logidinovo*Logitech diNovo Keyboard # C*model*amiga*Amiga # ... @@ -200,9 +188,9 @@ add=" $add" - choices1=`echo "$kbdnames" | grep "^$prefix\*" | + choices1=`echo "$kbdnames" | grep "^$prefix\*" | sed -e "s/^$prefix\*[^\*]*\*//" -e 's/,/\\\\,/g' | sort` - choices2=`echo "$add" | grep "^$prefix\*" | + choices2=`echo "$add" | grep "^$prefix\*" | sed -e "s/^$prefix\*[^\*]*\*//" -e 's/,/\\\\,/g'` choices=`echo "$choices1 $choices2" | sed -e 's/$/,/'` @@ -212,13 +200,13 @@ if echo "$choices" | grep '[^\\\\],' >/dev/null; then db_subst $template CHOICES "$choices" - default_description=`echo "$kbdnames$add" | + default_description=`echo "$kbdnames$add" | grep "^$prefix\*${default_code}\*" | sed -e "s/^$prefix\*${default_code}\*//" | regex_unescape` if [ -z "$default_description" ]; then # For XkbVariant the empty string is usually a sensible default - default_description=`echo "$kbdnames$add" | + default_description=`echo "$kbdnames$add" | grep "^$prefix\*\*" | sed -e "s/^$prefix\*\*//" | regex_unescape ` @@ -230,7 +218,7 @@ # description, so we'd better ask. priority=critical fi - + db_input $priority $template || true db_go || return 255 db_get $template @@ -277,13 +265,13 @@ guess_arch () { local arch subarch line - if which archdetect 2>/dev/null >/dev/null; then + if command -v archdetect 2>/dev/null >/dev/null; then archdetect return 0 fi arch=`dpkg --print-architecture` - + if [ "$arch" = 'powerpc' -o "$arch" = 'm68k' ]; then if [ "$arch" = powerpc ]; then line=`sed -n 's/^platform.*: *//p' /proc/cpuinfo` @@ -341,7 +329,7 @@ # Set $locale. Extract the strings for the chosen language in $kbdnames ######################################################################### -if which locale 2>/dev/null >/dev/null; then +if command -v locale 2>/dev/null >/dev/null; then eval `locale` fi @@ -381,7 +369,7 @@ if [ "$is_not_debian_installer" ]; then if \ - ! which iconv >/dev/null \ + ! command -v iconv >/dev/null \ || ! kbdnames="$(echo "$kbdnames" | iconv -f UTF-8 -t $(locale charmap)//TRANSLIT)" then @@ -488,7 +476,7 @@ XKBMODEL=pc105 # UNKNOWN model_priority=critical ;; -esac +esac layout_priority=critical case "$locale" in @@ -879,7 +867,7 @@ if db_get debian-installer/keymap && [ "$RET" ]; then di_keymap="${RET##mac-usb-}" di_keymap="${di_keymap%%-latin1}" - + old_xkbvariant="$XKBVARIANT" XKBVARIANT='' old_layout_priority=$layout_priority @@ -912,7 +900,7 @@ kr|kr106) XKBLAYOUT="kr"; XKBVARIANT='';; kr104) XKBLAYOUT="kr"; XKBVARIANT="kr104";; la) XKBLAYOUT="latam";; - lt) XKBLAYOUT="lt";; + lt) XKBLAYOUT="lt";; lv-latin4) XKBLAYOUT="lv";; mac-us-std) XKBLAYOUT="us";; mac-de2-ext) XKBLAYOUT="de"; XKBVARIANT="nodeadkeys";; @@ -937,7 +925,7 @@ ua) XKBLAYOUT="us,ua";; uk) XKBLAYOUT="gb";; us) XKBLAYOUT="us";; - *) + *) XKBVARIANT="$old_xkbvariant" layout_priority=$old_layout_priority ;; @@ -948,7 +936,7 @@ # Lower the priority of the Debconf question to medium. if \ [ -f /etc/X11/xorg.conf -a ! -e $CONFIGFILE ] \ - && which awk 2>/dev/null >/dev/null + && command -v awk 2>/dev/null >/dev/null then awk_expr=' { @@ -968,7 +956,7 @@ } else if ($2 == "\"xkbvariant\"") { xkb = "XKBVARIANT"; } else if ($2 == "\"xkboptions\"") { - xkb = "XKBOPTIONS"; + xkb = "XKBOPTIONS"; } $0 = line; $1 = ""; @@ -1088,7 +1076,7 @@ else unsupported_layout=yes fi - ;; + ;; *,*) unsupported_layout=yes ;; @@ -1371,7 +1359,7 @@ layout "$debconf_layout" then debconf_layout="$RET" - STATE=$(($STATE + 1)) + STATE=$(($STATE + 1)) else # always to the next question STATE=$(($STATE + 1)) @@ -1610,7 +1598,7 @@ if [ "$toggle" ]; then toggle=grp:$toggle fi - + db_get keyboard-configuration/switch switch='' case "$RET" in @@ -1653,7 +1641,7 @@ if [ "$switch" ]; then switch=grp:$switch fi - + db_get keyboard-configuration/altgr altgr='' case "$RET" in @@ -1740,12 +1728,12 @@ fi;; Left?Logo?key) if [ "$lwin_allocated" != yes ]; then - compose=lwin + compose=lwin lwin_allocated=yes fi;; Right?Control) if [ "$rctrl_allocated" != yes ]; then - compose=rctrl + compose=rctrl rctrl_allocated=yes fi;; Menu?key) @@ -1766,14 +1754,14 @@ if [ "$compose" ]; then compose=compose:$compose fi - + db_get keyboard-configuration/ctrl_alt_bksp if [ "$RET" = true ]; then terminate=terminate:ctrl_alt_bksp else terminate='' fi - + # A fix for #566009 if [ "$ralt_allocated" = yes -a "$altgr" = lv3:ralt_alt ]; then altgr='' @@ -1785,7 +1773,7 @@ *) leds='';; esac - + options=$( echo $toggle $switch $altgr $compose $terminate $leds \ | sed -e 's/^ *//' -e 's/ *$//' -e 's/ */,/g' diff -Nru console-setup.orig/debian/keyboard-configuration.postinst console-setup/debian/keyboard-configuration.postinst --- console-setup.orig/debian/keyboard-configuration.postinst 2021-08-18 22:17:59.892444554 -0700 +++ console-setup/debian/keyboard-configuration.postinst 2021-08-18 22:43:48.226081884 -0700 @@ -5,20 +5,6 @@ # Source debconf library. . /usr/share/debconf/confmodule -# The same as /usr/bin/which - in order to make "which" available before -# /usr is mounted -which () { - local IFS - IFS=: - for i in $PATH; do - if [ -x "$i/$1" ]; then - echo "$i/$1" - return 0 - fi - done - return 1 -} - # In d-i the config script is not executed automatically if [ -f /usr/share/console-setup/keyboard-configuration.config ]; then /usr/share/console-setup/keyboard-configuration.config || exit $? @@ -37,7 +23,7 @@ CONFIGFILE=/etc/default/keyboard if [ "$1" = "configure" -a ! -L "$CONFIGFILE" ]; then - + db_get keyboard-configuration/modelcode model="$RET" @@ -64,8 +50,8 @@ if ! grep "^ *${var}=" $CONFIGFILE >/dev/null; then echo "${var}=" >>$CONFIGFILE fi - done - + done + sed \ -e "s|^ *XKBMODEL=.*|XKBMODEL=\"$model\"|" \ -e "s|^ *XKBLAYOUT=.*|XKBLAYOUT=\"$layout\"|" \ @@ -73,7 +59,7 @@ -e "s|^ *XKBOPTIONS=.*|XKBOPTIONS=\"$options\"|" \ -e "s|^ *BACKSPACE=.*|BACKSPACE=\"${BACKSPACE:-guess}\"|" \ <$CONFIGFILE >$CONFIGFILE.tmp - + mv -f $CONFIGFILE.tmp $CONFIGFILE db_set keyboard-configuration/store_defaults_in_debconf_db true @@ -82,7 +68,7 @@ if \ [ -d /lib/debian-installer.d ] && keyboard_present then - if [ "$DISPLAY" ] && which setxkbmap >/dev/null; then + if [ "$DISPLAY" ] && command -v setxkbmap >/dev/null; then setxkbmap -option '' -model "$model" "$layout" "$variant" "$options" else case "`uname`" in diff -Nru console-setup.orig/debian/preprocessor console-setup/debian/preprocessor --- console-setup.orig/debian/preprocessor 2021-08-18 22:17:59.900444354 -0700 +++ console-setup/debian/preprocessor 2021-08-18 22:23:08.680765008 -0700 @@ -1,7 +1,7 @@ #!/bin/sh set -e -tmp=`tempfile` +tmp=`mktemp console-setup.XXXXXXXXXX` mini='' file='' diff -Nru console-setup.orig/Keyboard/ckbcomp-mini console-setup/Keyboard/ckbcomp-mini --- console-setup.orig/Keyboard/ckbcomp-mini 2021-08-18 22:17:59.884444752 -0700 +++ console-setup/Keyboard/ckbcomp-mini 2021-08-18 22:45:53.239009017 -0700 @@ -39,20 +39,6 @@ datadir=$installdir/share/console-setup [ -d "$datadir" ] || datadir=/usr/share/console-setup -# The same as /usr/bin/which - in order to make "which" available in -# environments where "which" does not exist -which () { - local IFS - IFS=: - for i in $PATH; do - if [ -x "$i/$1" ]; then - echo "$i/$1" - return 0 - fi - done - return 1 -} - while [ "$*" ]; do case "$1" in -I*) diff -Nru console-setup.orig/setupcon console-setup/setupcon --- console-setup.orig/setupcon 2021-08-18 22:17:59.900444354 -0700 +++ console-setup/setupcon 2021-08-18 22:33:32.013233908 -0700 @@ -37,20 +37,6 @@ setupdir='' # directory for --setup-dir SETUP='' -# The same as /usr/bin/which - in order to make "which" available before -# /usr is mounted -which () { - local IFS - IFS=: - for i in $PATH; do - if [ -f "$i/$1" -a -x "$i/$1" ]; then - echo "$i/$1" - return 0 - fi - done - return 1 -} - # Create a temporary file name and set TMPFILE to its name. Early in # the boot process /tmp is mounted read-only, so lets have some other # options... I am not sure all non-GNU versions of mktemp understand @@ -257,7 +243,7 @@ test_console () { local ok ok=0 - if which tty >/dev/null; then + if command -v tty >/dev/null; then case "`tty`" in /dev/tty[1-9]*|/dev/vc/[0-9]*|/dev/console|/dev/ttyv[0-9]*) return 0 @@ -266,7 +252,7 @@ ok=1 fi - if which kbd_mode >/dev/null; then + if command -v kbd_mode >/dev/null; then mode="`(LC_ALL=C; export LC_ALL; kbd_mode) 2>&1`" mode=${mode#The keyboard is in } case "$mode" in @@ -275,7 +261,7 @@ ok=1 fi - if which vidcontrol >/dev/null; then + if command -v vidcontrol >/dev/null; then if vidcontrol -i adapter >&- 2>&-; then return 0 fi @@ -449,7 +435,7 @@ # kernel kernel=unknown -if which uname >/dev/null; then +if command -v uname >/dev/null; then case "`uname`" in *Linux*) kernel=linux ;; *FreeBSD*) kernel=freebsd ;; @@ -513,7 +499,7 @@ # CHARMAP if [ "$CHARMAP" = guess -o -z "$CHARMAP" ]; then CHARMAP='' - if which locale >/dev/null; then + if command -v locale >/dev/null; then CHARMAP=`locale charmap` fi fi @@ -538,9 +524,9 @@ if [ "$do_font" ]; then case "$kernel" in linux) - if which consolechars >/dev/null ; then + if command -v consolechars >/dev/null ; then do_font=linuxct - elif which setfont >/dev/null ; then + elif command -v setfont >/dev/null ; then do_font=linuxkbd else echo "setupcon: Neither setfont nor consolechars is accessible. No font will be configured." >&2 @@ -548,7 +534,7 @@ fi ;; freebsd) - if which vidcontrol >/dev/null ; then + if command -v vidcontrol >/dev/null ; then do_font=freebsd else echo "setupcon: vidcontrol is not accessible. No font will be configured." >&2 @@ -558,7 +544,7 @@ esac fi # Due to bug in splashy and usplash: do not load fonts (#540314) -if which pidof >/dev/null; then +if command -v pidof >/dev/null; then if pidof splashy > /dev/null || pidof usplash > /dev/null; then do_font='' fi @@ -654,7 +640,7 @@ stdmap=$CHARMAP.acm.gz fontdir=share/consolefonts stdfont=$CODESET-$FONTFACE$FONTSIZE.psf.gz - # [A-WXYZa-wyz] is a funny way to say [A-Za-wyz]. In some locales + # [A-WXYZa-wyz] is a funny way to say [A-Za-wyz]. In some locales # [A-Z] includes x and we don't want this. stdfontfallback=$CODESET-*[A-WXYZa-wyz]$FONTSIZE.psf.gz ;; @@ -693,7 +679,7 @@ [ "$FONTFILES" ] || FONTFILES=`findfile $fontdir $stdfontfallback` case "$FONTFILES" in *[0-9]x[1-9]*.psf.gz) - if which consolechars >/dev/null; then + if command -v consolechars >/dev/null; then echo "\ The consolechars utility from the \"console-tools\" package can load only fonts with 8 pixel width matrix. Please install the setfont utility from the package @@ -740,7 +726,7 @@ if [ "$do_kbd" ]; then case "$kernel" in linux) - if which loadkeys >/dev/null; then + if command -v loadkeys >/dev/null; then do_kbd=linux else echo setupcon: loadkeys is not accessible. Keyboard will not be configured.>&2 @@ -748,7 +734,7 @@ fi ;; freebsd) - if which kbdcontrol >/dev/null; then + if command -v kbdcontrol >/dev/null; then do_kbd=freebsd else echo setupcon: kbdcontrol is not accessible. Keyboard will not be configured.>&2 @@ -830,7 +816,7 @@ savekbdfile="$cached" fi [ "$XKBMODEL" ] || savekbdfile='' -if [ "$kernel" = linux ] && ! which gzip >/dev/null; then +if [ "$kernel" = linux ] && ! command -v gzip >/dev/null; then savekbdfile='' echo setupcon: gzip is not accessible. Will not save cached keyboard map. >&2 fi @@ -966,7 +952,7 @@ ;; linux*) # this is a bit pointless as vesafb doesn't support changing mode - if which fbset >/dev/null; then + if command -v fbset >/dev/null; then run plain '' fbset -a "$VIDEOMODE" else report fbset is not installed @@ -1114,7 +1100,7 @@ # Unfortunately, that way the X keyboard will be damaged when # console-setup modifies the keyboard mode of X. if [ "$do_kbd" = linux ]; then - if which kbd_mode >/dev/null; then + if command -v kbd_mode >/dev/null; then if [ "$unicode" ]; then run in '' kbd_mode -u else @@ -1253,7 +1239,7 @@ tempfile || { echo setupcon: Can not create temporary file >&2; exit 1; } printf "%s" "$SETUP" | while read -r cmd args; do - which "$cmd" >>$TMPFILE || true + command -v "$cmd" >>$TMPFILE || true printf "%s " "$cmd" fileargs "$args" echo