[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xorg: Changes to 'ubuntu'



 debian/apport/source_xorg.py            |  468 --------------------------------
 debian/changelog                        |    8 
 debian/control                          |    1 
 debian/local/Failsafe/README            |   20 -
 debian/local/Failsafe/failsafeBlacklist |    6 
 debian/local/Failsafe/failsafeXServer   |  160 ----------
 debian/local/Failsafe/failsafeXinit     |  231 ---------------
 debian/po-failsafe/POTFILES.in          |    1 
 debian/rules                            |    3 
 debian/x11-common.failsafe-x.upstart    |   13 
 debian/x11-common.install               |    2 
 debian/x11-common.links                 |   55 ---
 debian/x11-common.postinst.in           |    5 
 debian/x11-common.postrm.in             |    5 
 debian/x11-common.preinst.in            |    5 
 15 files changed, 21 insertions(+), 962 deletions(-)

New commits:
commit 32586e8e14e5879e313eb840c2004c0344601317
Author: Bryce Harrington <bryce@canonical.com>
Date:   Fri May 13 08:33:12 2011 -0700

    * apport/source_xorg.py:
      - Simplify answers for bug reporters filing post-release reports.
        (LP: 778758)
      - Remove attach_drm_info().  This is useful info but we use it very
        infrequently, and it is already available in other log files.  But the
        call makes bug reports a bit cluttered since it adds a lot of lines to
        the report itself.

diff --git a/debian/apport/source_xorg.py b/debian/apport/source_xorg.py
index a60ad4c..1b03afe 100644
--- a/debian/apport/source_xorg.py
+++ b/debian/apport/source_xorg.py
@@ -148,9 +148,9 @@ def check_is_supported(report, ui=None):
             "certain it should be reported here?" %(distro_codename),
             [
                 "I don't know",
-                "Yes, I already know the fix for this problem.",
-                "Yes, The problem began right after doing a system software update.",
-                "Yes, I have gone through technical support, and they have referred me here.",
+                "Yes, and I know the fix for this problem.",
+                "Yes, the problem began right after doing a system software update.",
+                "Yes.",
                 "No, please point me to a good place to get support.",
                 ]
         )    
diff --git a/debian/changelog b/debian/changelog
index 65a62d2..b8f2637 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,9 +1,12 @@
 xorg (1:7.6+4ubuntu4) UNRELEASED; urgency=low
 
