Make apport collect some Power information

Bug #1336462 reported by Thierry FAUCK
28
This bug affects 3 people
Affects Status Importance Assigned to Milestone
apport (Ubuntu)
Fix Released
Undecided
Unassigned
Trusty
Fix Released
Undecided
Brian Murray

Bug Description

TEST CASE
---------
Verify that /usr/share/apport/general-hooks/powerpc.py exists after installing the version of the package from -proposed.

For bonus points run apport-cli on a powerpc system and verify that the report contains information in the apport hook.

REGRESSION POTENTIAL
--------------------
We are just adding in a new general hook to apport that only runs on systems with an arch of ppc64 or ppc64le so there is little chance of regression.

On power/ppc64el system, we would need to enhance current apport reporting tool which some information like file content or commands output including
          "/proc/device-tree/"
            "/proc/loadavg"
            "/proc/locks"
           "/proc/misc"
            "/proc/swaps"
            "/proc/version"
            "/dev/nvram"
            "/var/log/platform"
            "ppc64_cpu --smt"
            "ppc64_cpu --cores-present"
            "ppc64_cpu --cores-on"
            "ppc64_cpu --run-mode"
           "ppc64_cpu --frequency"
           "ppc64_cpu --dscr"

Readme says : For complete instructions, see /usr/share/doc/apport/package-hooks.txt but
cat: /usr/share/doc/apport/package-hooks.txt: No such file or directory

Do I understand correctly I would need to create a file (for example) named : /usr/share/apport/general-hooks/power.py ?

Other questions:
Do you have common functions to put output of commands in logfile ?
do you have common functions to copy config file tree content to log file or should I create the list of file and copy content of each file to the logfile ?

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in apport (Ubuntu):
status: New → Confirmed
Revision history for this message
Thierry FAUCK (thierry-j) wrote :
Download full text (4.0 KiB)

Found that package-hooks.txt.gz exists.
Package independent hooks
=========================

Similarly to per-package hooks, you can also have additional
information collected for any crash or bug. For example, you might
want to include violation logs from SELinux or AppArmor for every
crash. The interface and file format is identical to the per-package
hooks, except that they need to be put into

  /usr/share/apport/general-hooks/<hookname>.py

The <hookname> can be arbitrary and should describe the functionality.

Standard hook functions
=======================

If you write hooks, please have a look at the apport.hookutils
module first:

Functions of interest:
-------------------------------
    attach_file(report, path, key=None, overwrite=True, force_unicode=False)
        Attach a file to the report.

        If key is not specified, the key name will be derived from the file
        name with path_to_key().

        If overwrite is True, an existing key will be updated. If it is False, a
        new key with '_' appended will be added instead.

        If the contents is valid UTF-8, or force_unicode is True, then the value
        will a string, otherwise it will be bytes.

    attach_file_if_exists(report, path, key=None, overwrite=True, force_unicode=False)
        Attach file contents if file exists.

        If key is not specified, the key name will be derived from the file
        name with path_to_key().

        If overwrite is True, an existing key will be updated. If it is False, a
        new key with '_' appended will be added instead.

        If the contents is valid UTF-8, or force_unicode is True, then the value
        will a string, otherwise it will be bytes.
    attach_root_command_outputs(report, command_map)
        Execute multiple commands as root and put their outputs into report.

        command_map is a keyname -> 'shell command' dictionary with the commands to
        run. They are all run through /bin/sh, so you need to take care of shell
        escaping yourself. To include stderr output of a command, end it with
        "2>&1".

        Just like root_command_output, this passes the command through pkexec,
        unless the caller is already root.

        This is preferrable to using root_command_output() multiple times, as that
        will ask for the password every time.
    command_available(command)
        Is given command on the executable search path?

    command_output(command, input=None, stderr=-2, keep_locale=False, decode_utf8=True)
        Try to execute given command (array) and return its stdout.

        In case of failure, a textual error gets returned. This function forces
        LC_MESSAGES to C, to avoid translated output in bug reports.

        If decode_utf8 is True (default), the output will be converted to a string,
        otherwise left as bytes.
    read_file(path, force_unicode=False)
        Return the contents of the specified path.

        If the contents is valid UTF-8, or force_unicode is True, then the value
        will a string, otherwise it will be bytes.
...

Read more...

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

Goal being to use sosreport pluggin ./sosreport-3.1/sos/plugins/powerpc.py

import os
from sos.plugins import Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin

class PowerPC(Plugin, RedHatPlugin, UbuntuPlugin, DebianPlugin):
    """IBM Power System related information
    """

    plugin_name = 'powerpc'

    def check_enabled(self):
        return (self.policy().get_arch() == "ppc64")

    def setup(self):
        try:
            with open('/proc/cpuinfo', 'r') as fp:
                contents = fp.read()
                ispSeries = "pSeries" in contents
                isPowerNV = "PowerNV" in contents
        except:
            ispSeries = False
            isPowerNV = False

        if ispSeries or isPowerNV:
            self.add_copy_spec("/proc/device-tree/")
            self.add_copy_spec("/proc/loadavg")
            self.add_copy_spec("/proc/locks")
            self.add_copy_spec("/proc/misc")
            self.add_copy_spec("/proc/swaps")
            self.add_copy_spec("/proc/version")
            self.add_copy_spec("/dev/nvram")
            self.add_copy_spec("/var/log/platform")
            self.add_cmd_output("ppc64_cpu --smt")
            self.add_cmd_output("ppc64_cpu --cores-present")
            self.add_cmd_output("ppc64_cpu --cores-on")
            self.add_cmd_output("ppc64_cpu --run-mode")
            self.add_cmd_output("ppc64_cpu --frequency")
            self.add_cmd_output("ppc64_cpu --dscr")

        if ispSeries:
            self.add_copy_spec("/proc/ppc64/lparcfg")
            self.add_copy_spec("/proc/ppc64/eeh")
            self.add_copy_spec("/proc/ppc64/systemcfg")
            self.add_cmd_output("lscfg -vp")
            self.add_cmd_output("lsmcode -A")
            self.add_cmd_output("lsvpd --debug")
            self.add_cmd_output("lsvio -des")
            self.add_cmd_output("servicelog --dump")
            self.add_cmd_output("servicelog_notify --list")
            self.add_cmd_output("usysattn")
            self.add_cmd_output("usysident")
            self.add_cmd_output("serv_config -l")
            self.add_cmd_output("bootlist -m both -r")
            self.add_cmd_output("lparstat -i")

        if isPowerNV:
            self.add_copy_spec("/proc/ppc64/")

It sounds like
self.add_cmd_output() would be replaced with root_command_output()
 self.add_copy_spec() is reading a path and returning content of files in that path, so I would understand that getting the list using read_file() and a loop with attach_file() would do the job.

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

Here is a first suggestion of implementation for a file called /usr/share/apport/general-hooks/powerpc.py
 - can you give me your feedback - thanks
#------------------------------------------------------------------------
import os, re, os.path, sys, platform

import apport.packaging
import apport.hookutils

from glob import glob

""" IBM Power System related information
"""

arch = platform.machine()
if arch in [ "ppc64", "ppc64le"]:
 print "Processing power %s" %arch
else:
 print "Not executing power query since arch %s" %arch
 exit(1)

def add_copy_spec(path):
 for file in apport.hookutils.read_file(path):
     apport.hookutils.attach_file(report, file)

