xorg: Changes to 'ubuntu'
debian/changelog | 14 +
debian/local/Failsafe/failsafeDexconf | 335 +++++++++++++++++++++-------------
debian/local/Failsafe/failsafeXServer | 18 +
3 files changed, 235 insertions(+), 132 deletions(-)
New commits:
commit 20c9c0a41dfe9fa3ece88b5d097272369f316333
Author: Bryce Harrington <bryce@bryceharrington.org>
Date: Fri Sep 19 16:02:30 2008 -0700
Resync failsafeDexconf to dexconf. Switch keyboard/mouse handling over
to input-hotplug.
diff --git a/debian/changelog b/debian/changelog
index d76a5c7..a0e66d8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,14 @@
xorg (1:7.4~2ubuntu4) UNRELEASED; urgency=low
- * local/Failsafe/failsafeXServer: 'discover' is no longer used, so
- disable the pci-id based detection of alternate fallback driver, since
- without discover it just uses 'vesa'. Going forward, we'll probably
- just have the X server do the fallback on its own. (LP: 272086)
-
- -- Bryce Harrington <bryce@ubuntu.com> Fri, 19 Sep 2008 13:28:43 -0700
+ * local/Failsafe/failsafeXServer:
+ - 'discover' is no longer used, so disable the pci-id based detection
+ of alternate fallback driver. (LP: #272086)
+ - Add detection of ppc hardware and prefer 'fbdev' instead of 'vesa'
+ in this case (LP: #155685)
+ * local/Failsafe/failsafeDexconf:
+ - Re-sync with dexconf; use input-hotplug for devices. (LP: #227818)
+
+ -- Bryce Harrington <bryce@ubuntu.com> Fri, 19 Sep 2008 16:01:43 -0700
xorg (1:7.4~2ubuntu3) intrepid; urgency=low
diff --git a/debian/local/Failsafe/failsafeDexconf b/debian/local/Failsafe/failsafeDexconf
index 6b08ec5..ff51c5d 100755
--- a/debian/local/Failsafe/failsafeDexconf
+++ b/debian/local/Failsafe/failsafeDexconf
@@ -1,16 +1,14 @@
#!/bin/sh
-# failsafeDexconf: Debian X server configuration file writer for failsafe X mode
+# dexconf: Debian X server configuration file writer for failsafe mode
#
-# This tool is a backend which uses debconf database values along with
-# some overrides for running X in vesa (or vga) modes. It outputs an
-# XFree86 X server configuration file based on the information in the
-# database.
+# This tool is a backend which uses debconf database values. It writes an
+# XFree86 X server configuration file based on the information in the database.
#
# This script is derived from the dexconf program, written by
-# Branden Robinson.
+# Branden Robinson
-# Copyright 2007 Canonical, Ltd.
+# Copyright 2007--2008 Canonical, Ltd.
# Copyright 2000--2004 Progeny Linux Systems, Inc.
#
# This is free software; you may redistribute it and/or modify
@@ -28,16 +26,27 @@
# not, write to the Free Software Foundation, Inc., 59 Temple Place,
# Suite 330, Boston, MA 02111-1307 USA
-DEVICE_DRIVER=${1:-"vesa"}
-OUTFILE=${2:-"/etc/X11/xorg.conf.failsafe"}
-SERVER="xorg"
+set -e
# source debconf library
. /usr/share/debconf/confmodule
+# display a usage message
+usage () {
+ cat <<EOF
+Usage: $PROGNAME [OPTION ...]
+ write an Xorg X server configuration file based on debconf database values
+Options:
+ -h, --help display this usage message and exit
+ -o FILE, --output=FILE write configuration file to FILE
+This help message is intended only as a quick reference. For a description of
+the usage of $PROGNAME, see the $PROGNAME(1) manual page.
+EOF
+}
+
# the error-out function
bomb () {
- echo "$PROGNAME: error: $*" | fold -s -w "${COLUMNS:-80}" 1>&2
+ echo "$PROGNAME: error: $*" | fold -s -w "${COLUMNS:-80}" >&2
exit 1
}
@@ -53,163 +62,243 @@ fetch () {
fi
}
-if [ -e ${OUTFILE} ]; then
- if [ ! -w ${OUTFILE} ]; then
- bomb "Cannot write to existing ${OUTFILE}"
- else
- mv ${OUTFILE} ${OUTFILE}.bak
- cat /dev/null > ${OUTFILE}
- fi
-fi
-
-if which laptop-detect >/dev/null 2>&1; then
- if laptop-detect > /dev/null ; then
- LAPTOP=true
- fi
-fi
+# convert a debconf comma-delimited list to a shell whitespace-delimited list
+list_convert () {
+ echo $(IFS=", "; set -- $RET; while [ $# -gt 0 ]; do echo \"$1\"; shift; done)
+}
-### HEADER
+SERVER="xorg"
+XF86CONFIG=/etc/X11/xorg.conf.failsafe
+PROGNAME=${0##*/}
+SHOWHELP=
+EARLYEXIT=
-# Because debconf hijacks standard output and its confmodule uses file
-# descriptor 3 for its own purposes, we will write our output to file descriptor
-# 4 instead of standard output.
+GETOPT_OUTPUT=$(getopt --options ho: \
+ --longoptions help,output: \
+ -n "$PROGNAME" -- "$@")
-cat <<SECTION >> ${OUTFILE}
-# xorg.conf (X.Org X Window System server configuration file)
-#
-# This file was generated by failsafeDexconf, using
-# values from the debconf database and some overrides to use vesa mode.
-#
-# You should use dexconf or another such tool for creating a "real" xorg.conf
-# For example:
-# sudo dpkg-reconfigure -phigh xserver-xorg
-SECTION
+if [ $? -ne 0 ]; then
+ bomb "error while getting options; use \"$PROGNAME --help\" for help"
+fi
-### KEYBOARD / INPUTDEVICE
-
-fetch xserver-$SERVER/config/inputdevice/keyboard/rules
-XKB_RULES="$RET"
-fetch xserver-$SERVER/config/inputdevice/keyboard/model
-XKB_MODEL="$RET"
-fetch xserver-$SERVER/config/inputdevice/keyboard/layout
-XKB_LAYOUT="$RET"
-# XkbVariant and XkbOptions are permitted to be null.
-db_get xserver-$SERVER/config/inputdevice/keyboard/variant
-XKB_VARIANT="$RET"
-db_get xserver-$SERVER/config/inputdevice/keyboard/options
-XKB_OPTIONS="$RET"
-
-cat <<SECTION >> ${OUTFILE}
-Section "InputDevice"
- Identifier "Generic Keyboard"
- Driver "kbd"
- Option "XkbRules" "$XKB_RULES"
- Option "XkbModel" "$XKB_MODEL"
- Option "XkbLayout" "$XKB_LAYOUT"
-SECTION
-if [ -n "$XKB_VARIANT" ]; then
- printf "\tOption\t\t\"XkbVariant\"\t\"$XKB_VARIANT\"\n" >> ${OUTFILE}
+eval set -- "$GETOPT_OUTPUT"
+
+while :; do
+ case "$1" in
+ -f|--format)
+ bomb "This option, and XFree86 3.x output, are no longer supported."
+ ;;
+ -h|--help) SHOWHELP=yes EARLYEXIT=yes ;;
+ -o|--output) XF86CONFIG="$2"; shift ;;
+ --) shift; break ;;
+ *)
+ bomb "unrecognized option \"$1\"; use \"$PROGNAME --help\" for help"
+ ;;
+ esac
+ shift
+done
+
+if [ -n "$SHOWHELP" ]; then
+ usage
fi
-if [ -n "$XKB_OPTIONS" ]; then
- printf "\tOption\t\t\"XkbOptions\"\t\"$XKB_OPTIONS\"\n" >> ${OUTFILE}
+
+if [ -n "$EARLYEXIT" ]; then
+ exit 0
fi
-printf "EndSection\n\n" >> ${OUTFILE}
-### MOUSE / INPUTDEVICE
+DEXCONFTMPDIR=
-DO_EMULATE3BUTTONS=
+trap 'if [ -e "$DEXCONFTMPDIR/backup" ] && [ -n "$XF86CONFIG" ]; then \
+ cat "$DEXCONFTMPDIR/backup" >"$XF86CONFIG"; \
+ fi; \
+ exec 4<&-; \
+ rm -rf "$DEXCONFTMPDIR"; \
+ bomb "received signal; aborting"' HUP INT QUIT TERM
-fetch xserver-$SERVER/config/inputdevice/mouse/emulate3buttons
-if [ "$RET" = "true" ]; then
- DO_EMULATE3BUTTONS=true
-fi
-MOUSE_DRIVER=mouse
-IS_VIRT=
-if which vmmouse_detect >/dev/null 2>&1; then
- if vmmouse_detect > /dev/null ; then
- MOUSE_DRIVER=vmmouse
- IS_VIRT=true
- fi
+# Set up a temporary directory for the files we'll be writing.
+TDIR_PARENT="${TMPDIR:-/tmp}"
+TDIR="${TMPDIR:-/tmp}/dexconf-tmp-$$"
+
+if [ ! -d "$TDIR_PARENT" ]; then
+ bomb "cannot create temporary work directory; \"$TDIR_PARENT\" does not" \
+ "exist or is not a directory"
fi
-cat <<SECTION >> ${OUTFILE}
-Section "InputDevice"
- Identifier "Configured Mouse"
- Driver "$MOUSE_DRIVER"
-SECTION
-if [ -n "$DO_EMULATE3BUTTONS" ]; then
- printf "\tOption\t\t\"Emulate3Buttons\"\t\"true\"\n" >> ${OUTFILE}
+if [ ! -w "$TDIR_PARENT" ]; then
+ bomb "cannot create temporary work directory in \"$TDIR_PARENT\"; directory" \
+ "not writable"
fi
-if [ -n "$IS_VIRT" ]; then
- printf "\tOption\t\t\"Device\"\t\"/dev/input/mice\"\n" >> ${OUTFILE}
+
+rm -rf "$TDIR"
+
+if mkdir -m 0700 "$TDIR"; then
+ DEXCONFTMPDIR="$TDIR"
+else
+ bomb "creation of temporary work directory \"$TDIR\" failed"
fi
-printf "EndSection\n\n" >> ${OUTFILE}
-if [ -n "$LAPTOP" ]; then
- cat <<SECTION >> ${OUTFILE}
+# xorg.conf sections:
+# Files File pathnames
+# ServerFlags Server flags NOT USED BY DEXCONF
+# Module Dynamic module loading NOT USED BY DEXCONF
+# InputDevice Input device description
+# Device Graphics device description
+# VideoAdaptor Xv video adaptor description NOT USED BY DEXCONF
+# Monitor Monitor description
+# Modes Video modes descriptions NOT USED BY DEXCONF
+# Screen Screen configuration
+# ServerLayout Overall layout NOT USED BY DEXCONF
+# DRI DRI-specific configuration NOT USED BY DEXCONF
+# Vendor Vendor-specific configuration NOT USED BY DEXCONF
-Section "InputDevice"
- Identifier "Synaptics Touchpad"
- Driver "synaptics"
- Option "SendCoreEvents" "true"
- Option "Device" "/dev/psaux"
- Option "Protocol" "auto-dev"
- Option "HorizEdgeScroll" "0"
-EndSection
+### HEADER
+
+# Because debconf hijacks standard output and its confmodule uses file
+# descriptor 3 for its own purposes, we will write our output to file descriptor
+# 4 instead of standard output.
+
+exec 4>"$DEXCONFTMPDIR/Header"
+cat >&4 <<SECTION
+# xorg.conf.failsafe (X.Org X Window System server configuration file)
+#
+# This file was generated by dexconf, the Debian X Configuration tool, using
+# values from the debconf database.
+#
+# Edit this file with caution, and see the xorg.conf manual page.
+# (Type "man xorg.conf" at the shell prompt.)
+#
+# This file is automatically updated on xserver-xorg package upgrades *only*
+# if it has not been modified since the last upgrade of the xserver-xorg
+# package.
+#
+# If you have edited this file but would like it to be automatically updated
+# again, run the following command:
+# sudo dpkg-reconfigure -phigh xserver-xorg
SECTION
-fi
### DEVICE
+db_get xserver-$SERVER/config/device/driver
+DEVICE_DRIVER="$RET"
db_get xserver-$SERVER/config/device/bus_id
DEVICE_BUSID="$RET"
-cat <<SECTION >> ${OUTFILE}
+db_get xserver-$SERVER/config/device/use_fbdev
+DEVICE_USE_FBDEV="$RET"
+
+# Override device driver
+DEVICE_DRIVER=${1:-"vesa"}
+
+QEMU_KVM=$(grep "QEMU Virtual CPU" /proc/cpuinfo || true)
+if [ -n "$QEMU_KVM" ]; then
+ DEVICE_DRIVER="cirrus"
+fi
+
+exec 4>"$DEXCONFTMPDIR/Device"
+cat >&4 <<SECTION
Section "Device"
Identifier "Configured Video Device"
- Driver "$DEVICE_DRIVER"
SECTION
-printf "EndSection\n\n" >> ${OUTFILE}
+if [ -n "$DEVICE_DRIVER" ]; then
+ printf "\tDriver\t\t\"$DEVICE_DRIVER\"\n" >&4
+fi
+PS3_FB=$(grep -i PS3 /proc/fb 2>/dev/null || true)
+if [ -n "$PS3_FB" ]; then
+ printf "\tOption\t\t\"ShadowFB\"\t\t\"false\"\n" >&4
+fi
+if [ -n "$DEVICE_BUSID" ]; then
+ printf "\tBusID\t\t\"$DEVICE_BUSID\"\n" >&4
+fi
+if [ "$DEVICE_USE_FBDEV" = "true" ]; then
+ printf "\tOption\t\t\"UseFBDev\"\t\t\"$DEVICE_USE_FBDEV\"\n" >&4
+fi
+printf "EndSection\n" >&4
### MONITOR
-cat <<SECTION >> ${OUTFILE}
+exec 4>"$DEXCONFTMPDIR/Monitor"
+cat >&4 <<SECTION
Section "Monitor"
Identifier "Configured Monitor"
-EndSection
+SECTION
+if [ -n "$QEMU_KVM" ]; then
+ printf "\tHorizSync\t30-70\n" >&4
+ printf "\tVertRefresh\t50-160\n" >&4
+fi
+cat >&4 <<SECTION
+EndSection
SECTION
### SCREEN
-DISPLAY_MODES="800x600"
-
-cat <<SECTION >> ${OUTFILE}
+exec 4>"$DEXCONFTMPDIR/Screen"
+cat >&4 <<SECTION
Section "Screen"
Identifier "Default Screen"
- Device "Configured Video Device"
Monitor "Configured Monitor"
+ Device "Configured Video Device"
+SECTION
+if [ -n "$PS3_FB" ]; then
+ printf "\tDefaultFbBpp 32\n" >&4
+fi
+if [ -n "$QEMU_KVM" ]; then
+cat >&4 <<SUBSECTION
+ DefaultDepth 24
SubSection "Display"
- Modes "$DISPLAY_MODES"
+ Depth 24
+ Modes "1280x800" "1152x768" "1024x768" "800x600" "640x480"
EndSubSection
-EndSection
+SUBSECTION
+fi
+printf "EndSection\n" >&4
-SECTION
+# Close file descriptor 4 before we delete temporary files
+exec 4<&-
+
+# Tell debconf to stop listening to us.
+db_stop
-### SERVERLAYOUT
+# Write the configuration file. Put a blank line before every section we write
+# except the first.
-cat <<SECTION >> ${OUTFILE}
-Section "ServerLayout"
- Identifier "Default Layout"
- Screen "Default Screen"
-SECTION
-if [ -n "$LAPTOP" ]; then
- printf "\tInputDevice\t\"Synaptics Touchpad\"\n" >> ${OUTFILE}
+OUTFILE="$DEXCONFTMPDIR/dexconf-out"
+umask 022
+: >"$OUTFILE"
+
+SPACER=
+for SECTION in Header Files InputDeviceKeyboard InputDeviceMouse \
+ Device Monitor Screen; do
+ if [ -e "$DEXCONFTMPDIR/$SECTION" ]; then
+ eval $SPACER
+ cat "$DEXCONFTMPDIR/$SECTION" >>"$OUTFILE"
+ SPACER='echo "" >>"$OUTFILE"'
+ fi
+done
+
+# Ensure we can write to our destination if it already exits.
+if [ -e "$XF86CONFIG" ]; then
+ if [ ! -w "$XF86CONFIG" ]; then
+ bomb "unable to write to \"$XF86CONFIG\""
+ fi
fi
-printf "EndSection\n" >> ${OUTFILE}
-# Tell debconf to stop listening to us.
-db_stop
+BACKUP=
+# Create a backup of the existing configuration file if it already exists.
+if [ -e "$XF86CONFIG" ]; then
+ cat "$XF86CONFIG" >"$DEXCONFTMPDIR/backup"
+ BACKUP=true
+fi
+
+# Move the new file into place.
+if ! cat "$OUTFILE" >"$XF86CONFIG"; then
+ # Failed; try to restore the backup.
+ if [ -n "$BACKUP" ]; then
+ cat "$DEXCONFTMPDIR/backup" >"$XF86CONFIG"
+ fi
+fi
+
+rm -rf "$DEXCONFTMPDIR"
exit 0
commit b5ecfbec28a8b4415745bb75e02ceefc5fa5437e
Author: Bryce Harrington <bryce@bryceharrington.org>
Date: Fri Sep 19 15:38:45 2008 -0700
Update how the fallback driver is detected
diff --git a/debian/changelog b/debian/changelog
index 23d78c8..d76a5c7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+xorg (1:7.4~2ubuntu4) UNRELEASED; urgency=low
+
+ * local/Failsafe/failsafeXServer: 'discover' is no longer used, so
+ disable the pci-id based detection of alternate fallback driver, since
+ without discover it just uses 'vesa'. Going forward, we'll probably
+ just have the X server do the fallback on its own. (LP: 272086)
+
+ -- Bryce Harrington <bryce@ubuntu.com> Fri, 19 Sep 2008 13:28:43 -0700
+
xorg (1:7.4~2ubuntu3) intrepid; urgency=low
[Michael Larabel]
@@ -6,7 +15,7 @@ xorg (1:7.4~2ubuntu3) intrepid; urgency=low
-- Bryce Harrington <bryce@ubuntu.com> Fri, 19 Sep 2008 12:17:46 -0700
-xorg (1:7.4~2ubuntu2) UNRELEASED; urgency=low
+xorg (1:7.4~2ubuntu2) intrepid; urgency=low
[Loic Minier]
* local/xserver-wrapper.c: Add support for /dev/console and other
diff --git a/debian/local/Failsafe/failsafeXServer b/debian/local/Failsafe/failsafeXServer
index 107a4bf..8c99e9e 100755
--- a/debian/local/Failsafe/failsafeXServer
+++ b/debian/local/Failsafe/failsafeXServer
@@ -26,15 +26,8 @@
xorg_conf_failsafe=${BPX_XORG_CONF_FAILSAFE:-"/etc/X11/xorg.conf.failsafe"}
xorg_conf=${BPX_XORG_CONF:-"/etc/X11/xorg.conf"}
-
run_dexconf=${BPX_RUN_DEXCONF:-"yes"}
-
-# TODO: This should be set to "vga", however I have been unable to
-# succeed in getting the vga driver running in anything over
-# 320x200, which is unusable. So fallback is disabled for now.
-#fallback_driver="vga"
fallback_driver=${BPX_FALLBACK_DRIVER:-"vesa"}
-
client=${BPX_CLIENT:-"/etc/gdm/failsafeXinit"}
clientargs=${BPX_CLIENTARGS:-$xorg_conf_failsafe}
blacklist=${BPX_BLACKLIST:-"/etc/gdm/failsafeBlacklist"}
@@ -86,7 +79,16 @@ pciids_in_order() {
}
get_driver() {
- echo $fallback_driver
+ machine=$(uname -m)
+ if [ $machine = "ppc" ]; then
+ echo "fbdev"
+ elif [ $machine = "powerpc" ]; then
+ echo "fbdev"
+ elif [ $machine = "ppc64" ]; then
+ echo "fbdev"
+ else
+ echo $fallback_driver
+ fi
return 0
}
Reply to: