On Tue, Jan 06, 2004 at 10:27:56PM -0500, Joey Hess wrote: > Branden Robinson wrote: > > On Tue, Jan 06, 2004 at 12:52:36AM +0100, Michel Dänzer wrote: > > > On Sun, 2004-01-04 at 23:34, Joey Hess wrote: > > > > > > > > If read-edid fails to determine the card type, the question, in > > > > debconf's default dialog frontend, defaults to the first item in the > > > > list, "apm". This does not seem like a good fallback default. Perhaps > > > > "vesa" or "vga" would be a reasonable thing to default to if the card > > > > cannot be detected; something that will probably work, even if not that > > > > well, if the user takes the default. > > > > > > Beware that neither of these work on Macs, nor on most non-PC hardware I > > > suspect. fbdev is another fallback for when /proc/fb exists (and is > > > non-empty?). > > > > Don't worry; in debian-installer land, all the world's an i386. :) > > Well, in my world at least, scripts are allowed to check the > architecture of the host they are running on.
I'm preparing a commit to SVN that has the following: # 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" This looks to me like it will satisfy your request. Comments? -- G. Branden Robinson | I am sorry, but what you have Debian GNU/Linux | mistaken for malicious intent is [EMAIL PROTECTED] | nothing more than sheer http://people.debian.org/~branden/ | incompetence! -- J. L. Rizzo II
signature.asc
Description: Digital signature