def add_info(report):
        try:
            with open('/proc/cpuinfo', 'r') as fp:
                contents = fp.read()
                ispSeries = "pSeries" in contents
                isPowerNV = "PowerNV" in contents
        except:
            ispSeries = False
            isPowerNV = False

        if ispSeries or isPowerNV:
     print "Processing pSeries or PowerNV"
            add_copy_spec("/proc/device-tree/")
            add_copy_spec("/proc/loadavg")
            add_copy_spec("/proc/locks")
            add_copy_spec("/proc/misc")
            add_copy_spec("/proc/swaps")
            add_copy_spec("/proc/version")
            add_copy_spec("/dev/nvram")
            add_copy_spec("/var/log/platform")
            apport.hookutils.root_command_output(['ppc64_cpu','--smt'])
            apport.hookutils.root_command_output(['ppc64_cpu','--cores-present'])
            apport.hookutils.root_command_output(['ppc64_cpu','--cores-on'])
            apport.hookutils.root_command_output(['ppc64_cpu','--run-mode'])
            apport.hookutils.root_command_output(['ppc64_cpu','--frequency'])
            apport.hookutils.root_command_output(['ppc64_cpu','--dscr'])

        if ispSeries:
     print "Processing pSeries addons"
            add_copy_spec("/proc/ppc64/lparcfg")
            add_copy_spec("/proc/ppc64/eeh")
            add_copy_spec("/proc/ppc64/systemcfg")
            apport.hookutils.root_command_output(['lscfg','-vp'])
            apport.hookutils.root_command_output(['lsmcode','-A'])
            apport.hookutils.root_command_output(['lsvpd','--debug'])
            apport.hookutils.root_command_output(['lsvio','-des'])
            apport.hookutils.root_command_output(['servicelog','--dump'])
            apport.hookutils.root_command_output(['servicelog_notify','--list'])
            apport.hookutils.root_command_output(['usysattn'])
            apport.hookutils.root_command_output(['usysident'])
            apport.hookutils.root_command_output(['serv_config','-l'])
            apport.hookutils.root_command_output(['bootlist','-m','both','-r'])
            apport.hookutils.root_command_output(['lparstat','-i'])

        if isPowerNV:
            add_copy_spec("/proc/ppc64/")

Changed in apport (Ubuntu):
status: Confirmed → In Progress
Revision history for this message
Martin Pitt (pitti) wrote :

Hello Thierry,

so you found the .txt.gz issue already (text files get automatically compressed by dpkg when they exceed 1 kB or so, thus the reference is wrong, sorry). Going through your replies one by one, starting with the first questions:

> Do I understand correctly I would need so create a file (for example) named : /usr/share/apport/general-hooks/power.py ?

That's right. It should be written so that it exits early on machines where this doesn't apply (i. e. other architectures), or just guard the individual steps to avoid confusing error messages. If the hook fails it won't disrupt the bug/crash reporting process, but one gets the tracebacks on stderr (which is nice for debugging the hook, but confusing for users).

> Do you have common functions to put output of commands in logfile ?

Yes, hook_utils.coommand_output(). If you need to run stuff as root (should be avoided), you can use hookutils.attach_root_command_outputs() with a set of commands (please only call it once, as it needs to interactively ask for permission).

BTW, apport's Report objects and the resulting bug reports are not a single log file, they behave like a dictionary. So you can tell apart different components of the report, such as different log files / command outputs / etc.

> do you have common functions to copy config file tree content to log file or should I create the list of file and copy content of each file to the logfile ?

There's no helper to copy an entire tree. There's attach_conffiles() for adding changed conffiles of a particular package, everything else must be done manually. We don't want to encourage hook writers to generously attach everything they possibly can, as:

 - it increases the risks of attaching private/sensitive information; so any file needs to be carefully treated individually, and potentially anonymized
 - it makes bug reports and uploads too large
 - it's harder for the bug reviewer to see what the relevant information is

So it's generally better for a hook to only attach information if it's "unusual", i. e. not the default value.

I'll review your other comments/code soon.

Revision history for this message
Martin Pitt (pitti) wrote :

sosreport.py from comment 3:

           except:

FYI, it's better to do "except IOError:" here. Otherwise this will catch absolutely all exceptions, including e. g. SyntaxError or ValueError if you have a typo. That way you'll still get unexpected exceptions on stderr.

            self.add_cmd_output("servicelog --dump")
            self.add_cmd_output("servicelog_notify --list")

What do these commands do? Could they contain any potentially private data? Note that this includes user names, directory names (exposes projects that people are working on), etc.

Revision history for this message
Martin Pitt (pitti) wrote :

Comment 4, proposed hook:

> if arch in [ "ppc64", "ppc64le"]:
> print "Processing power %s" %arch

Please use print(...) to be compatible with Python 3. Ubuntu has used Apport with Python3 for several releases already. Also, please use 4 spaces for indentation, but I can fix such small issues myself when integrating this into the package, so nevermind that.

> else:
> print "Not executing power query since arch %s" %arch

print()

> exit(1)
Please move that entire check to add_info(), and replace the exit(1) with "return".

> def add_copy_spec(path):
> for file in apport.hookutils.read_file(path):

That won't work with directory names as "path" arguments, they are not files. If it's a single hierarchy, you can use "for file in os.listdir(path):", for a fully recursive search you need to use os.walk(). But please don't attach a gazillion little files; for e. g. /device-tree/ I suppose you should rather call tar and attach the tarball only. Or you pre-process it locally to extract a minimum of the actually interesting information and then only attach that text file.

Same print → print() issue as before.

Please dont' call root_command_output() multiple times, you'll get an auth prompt for every single one. Do a single call to attach_root_command_outputs() instead with a mapping of the commands.

Some hints:

You can get help for a Python class, or method with:

$ python3
>>> import apport.hookutils
>>> help(apport.hookutils)

>>> help(apport.hookutils.attach_root_command_outputs)

You can test your hook by putting it into /usr/share/apport/general-hooks/, then run "ubuntu-bug coreutils" from the CLI and inspect the details. You'll probably see a lot of exceptions (due to the Python 2 print statement, etc) first. Once you are satisfied wkth the kind of output you get in the hook, I'm happy to take over and massage the code a little more for readability/PEP-8/etc.

Thanks!

Revision history for this message
Martin Pitt (pitti) wrote :

FTR, I'm subscribed to this bug now, so I'll read/reply to your responses timely.

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

The servicelog package is as follow:
NAME
       servicelog - query the contents of the servicelog

SYNOPSIS
       /usr/bin/servicelog [options]

DESCRIPTION
       The servicelog command queries and displays the contents of the system
       servicelog. You can use the --query option to select which events to
       report.

OPTIONS
       When run without any command-line arguments, servicelog will report
       statistics on the types of entries that have been logged to the data-
       base.

       --dump or -d
              Report every event currently logged to the database.

       --query="query-string" or -q "query-string"
              Specify the type of events to report. See the "QUERY STRINGS"
              section.

       --help or -h
              Display a help message and exit.

       --version or -V
              Display the version of the command and exit.

QUERY STRINGS
       Servicelog events are stored in a relational database. When you spec-
       ify --query, query-string is used in an SQL WHERE clause to select the
       events to report. Here are the column names you can use in query
       strings.

       id record ID

       time_logged, time_event, time_last_update
              e.g., '2008-02-08 14:30:05'

sudo /usr/bin/servicelog
Servicelog Statistics:

There are no open events that require action.

Summary of Logged Events:

        Type Total Open Closed Info

             -------------------------------
                   0 0 0 0

Logged Repair Actions: 0
Registered Notification Tools: 0
ubuntu@fauck4:~/sosreport-3.1$ sudo /usr/bin/servicelog --dump
ubuntu@fauck4:~/sosreport-3.1$ sudo /usr/bin/servicelog_notify --list
There are no registered notification tools.

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

