retitle 229850 xserver-xfree86: [debconf] monitor selection methods need to be more careful about clobbering autodetected monitor sync ranges tag 229850 - moreinfo thanks
On Sat, Apr 24, 2004 at 07:07:02PM -0400, Jay Berkenbilt wrote: > With this patch to xserver-xfree86.config [...] Thanks a lot for your comprehensive feedback. I agree that the config script logic needs another look in the monitor department, and I will give your patch very serious consideration. That is, I can't remember why I did things the way they are done presently, and that's bad. I either need to document why your patch is the wrong approach, or apply it. :) If you're curious, I am attaching the current work-in-progress rewrite of the config script. I've been working on this off and on for a week or so. If you'd like to play around it with it, that would be great, but you've more than done your part with your followups to date. Thank you very much! -- G. Branden Robinson | Kissing girls is a goodness. It is Debian GNU/Linux | a growing closer. It beats the [EMAIL PROTECTED] | hell out of card games. http://people.debian.org/~branden/ | -- Robert Heinlein
#!/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�deo gen�rica" ;; # da de_*) DEFAULT="Standardgrafikkarte" ;; es_*) DEFAULT="Tarjeta de v�deo gen�rica" ;; fr_*) DEFAULT="Carte vid�o g�n�rique" ;; gl_*) DEFAULT="Tarxeta de Video Xen�rica" ;; it_*) DEFAULT="Scheda video generica" ;; # ja # nl pt_BR) DEFAULT="Placa de V�deo Gen�rica" ;; # 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�ric" ;; # da de_*) DEFAULT="Standardbildschirm" ;; es_*) DEFAULT="Monitor gen�rico" ;; # fr # gl it_*) DEFAULT="Monitor Generico" ;; # ja # nl pt_BR) DEFAULT="Monitor Gen�rico" ;; # 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:
signature.asc
Description: Digital signature