writing-clue-files
|
Size: 4673
Comment:
|
← Revision 22 as of 2008-08-06 17:00:36 ⇥
Size: 5353
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 1: | Line 1: |
| ## page was renamed from BugHelper/doc/WritingClueFiles ||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents(2)>>|| |
|
| Line 3: | Line 6: |
| As described in the introductory documentation you can create simple cluefiles {{{bugxml -a}}}. For more complex search criteria you need to edit the XML files as described here. | As described in the [[BugHelper/doc|introductory documentation]] you can create simple cluefiles with {{{bugxml -a}}}. For more complex search criteria you need to edit the XML files as described here. |
| Line 25: | Line 28: |
| {{{</clues> | {{{ </clues> |
| Line 28: | Line 32: |
| You can add a long list of clues with the {{{<clues> </clues>}}} tag, each with a list of search strings within {{{<op> </op>}}} tags. Each clue also requires an {{{<info>}}} tag to hold a brief description of the bug type. Uf the clue vdescribes a duplicate then this description would typically be the title of the original bug. | You can add a long list of clues with the {{{<clues> </clues>}}} tag, each with a list of search strings within {{{<op> </op>}}} tags. Each clue also requires an {{{<info>}}} tag to hold a brief description of the bug type. If the clue describes a duplicate then this description would typically be the title of the original bug. |
| Line 32: | Line 36: |
| Clues can be inherited from other clue files. ''totem'' can for example inherit clues from ''gnome'' and ''gstreamer'': | '''Declaring duplicates:''' If you create a clue that searches for duplicates of bug #X you can note that specifically in the clue file. Bughelper will then refrain from listing this bug in these searches. {{{ <dontlist> <bug>48355</bug> </dontlist> }}} '''Inheritance:''' Clues can be inherited from other clue files. ''totem'' can for example inherit clues from ''gnome'' and ''gstreamer'': |
| Line 40: | Line 52: |
| You can also use the logical opperators AND, OR and NOT to create detailed bug searches. Example: | '''Logical operators:''' You can also combine the logical opperators AND, OR and NOT to create detailed bug searches. Example: |
| Line 43: | Line 55: |
| <and> <or> <op>text</op> <op bin="not">text2</op> </or> <op>text3</op> </and> |
<clue> <contains> <and> <op>apples</op> <or> <op>oranges</op> <op>pears</op> </or> <bin=not op>bananas</op> </and> </contains> <info>Bug description must contain 'apples' AND either 'oranges' OR 'pears'. It may not contain 'bananas'.</info> </clue> |
| Line 53: | Line 70: |
| === Example === | == Examples == |
| Line 55: | Line 72: |
| packages/ubiquity.info: | Real-life examples from {{{packages/ubiquity.info}}}: |
| Line 60: | Line 77: |
| <dontlist> <bug>48355</bug> </dontlist> |
|
| Line 61: | Line 81: |
| <op>Failed to unmount /var/lib/ubiquity/source</op> | <and> <op>IOError: [Errno 28] No space left on device</op> <op>copy_all</op> <op bin="not">stepPartAdvanced</op> </and> |
| Line 63: | Line 87: |
| <info>This might be something that Henrik knows more about</info> | <info>This is a dupe of 48355 if the system partitions are big enough</info> |
| Line 66: | Line 90: |
| <dontlist> <bug>48856</bug> </dontlist> |
|
| Line 67: | Line 94: |
| <op>IOError: [Errno 28] No space left on device</op> | <and> <op>AttributeError: 'NoneType' object has no attribute 'stdin'</op> <op>print >>self.gparted_subp.stdin, "apply"</op> </and> |
| Line 69: | Line 99: |
| <info>This bug can be rejected as it was the user's fault.</info> </clue> <clue> <contains> <op>ubiquity: ['/bin/hw-detect'] exited with code 1</op> </contains> <info>This can be probably reassigned to another package.</info> </clue> <clue> <contains> <op>['/usr/lib/ubiquity/localechooser/prebaseconfig'] exited with code 1</op> </contains> <info>This might be something that Henrik knows more about.</info> </clue> <clue> <contains> <op>UnicodeDecodeError: 'utf8' codec can't decode bytes in position</op> </contains> <info>This might be something that Henrik knows more about</info> </clue> <clue> <contains> <op>AttributeError: 'NoneType' object has no attribute 'stdin'</op> </contains> <info>This might be something that Henrik knows more about</info> </clue> <clue> <contains> <op>/usr/lib/python2.4/site-packages/debconf.py</op> </contains> <info>This might be something that Henrik knows more about</info> </clue> <clue> <contains> <op>OSError</op> </contains> <info>This might be something that Henrik knows more about</info> |
<info>This is a duplicate of 48856, which was fixed in 1.0.13 and 1.1.1</info> |
| Line 110: | Line 104: |
| = Sharing clue files = | |
| Line 111: | Line 106: |
| The real benefits of bughelper become apparent when bug triagers and developers share their knowledge of the through common clue files. | |
| Line 112: | Line 108: |
| === Preliminaries === | |
| Line 113: | Line 110: |
| === Declare duplicate numbers === | 1. Get a Launchpad Account at https://launchpad.net/ 1. Add your SSH keys to https://launchpad.net/people/+me/+editsshkeys 1. Install `bzr`, it's a nice and handy tool. We use it for developing BugHelper: {{{ sudo apt-get install bzr}}} (if you installed bughelper on feisty, bzr will already be installed. 1. edit `~/.bazaar/bazaar.conf` and add something along the lines of:{{{ [DEFAULT] email=Daniel Holbach <daniel.holbach@ubuntu.com>}}} so that your commit will be identified. 1. Create a directory for your local {{{bzr}}} branches{{{ mkdir ~/bzr; cd ~/bzr}}} |
| Line 115: | Line 120: |
| If you add a clue that basically points out, that bug A (which contains a certain condition) is a duplicate of bug B, you probably don't want bughelper to list 'B' every time, you run that query. Therefore you can do the following | === Get the latest copy of bughelper-data === 1. To start sharing clue files you must first check out the latest a copy of the shared repository as a local {{{bzr}}} branch:{{{ bzr checkout lp:~bugsquad/bughelper-data/main bughelper-data}}} This is actually the same repository that {{{bughelper}}} updates its clue files from normally, but with this format you can make changes and upload them again with bzr. 1. Generate default bughelper config:{{{ bughelper --gen-config}}} 1. Edit `~/.bughelper/config` to contain the path to bughelper-data (you just checked out) in the `Local-Packages-Dir:` line. === Editing and uploading === Add a new clue with {{{bugxml -a}}} or simply edit the {{{.info}}} for a given package. From the {{{bughelper-data}}} directory, run |
| Line 118: | Line 134: |
| ./bugxml -a totem "XRHFAOJAH.so" "This is a duplicate of Bug 13466." -d 13466}}} | bzr unknowns }}} |
| Line 120: | Line 137: |
| = Sharing clue files = zthe real benefits of bughelper become apparent when bug triagers and developers share their knowledge of the through common clue files. To start sharing clue files you must first check out the latest a copy of the shared repository as a local {{{bzr}}} branch: {{{bzr checkout sftp://YOUR-LAUNCHPAD-ID@bazaar.launchpad.net/~bugsquad/bughelper-data/main bughelper-data}}} This is actually the same repository that {{{bughelper}}} updates its cluefiles from normally, but with this format you can make changes and upload them again with bzr. Simply edit the {{{.info}}} for a gien package, commit the changes with |
to see if your clue file is listed as a new file. If so, you first have to add it with |
| Line 133: | Line 140: |
| bzr commit -m "added a totem clue"}}} and push the changes back up to the shared repository with: {{{??? |
bzr add <filename> |
| Line 140: | Line 143: |
| Optionally, you can edit the `Local-Packages-Dir:` line of ~/.bughelper/config` to contain the path to the bughelper-data {{{bzr}}} directory. This will alow you to work directly with the shared repository and stay in sync. | If you have simply edited an existing file you can go directly to the commit step: |
| Line 142: | Line 145: |
| {{{ bzr commit -m "added a totem clue" }}} Optionally, you can edit the `Local-Packages-Dir:` line of `~/.bughelper/config` to contain the path to the bughelper-data {{{bzr}}} directory. The directory you created with the {{{bzr}}} then becomes you local working directory. Make changes there as you experiment with new clues and commit the ones that work well. |
|
| Line 144: | Line 152: |
| Go back to '''[:BugHelper/Documentation]'''.[[BR]] CategoryBugSquad |
Go back to '''[[BugHelper/doc]]'''.<<BR>> CategoryBugSquad<<BR>> CategoryBugHelper |
Writing clue files
As described in the introductory documentation you can create simple cluefiles with bugxml -a. For more complex search criteria you need to edit the XML files as described here.
The basic clue file created with bugxml has this header:
<?xml version="1.0"?> <clues version="0.1">
and contains a single clue on the form:
<clue>
<contains>
<op>crash</op>
</contains>
<info>A CRASHER BUG</info>
</clue>and finally closes with:
</clues>
You can add a long list of clues with the <clues> </clues> tag, each with a list of search strings within <op> </op> tags. Each clue also requires an <info> tag to hold a brief description of the bug type. If the clue describes a duplicate then this description would typically be the title of the original bug.
Optional elements
Declaring duplicates: If you create a clue that searches for duplicates of bug #X you can note that specifically in the clue file. Bughelper will then refrain from listing this bug in these searches.
<dontlist>
<bug>48355</bug>
</dontlist>Inheritance: Clues can be inherited from other clue files. totem can for example inherit clues from gnome and gstreamer:
<inherits>
<inherit>gnome</inherit>
<inherit>gstreamer</inherit>
</inherits>Logical operators: You can also combine the logical opperators AND, OR and NOT to create detailed bug searches. Example:
<clue>
<contains>
<and>
<op>apples</op>
<or>
<op>oranges</op>
<op>pears</op>
</or>
<bin=not op>bananas</op>
</and>
</contains>
<info>Bug description must contain 'apples' AND either 'oranges' OR 'pears'. It may not contain 'bananas'.</info>
</clue>
Examples
Real-life examples from packages/ubiquity.info:
<clues>
<clue>
<dontlist>
<bug>48355</bug>
</dontlist>
<contains>
<and>
<op>IOError: [Errno 28] No space left on device</op>
<op>copy_all</op>
<op bin="not">stepPartAdvanced</op>
</and>
</contains>
<info>This is a dupe of 48355 if the system partitions are big enough</info>
</clue>
<clue>
<dontlist>
<bug>48856</bug>
</dontlist>
<contains>
<and>
<op>AttributeError: 'NoneType' object has no attribute 'stdin'</op>
<op>print >>self.gparted_subp.stdin, "apply"</op>
</and>
</contains>
<info>This is a duplicate of 48856, which was fixed in 1.0.13 and 1.1.1</info>
</clue>
</clues>
Sharing clue files
The real benefits of bughelper become apparent when bug triagers and developers share their knowledge of the through common clue files.
Preliminaries
Get a Launchpad Account at https://launchpad.net/
Add your SSH keys to https://launchpad.net/people/+me/+editsshkeys
Install bzr, it's a nice and handy tool. We use it for developing BugHelper:
sudo apt-get install bzr
(if you installed bughelper on feisty, bzr will already be installed.edit ~/.bazaar/bazaar.conf and add something along the lines of:
[DEFAULT] email=Daniel Holbach <daniel.holbach@ubuntu.com>
so that your commit will be identified.Create a directory for your local bzr branches
mkdir ~/bzr; cd ~/bzr
Get the latest copy of bughelper-data
To start sharing clue files you must first check out the latest a copy of the shared repository as a local bzr branch:
bzr checkout lp:~bugsquad/bughelper-data/main bughelper-data
This is actually the same repository that bughelper updates its clue files from normally, but with this format you can make changes and upload them again with bzr.
Generate default bughelper config:
bughelper --gen-config
Edit ~/.bughelper/config to contain the path to bughelper-data (you just checked out) in the Local-Packages-Dir: line.
Editing and uploading
Add a new clue with bugxml -a or simply edit the .info for a given package. From the bughelper-data directory, run
bzr unknowns
to see if your clue file is listed as a new file. If so, you first have to add it with
bzr add <filename>
If you have simply edited an existing file you can go directly to the commit step:
bzr commit -m "added a totem clue"
Optionally, you can edit the Local-Packages-Dir: line of ~/.bughelper/config to contain the path to the bughelper-data bzr directory. The directory you created with the bzr then becomes you local working directory. Make changes there as you experiment with new clues and commit the ones that work well.
Go back to BugHelper/doc.
CategoryBugSquad
CategoryBugHelper
BugHelper/doc/writing-clue-files (last edited 2008-08-06 17:00:36 by localhost)