To answer the security question, as far as I understand it it can report about system or drivers as it reports about system events
Man page precise the following:
      The following column names can used to select OS-type events: os.ver-
       sion, subsystem, driver, and device (all text).

       The following column names can be used to select RTAS-type events: cre-
       ator_id (text); action_flags, platform_id, subsystem_id, pel_severity,
       rtas.event_type, event_subtype, kernel_id, and addl_word1 through
       addl_word8 (all integers).

       The following column names can be used to select ENCLOSURE-type events:
       enclosure_serial, enclosure_model (both text).

       The following column names can be used to select BMC-type events:
       sel_id, sel_type, generator, bmc.version, sensor_type, sensor_number,
       event_class, bmc.event_type, and direction (all integers).

As this package is not installed by default, a check for availability of the command will have to be added (if we consider it is worthwhile to keep it).

Revision history for this message
Thierry FAUCK (thierry-j) wrote :
Download full text (3.4 KiB)

Here is a new version of the python file: (It runs now).

import os, re, os.path, sys, platform

import apport.packaging
import apport.hookutils

from glob import glob
from apport.hookutils import command_output, attach_root_command_outputs, attach_file, attach_file_if_exists, command_available

""" IBM Power System related information
"""

def add_copy_spec(report,path):
    for file in os.listdir(path):
        attach_file(report,file,key="test")

def add_info(report,ui):
    arch = platform.machine()
    if arch in [ "ppc64", "ppc64le"]:
        print("Processing query for power architecture %s" %arch)
    else:
        return

    try:
        print("try")
        with open('/proc/cpuinfo', 'r') as fp:
            contents = fp.read()
            ispSeries = "pSeries" in contents
            isPowerNV = "PowerNV" in contents
            isPowerKVM = "emulated by qemu" in contents
        print("got flags ispSeries/isPowerNV/isPowerKVM: ", ispSeries, isPowerNV, isPowerKVM, end="\n" )
    except IOError:
        print("Error")
        ispSeries = False
        isPowerNV = False
        isPowerKVM = False

    if ispSeries or isPowerNV:
        print("Processing pSeries or PowerNV")
        add_copy_spec(report,"/proc/device-tree/")
        attach_file(report, '/proc/misc', 'ProcMisc')
        attach_file(report, '/proc/locks', 'ProcLocks')
        attach_file(report, '/proc/loadavg', 'ProcLoadAvg')
        attach_file(report, '/proc/swaps', 'ProcSwaps')
        attach_file(report, '/proc/version', 'ProcVersion')
        report['cpu_smt'] = command_output(['ppc64_cpu', '--smt'])
        report['cpu_cores'] = command_output(['ppc64_cpu', '--cores-present'])
        report['cpu_coreson'] = command_output(['ppc64_cpu', '--cores-on'])
        # To be executed as root
        attach_root_command_outputs(report, {
            'cpu_runmode': 'ppc64_cpu --run-mode',
            'cpu_freq': 'ppc64_cpu --frequency',
            'cpu_dscr': 'ppc64_cpu --dscr'
        })
        attach_file_if_exists(report,"/var/log/platform")
        #add_copy_spec(report,"/dev/nvram")

    if ispSeries and not isPowerKVM:
        print("Processing pSeries addons")
        attach_file(report, '/proc/ppc64/lparcfg', 'ProcLparCfg')
        attach_file(report, '/proc/ppc64/eeh', 'ProcEeh')
        attach_file(report, '/proc/ppc64/systemcfg', 'ProcSystemCfg')
        report['lscfg_vp'] = command_output(['lscfg', '-vp'])
        report['lsmcode'] = command_output(['lsmcode', '-A'])
        report['bootlist'] = command_output(['bootlist', '-m', 'both', '-r'])
        report['lparstat'] = command_output(['lparstat', '-i'])
        if command_available('lsvpd'):
            report['lsvpd'] = command_output(['lsvpd', '--debug'])
        if command_available('lsvio'):
            report['lsvio'] = command_output(['lsvio', '-des'])
        if command_available('servicelog'):
            report['servicelog_dump'] = command_output(['servicelog', '--dump'])
        if command_available('servicelog_notify'):
            report['servicelo_list'] = command_output(['servicelog_notify', '--list'])
        if command_available('usysattn'):
            report['usysattn'] = comman...