-  * apport/source_xorg.py: Remove attach_drm_info().  This is useful info
-    but we use it very infrequently, and it is already available in other
-    log files.  But the call makes bug reports a bit cluttered since it
-    adds a lot of lines to the report itself.
+  * apport/source_xorg.py:
+    - Simplify answers for bug reporters filing post-release reports.
+      (LP: #778758)
+    - Remove attach_drm_info().  This is useful info but we use it very
+      infrequently, and it is already available in other log files.  But the
+      call makes bug reports a bit cluttered since it adds a lot of lines to
+      the report itself.
 
  -- Bryce Harrington <bryce@ubuntu.com>  Thu, 07 Apr 2011 14:02:40 -0700
 

commit c4d45fbfec0a4792d7dbd2e668d32b894e5e1c7c
Author: Bryce Harrington <bryce@bryceharrington.org>
Date:   Wed May 18 03:24:10 2011 +0200

    Migrate the failsafe-x bits out of xorg to xdiagnose

diff --git a/debian/apport/source_xorg.py b/debian/apport/source_xorg.py
deleted file mode 100644
index a60ad4c..0000000
--- a/debian/apport/source_xorg.py
+++ /dev/null
@@ -1,468 +0,0 @@
-#!/usr/bin/python
-
-'''Xorg Apport interface
-
-Copyright (C) 2007, 2008 Canonical Ltd.
-Author: Bryce Harrington <bryce.harrington@ubuntu.com>
-
-This program is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 2 of the License, or (at your
-option) any later version.  See http://www.gnu.org/copyleft/gpl.html for
-the full text of the license.
-
-Testing:  APPORT_STAGING="yes"
-'''
-
-import os.path
-import glob
-import re
-import subprocess
-from apport.hookutils import *
-from launchpadlib.launchpad import Launchpad
-
-core_x_packages = [
-    'xorg', 'xorg-server', 'xserver-xorg-core', 'mesa'
-    ]
-keyboard_packages = [
-    'xorg', 'xkeyboard-config', 'xserver-xorg-input-keyboard', 'xserver-xorg-input-evdev'
-    ]
-
-######
-#
-# Apport helper routines
-#
-######
-def retrieve_ubuntu_release_statuses():
-    '''
-    Attempts to access launchpad to get a mapping of Ubuntu releases to status.
-
-    Returns a dictionary of ubuntu release keywords to their current status,
-    or None in cause of a failure reading launchpad.
-    '''
-    releases = { }
-    try:
-        lp = Launchpad.login_anonymously('apport', 'production')
-        d = lp.distributions['ubuntu']
-        for series in d.series:
-            releases[series.name] = series.status
-    except:
-        releases = None
-    return releases
-
-def installed_version(pkg):
-    script = subprocess.Popen(['apt-cache', 'policy', pkg], stdout=subprocess.PIPE)
-    output = script.communicate()[0]
-    return output.split('\n')[1].replace("Installed: ", "")
-
-def is_process_running(proc):
-    log = command_output(['pidof', proc])
-    if not log or log[:5] == "Error" or len(log)<1:
-        return False
-    return True
-
-def nonfree_graphics_module(module_list = '/proc/modules'):
-    '''
-    Check loaded modules to see if a proprietary graphics driver is loaded.
-    Return the first such driver found.
-    '''
-    try:
-        mods = [l.split()[0] for l in open(module_list)]
-    except IOError:
-        return None
-
-    for m in mods:
-        if m == "nvidia" or m == "fglrx":
-            return m
-
-def attach_command_output(report, command_list, key):
-    log = command_output(command_list)
-    if not log or log[:5] == "Error":
-        return
-    report[key] = log
-
-def retval(command_list):
-    '''
-    Return the command exit code
-    '''
-    return subprocess.call(
-        command_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-
-def ubuntu_variant_name():
-    '''
-    Return 'ubuntu' or 'kubuntu' as appropriate
-    '''
-    if (retval(['which', 'kdesudo']) == 0 and
-        retval(['pgrep', '-x', '-u', str(os.getuid()), 'ksmserver']) == 0):
-        return "kubuntu"
-    else:
-        return "ubuntu"
-
-def ubuntu_code_name():
-    '''
-    Return the ubuntu release code name, 'dapper', 'natty', etc.
-    '''
-    code_name = command_output(['lsb_release','-sc'])
-    if code_name[:5] == "Error":
-        return None
-    return code_name
-
-######
-#
-# Supportability tests
-#
-######
-
-def check_is_supported(report, ui=None):
-    '''
-    Bug reports against the development release are higher priority than
-    ones filed against already released versions.  We steer reporters of
-    the latter towards technical support resources, which are better geared
-    for helping end users solve problems with their installations.
-    '''
-    distro_codename = ubuntu_code_name()
-    report['DistroCodename'] = distro_codename
-    report['DistroVariant'] = ubuntu_variant_name()
-    report['Tags'] += ' ' + report['DistroVariant']
-
-    if not ui:
-        return
-
-    # Look up status of this and other releases
-    release_status = retrieve_ubuntu_release_statuses()
-    if not release_status or not report['DistroCodename']:
-        # Problem accessing launchpad, can't tell anything about status
-        # so assume by default that it's supportable.
-        return True
-    status = release_status.get(distro_codename, "Unknown")
-
-    if status == "Obsolete":
-        ui.information("Sorry, the '%s' version of Ubuntu is obsolete, which means the developers no longer accept bug reports about it." %(distro_codename))
-        report['UnreportableReason'] = 'Unsupported Ubuntu Release'
-        return False
-
-    elif status == "Supported" or status == "Current Stable Release":
-        response = ui.choice(
-            "Development is completed for the '%s' version of Ubuntu, so\n"
-            "you should use technical support channels unless you know for\n"
-            "certain it should be reported here?" %(distro_codename),
-            [
-                "I don't know",
-                "Yes, I already know the fix for this problem.",
-                "Yes, The problem began right after doing a system software update.",
-                "Yes, I have gone through technical support, and they have referred me here.",
-                "No, please point me to a good place to get support.",
-                ]
-        )    
-
-        # Fix is known
-        if 1 in response:
-            report['Tags'] += ' ' + 'patch'
-            ui.information("Thanks for helping improve Ubuntu!  Tip:  If you attach the fix to the bug report as a patch, it will be flagged to the developers and should get a swifter response.")
-            return True
-
-        # Regression after a system update
-        elif 2 in response:
-            report['Tags'] += ' ' + 'regression-update'
-            response = ui.yesno("Thanks for reporting this regression in Ubuntu %s.  Do you know exactly which package and version caused the regression?" %(distro_codename))
-            if response:
-                ui.information("Excellent.  Please make sure to list the package name and version in the bug report's description.  That is vital information for pinpointing the cause of the regression, which will make solving this bug go much faster.")
-                report['Tags'] += ' ' + 'needs-reassignment'
-                return True
-            else:
-                ui.information("Okay, your /var/log/dpkg.log will be attached.  Please indicate roughly when you first started noticing the problem.  This information will help in narrowing down the suspect package updates.")
-                attach_file(report, "/var/log/dpkg.log", "DpkgLog")
-                return True
-
-        # Referred by technical support
-        elif 3 in response:
-            ui.information("Thanks for using technical support channels before filing this report.  In your bug report, please restate the issue and include a link or transcript of your discussion with them.")
-            return True
-
-        # Anything else should be redirected to technical support channels
-        else:
-            ui.information("http://askubuntu.com is the best place to get free help with technical issues.\n\n"
-                           "See http://www.ubuntu.com/support for paid support and other free options.")
-            report['UnreportableReason'] = 'Please work this issue through technical support channels first.'
-            return False
- 
-    elif status == "Active Development":
-        return True
-    return True
-
-#  You should try community support channels such as ubuntuforums.com or askubuntu.com.
-def check_is_reportable(report, ui=None):
-    '''Checks system to see if there is any reason the configuration is not
-    valid for filing bug reports'''
-
-    version_signature = report.get('ProcVersionSignature', '')
-    if version_signature and not version_signature.startswith('Ubuntu '):
-        report['UnreportableReason'] = 'The running kernel is not an Ubuntu kernel: %s' %version_signature
-        return False
-
-    bios = report.get('dmi.bios.version', '')
-    if bios.startswith('VirtualBox '):
-        report['SourcePackage'] = "virtualbox-ose"
-        return False
-
-    product_name = report.get('dmi.product.name', '')
-    if product_name.startswith('VMware '):
-        report['UnreportableReason'] = 'VMware is installed.  If you upgraded recently be sure to upgrade vmware to a compatible version.'
-        return False
-
-    if os.path.exists('/var/log/nvidia-installer.log'):
-        # User has installed nVidia drivers manually at some point.
-        # This is likely to have caused problems.
-        if ui and not ui.yesno("""It appears you may have installed the nVidia drivers manually from nvidia.com at some point in the past.  This can cause problems with the Ubuntu-supplied drivers.
-
-If you have not already uninstalled the drivers downloaded from nvidia.com, please uninstall them and reinstall the Ubuntu packages before filing a bug with Ubuntu.  If you have uninstalled them, then you may want to remove the file /var/log/nvidia-installer.log as well.
-
-Have you uninstalled the drivers from nvidia.com?"""):
-            report['UnreportableReason'] = 'The drivers from nvidia.com are not supported by Ubuntu.  Please uninstall them and test whether your problem still occurs.'
-            return
-        attach_file(report, '/var/log/nvidia-installer.log', 'nvidia-installer.log')
-        report['Tags'] += ' ' + 'possible-manual-nvidia-install'
-
-    return True
-
-######
-#
-# Attach relevant data files
-#
-######
-
-def attach_dkms_info(report, ui=None):
-    '''
-    DKMS is the dynamic kernel module service, for rebuilding modules
-    against a new kernel on the fly, during boot.  Occasionally this fails
-    such as when installing/upgrading with proprietary video drivers.
-    '''
-    if os.path.lexists('/var/lib/dkms'):
-        # Gather any dkms make.log files for proprietary drivers
-        for logfile in glob.glob("/var/lib/dkms/*/*/build/make.log"):
-            attach_file(report, logfile, "make.log")
-        attach_command_output(report, ['dkms', 'status'], 'DkmsStatus')
-
-def attach_dist_upgrade_status(report, ui=None):
-    '''
-    This routine indicates whether a system was upgraded from a prior
-    release of ubuntu, or was a fresh install of this release.
-    '''
-    if os.path.lexists('/var/log/dist-upgrade/apt.log'):
-        # TODO: Not sure if this is quite exactly what I want, but close...
-        attach_command_output(
-            report,
-            ['head', '-n', '1', '/var/log/dist-upgrade/apt.log'],
-            'DistUpgraded')
-        return True
-    else:
-        report['DistUpgraded'] = 'Fresh install'
-        return False
-
-def attach_graphic_card_pci_info(report, ui=None):
-    '''
-    Extracts the device system and subsystem IDs for the video card.
-    Note that the user could have multiple video cards installed, so
-    this may return a multi-line string.
-    '''
-    info = ''
-    display_pci = pci_devices(PCI_DISPLAY)
-    for paragraph in display_pci.split('\n\n'):
-        for line in paragraph.split('\n'):
-            if ':' not in line:
-                continue
-            key, value = line.split(': ', 1)
-            value = value.strip()
-            key = key.strip()
-            if "VGA compatible controller" in key:
-                info += "%s\n" % (value)
-            elif key == "Subsystem":
-                info += "  %s: %s\n" %(key, value)
-    report['GraphicsCard'] = info
-
-def attach_xorg_package_versions(report, ui=None):
-    for package in [
-        "xserver-xorg",
-        "libgl1-mesa-glx",
-        "libgl1-mesa-dri",
-        "libgl1-mesa-dri-experimental",
-        "libdrm2",
-        "compiz",
-        "xserver-xorg-video-intel",
-        "xserver-xorg-video-ati",
-        "xserver-xorg-video-nouveau"]:
-        report['version.%s' %(package)] = package_versions(package)
-    if 'Architecture' in report and report['Architecture'] == 'amd64':
-        report['version.ia32-libs'] = package_versions('ia32-libs')
-
-def attach_2d_info(report, ui=None):
-    attach_file_if_exists(report, '/var/log/plymouth-debug.log', 'PlymouthDebug')
-    attach_file_if_exists(report, '/etc/X11/xorg.conf', 'XorgConf')
-    attach_file_if_exists(report, '/var/log/Xorg.0.log', 'XorgLog')
-    attach_file_if_exists(report, '/var/log/Xorg.0.log.old', 'XorgLogOld')
-
-    if os.environ.get('DISPLAY'):
-        # For resolution/multi-head bugs
-        attach_command_output(report, ['xrandr', '--verbose'], 'Xrandr')
-        attach_file_if_exists(report,
-                              os.path.expanduser('~/.config/monitors.xml'),
-                              'monitors.xml')
-
-        # For font dpi bugs
-        attach_command_output(report, ['xdpyinfo'], 'xdpyinfo')
-
-    if os.path.lexists('/var/log/gdm'):
-        if ui and ui.yesno("Your gdm log files may help developers diagnose the bug, but may contain sensitive information.  Do you want to include these logs in your bug report?") == True:
-            attach_root_command_outputs(report, {
-                'GdmLog': 'cat /var/log/gdm/:0.log',
-                'GdmLog1': 'cat /var/log/gdm/:0.log.1',
-                'GdmLog2': 'cat /var/log/gdm/:0.log.2'})
-
-def attach_3d_info(report, ui=None):
-    if os.environ.get('DISPLAY'):
-        if os.path.lexists('/usr/lib/nux/unity_support_test'):
-            try:
-                ust = command_output([
-                    '/usr/lib/nux/unity_support_test', '-p'])
-                ust = ust.replace('\x1b','').replace('[0;38;48m','').replace('[1;32;48m','')
-                report['UnitySupportTest'] = ust
-            except AssertionError:
-                report['UnitySupportTest'] = 'FAILED TO RUN'
-
-        attach_file_if_exists(report,
-                              os.path.expanduser('~/.drirc'),
-                              'drirc')
-
-        if (is_process_running('compiz') or
-            (report.get('SourcePackage','Unknown') == "compiz" and report.get('ProblemType', '') == 'Crash')
-             ):
-            report['CompositorRunning'] = 'compiz'
-            compiz_version = command_output(['compiz', '--version'])
-            if compiz_version:
-                version = compiz_version.split(' ')[1]
-                version = version[:3]
-                compiz_version_string = 'compiz-%s' % version
-                report['Tags'] += ' ' + compiz_version_string
-        elif is_process_running('kwin'):
-            report['CompositorRunning'] = 'kwin'
-        else:
-            report['CompositorRunning'] = 'None'
-
-    # Detect software rasterizer
-    xorglog = report.get('XorgLog', '')
-    if len(xorglog)>0:
-        if 'reverting to software rendering' in xorglog:
-            report['Renderer'] = 'Software'
-        elif 'Direct rendering disabled' in xorglog:
-            report['Renderer'] = 'Software'
-        else:
-            report['Renderer'] = 'Unknown'
-
-    if ui and report['Renderer'] == 'Software':
-        ui.information("Your system is providing 3D via software rendering rather than hardware rendering.  This is a compatibility mode which should display 3D graphics properly but the performance may be very poor.  If the problem you're reporting is related to graphics performance, your real question may be why X didn't use hardware acceleration for your system.")
-
-    # Plugins
-    attach_command_output(report, [
-        'gconftool-2', '--get', '/apps/compiz-1/general/screen0/options/active_plugins'],
-        'CompizPlugins')
-
-    # User configuration
-    attach_command_output(report, [
-        'gconftool-2', '-R', '/apps/compiz-1'],
-        'GconfCompiz')
-
-    # Compiz internal state if compiz crashed
-    if report.get('SourcePackage','Unknown') == "compiz" and report.has_key("ProcStatus"):
-        compiz_pid = 0
-        pid_line = re.search("Pid:\t(.*)\n", report["ProcStatus"])
-        if pid_line:
-            compiz_pid = pid_line.groups()[0]
-        compiz_state_file = '/tmp/compiz_internal_state%s' % compiz_pid
-        attach_file_if_exists(report, compiz_state_file, "compiz_internal_states")
-
-def attach_input_device_info(report, ui=None):
-    # Only collect the following data if X11 is available
-    if os.environ.get('DISPLAY'):
-        # For keyboard bugs
-        if report.get('SourcePackage','Unknown') in keyboard_packages:
-            attach_command_output(report, ['setxkbmap', '-print'], 'setxkbmap')
-            attach_command_output(report, ['xkbcomp', ':0', '-w0', '-'], 'xkbcomp')
-            attach_command_output(report, ['locale'], 'locale')
-
-        # For input device bugs
-        attach_command_output(report, ['xinput', '--list'], 'xinput')
-        attach_command_output(report, ['gconftool-2', '-R', '/desktop/gnome/peripherals'], 'peripherals')
-
-def attach_nvidia_info(report, ui=None):
-    # Attach information for upstreaming nvidia binary bugs
-    if nonfree_graphics_module() == 'nvidia':        
-        report['version.nvidia-graphics-drivers'] = package_versions("nvidia-graphics-drivers")
-
-        for logfile in glob.glob('/proc/driver/nvidia/*'):
-            if os.path.isfile(logfile):
-                attach_file(report, logfile)
-
-        for logfile in glob.glob('/proc/driver/nvidia/*/*'):
-            if os.path.basename(logfile) != 'README':
-                attach_file(report, logfile)
-
-        if os.path.lexists('/usr/lib/nvidia-current/bin/nvidia-bug-report.sh'):
-            if retval(['/usr/lib/nvidia-current/bin/nvidia-bug-report.sh']) == 0:
-                attach_file_if_exists(report, os.path.expanduser('~/nvidia-bug-report.log.gz'),
-                                      'NvidiaBugReportLog')
-
-        if os.environ.get('DISPLAY'):
-            # Attach output of nvidia-settings --query if we've got a display
-            # to connect to.
-            attach_command_output(report, ['nvidia-settings', '-q', 'all'], 'nvidia-settings')
-
-        attach_command_output(report, ['jockey-text', '-l'], 'JockeyStatus')
-        attach_command_output(report, ['update-alternatives', '--display', 'gl_conf'], 'GlConf')
-
-        # File any X crash with -nvidia involved with the -nvidia bugs
-        if (report.get('ProblemType', '') == 'Crash' and 'Traceback' not in report):
-            if report.get('SourcePackage','Unknown') in core_x_packages:
-                report['SourcePackage'] = "nvidia-graphics-drivers"
-
-def attach_fglrx_info(report, ui=None):
-    if nonfree_graphics_module() == 'fglrx':
-
-        report['version.fglrx-installer'] = package_versions("fglrx-installer")
-
-        attach_command_output(report, ['jockey-text', '-l'], 'JockeyStatus')
-        attach_command_output(report, ['update-alternatives', '--display', 'gl_conf'], 'GlConf')
-
-        # File any X crash with -fglrx involved with the -fglrx bugs
-        if report.get('SourcePackage','Unknown') in core_x_packages:
-            if (report.get('ProblemType', '') == 'Crash' and 'Traceback' not in report):
-                report['SourcePackage'] = "fglrx-installer"
-
-def add_info(report, ui):
-    report.setdefault('Tags', '')
-
-    # Verify the bug is valid to be filed
-    if check_is_reportable(report, ui) == False:
-        return
-    if check_is_supported(report, ui) == False:
-        return
-
-    attach_xorg_package_versions(report, ui)
-    attach_dist_upgrade_status(report, ui)
-    attach_graphic_card_pci_info(report, ui)
-    attach_hardware(report)
-    attach_dkms_info(report, ui)
-    attach_nvidia_info(report, ui)
-    attach_fglrx_info(report, ui)
-    attach_2d_info(report, ui)
-    attach_3d_info(report, ui)
-    attach_input_device_info(report, ui)
-
-    if ui:
-        ui.information("Please also provide a step-by-step description of how the problem is produced in the bug description.  The logs being collected don't give this info, but it's really important.")
-
-## DEBUGING ##
-if __name__ == '__main__':
-    report = {}
-    add_info(report, None)
-    for key in report:
-        print '[%s]\n%s' % (key, report[key])
diff --git a/debian/changelog b/debian/changelog
index 65a62d2..e7e7e59 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,11 +1,16 @@
 xorg (1:7.6+4ubuntu4) UNRELEASED; urgency=low
 
-  * apport/source_xorg.py: Remove attach_drm_info().  This is useful info
-    but we use it very infrequently, and it is already available in other
-    log files.  But the call makes bug reports a bit cluttered since it
-    adds a lot of lines to the report itself.
-
- -- Bryce Harrington <bryce@ubuntu.com>  Thu, 07 Apr 2011 14:02:40 -0700
+  * apport/source_xorg.py:
+    - Move Failsafe-X out of the xorg package to xdiagnose
+      (LP: #480744)
+    - Simplify answers for bug reporters filing post-release reports.
+      (LP: #778758)
+    - Remove attach_drm_info().  This is useful info but we use it very
+      infrequently, and it is already available in other log files.  But the
+      call makes bug reports a bit cluttered since it adds a lot of lines to
+      the report itself.
+
+ -- Bryce Harrington <bryce@ubuntu.com>  Wed, 18 May 2011 03:14:19 +0200
 
 xorg (1:7.6+4ubuntu3) natty; urgency=low
 
diff --git a/debian/control b/debian/control
index 74c6a23..7fa18b9 100644
--- a/debian/control
+++ b/debian/control
@@ -20,6 +20,7 @@ Package: x11-common
 Architecture: all
 Multi-Arch: foreign
 Depends: ${misc:Depends}, lsb-base (>= 1.3-9ubuntu2)
+Recommends: xdiagnose
 Description: X Window System (X.Org) infrastructure
  x11-common contains the filesystem infrastructure required for further
  installation of the X Window System in any configuration; it does not
diff --git a/debian/local/Failsafe/README b/debian/local/Failsafe/README
deleted file mode 100644
index 4c556f6..0000000
--- a/debian/local/Failsafe/README
+++ /dev/null
@@ -1,20 +0,0 @@
-Bulletproof-X
--------------
-
-This is a failsafe-mode for Xorg, that will be called when Xorg is
-unable to start due to misconfiguration.
-
-This functionality is dependent on displayconfig-gtk, and requires some
-changes to gdm.conf.  These can be achieved as follows:
-
-   sudo apt-get install displayconfig-gtk
-   sudo failsafeInstall
-
-
-Todo
-====
-   * Fallback to "vga" where vesa won't work.  So far I've not succeeded
-     in getting vga started in anything better than 320x200, which is
-     unusable, so fallback is not currently enabled.
-   * Apply the gdm config changes to gdm.conf
-   * Drop failsafeInstall and update this README
diff --git a/debian/local/Failsafe/failsafeBlacklist b/debian/local/Failsafe/failsafeBlacklist
deleted file mode 100644
index 9095b58..0000000
--- a/debian/local/Failsafe/failsafeBlacklist
+++ /dev/null
@@ -1,6 +0,0 @@
-# Lines can be of the forms:
-#
-# <edid-md5sum> <pci-id>[-<pci-id>] [driver]
-# <edid-md5sum> ANY
-# ANY <pci-id>[-<pci-id>] [driver]
-
diff --git a/debian/local/Failsafe/failsafeXServer b/debian/local/Failsafe/failsafeXServer
deleted file mode 100755
index d43e3c0..0000000
--- a/debian/local/Failsafe/failsafeXServer
+++ /dev/null
@@ -1,160 +0,0 @@
-#!/bin/bash
-
-# $Id:$
-#
-# This provides a stripped down 'failsafe' mode for situations
-# where X is failing to start up.
-
-# Author: Bryce W. Harrington <bryce@canonical.com>
-
-# Copyright 2007 Canonical, Ltd
-#
-# This is free software; you may redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2,
-# or (at your option) any later version.
-#
-# This is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License with
-# the Debian operating system, in /usr/share/common-licenses/GPL;  if
-# not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
-
-# Upstart jobs don't have a particular environment, we need to source the
-# variables needed for localization ourselves
-if [ -r /etc/default/locale ]; then
-    . /etc/default/locale
-    export LANG LANGUAGE
-elif [ -r /etc/environment ]; then
-    . /etc/environment
-    export LANG LANGUAGE
-fi
-
-xorg_conf_failsafe=${BPX_XORG_CONF_FAILSAFE:-"/etc/X11/xorg.conf.failsafe"}
-xorg_conf=${BPX_XORG_CONF:-"/etc/X11/xorg.conf"}
-fallback_driver=${BPX_FALLBACK_DRIVER:-"vesa"}
-client=${BPX_CLIENT:-"/etc/gdm/failsafeXinit"}
-clientargs=${BPX_CLIENTARGS:-$xorg_conf_failsafe}
-blacklist=${BPX_BLACKLIST:-"/etc/gdm/failsafeBlacklist"}
-main_driver=${BPX_DRIVER:-"vesa"}
-checkduration=${BPX_CHECK_DURATION:-30}
-failsafe_log=${BPX_LOG:-"/var/log/gdm/failsafe.log"}
-
-server=${BPX_SERVER:-/usr/bin/X}
-serverargs=${BPX_SERVERARGS:-"$*"}
-serverargs="${serverargs} -br -once -config $xorg_conf_failsafe -logfile /var/log/Xorg.failsafe.log"
-   # -br:      Black background
-   # -once:    Terminate server after one session
-   # -config:  Specify location of xorg.conf file to use
-   #           Note: Only root can specify absolute paths
-   # -logfile: Don't overwrite Xorg.0.log
-
-warn() {
-    echo "Warning:  $1" 1>&2
-}
-
-is_installed() {
-    prog=$1
-    need=$2
-    /usr/bin/which $prog > /dev/null 2>&1
-    err=$?
-    if [ ! $err = 0 ]; then
-	warn "Could not $need because $prog is not installed ($err)"
-	return $err
-    fi
-    return 0
-}
-
-# Tests if the given pciids are in numerical order from least to greatest
-# (e.g., $a <= $b <= $c <= ...)
-pciids_in_order() {
-    lastid=0
-    for pciid in $* ; do
-        # Strip embedded : and convert hex to dec
-        id=$((0x${pciid/:/}))
-        if [ $id -lt $lastid ]; then
-            return 1
-        fi
-        lastid=$id
-    done
-    return 0
-}
-
-get_driver() {
-    machine=$(uname -m)
-    if grep -q -E '(nouveau|drm)fb' /proc/fb; then
-        echo "fbdev"
-    elif [ $machine = "ppc" ]; then
-        echo "fbdev"
-    elif [ $machine = "powerpc" ]; then
-        echo "fbdev"
-    elif [ $machine = "ppc64" ]; then
-        echo "fbdev"
-    else
-        echo $fallback_driver
-    fi
-    return 0
-}
-
-# Check if we've already attempted a failsafe session without success
-if [ -e "$failsafe_log" ]; then
-    cur_time=$(date +"%s")
-    last_run=$(tail -n 1 $failsafe_log | cut -d' ' -f1)
-    time_diff=$(expr $cur_time - $last_run)
-    if [ $time_diff -lt $checkduration ]; then
-        warn "Failsafe mode was already attempted within $checkduration seconds."
-        warn "Falling back to gdm to report the issue."
-        exit 1
-    fi
-fi
-
-# When failsafe mode is activated, check the blacklist for systems we
-# know do not support VESA 800x600/256
-#      Use EDID + PCI IDs as key to lookup (Can get PCI IDs from discover)
-#      If the display does not give EDID info, then use VGA 640x480/16 mode
-#      If a matching entry is found, then use VGA 640x480/16 mode
-driver=$(get_driver)
-
-# Generate a fresh xorg.conf.failsafe using identified driver
-cat > $xorg_conf_failsafe <<EOF
-Section "Device"
-	Identifier	"Configured Video Device"
-	Driver		"$driver"
-EndSection
-
-Section "Monitor"
-	Identifier	"Configured Monitor"
-EndSection
-
-Section "Screen"
-	Identifier	"Default Screen"
-	Monitor		"Configured Monitor"
-	Device		"Configured Video Device"
-EndSection
-EOF
-
-md5xorg=$(md5sum $xorg_conf)
-date +"%s $md5xorg" >> $failsafe_log
-if [ $? -ne 0 ]; then
-    warn "Cannot write to $failsafe_log"
-fi
-
-if pidof /usr/sbin/gdm ; then
-    clientargs="${clientargs} with-gdm"
-fi
-
-# Stop gdm if it's running, otherwise it will attempt to manage the display
-# out from under us
-if pidof /usr/sbin/gdm ; then
-    exec kill -STOP $PPID
-fi
-
-echo "xinit $client $clientargs -- $server $serverargs"
-xinit $client $clientargs -- $server $serverargs
-
-# This seems to cause gdm to attempt to start a new x session
-#exec kill -USR1 `cat /var/run/gdm.pid`
diff --git a/debian/local/Failsafe/failsafeXinit b/debian/local/Failsafe/failsafeXinit
deleted file mode 100755
index 8aff5d7..0000000
--- a/debian/local/Failsafe/failsafeXinit
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/bin/bash
-# This provides a stripped down 'failsafe' mode for situations
-# where X is failing to start up.
-
-# Author: Bryce W. Harrington <bryce@canonical.com>
-
-# Copyright 2007, 2008 Canonical, Ltd
-#
-# This is free software; you may redistribute it and/or modify
-# it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2,
-# or (at your option) any later version.
-#
-# This is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License with
-# the Debian operating system, in /usr/share/common-licenses/GPL;  if
-# not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
-
-xorg_conf=$1
-with_gdm=$2
-
-display=0
-xorg_log="/var/log/Xorg.${display}.log"
-gdm_log="/var/log/gdm/:${display}.log"
-gdm_log_1="/var/log/gdm/:${display}.log.1"
-gdm_log_2="/var/log/gdm/:${display}.log.2"
-apport_hook="/usr/share/apport/xserver_hook"
-
-app_width=600
-app_height=300
-app_title="$(gettext 'Ubuntu Failsafe-X')"
-
-timestamp=$(date +%y%m%d%H%M%S)
-
-. gettext.sh
-TEXTDOMAIN=failsafexinit
-export TEXTDOMAIN
-TEXTDOMAINDIR=/usr/share/locale-langpack
-export TEXTDOMAINDIR
-
-display_main_menu() {
-    zenity --list \
-        --radiolist \
-        --title "$app_title" \
-        --width $app_width --height $app_height \
-        --text "$(gettext 'What would you like to do?')" \
-        --column "" --column "$(gettext 'Choice')" --column "" \
-          TRUE   LOW_RES_MODE "$(gettext 'Run Ubuntu in low-graphics mode for just one session')" \
-          FALSE  RECONFIGURE "$(gettext 'Reconfigure graphics')" \
-          FALSE  TROUBLESHOOT "$(gettext 'Troubleshoot the error')" \
-          FALSE  EXIT_TO_CONSOLE "$(gettext 'Exit to console login')" \
-          FALSE  RESTART_X "$(gettext 'Restart X')" \
-        --hide-column 2
-
-# TODO:          3 FILE_BUG "Report a bug about this failure" \
-}
-
-display_reconfigure_menu() {
-    # TODO:  Only display SELECT_BACKUP if backups are available
-
-    zenity --list \
-        --radiolist \
-        --title "$app_title : $(gettext 'Reconfiguration')" \
-        --text "$(gettext 'How would you like to reconfigure your display?')" \
-        --width $app_width --height $app_height \
-        --column "" --column "$(gettext 'Choice')" --column "" \
-          TRUE   DEFAULT_CONFIG "$(gettext 'Use default (generic) configuration')" \
-          FALSE  RUN_XORGCONF "$(gettext 'Create new configuration for this hardware')" \
-          FALSE  SELECT_BACKUP "$(gettext 'Use your backed-up configuration')" \
-        --hide-column 2
-}
-
-display_troubleshooting_menu() {
-    zenity --list \
-        --radiolist \
-        --title "$app_title : $(gettext 'Troubleshooting')" \
-        --text "$(gettext 'What information would you like to review?')" \
-        --width $app_width --height $app_height \
-        --column "" --column "$(gettext 'Choice')" --column "" \
-          TRUE   VIEW_XORG_LOG "$(gettext 'Review the xserver log file')" \
-          FALSE  VIEW_GDM_LOG  "$(gettext 'Review the startup errors')" \
-          FALSE  EDIT_CONFIG   "$(gettext 'Edit configuration file')" \
-          FALSE  SAVE_CONFIG_LOGS   "$(gettext 'Archive configuration and logs')" \
-        --hide-column 2
-# TODO:          5 VERIFY_XORGCONF "Check configuration file"
-}
-
-# TODO:  Should we just go ahead and file a bug for them without presenting an option?
-display_filebug_menu() {
-    # Run apport to file a bug
-    if [ -e $apport_hook ]; then
-        $apport_hook
-        if [ $? == 0 ]; then
-            zenity --info --text "$(gettext 'A bug report has been written.\nYou can send it next time you log in.')"
-        else
-            zenity --error --text "$(gettext 'Your bug could not be recorded successfully.\n')"
-        fi
-    else
-        zenity --error --text "$(eval_gettext 'Cannot file bug:  \$apport_hook is not present.')"
-    fi
-}
-
-backup_xorg_conf() {
-    # TODO: backup xorg.conf more elegantly...
-    xorg_conf_backup="/etc/X11/xorg.conf-backup-${timestamp}"
-    cp /etc/X11/xorg.conf ${xorg_conf_backup}
-    if [ $? != 0 ]; then
-        return zenity --question --text "$(gettext 'Your config could not be backed up.\nDo you want to continue anyway?\n')"
-    fi
-}
-
-default_config() {
-    backup_xorg_conf || return 1
-
-    rm /etc/X11/xorg.conf
-    if [ $? == 0 ]; then
-        zenity --info --text "$(gettext 'Your configuration has been restored to default,\nand your old configuration backed up.\nPlease restart.\n')"
-    else
-        zenity --error --text "$(gettext 'Failure restoring configuration to default.\nYour config has not been changed.')"
-    fi
-}
-
-run_xorgconf() {
-    backup_xorg_conf || return 1
-
-    Xorg :99 -configure
-    if [ $? == 0 ]; then
-        zenity --info --text "$(gettext 'A new configuration has been generated,\nand your old configuration backed up.\nPlease restart.\n')"
-    else
-        zenity --error --text "$(gettext 'Could not generate a new configuration')"
-    fi
-}
-
-view_xorg_log() {
-    zenity --text-info --filename=$xorg_log --width=640 --height=480
-}
-
-view_gdm_log() {
-    zenity --text-info --filename=${gdm_log_1} --width=640 --height=480
-}
-
-verify_xorgconf() {
-    # Run Alberto's xorg.conf checker (once it's available in main)
-    zenity --error --text "$(gettext 'Sorry, this option is not implemented yet')"
-}
-
-edit_config() {
-    backup_xorg_conf || return 1
-
-    xorg_conf_tmp=$(mktemp -t xorg.conf.XXXXXXXX)
-    zenity --text-info --editable --filename=/etc/X11/xorg.conf --width=640 --height=480 > "${xorg_conf_tmp}" && mv "${xorg_conf_tmp}" /etc/X11/xorg.conf
-    chmod 644 /etc/X11/xorg.conf
-}
-
-save_config_logs() {
-    xorg_backup_name=failsafeX-backup-${timestamp}
-    xorg_backup_dir=$(mktemp -d -t ${xorg_backup_name}.XXX)
-    xorg_backup_file=/var/log/${xorg_backup_name}.tar
-
-    # cp $xorg_conf $xorg_backup_dir
-    cp /etc/X11/xorg.conf $xorg_backup_dir
-    cp ${xorg_log} $xorg_backup_dir
-    cp ${xorg_log}.old $xorg_backup_dir
-    cp ${gdm_log} $xorg_backup_dir
-    cp ${gdm_log_1} $xorg_backup_dir
-    cp ${gdm_log_2} $xorg_backup_dir
-    lspci -vvnn > ${xorg_backup_dir}/lspci-vvnn.txt
-    xrandr --verbose > ${xorg_backup_dir}/xrandr-verbose.txt
-    tar -cf ${xorg_backup_file} ${xorg_backup_dir}
-    rm -rf ${xorg_backup_dir}
-
-    zenity --info --text "$(eval_gettext 'Relevant configuration and log files have been saved to:\n')"$xorg_backup_file"\n$(gettext 'Bug reports can be submitted at http://www.launchpad.net/ubuntu/.\n')"
-}
-
-# Scan Xorg.0.log for errors
-LOG_ERRORS=$(grep -e "^(EE)" $xorg_log)
-
-if [ -z "$LOG_ERRORS" ]; then
-    zenity --warning --text "$(gettext '<big><b>Ubuntu is running in low-graphics mode</b></big>\n\nYour screen, graphics card, and input device settings\ncould not be detected correctly.  You will need to configure these yourself.')"
-else
-    zenity --warning --text "$(gettext '<big><b>Ubuntu is running in low-graphics mode</b></big>\n\nThe following error was encountered.  You may need\nto update your configuration to solve this.\n\n')""${LOG_ERRORS}"
-fi
-
-# TODO: Add --window-icon "$app_icon" to all zenity windows
-
-while : ; do
-    case "$choice" in
-        ## Main Menu ##
-        LOW_RES_MODE )    with_gdm="low-res"; break ;;
-        RECONFIGURE )     choice=$(display_reconfigure_menu) ;;
-        TROUBLESHOOT )    choice=$(display_troubleshooting_menu) ;;
-        FILE_BUG )        choice=$(display_filebug_menu) ;;
-        RESTART_X )       with_gdm="restart"; break ;;
-
-        ## Reconfigure Menu ##
-        DEFAULT_CONFIG )  choice="RECONFIGURE"; default_config ;;
-        RUN_XORGCONF )    choice="RECONFIGURE"; run_xorgconf ;;


Reply to: