<a id="bug-fixing-checklist"></a>

# Bug fixing checklist

## 1. Get code and tarball

For the tarball, you have to be inside the repository folder. You must checkout
to the version you need before getting the tarball.

- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  `git-ubuntu clone <source_package_name> [destination_folder]`
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Tarball: `git-ubuntu export-orig`
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  If not there, from `ubuntu-dev-tools` package: `pull-lp-source <source_package_name> [release|version]`
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  If not there, from `ubuntu-dev-tools` package: `pull-debian-source <source_package_name> [release|version]`
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Or, from `devscripts`: `debcheckout <source_package_name>`
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Tarball: `origtargz`
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Or, from `devscripts`: `dget <url_dsc_file_of_the_package (tracker.debian.org/salsa.debian ... look on this webs for this)>`
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Or, from `git-buildpackage`: `gpb import-dsc --pristine-tar <url_dsc_file_of_the_package (tracker.debian.org/salsa.debian ... look on this webs for this)>`
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Tarball: `gbp import-orig --uscan` or `uscan` or `origtargz`

## 2. Bug fix

- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Step-to-reproduce (for later copy-paste)
  ```none

  ```
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Record bad case (for later copy-paste)
  ```none

  ```
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Code the fix:
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Changes are under `debian/` folder or the package is Native
    (`debian/source/format` is Native 1.0)
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Or patching: Changes are outside `debian/` folder or incorporating a
    patch-as-is and `debian/source/format` is Quilt 3.0:
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Create the patch using `dquilt` – **don’t forget** to activate the
      new patch BEFORE doing the changes!)
      - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Or using `git diff`
      - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Or using Git Patch in VS Code
      - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Or `edit-patch` (for incorporating/changing an existing one)
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Check the patch header:
      - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> If it doesn’t exist, create a new one: `quilt header -e --dep3 <patch_file>`
      - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Check header style:
        - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Not references to the functions after @@
        - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Path of the files are with a and b
        - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> New lines are with a dot (.) in the Description (no empty lines)
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Record good case (for later copy-paste)
  ```none

  ```

## 3. Build new package

- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> `debian/changelog` (use `dch -i`)
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Version: for an SRU, it increments decimal. See [Version string format](https://documentation.ubuntu.com/project/how-ubuntu-is-made/concepts/version-strings.md#version-strings) for more.
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Change UNRELEASED to series name
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Respect the format:
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Check there are ≤ 70 chars per line
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Check no trailing spaces are present
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Indent has 2 spaces since last bullet point (or the beginning)
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Bullet points go from `*` (more general) then `-`, then `+`
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  `(LP: #XXXXXXXX)` is present if a fix for a LP bug is being released
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  `(LP: XXXXXXXX)` is present if a LP bug is referenced
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  If Debian related bug is mentioned: `Closes: NNNNNNN`
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  If Debian related bug is being fixed: `Closes: #NNNNNNN`
    - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Optional: A “Thanks to” is present if you are not the author of the
      code being submitted (normally when submitting patches)
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  `debian/control`: check Maintainers field is set to Ubuntu Developers (if
  not, use `update-maintainer` from `ubuntu-dev-tools` – this is more frequent
  in merges)
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Optional: Get `lintian` output
  ```none
  
  ```
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Optional: Autopkgtest output (DEP-8 tests)
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Locally
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Using the PPA package (Recommended): `ppa tests ${ppa_address} --release ${codename}`

## 4. (optional) PPA :

```none
    
```

- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Change Build types
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  `dput`-signed `changes` file

## 5. (optional) SRU/MIR/FFe template

- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> [SRU](https://documentation.ubuntu.com/project/SRU/reference/bug-template.md#reference-sru-bug-template)
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> [MIR reporter’s template](https://documentation.ubuntu.com/project/MIR/mir-reporters-template.md#mir-reporters-template)
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> [FFe](https://documentation.ubuntu.com/project/release-team/freeze-exceptions.md#feature-freeze-exceptions):
  ```default
  [[ Feature Freeze exception ]]
  [Description]
     * A description of the proposed changes, with sufficient detail to estimate their potential impact on the distribution
  [Rationale]
     * A rationale for the exception, explaining the benefit of the change
  [Additional information]
     * Any additional information which would be helpful in considering the decision:
       -  If the upload is a new upstream microrelease, the relevant part of the upstream changelog and/or release notes.
       -  An explanation of the testing which has been performed on the new version in Ubuntu (main features screenshot), including verification that the new package:
         + builds (attach build.log)
         + installs and upgrades (attach install log)
  [Original Report]
  ----------------------------
  ```

## 6. MP

- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Target Branch: `ubuntu/<UbuntuSeries>-devel` for bug fixing or
  `debian/sid` for merges
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Reviewers : `$(ubuntu-upload-permission --list-uploaders <package>)` and
  `canonical-<your-team>` (e.g. `canonical-server-reporter` for Server team
  members)
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Description:
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  PPA
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  Optional: Tags for merge bugs
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  G/B cases or refer to SRU template
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  (optional) autopkgtest output
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  (optional) Lintian output

## After submission and approval

- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> **7.** Upload the package (or [look for Sponsorship](https://documentation.ubuntu.com/project/how-ubuntu-is-made/processes/sponsorship.md#sponsorship)).
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Check that it builds ok and it gets published in the archive (`https://launchpad.net/ubuntu/+source/<package_name>`) or check mail.
  - <input class="task-list-item-checkbox" disabled="disabled" type="checkbox"> Change the MP status to “Merged”
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  **8.** Tracking migration: check `update_excuses`
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  **9.** If SRU: Verification: change the tags in LP bug for the done ones
  instead of the needed ones
- <input class="task-list-item-checkbox" disabled="disabled" type="checkbox">  **10.** (optional) When Fix Released: Remove `server-next`/`server-todo`
  tags in the LP bug