Read more...

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

Sorry, 2 caveats
- the add_copy_spec() function is not yet properly done as it covers tree of files and it sounds not clear yet if all files are needed and if a tar file is better than a set of single small files.
- the case of /dev/nvram is not solved either as it potentially reports info on current applications running and I am not yet sure it must be included in the report.

Thanks for your advise

Revision history for this message
Martin Pitt (pitti) wrote :

Hello Thierry,

sorry for the late response (buried in stuff/extra day off). I suppose all those debug statements like print("try") will go away?

As I don't have access to such a machine, could you perhaps run

  apport-bug --save /tmp/test.apport coreutils

with that hook installed, and attach /tmp/test.apport here, so that I can get an impression how the data looks like?

I'm still not sure whether it's really justified to add all this data to *every* bug report of powerpc. It might get a bit overwhelming for people who look at this, so perhaps some of the data is only necessary for crashes or for bug reports, or for kernel reports? E. g. we should certainly not do this for package installation failures. This would involve checking report['ProblemType'].

Code wise this by and large looks good now, modulo a few pyflakes/code formatting issues, but I can handle those easily on my side. Can you please attach new versions of the hook instead of pasting them as a comment, to avoid whitespace mangling?

Thanks!

Revision history for this message
Martin Pitt (pitti) wrote :

As for /dev/nvram: This seems to be the kind of information which we should only attach to kernel reports, or which bug triagers should request explicity.

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

Hi Martin
Thanks for your comment
Off course the print statement will disappear.

I will attach the /tmp/test.apport

As for the 2 questions I raised and the wondering you have here is what the developer of the initial query tool (in sosreport) answered:

> Mostly for /proc/device-tree/ as a tar file or separated file
question ?:

We should copy this dir as is. (cp -r /proc/device-tree <dest dir>). Then
we can tar <dest dir>.

/proc/device-tree contains all device related information. We need this to
debug kernel related bugs, not required for user space issues like package
installation etc.

NVRAM contains vital information about host etc.. This is required for
debugging kernel/platform related bugs, not for user space.

-Vasant

Revision history for this message
Thierry FAUCK (thierry-j) wrote :
Revision history for this message
Thierry FAUCK (thierry-j) wrote :

Need to remove the debug staement and fix the tar directory

Revision history for this message
Martin Pitt (pitti) wrote :

Thanks Thierry; the coreutils output actually looks quite reasonable, just the cpu_smt error message is a bit ugly. It might inflate a bit when the device tree tar gets added, but I propose to only do that for

  if report['ProblemType'].startswith('Kernel') or 'linux' in report.get('Package')

How does that sound?

Otherwise I'm happy to integrate this once you are happy with the kind of information that it attaches.

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

Hello Martin,

That sounds good to me.
I would also think - according to previous comment on /dev/nvram, it would be good to add the only for the kernel type of report.

Great thanks for your help with that issue (and programming advise) .

Revision history for this message
Thierry FAUCK (thierry-j) wrote :

As per last comment Canonical to handle it now.

Changed in apport (Ubuntu):
status: In Progress → Fix Committed
Martin Pitt (pitti)
Changed in apport (Ubuntu):
status: Fix Committed → In Progress
assignee: nobody → Martin Pitt (pitti)
Revision history for this message
Martin Pitt (pitti) wrote :

I'm struggling with /proc/ppc64; "tar cv /proc/ppc64/ | tar t" only archives the dir, and never anything inside it, so it seems tar has some trouble with the "magic" dirs in /proc.

Revision history for this message
Martin Pitt (pitti) wrote :

Ah, nevermind, it's a symlink.

Revision history for this message
Martin Pitt (pitti) wrote :

OK, cleaned this up and tested in a ppc64 VM: http://bazaar.launchpad.net/~ubuntu-core-dev/ubuntu/utopic/apport/ubuntu/revision/2340

