On Sat, Apr 24, 2004 at 02:43:25PM -0700, Don Armstrong wrote: > On Sat, 24 Apr 2004, Denis Barbier wrote: > > When a package is reconfigured, the new debconf settings and current > > configuration files are available, but previous debconf settings are > > not and you cannot determine that there have been no local changes. > > While the former is true[1], the latter is not. See, for example, how > xserver-xfree86 deals (perhaps suboptimally) with this situation. It's going to be dealing with it a little less suboptimally in the near future. See attachment (you may want to scroll to the bottom). -- G. Branden Robinson | It's like I have a shotgun in my Debian GNU/Linux | mouth, I've got my finger on the branden@debian.org | trigger, and I like the taste of http://people.debian.org/~branden/ | the gunmetal. -- Robert Downey, Jr.
#!/bin/sh # Debian xserver-xfree86 package configuration script # Copyright 2000--2004 Branden Robinson. # Licensed under the GNU General Public License, version 2. See the file # /usr/share/common-licenses/GPL or <http://www.gnu.org/copyleft/gpl.txt>. # $Id: xserver-xfree86.config.in 1188 2004-03-25 23:06:35Z branden $ set -e # source debconf library . /usr/share/debconf/confmodule THIS_PACKAGE=xserver-xfree86 THIS_SCRIPT=config #INCLUDE_SHELL_LIB# CONFIG_DIR=/etc/X11 SERVER_SYMLINK="$CONFIG_DIR/X" XF86CONFIG="$CONFIG_DIR/XF86Config-4" CONFIG_AUX_DIR=/var/lib/xfree86 SERVER_SYMLINK_CHECKSUM="$CONFIG_AUX_DIR/${SERVER_SYMLINK##*/}.md5sum" XF86CONFIG_CHECKSUM="$CONFIG_AUX_DIR/${XF86CONFIG##*/}.md5sum" THIS_SERVER=/usr/bin/X11/XFree86 NCARDS=0 NSERVERS=0 NDRIVERS=0 MULTIHEAD= # get machine architecture ARCH=$(dpkg --print-installation-architecture) discover_video () { # wrapper for discover command that can distinguish Discover 1.x and 2.x # Ugh, Discover 1.x didn't exit with nonzero status if given an unrecongized # option! DISCOVER_TEST=$(discover --version 2>/dev/null) if expr "$DISCOVER_TEST" : 'discover 2.*' >/dev/null 2>&1; then # Discover 2.x # XXX: this is sort of nasty VENDOR_MODEL_FILE=$(tempfile) SERVER_FILE=$(tempfile) DRIVER_FILE=$(tempfile) CMD="discover --type-summary display" run $CMD >$VENDOR_MODEL_FILE CMD="discover --data-path=xfree86/server/name \ --data-version=${SOURCE_VERSION%-*} display" run $CMD >$SERVER_FILE CMD="discover --data-path=xfree86/server/device/driver \ --data-version=${SOURCE_VERSION%-*} display" run $CMD >$DRIVER_FILE DISCOVERED_VIDEO=$(paste $VENDOR_MODEL_FILE $SERVER_FILE $DRIVER_FILE) rm -f $VENDOR_MODEL_FILE $SERVER_FILE $DRIVER_FILE else # must be Discover 1.x DISCOVERED_VIDEO=$(run discover --disable=serial,parallel \ --format="%V %M\t%S\t%D\n" video 2>/dev/null) fi echo "$DISCOVERED_VIDEO" } validate_string_db_input () { # Syntax: validate_string_db_input priority template # # validate string input; can't have doublequotes # If $MAY_BE_NULL is a non-null value (e.g., "yes"), the string may be null. if [ $# -ne 2 ]; then internal_error "validate_string_db_input() called with wrong number of" \ "arguments: $*" fi PRIORITY=$1 TEMPLATE=$2 db_get "$TEMPLATE" SAFE="$RET" set +e while :; do db_input "$PRIORITY" "$TEMPLATE" # is the question going to be asked? if [ $? -eq 30 ]; then break # no; bail out of validation loop fi db_go db_get "$TEMPLATE" if [ -n "$RET" ]; then if ! expr "$RET" : '.*".*' >/dev/null 2>&1; then break # valid input else ERROR=xserver-xfree86/config/doublequote_in_string_error fi else if [ -n "$MAY_BE_NULL" ]; then break # valid (null) input else ERROR=xserver-xfree86/config/null_string_error fi fi # we only get to this point if the input was invalid; restore the known # good value in case we are interrupted before the user provides a valid # one db_set "$TEMPLATE" "$SAFE" db_fset "$TEMPLATE" seen false # now show the user the error message db_fset "$ERROR" seen false db_input critical "$ERROR" db_go done set -e } validate_numeric_db_input () { # Syntax: validate_numeric_db_input priority template # # validate numeric input; must have only digits, can be null if [ $# -ne 2 ]; then internal_error "validate_numeric_db_input() called with wrong number of" \ "arguments: $*" fi PRIORITY=$1 TEMPLATE=$2 db_get "$TEMPLATE" SAFE="$RET" set +e while :; do db_input "$PRIORITY" "$TEMPLATE" # is the question going to be asked? if [ $? -eq 30 ]; then break # no; bail out of validation loop fi db_go db_get "$TEMPLATE" if [ -z "$RET" ] || expr "$RET" : "[0-9]\+$" >/dev/null 2>&1; then break # valid input fi # we only get to this point if the input was invalid; restore the known # good value in case we are interrupted before the user provides a valid # one db_set "$TEMPLATE" "$SAFE" db_fset "$TEMPLATE" seen false # now show the user the error message db_fset xserver-xfree86/config/nonnumeric_string_error seen false db_input critical xserver-xfree86/config/nonnumeric_string_error db_go done set -e } validate_bus_id_db_input () { # Syntax: validate_bus_id_db_input priority template # # validate BusID input if [ $# -ne 2 ]; then internal_error "validate_bus_id_db_input() called with wrong number of" \ "arguments: $*" fi PRIORITY=$1 TEMPLATE=$2 db_get "$TEMPLATE" SAFE="$RET" set +e while :; do db_input "$PRIORITY" "$TEMPLATE" # is the question going to be asked? if [ $? -eq 30 ]; then break # no; bail out of validation loop fi db_go db_get "$TEMPLATE" if [ -z "$RET" ] \ || expr "$RET" : "[A-Z]\+:[0-9]\{1,3\}:[0-9]\{1,3\}:[0-9]\{1,3\}$" \ >/dev/null 2>&1; then break # valid input fi # we only get to this point if the input was invalid; restore the known good # value in case we are interrupted before the user provides a valid one db_set "$TEMPLATE" "$SAFE" db_fset "$TEMPLATE" seen false # now show the user the error message db_fset xserver-xfree86/config/device/bus_id_error seen false db_input critical xserver-xfree86/config/device/bus_id_error db_go done set -e } validate_monitor_frequency_db_input () { # Syntax: validate_monitor_frequency_db_input priority template # # validate monitor frequency input if [ $# -ne 2 ]; then internal_error "validate_monitor_frequency_db_input() called with wrong" \ "number of arguments: $*" fi PRIORITY=$1 TEMPLATE=$2 db_get "$TEMPLATE" SAFE="$RET" set +e while :; do db_input "$PRIORITY" "$TEMPLATE" # is the question going to be asked? if [ $? -eq 30 ]; then break # no; bail out of validation loop fi db_go db_get "$TEMPLATE" # string, needs input validation; a simple regex match will have to do; # force first character to be a number to avoid hideous problems in the # debconf dialog frontend in 0.3.83 (it needs to be one anyway) if expr "$RET" : "^[0-9][-0-9,. ]\+$" >/dev/null 2>&1; then break # valid input fi # we only get to this point if the input was invalid; restore the known # good value in case we are interrupted before the user provides a # valid one db_set "$TEMPLATE" "$SAFE" db_fset "$TEMPLATE" seen false # now show the user the error message db_fset xserver-xfree86/config/monitor/range_input_error seen false db_input critical xserver-xfree86/config/monitor/range_input_error db_go done set -e } auto_answer () { # Syntax: auto_answer input_command priority template default_answer # # Used to auto-answer questions that don't have reasonable defaults. Some # people insist on running the xserver-xfree86 config script with the # non-interactive frontend. For this to work, the debconf database will need # to be pre-loaded with answers to several questions. You have been # warned... if [ $# -ne 4 ]; then internal_error "auto_answer() called with wrong number of arguments: $*" fi INPUT_COMMAND=$1 PRIORITY=$2 TEMPLATE=$3 DEFAULT_ANSWER=$4 set +e observe "auto_answer() \"$INPUT_COMMAND $PRIORITY $TEMPLATE\" with default" \ "\"$DEFAULT_ANSWER\"" # are we re-configuring? if [ -n "$RECONFIGURE" ]; then # yes, we are reconfiguring db_get "$TEMPLATE" observe "auto_answer: (reconfiguring) preserving existing answer \"$RET\"" else # not reconfiguring; has the question been seen before? db_fget "$TEMPLATE" seen if [ "$RET" = "true" ]; then db_get "$TEMPLATE" observe "auto_answer: (not reconfiguring) preserving existing answer" \ "\"$RET\"" else observe "auto_answer: auto-answering with \"$DEFAULT_ANSWER\"" db_set $TEMPLATE "$DEFAULT_ANSWER" fi fi "$INPUT_COMMAND" "$PRIORITY" "$TEMPLATE" if [ $? -eq 30 ]; then observe "auto_answer: $TEMPLATE is not being asked" else observe "auto_answer: asking $TEMPLATE" fi set -e db_go db_get "$TEMPLATE" observe "auto_answer: $TEMPLATE is \"$RET\"" } set_db_priority () { # syntax: set_db_priority requested_priority # # Given a variable PRIORITY_CEILING and a "requested_priority" argument, set # the PRIORITY environment variable to the lesser of the two. # Implementation note: a clever version of this could be done using "eval", or # embedding a Perl script, but those would be more difficult to maintain. # Better just to go the simple and stupid route. Yes, I know this is not very # efficient. local priority_ceiling requested_priority # Validate arguments. if [ $# -ne 1 ]; then warn "set_db_priority() called with empty or bogus arguments \"$*\";" \ "assuming argument of \"low\"" requested_priority=low else requested_priority="$1" fi # If PRIORITY_CEILING is null or unset, it's same as not having one at all; # the sky's the limit. We use a locally scoped priority_ceiling variable # because we don't want to affect the value of the global one. if [ -n "$PRIORITY_CEILING" ]; then priority_ceiling="$PRIORITY_CEILING" else priority_ceiling=critical fi # Ensure the value of PRIORITY_CEILING is reasonable. if [ "$priority_ceiling" != "critical" ] \ && [ "$priority_ceiling" != "high" ] \ && [ "$priority_ceiling" != "medium" ] \ && [ "$priority_ceiling" != "low" ]; then warn "set_db_priority() called with bogus value of \$PRIORITY_CEILING" \ "\"$PRIORITY_CEILING\"; treating as \"critical\"" priority_ceiling=critical fi case "$requested_priority" in critical) # This is the highest priority, so there is nowhere to go but down. PRIORITY="$priority_ceiling" ;; high) case "$priority_ceiling" in critical) PRIORITY="$requested_priority" ;; high|medium|low) PRIORITY="$priority_ceiling" ;; esac ;; medium) case "$priority_ceiling" in critical|high) PRIORITY="$requested_priority" ;; medium|low) PRIORITY="$priority_ceiling" ;; esac ;; low) # This is the lowest priority, so we can't go any lower. PRIORITY="$requested_priority" ;; *) warn "set_db_priority() called with bogus argument" \ "\"$requested_priority\"; returning \"low\"" PRIORITY="low" ;; esac } select_default_x_server () { # Ask debconf questions that determine the destination of the default X server # symbolic link. local bailout # If the symbolic link to the default X server is under manual control, do # nothing. Perform tests to determine if this is the case. # First, assume we're going to be configuring it. bailout= # Is the symbolic link really a symbolic link? If not, bail. if [ -e "$SERVER_SYMLINK" ] && [ ! -L "$SERVER_SYMLINK" ]; then # The symbolic link is not a symbolic link. observe "$SERVER_SYMLINK exists but is not a symbolic link" bailout=yes else # Does the symbolic link's checksum exist but not match the actual # destination? If so, bail. if [ -e "$SERVER_SYMLINK_CHECKSUM" ]; then if [ "$(readlink "$SERVER_SYMLINK" | md5sum)" != \ "$(cat "$SERVER_SYMLINK_CHECKSUM")" ]; then observe "$SERVER_SYMLINK link destination has been manually modified" bailout=yes fi else observe "no stored checksum available for $SERVER_SYMLINK" bailout=yes fi fi # Bail out now if we're supposed to. if [ -n "$bailout" ]; then return 1 fi # If the X server symlink file already exists and points to an executable X # server, it's not as important to ask questions related to it (these # questions "have a reasonable default"). PRIORITY_CEILING= if [ -e "$SERVER_SYMLINK" ]; then if [ -x "$(readlink "$SERVER_SYMLINK")" ]; then observe "X server symlink exists and points to executable X server;" \ "capping X server question priority at medium" PRIORITY_CEILING=medium fi fi # priority of shared/default-x-server set_db_priority "high" db_metaget shared/default-x-server owners OWNERS="$RET" db_metaget shared/default-x-server choices CHOICES="$RET" if [ "$OWNERS" != "$CHOICES" ]; then observe "\$OWNERS does not equal \$CHOICES: \"$OWNERS\" != \"$CHOICES\"" db_subst shared/default-x-server choices $OWNERS db_fset shared/default-x-server seen false fi if ! expr "$OWNERS" : ".*,.*" >/dev/null 2>&1; then observe "\$OWNERS has only one value; shared/default-x-server will not be" \ "asked" fi # set a failsafe default answer for shared/default-x-server DEFAULT="$THIS_PACKAGE" # if configuring for the first time, ask if user wants to autodetect if [ -z "$RECONFIGURE" ]; then if which discover >/dev/null 2>&1; then set_db_priority "medium" auto_answer db_input "$PRIORITY" \ xserver-xfree86/autodetect_video_card "false" db_get xserver-xfree86/autodetect_video_card AUTODETECT_VIDEO_CARD="$RET" if [ "$AUTODETECT_VIDEO_CARD" = "true" ]; then if [ $NSERVERS -eq 0 ]; then observe "could not autodetect X server: no video card detected, or" \ "no server known for it" set_db_priority "high" run db_input "$PRIORITY" shared/no_known_x-server db_go elif [ $NSERVERS -eq 1 ]; then observe "autodetected X server: $SERVERS" if [ "$SERVERS" = "${THIS_SERVER##*/}" ]; then # the autodetected X server is the only one on the system, and the # one we're currently configuring; it's unlikely the user will want # to use something else set_db_priority "low" else observe "X server autodetected, but does not correspond to this" \ "package" # we do not set shared/default-x-server here, because the # autodetected X server might not be getting installed fi elif [ $NSERVERS -gt 1 ]; then observe "could not autodetect X server: multiple servers for video" \ "cards" VIDEOCARD_SERVER_REPORT=$(echo "$DISCOVERED_VIDEO" \ | awk 'BEGIN { FS="\t"; printf " %-40s%20s\n .\n", "Detected Video Card", "Suggested X server" } { printf " %-50s%10s\n", $1, $2 } END { printf " .\n" }') # can't do this until there is a way to embed newlines into debconf # command streams :( # db_subst shared/multiple_possible_x-servers detected_cards \ # "$VIDEOCARD_SERVER_REPORT" observe "$VIDEOCARD_SERVER_REPORT" set_db_priority "high" run db_input "$PRIORITY" shared/multiple_possible_x-servers db_go fi else observe "user declined video card autodetection (server)" fi else observe "could not autodetect X server: discover not found" fi else observe "not prompting for video card autodetection; reconfiguring" fi # now the default-x-server question may be asked db_fget shared/default-x-server seen observe "seen flag of shared/default-x-server is $RET" observe "db_input $PRIORITY shared/default-x-server" auto_answer db_input $PRIORITY shared/default-x-server \ "$DEFAULT" } configure_xfree86_x_server () { # Ask debconf questions that determine what XF86Config-4 will look like. # TODO: This function should be broken up into several sub-functions, probably # roughly mapping to the Section elements of the XF86Config-4 file. We could # then construct a menu of available "functions", and give the user a lot more # flexibility in configuring the XFree86 X server with debconf. local bailout # If the XF86Config-4 configuration file is under manual control, do nothing. # Perform tests to determine if this is the case. # First, assume we're going to be configuring it. bailout= # Does the configuration file exist? if [ -e "$XF86CONFIG" ]; then # If so, check for the existence of the checksum file; if it doesn't exist, # the file is under manual control. if [ -e "$XF86CONFIG_CHECKSUM" ]; then # Compare the current and stored checksums; if they do not match, the # file is under manual control. if [ "$(md5sum "$XF86CONFIG")" != "$(cat "$XF86CONFIG_CHECKSUM")" ]; then observe "$XF86CONFIG file has been customized" bailout=yes fi else observe "no stored checksum available for $XF86CONFIG" bailout=yes fi fi # Bail out now if we're supposed to. if [ -n "$bailout" ]; then return 1 fi # if the XFree86 4.x X server configuration file already exists, it's not as # important to ask questions related to it (these questions "have a reasonable # default") PRIORITY_CEILING= if [ -e "$XF86CONFIG" ]; then observe "$XF86CONFIG file exists; capping configuration question" \ "priority at medium" PRIORITY_CEILING=medium fi # video driver selection # priority of xserver-xfree86/config/device/driver set_db_priority "high" DRIVER_DIR=/usr/X11R6/lib/modules/drivers # Build list of available video drivers, omitting the atimisc, r128, and # radeon sub-modules (the ati driver knows when and how to load these). # v4l is not a display driver, and dummy is for advanced users. DRIVER_LIST="$(echo $(find "$DRIVER_DIR" -name '*_drv.o' 2>/dev/null \ | sed 's|^.*/\(.*\)_drv\.o|\1|' \ | egrep -v '(atimisc|dummy|r128|radeon|v4l)' | sort) \ | sed 's/ /, /g')" if [ -z "$DRIVER_LIST" ]; then observe "no video driver modules found in $DRIVER_DIR" fi # Set a hard-coded module list (if necessary) and default driver module on an # architecture-specific basis. case "$ARCH" in alpha) DRIVER_LIST=${DRIVER_LIST:=ati, cirrus, glint, mga, nv, rendition, s3, s3virge, savage, siliconmotion, tdfx, tga, vga} DEFAULT_DRIVER=vga ;; arm|hppa) DRIVER_LIST=${DRIVER_LIST:=ati, chips, fbdev, glint, mga, nv, s3, s3virge, savage, sis, tdfx, trident, vga} DEFAULT_DRIVER=fbdev ;; hurd-i386) DRIVER_LIST=${DRIVER_LIST:=apm, ark, ati, chips, cirrus, cyrix, fbdev, glint, i128, i740, i810, imstt, mga, neomagic, newport, nsc, nv, rendition, s3, s3virge, savage, siliconmotion, sis, tdfx, tga, trident, tseng, vesa, vga, vmware} DEFAULT_DRIVER=vesa ;; i386) DRIVER_LIST=${DRIVER_LIST:=apm, ark, ati, chips, cirrus, cyrix, fbdev, glide, glint, i128, i740, i810, imstt, mga, neomagic, newport, nsc, nv, rendition, s3, s3virge, savage, siliconmotion, sis, tdfx, tga, trident, tseng, vesa, vga, vmware} DEFAULT_DRIVER=vesa ;; ia64) DRIVER_LIST=${DRIVER_LIST:=apm, ark, ati, chips, cirrus, cyrix, fbdev, glint, i128, i740, i810, imstt, mga, neomagic, newport, nv, rendition, s3, s3virge, savage, siliconmotion, sis, tdfx, tga, trident, tseng, vesa, vga, vmware} DEFAULT_DRIVER=fbdev ;; m68k|powerpc) DRIVER_LIST=${DRIVER_LIST:=ati, chips, fbdev, glint, imstt, mga, nv, s3, s3virge, savage, sis, tdfx, trident, vga} DEFAULT_DRIVER=fbdev ;; mips|mipsel) DRIVER_LIST=${DRIVER_LIST:=ati, chips, fbdev, glint, mga, newport, nv, s3, s3virge, savage, sis, tdfx, trident} DEFAULT_DRIVER=fbdev ;; sparc) DRIVER_LIST=${DRIVER_LIST:=apm, ark, ati, chips, cirrus, fbdev, glint, i128, i740, imstt, mga, neomagic, nv, rendition, s3virge, savage, siliconmotion, sunbw2, suncg14, suncg3, suncg6, sunffb, sunleo, suntcx, tdfx, trident, vesa, vga} DEFAULT_DRIVER=fbdev ;; *) internal_error "no driver list known for architecture $ARCH" ;; esac observe "available video driver list set to \"$DRIVER_LIST\"" # attempt to autodetect if which discover >/dev/null 2>&1; then if [ "$AUTODETECT_VIDEO_CARD" = "true" ]; then if [ $NDRIVERS -eq 0 ]; then observe "could not autodetect X server driver: no video card" \ "detected, or no driver known for it" elif [ $NDRIVERS -eq 1 ]; then observe "autodetected X server driver: $DRIVERS" set_db_priority "low" DEFAULT_DRIVER="$DRIVERS" elif [ $NDRIVERS -gt 1 ]; then observe "could not autodetect X server driver: multiple drivers for" \ "video cards" VIDEOCARD_DRIVER_REPORT=$(echo "$DISCOVERED_VIDEO" \ | awk 'BEGIN { FS="\t"; printf " %-30s%30s\n .\n", "Detected Video Card", "Suggested driver module" } { printf " %-50s%10s\n", $1, $3 } END { printf " .\n" }') # can't do this until there is a way to embed newlines into debconf # command streams :( # db_subst shared/multiple_possible_x-drivers detected_cards \ # "$VIDEOCARD_DRIVER_REPORT" observe "$VIDEOCARD_DRIVER_REPORT" set_db_priority "high" run db_input "$PRIORITY" xserver-xfree86/multiple_possible_x-drivers db_go fi else observe "user declined video card autodetection (driver)" fi else observe "could not autodetect X server driver: discover not found" fi db_subst xserver-xfree86/config/device/driver choices "$DRIVER_LIST" auto_answer db_input "$PRIORITY" \ xserver-xfree86/config/device/driver "$DEFAULT_DRIVER" # card identifier; try to set a sensible default DEFAULT= if [ -n "$NDRIVERS" ] && [ -n "$NCARDS" ] && [ $NDRIVERS -eq 1 ] \ && [ $NCARDS -eq 1 ]; then if which discover >/dev/null 2>&1; then if [ "$AUTODETECT_VIDEO_CARD" = "true" ]; then DEFAULT=$(echo "$DISCOVERED_VIDEO" | cut -f1) fi fi fi if [ -z "$DEFAULT" ]; then # fall back to some language-specific generic text # TODO: make this a read-only debconf template case "${LC_ALL:-${LC_MESSAGES:-$LANG}}" in ca_*) DEFAULT="Targeta de v�o gen�ca" ;; # da de_*) DEFAULT="Standardgrafikkarte" ;; es_*) DEFAULT="Tarjeta de v�o gen�ca" ;; fr_*) DEFAULT="Carte vid�g�rique" ;; gl_*) DEFAULT="Tarxeta de Video Xen�ca" ;; it_*) DEFAULT="Scheda video generica" ;; # ja # nl pt_BR) DEFAULT="Placa de V�o Gen�ca" ;; # ru # sv *) DEFAULT="Generic Video Card" ;; esac fi set_db_priority "low" # this question requires input validation MAY_BE_NULL= auto_answer validate_string_db_input "$PRIORITY" \ xserver-xfree86/config/device/identifier "$DEFAULT" # BusID set_db_priority "low" DEFAULT= if [ "$ARCH" = "powerpc" ] || [ "$MULTIHEAD" = "yes" ]; then if [ "$ARCH" = "powerpc" ]; then set_db_priority "medium" fi if [ "$MULTIHEAD" = "yes" ]; then set_db_priority "high" fi if which lspci >/dev/null 2>&1; then # try to guess the correct BusID VIDEO_CARD=$(LC_ALL=C lspci -n | grep "Class 0300:" | head -n 1 \ | cut -d\ -f1) if [ -n "$VIDEO_CARD" ]; then # we now have an entry in "hex:hex.hex" format, need # "PCI:decimal:decimal:decimal" BUS=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d: -f1) ) DEVICE=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d: -f2 | cut -d. -f1) ) FUNCTION=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d. -f2) ) DEFAULT=PCI:$BUS:$DEVICE:$FUNCTION fi fi fi # this question requires input validation if [ -n "$DEFAULT" ]; then auto_answer validate_bus_id_db_input "$PRIORITY" \ xserver-xfree86/config/device/bus_id "$DEFAULT" else run validate_bus_id_db_input "$PRIORITY" \ xserver-xfree86/config/device/bus_id fi set_db_priority "low" # this question requires input validation run validate_numeric_db_input "$PRIORITY" \ xserver-xfree86/config/device/video_ram # Use fbcon kernel interface? set_db_priority "high" case "$ARCH" in alpha|hurd-i386|i386) DEFAULT_USEFBDEV=false ;; *) DEFAULT_USEFBDEV=true ;; esac DEFAULT_USEFBDEV= # XXX: is this a good test for /proc being mounted? if [ -e /proc/self ]; then if [ -e /proc/fb ]; then FB_TYPE="$(grep '^0 ' /proc/fb | sed 's/[^[:space:]] //')" observe "/proc/fb reports framebuffer type \"$FB_TYPE\"" # did we actually get back anything? if [ -n "$FB_TYPE" ]; then set_db_priority "medium" case "$FB_TYPE" in OFfb|VESA) observe "this framebuffer type does not support UseFBDev" DEFAULT_USEFBDEV=false ;; *) # other framebuffers do support UseFBDev DEFAULT_USEFBDEV=true ;; esac fi else observe "/proc/fb does not exist; assuming fbcon not in use" fi else observe "/proc not mounted; cannot determine if fbcon in use" fi # re-set the default answer to false if need be run db_get xserver-xfree86/config/device/use_fbdev if [ "$RET" = "true" ] && [ "$DEFAULT_USEFBDEV" = "false" ]; then observe "xserver-xfree86/config/device/use_fbdev is \"true\" but" \ "/proc/fb does not exist, is empty, or reports a framebuffer" \ "type with which UseFBDev cannot be used; setting template to" \ "\"false\"" db_set xserver-xfree86/config/device/use_fbdev false fi auto_answer db_input "$PRIORITY" xserver-xfree86/config/device/use_fbdev \ "$DEFAULT_USEFBDEV" # keyboard setup # TODO: query of debian-installer's keyboard configuration debconf template # goes here # these questions require input validation set_db_priority "medium" if [ "$ARCH" = "sparc" ]; then DEFAULT=sun else DEFAULT=xfree86 fi MAY_BE_NULL= auto_answer validate_string_db_input \ "$PRIORITY" \ xserver-xfree86/config/inputdevice/keyboard/rules "$DEFAULT" db_get xserver-xfree86/config/inputdevice/keyboard/rules if [ "$RET" = "sun" ]; then DEFAULT=type5 elif [ "$RET" = "xfree86" ]; then if [ "$ARCH" = "powerpc" ]; then DEFAULT=macintosh # good old-fashioned BRAIN DAMAGE if [ -e /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes ]; then if [ "$(cat /proc/sys/dev/mac_hid/keyboard_sends_linux_keycodes)" \ = "0" ]; then DEFAULT=macintosh_old fi fi else DEFAULT=pc104 fi fi MAY_BE_NULL= auto_answer validate_string_db_input \ "$PRIORITY" \ xserver-xfree86/config/inputdevice/keyboard/model "$DEFAULT" MAY_BE_NULL= auto_answer validate_string_db_input \ "$PRIORITY" \ xserver-xfree86/config/inputdevice/keyboard/layout "us" db_get xserver-xfree86/config/inputdevice/keyboard/layout if [ "$RET" != "us" ]; then set_db_priority "medium" else set_db_priority "low" fi MAY_BE_NULL=yes validate_string_db_input \ "$PRIORITY" \ xserver-xfree86/config/inputdevice/keyboard/variant MAY_BE_NULL=yes validate_string_db_input \ "$PRIORITY" \ xserver-xfree86/config/inputdevice/keyboard/options # mouse device detection # priority of xserver-xfree86/config/inputdevice/mouse/{port,protocol} set_db_priority "high" AUTODETECTED_PORT= AUTODETECTED_PROTOCOL= # determine if we're using devfs if [ -c /dev/.devfsd ]; then USING_DEVFS=true else USING_DEVFS= fi if [ -n "$USING_DEVFS" ]; then MOUSE_PORT_CHOICES="/dev/misc/psaux, /dev/tts/0, /dev/tts/1, /dev/tts/2, /dev/tts/3, /dev/input/mice, /dev/misc/atixl, /dev/gpmdata" DEFAULT_PORT="/dev/misc/psaux" else MOUSE_PORT_CHOICES="/dev/psaux, /dev/ttyS0, /dev/ttyS1, /dev/ttyS2, /dev/ttyS3, /dev/input/mice, /dev/atibm, /dev/sunmouse, /dev/gpmdata" DEFAULT_PORT="/dev/psaux" fi # if configuring for the first time, ask if user wants to autodetect if [ -z "$RECONFIGURE" ]; then while :; do # bail out if autodetection tool not available which mdetect >/dev/null 2>&1 || break auto_answer db_input "$PRIORITY" \ xserver-xfree86/autodetect_mouse "false" db_get xserver-xfree86/autodetect_mouse if [ "$RET" = "true" ]; then MDETECT_OUTPUT=$(run mdetect -x) if [ -n "$MDETECT_OUTPUT" ]; then if [ $(echo "$MDETECT_OUTPUT" | wc -l) -ne 2 ]; then observe "bug in mdetect; did not return two lines of output" break fi AUTODETECTED_PORT=$(echo "$MDETECT_OUTPUT" | head -n 1) AUTODETECTED_PROTOCOL=$(echo "$MDETECT_OUTPUT" | tail -n 1) observe "mdetect returned port \"$AUTODETECTED_PORT\"; protocol" \ "\"$AUTODETECTED_PROTOCOL\"" if [ -n "$AUTODETECTED_PORT" ]; then # /dev/input/mouse* means we autodetected a USB pointer; we will # store /dev/input/mice instead. if expr "$AUTODETECTED_PORT" : "/dev/input/mouse.*" >/dev/null \ 2>&1; then AUTODETECTED_PORT="/dev/input/mice" fi else observe "bug in mdetect: returned nothing for mouse port" break fi if [ -z "$AUTODETECTED_PROTOCOL" ]; then observe "bug in mdetect: returned nothing for mouse protocol" break fi else observe "mdetect returned no output; unable to autodetect mouse" # permit user to retry, but set to false in the case question doesn't # get asked (for noninteractive configuration) db_set xserver-xfree86/autodetect_mouse "false" fi if [ -n "$AUTODETECTED_PORT" ] && [ -n "$AUTODETECTED_PROTOCOL" ]; then set_db_priority "medium" break # port and protocol determined fi else observe "user declined mouse autodetection" break # bail out; autodetection not desired fi done else observe "not prompting for mouse autodetection; reconfiguring" fi db_subst xserver-xfree86/config/inputdevice/mouse/port choices \ "$MOUSE_PORT_CHOICES" auto_answer db_input "$PRIORITY" \ xserver-xfree86/config/inputdevice/mouse/port \ "${AUTODETECTED_PORT:-$DEFAULT_PORT}" db_get xserver-xfree86/config/inputdevice/mouse/port case "$RET" in *psaux) MOUSE_PROTOCOL_CHOICES="PS/2, ImPS/2, GlidePointPS/2, NetMousePS/2, NetScrollPS/2, ThinkingMousePS/2, MouseManPlusPS/2, ExplorerPS/2" DEFAULT_PROTOCOL="PS/2" ;; *ttyS*|*tts/*) MOUSE_PROTOCOL_CHOICES="Auto, Microsoft, MouseSystems, GlidePoint, ThinkingMouse, MouseMan, Logitech, IntelliMouse, MMSeries, MMHitTab" DEFAULT_PROTOCOL="Auto" ;; *input/mice) MOUSE_PROTOCOL_CHOICES="ImPS/2" DEFAULT_PROTOCOL="ImPS/2" ;; *atibm|*atixl|*sunmouse) MOUSE_PROTOCOL_CHOICES="BusMouse" DEFAULT_PROTOCOL="BusMouse" ;; *gpmdata) MOUSE_PROTOCOL_CHOICES="IntelliMouse" DEFAULT_PROTOCOL="IntelliMouse" ;; esac db_subst xserver-xfree86/config/inputdevice/mouse/protocol choices \ "$MOUSE_PROTOCOL_CHOICES" if ! expr "$MOUSE_PROTOCOL_CHOICES" : ".*,.*" >/dev/null 2>&1; then observe "\$MOUSE_PROTOCOL_CHOICES has only one value; setting" \ "xserver-xfree86/config/inputdevice/mouse/protocol to" \ "\"$DEFAULT_PROTOCOL\"" db_set xserver-xfree86/config/inputdevice/mouse/protocol "$DEFAULT_PROTOCOL" else auto_answer db_input "$PRIORITY" \ xserver-xfree86/config/inputdevice/mouse/protocol \ "${AUTODETECTED_PROTOCOL:-$DEFAULT_PROTOCOL}" fi set_db_priority "low" run db_input "$PRIORITY" \ xserver-xfree86/config/inputdevice/mouse/emulate3buttons run db_input "$PRIORITY" \ xserver-xfree86/config/inputdevice/mouse/zaxismapping db_go # monitor setup set_db_priority "high" DEFAULT_HORIZ_SYNC="28-50" DEFAULT_VERT_REFRESH="43-75" db_fget xserver-xfree86/config/monitor/identifier seen if [ "$RET" = "false" ]; then observe "xserver-xfree86/config/monitor/identifier has not been seen" fi db_get xserver-xfree86/config/monitor/identifier observe "xserver-xfree86/config/monitor/identifier is already set to \"$RET\"" # The horiz-sync and vert-refresh questions may have answers even though they # haven't been seen; autodetection, pre-loading, and the simple and medium # selection methods can fill them in. db_fget xserver-xfree86/config/monitor/horiz-sync seen if [ "$RET" = "false" ]; then observe "xserver-xfree86/config/monitor/horiz-sync has not been seen" fi db_get xserver-xfree86/config/monitor/horiz-sync observe "xserver-xfree86/config/monitor/horiz-sync is already set to \"$RET\"" db_fget xserver-xfree86/config/monitor/vert-refresh seen if [ "$RET" = "false" ]; then observe "xserver-xfree86/config/monitor/vert-refresh has not been seen" fi db_get xserver-xfree86/config/monitor/vert-refresh observe "xserver-xfree86/config/monitor/vert-refresh is already set to" \ "\"$RET\"" # if configuring for the first time, ask if user wants to autodetect if [ -z "$RECONFIGURE" ]; then if which get-edid >/dev/null 2>&1; then auto_answer db_input "$PRIORITY" \ xserver-xfree86/autodetect_monitor "false" db_get xserver-xfree86/autodetect_monitor if [ "$RET" = "true" ]; then set +e EDID_DUMP=$( (get-edid | parse-edid) 2>/dev/null) set -e if [ $? -eq 0 ]; then # quite crude MONITOR_IDENTIFIER=$(echo "$EDID_DUMP" | grep Identifier \ | cut -f2 -d\") if [ -n "$MONITOR_IDENTIFIER" ]; then observe "get-edid reports monitor identifier of" \ "\"$MONITOR_IDENTIFIER\"" DEFAULT_MONITOR_IDENTIFIER="$MONITOR_IDENTIFIER" else observe "got null monitor identifier from get-edid" fi # even cruder HORIZ_SYNC=$(echo "$EDID_DUMP" | grep HorizSync | awk '{print $2}') VERT_REFRESH=$(echo "$EDID_DUMP" | grep VertRefresh \ | awk '{print $2}') # get-edid may succeed but be unable to return info anyway if [ -n "$HORIZ_SYNC" ]; then observe "get-edid reports horizonal sync of \"$HORIZ_SYNC\"" DEFAULT_HORIZ_SYNC="$HORIZ_SYNC" else observe "get-edid returned blank hsync" fi if [ -n "$VERT_REFRESH" ]; then observe "get-edid reports vertical refresh of \"$VERT_REFRESH\"" DEFAULT_VERT_REFRESH="$VERT_REFRESH" else observe "get-edid returned blank vrefresh" fi else observe "get-edid returned an error" fi else observe "user declined monitor autodetection" fi else observe "could not autodetect monitor frequencies; get-edid not found" fi else observe "not prompting for monitor autodetection; reconfiguring" fi # priority of xserver-xfree86/config/monitor/identifier set_db_priority "low" # monitor identifier; try to set a sensible default if [ -n "$DEFAULT_MONITOR_IDENTIFIER" ]; then DEFAULT="$DEFAULT_MONITOR_IDENTIFIER" else # fall back to some language-specific generic text # TODO: make this a read-only debconf template case "${LC_ALL:-${LC_MESSAGES:-$LANG}}" in ca_*) DEFAULT="Monitor gen�c" ;; # da de_*) DEFAULT="Standardbildschirm" ;; es_*) DEFAULT="Monitor gen�co" ;; # fr # gl it_*) DEFAULT="Monitor Generico" ;; # ja # nl pt_BR) DEFAULT="Monitor Gen�co" ;; # ru # sv *) DEFAULT="Generic Monitor" ;; esac fi # this question requires input validation MAY_BE_NULL= auto_answer validate_string_db_input \ "$PRIORITY" xserver-xfree86/config/monitor/identifier \ "$DEFAULT" # priority of xserver-xfree86/config/monitor/selection-method set_db_priority "medium" if [ -n "$HORIZ_SYNC" ] && [ -n "$VERT_REFRESH" ]; then observe "\$HORIZ_SYNC: \"$HORIZ_SYNC\" ; \$VERT_REFRESH:" \ "\"$VERT_REFRESH\"; setting question priority to low" set_db_priority "low" else observe "at least of one of hsync \"$HORIZ_SYNC\" or vrefresh" \ "\"$VERT_REFRESH\" is null; not setting question priority to low" fi observe "monitor hsync and vrefresh question priority is $PRIORITY" auto_answer db_input "$PRIORITY" \ xserver-xfree86/config/monitor/lcd "false" db_get xserver-xfree86/config/monitor/lcd observe "xserver-xfree86/config/monitor/lcd is $RET" MONITOR_IS_LCD="$RET" if [ "$RET" = "true" ]; then db_subst xserver-xfree86/config/monitor/selection-method choices \ "Medium, Advanced" else # not an LCD db_subst xserver-xfree86/config/monitor/selection-method choices \ "Simple, Medium, Advanced" fi # Flat panels are more and more common, so set the default to medium. db_subst xserver-xfree86/config/monitor/selection-method default "Medium" run db_input "$PRIORITY" xserver-xfree86/config/monitor/selection-method # priority of xserver-xfree86/config/monitor/{several things} set_db_priority "high" db_get xserver-xfree86/config/monitor/selection-method case "$RET" in Simple) run db_input "$PRIORITY" \ xserver-xfree86/config/monitor/screen-size db_go db_get xserver-xfree86/config/monitor/screen-size case "$RET" in 'Up to 14 inches (355 mm)') db_set xserver-xfree86/config/monitor/horiz-sync "28-33" db_set xserver-xfree86/config/monitor/vert-refresh "43-72" ;; '15 inches (380 mm)') db_set xserver-xfree86/config/monitor/horiz-sync "28-50" db_set xserver-xfree86/config/monitor/vert-refresh "43-75" ;; '17 inches (430 mm)') db_set xserver-xfree86/config/monitor/horiz-sync "30-70" db_set xserver-xfree86/config/monitor/vert-refresh "50-160" ;; '19-20 inches (480-510 mm)') db_set xserver-xfree86/config/monitor/horiz-sync "30-100" db_set xserver-xfree86/config/monitor/vert-refresh "50-160" ;; '21 inches (530 mm) or more') db_set xserver-xfree86/config/monitor/horiz-sync "30-130" db_set xserver-xfree86/config/monitor/vert-refresh "50-160" ;; esac ;; Medium) run db_input "$PRIORITY" \ xserver-xfree86/config/monitor/mode-list db_go db_get xserver-xfree86/config/monitor/mode-list case "$RET" in "640x480 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "28-33" db_set xserver-xfree86/config/monitor/vert-refresh "43-72" DEFAULT_MODES="640x480" ;; "640x480 @ 72Hz") db_set xserver-xfree86/config/monitor/horiz-sync "28-38" db_set xserver-xfree86/config/monitor/vert-refresh "43-72" DEFAULT_MODES="640x480" ;; "800x600 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "28-38" db_set xserver-xfree86/config/monitor/vert-refresh "43-72" DEFAULT_MODES="800x600" ;; "800x600 @ 72Hz") db_set xserver-xfree86/config/monitor/horiz-sync "28-48" db_set xserver-xfree86/config/monitor/vert-refresh "43-72" DEFAULT_MODES="800x600" ;; "800x600 @ 85Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-54" db_set xserver-xfree86/config/monitor/vert-refresh "50-85" DEFAULT_MODES="800x600" ;; "1024x768 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "28-49" db_set xserver-xfree86/config/monitor/vert-refresh "43-72" DEFAULT_MODES="1024x768" ;; "1024x768 @ 70Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-57" db_set xserver-xfree86/config/monitor/vert-refresh "43-72" DEFAULT_MODES="1024x768" ;; "1024x768 @ 75Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-60" db_set xserver-xfree86/config/monitor/vert-refresh "50-75" DEFAULT_MODES="1024x768" ;; "1152x864 @ 75Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-68" db_set xserver-xfree86/config/monitor/vert-refresh "50-85" DEFAULT_MODES="1152x864" ;; "1280x960 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-60" db_set xserver-xfree86/config/monitor/vert-refresh "50-75" DEFAULT_MODES="1280x960" ;; "1280x960 @ 85Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-92" db_set xserver-xfree86/config/monitor/vert-refresh "50-85" DEFAULT_MODES="1280x960" ;; "1600x1200 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-75" db_set xserver-xfree86/config/monitor/vert-refresh "50-85" DEFAULT_MODES="1600x1200" ;; "1600x1200 @ 75Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-94" db_set xserver-xfree86/config/monitor/vert-refresh "50-75" DEFAULT_MODES="1600x1200" ;; "1600x1200 @ 85Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-107" db_set xserver-xfree86/config/monitor/vert-refresh "50-85" DEFAULT_MODES="1600x1200" ;; "1792x1344 @ 75Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-107" db_set xserver-xfree86/config/monitor/vert-refresh "50-85" DEFAULT_MODES="1792x1344" ;; "1792x1344 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-84" db_set xserver-xfree86/config/monitor/vert-refresh "50-75" DEFAULT_MODES="1792x1344" ;; "1856x1392 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-87" db_set xserver-xfree86/config/monitor/vert-refresh "50-75" DEFAULT_MODES="1856x1392" ;; "1856x1392 @ 75Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-113" db_set xserver-xfree86/config/monitor/vert-refresh "50-75" DEFAULT_MODES="1856x1392" ;; "1920x1440 @ 60Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-90" db_set xserver-xfree86/config/monitor/vert-refresh "50-75" DEFAULT_MODES="1920x1440" ;; "1920x1440 @ 75Hz") db_set xserver-xfree86/config/monitor/horiz-sync "30-130" db_set xserver-xfree86/config/monitor/vert-refresh "60-160" DEFAULT_MODES="1920x1440" ;; esac ;; Advanced) auto_answer validate_monitor_frequency_db_input \ "$PRIORITY" \ xserver-xfree86/config/monitor/horiz-sync "28-50" auto_answer validate_monitor_frequency_db_input \ "$PRIORITY" \ xserver-xfree86/config/monitor/vert-refresh "43-75" ;; esac # Configure available video modes. For certain drivers we will override any # existing value of $DEFAULT_MODES, because they only support certain modes. # Otherwise, the existing value of $DEFAULT_MODES is preserved. db_get xserver-xfree86/config/device/driver case "$RET" in newport) DEFAULT_DEPTH=8 DEFAULT_MODES="1280x1024" ;; vga) DEFAULT_DEPTH=4 DEFAULT_MODES="640x480" ;; *) DEFAULT_DEPTH=24 DEFAULT_MODES=${DEFAULT_MODES:="800x600, 640x480"} ;; esac observe "\"xserver-xfree86/config/device/driver\" is \"$RET\"; set default" \ "color depth to $DEFAULT_DEPTH and available video modes to" \ "\"$DEFAULT_MODES\"" set_db_priority "medium" # list of desired display modes auto_answer db_input "$PRIORITY" xserver-xfree86/config/display/modes \ "$DEFAULT_MODES" # default display depth auto_answer db_input "$PRIORITY" \ xserver-xfree86/config/display/default_depth "$DEFAULT_DEPTH" # server modules to load db_get xserver-xfree86/config/device/driver set_db_priority "low" db_input "$PRIORITY" xserver-xfree86/config/modules db_go # files and dri sections run db_input "$PRIORITY" xserver-xfree86/config/write_files_section run db_input "$PRIORITY" xserver-xfree86/config/write_dri_section db_go } # analyze arguments; used by auto_answer() if [ "$1" = "reconfigure" ] || [ -n "$2" ]; then # if we are reconfiguring, or already have installed the package at least # once before, we should not let auto_answer stomp on existing answers to # debconf questions observe "package being reconfigured" RECONFIGURE=true else RECONFIGURE= fi # migrate from old select-type templates for TEMPLATE in xserver-xfree86/config/inputdevice/mouse/emulate3buttons \ xserver-xfree86/config/inputdevice/mouse/zaxismapping; do db_get "$TEMPLATE" if [ "$RET" = "Yes" ]; then observe "migrating template \"$TEMPLATE\" from \"Yes\" to \"true\"" db_set $TEMPLATE "true" elif [ "$RET" = "No" ]; then observe "migrating template \"$TEMPLATE\" from \"No\" to \"false\"" db_set $TEMPLATE "false" fi done # migrate from "expert" to "advanced" db_get xserver-xfree86/config/monitor/selection-method if [ "$RET" = "Expert" ]; then observe "migrating template" \ "\"xserver-xfree86/config/monitor/selection-method\" from" \ "\"Expert\" to \"Advanced\"" db_set xserver-xfree86/config/monitor/selection-method "Advanced" fi # migrate to XFree86 4.2 or later, where there are no pex or xie modules db_get xserver-xfree86/config/modules SELECTED_MODULES="$(echo $RET | awk 'BEGIN { RS=", "} {print $1}')" # are the pex or xie modules selected? if echo "$SELECTED_MODULES" | egrep -q "(pex|xie)"; then observe "removing pex and xie modules from list of selected modules" observe "old value of template \"xserver-xfree86/config/modules\": \"$RET\"" # get rid of them SELECTED_MODULES=$(echo "$SELECTED_MODULES" | egrep -v "(pex|xie)") SELECTED_MODULES=$(echo $SELECTED_MODULES | sed 's/ /, /g') db_set xserver-xfree86/config/modules "$SELECTED_MODULES" db_get xserver-xfree86/config/modules observe "new value of template \"xserver-xfree86/config/modules\": \"$RET\"" fi # migrate from ATI driver sub-modules to ATI driver db_get xserver-xfree86/config/device/driver case "$RET" in atimisc|r128|radeon) observe "migrating template \"xserver-xfree86/config/device/driver\" from" \ "\"$RET\" to \"ati\"" db_set xserver-xfree86/config/device/driver "ati" ;; *) ;; esac # The only supported protocol (per Zephaniah Hull) for the GPM repeater is # IntelliMouse; migrate anyone using that mouse device to that protocol. Other # values used to work as well, but no longer do since the XFree86 mouse driver # was rewritten for XFree86 4.3.0. See Debian bug #233933 for more details. db_get xserver-xfree86/config/inputdevice/mouse/port if [ "$RET" = "/dev/gpmdata" ]; then db_get xserver-xfree86/config/inputdevice/mouse/protocol if [ "$RET" != "IntelliMouse" ]; then observe "migrating template" \ "\"xserver-xfree86/config/inputdevice/mouse/protocol\" from" \ "\"$RET\" to \"IntelliMouse\"" db_set xserver-xfree86/config/inputdevice/mouse/protocol "IntelliMouse" fi fi # collect information about installed video card(s), if possible if which discover >/dev/null 2>&1; then DISCOVERED_VIDEO=$(discover_video) if [ -n "$DISCOVERED_VIDEO" ]; then NCARDS=$(echo "$DISCOVERED_VIDEO" | wc -l | tr -d '[:blank:]') SERVERS=$(echo "$DISCOVERED_VIDEO" | cut -f2 | grep -v unknown | sort -u) NSERVERS=$(echo "$SERVERS" | wc -l | tr -d '[:blank:]') DRIVERS=$(echo "$DISCOVERED_VIDEO" | cut -f3 | grep -v unknown | sort -u) NDRIVERS=$(echo "$DRIVERS" | wc -l | tr -d '[:blank:]') if [ $NCARDS -gt 1 ]; then MULTIHEAD=yes fi else observe "discover reported nothing" fi else observe "discover command not available" fi # select default X server SKIP_XFREE86_X_SERVER_CONFIG= if select_default_x_server; then # is this the selected X server? db_get shared/default-x-server if [ "$RET" != "$THIS_PACKAGE" ]; then # nothing else to do in this script observe "skipping further configuration of $THIS_PACKAGE; it is not the" \ "default X server package" SKIP_XFREE86_X_SERVER_CONFIG=yes fi else if [ -n "$RECONFIGURE" ]; then warn "not reconfiguring default X server; manual modifications have been" \ "made --- please see /usr/share/doc/xfree86-common/FAQ.gz" else observe "not configuring default X server; manual modifications have been" \ "made --- please see /usr/share/doc/xfree86-common/FAQ.gz" fi fi # configure XFree86 X server # Do not be tempted to move this into the "if select_default_x_server" block # above; we want to permit the user to reconfigure the XF86Config-4 file even if # the default X server is being handled manually. if [ -z "$SKIP_XFREE86_X_SERVER_CONFIG" ]; then if ! configure_xfree86_x_server; then if [ -n "$RECONFIGURE" ]; then warn "not reconfiguring XFree86 X server; manual modifications have" \ "been made --- please see /usr/share/doc/xfree86-common/FAQ.gz" else observe "not configuring XFree86 X server; manual modifications have" \ "been made --- please see /usr/share/doc/xfree86-common/FAQ.gz" fi fi fi exit 0 # vim:set ai et sts=2 sw=2 tw=80:
Attachment:
signature.asc
Description: Digital signature