Please let me know if anything is still missing, we can always reiterate on that. Thanks!

Changed in apport (Ubuntu):
assignee: Martin Pitt (pitti) → nobody
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apport - 2.14.5-0ubuntu4

---------------
apport (2.14.5-0ubuntu4) utopic; urgency=medium

  [ Steve Langasek ]
  * Fix invalid shebang lines for apport-noui maintainer scripts which I
    somehow overlooked.

  [ Martin Pitt ]
  * Add data/general-hooks/powerpc.py: Collect some PowerPC[64] information.
    Thanks to Thierry FAUCK! (LP: #1336462)
 -- Martin Pitt <email address hidden> Fri, 08 Aug 2014 15:13:16 +0200

Changed in apport (Ubuntu):
status: Fix Committed → Fix Released
Revision history for this message
Kamalesh Babulal (kamalesh-b) wrote :
Revision history for this message
Kamalesh Babulal (kamalesh-b) wrote :

The patch attached to comment#25:

Enhances PowerPC hook to capture more information if the underlying platform is PowerNV. This patch adds support to collect following information:
- List all dump generated (ls -l)
- OPAL console log, if available.
- All of the OPAL-elog dump (if kernel specified).
and also fix trivial typo.

This patch is based on
http://bazaar.launchpad.net/~ubuntu-core-dev/ubuntu/utopic/apport/ubuntu/revision/2340

Steve Langasek (vorlon)
Changed in apport (Ubuntu Trusty):
assignee: nobody → Brian Murray (brian-murray)
status: New → Triaged
Revision history for this message
Brian Murray (brian-murray) wrote :

I've backported the powerpc hook from wily to trusty and uploaded a new version of apport to trusty-proposed for the SRU team to review.

description: updated
Changed in apport (Ubuntu Trusty):
status: Triaged → In Progress
Revision history for this message
Brian Murray (brian-murray) wrote :

I briefly looked at the patch in comment #25 and it seems fine, however this would first need to be added to apport in wily. Please open a new bug for the patch in comment #25. Thanks.

Revision history for this message
Chris J Arges (arges) wrote : Please test proposed package

Hello Thierry, or anyone else affected,

Accepted apport into trusty-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/apport/2.14.1-0ubuntu3.14 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in apport (Ubuntu Trusty):
status: In Progress → Fix Committed
tags: added: verification-needed
Revision history for this message
Brian Murray (brian-murray) wrote :

The Trusty fix for the this bug was shadowed by a security update and needs reuploading.

apport (2.14.1-0ubuntu3.15) trusty-security; urgency=medium

....

  [ Marc Deslauriers ]
  * This package does _not_ contain the changes from 2.14.1-0ubuntu3.14 in
    trusty-proposed.

Changed in apport (Ubuntu Trusty):
status: Fix Committed → Triaged
Changed in apport (Ubuntu Trusty):
status: Triaged → In Progress
Revision history for this message
Chris J Arges (arges) wrote :

Hello Thierry, or anyone else affected,

Accepted apport into trusty-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/apport/2.14.1-0ubuntu3.16 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in apport (Ubuntu Trusty):
status: In Progress → Fix Committed
Revision history for this message
Brian Murray (brian-murray) wrote :

I confirm that with apport version 2.14.1-0ubuntu3.16 the powerpc.py hook is installed in /usr/share/apport/general-hooks/.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package apport - 2.14.1-0ubuntu3.16

---------------
apport (2.14.1-0ubuntu3.16) trusty-proposed; urgency=medium

  * Add data/general-hooks/powerpc.py: Collect some PowerPC[64] information.
    Thanks to Thierry FAUCK! (LP: #1336462)

 -- Brian Murray <email address hidden> Thu, 24 Sep 2015 13:02:09 -0700

Changed in apport (Ubuntu Trusty):
status: Fix Committed → Fix Released
Revision history for this message
Brian Murray (brian-murray) wrote : Update Released

The verification of the Stable Release Update for apport has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.