1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2010-05-06 17:34-0400\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
15 "Content-Type: text/plain; charset=utf-8\n"
16 "Content-Transfer-Encoding: ENCODING"
18 #. type: Content of: <chapter><title>
20 msgid "Managing Packages"
23 #. type: Content of: <chapter><para>
26 "This chapter contains information related to creating, uploading, "
27 "maintaining, and porting packages."
30 #. type: Content of: <chapter><section><title>
35 #. type: Content of: <chapter><section><para>
38 "If you want to create a new package for the Debian distribution, you should "
39 "first check the <ulink url=\"&url-wnpp;\">Work-Needing and Prospective "
40 "Packages (WNPP)</ulink> list. Checking the WNPP list ensures that no one is "
41 "already working on packaging that software, and that effort is not "
42 "duplicated. Read the <ulink url=\"&url-wnpp;\">WNPP web pages</ulink> for "
46 #. type: Content of: <chapter><section><para>
49 "Assuming no one else is already working on your prospective package, you "
50 "must then submit a bug report (<xref linkend=\"submit-bug\"/>) against the "
51 "pseudo-package <systemitem role=\"package\">wnpp</systemitem> describing "
52 "your plan to create a new package, including, but not limiting yourself to, "
53 "a description of the package, the license of the prospective package, and "
54 "the current URL where it can be downloaded from."
57 #. type: Content of: <chapter><section><para>
60 "You should set the subject of the bug to <literal>ITP: "
61 "<replaceable>foo</replaceable> -- <replaceable>short "
62 "description</replaceable></literal>, substituting the name of the new "
63 "package for <replaceable>foo</replaceable>. The severity of the bug report "
64 "must be set to <literal>wishlist</literal>. Please send a copy to "
65 "&email-debian-devel; by using the X-Debbugs-CC header (don't use CC:, "
66 "because that way the message's subject won't indicate the bug number). If "
67 "you are packaging so many new packages (>10) that notifying the mailing "
68 "list in separate messages is too disruptive, send a summary after filing the "
69 "bugs to the debian-devel list instead. This will inform the other "
70 "developers about upcoming packages and will allow a review of your "
71 "description and package name."
74 #. type: Content of: <chapter><section><para>
77 "Please include a <literal>Closes: "
78 "#<replaceable>nnnnn</replaceable></literal> entry in the changelog of the "
79 "new package in order for the bug report to be automatically closed once the "
80 "new package is installed in the archive (see <xref "
81 "linkend=\"upload-bugfix\"/>)."
84 #. type: Content of: <chapter><section><para>
87 "If you think your package needs some explanations for the administrators of "
88 "the NEW package queue, include them in your changelog, send to "
89 "&email-ftpmaster; a reply to the email you receive as a maintainer after "
90 "your upload, or reply to the rejection email in case you are already "
94 #. type: Content of: <chapter><section><para>
97 "When closing security bugs include CVE numbers as well as the "
98 "<literal>Closes: #<replaceable>nnnnn</replaceable></literal> This is useful "
99 "for the security team to track vulnerabilities. If an upload is made to fix "
100 "the bug before the advisory ID is known, it is encouraged to modify the "
101 "historical changelog entry with the next upload. Even in this case, please "
102 "include all available pointers to background information in the original "
106 #. type: Content of: <chapter><section><para>
109 "There are a number of reasons why we ask maintainers to announce their "
113 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
116 "It helps the (potentially new) maintainer to tap into the experience of "
117 "people on the list, and lets them know if anyone else is working on it "
121 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
124 "It lets other people thinking about working on the package know that there "
125 "already is a volunteer, so efforts may be shared."
128 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
131 "It lets the rest of the maintainers know more about the package than the one "
132 "line description and the usual changelog entry ``Initial release'' that gets "
133 "posted to &email-debian-devel-changes;."
136 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
139 "It is helpful to the people who live off <literal>unstable</literal> (and "
140 "form our first line of testers). We should encourage these people."
143 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
146 "The announcements give maintainers and other interested parties a better "
147 "feel of what is going on, and what is new, in the project."
150 #. type: Content of: <chapter><section><para>
153 "Please see <ulink url=\"http://&ftp-master-host;/REJECT-FAQ.html\"></ulink> "
154 "for common rejection reasons for a new package."
157 #. type: Content of: <chapter><section><title>
159 msgid "Recording changes in the package"
162 #. type: Content of: <chapter><section><para>
165 "Changes that you make to the package need to be recorded in the "
166 "<filename>debian/changelog</filename>. These changes should provide a "
167 "concise description of what was changed, why (if it's in doubt), and note if "
168 "any bugs were closed. They also record when the package was completed. "
169 "This file will be installed in "
170 "<filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.Debian.gz</filename>, "
172 "<filename>/usr/share/doc/<replaceable>package</replaceable>/changelog.gz</filename> "
173 "for native packages."
176 #. type: Content of: <chapter><section><para>
179 "The <filename>debian/changelog</filename> file conforms to a certain "
180 "structure, with a number of different fields. One field of note, the "
181 "<literal>distribution</literal>, is described in <xref "
182 "linkend=\"distribution\"/>. More information about the structure of this "
183 "file can be found in the Debian Policy section titled "
184 "<filename>debian/changelog</filename>."
187 #. type: Content of: <chapter><section><para>
190 "Changelog entries can be used to automatically close Debian bugs when the "
191 "package is installed into the archive. See <xref "
192 "linkend=\"upload-bugfix\"/>."
195 #. type: Content of: <chapter><section><para>
198 "It is conventional that the changelog entry of a package that contains a new "
199 "upstream version of the software looks like this:"
202 #. type: Content of: <chapter><section><screen>
205 msgid " * new upstream version\n"
208 #. type: Content of: <chapter><section><para>
211 "There are tools to help you create entries and finalize the "
212 "<filename>changelog</filename> for release — see <xref "
213 "linkend=\"devscripts\"/> and <xref linkend=\"dpkg-dev-el\"/>."
216 #. type: Content of: <chapter><section><para>
218 msgid "See also <xref linkend=\"bpp-debian-changelog\"/>."
221 #. type: Content of: <chapter><section><title>
223 msgid "Testing the package"
226 #. type: Content of: <chapter><section><para>
229 "Before you upload your package, you should do basic testing on it. At a "
230 "minimum, you should try the following activities (you'll need to have an "
231 "older version of the same Debian package around):"
234 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
237 "Install the package and make sure the software works, or upgrade the package "
238 "from an older version to your new version if a Debian package for it already "
242 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
245 "Run <command>lintian</command> over the package. You can run "
246 "<command>lintian</command> as follows: <literal>lintian -v "
247 "<replaceable>package-version</replaceable>.changes</literal>. This will "
248 "check the source package as well as the binary package. If you don't "
249 "understand the output that <command>lintian</command> generates, try adding "
250 "the <literal>-i</literal> switch, which will cause "
251 "<command>lintian</command> to output a very verbose description of the "
255 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
258 "Normally, a package should <emphasis>not</emphasis> be uploaded if it causes "
259 "lintian to emit errors (they will start with <literal>E</literal>)."
262 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
265 "For more information on <command>lintian</command>, see <xref "
266 "linkend=\"lintian\"/>."
269 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
272 "Optionally run <command>debdiff</command> (see <xref linkend=\"debdiff\"/>) "
273 "to analyze changes from an older version, if one exists."
276 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
279 "Downgrade the package to the previous version (if one exists) — this tests "
280 "the <filename>postrm</filename> and <filename>prerm</filename> scripts."
283 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
285 msgid "Remove the package, then reinstall it."
288 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
291 "Copy the source package in a different directory and try unpacking it and "
292 "rebuilding it. This tests if the package relies on existing files outside "
293 "of it, or if it relies on permissions being preserved on the files shipped "
294 "inside the <filename>.diff.gz</filename> file."
297 #. type: Content of: <chapter><section><title>
299 msgid "Layout of the source package"
302 #. type: Content of: <chapter><section><para>
304 msgid "There are two types of Debian source packages:"
307 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
310 "the so-called <literal>native</literal> packages, where there is no "
311 "distinction between the original sources and the patches applied for Debian"
314 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
317 "the (more common) packages where there's an original source tarball file "
318 "accompanied by another file that contains the changes made by Debian"
321 #. type: Content of: <chapter><section><para>
324 "For the native packages, the source package includes a Debian source control "
325 "file (<literal>.dsc</literal>) and the source tarball "
326 "(<literal>.tar.{gz,bz2,lzma}</literal>). A source package of a non-native "
327 "package includes a Debian source control file, the original source tarball "
328 "(<literal>.orig.tar.{gz,bz2,lzma}</literal>) and the Debian changes "
329 "(<literal>.diff.gz</literal> for the source format “1.0” or "
330 "<literal>.debian.tar.{gz,bz2,lzma}</literal> for the source format “3.0 "
334 #. type: Content of: <chapter><section><para>
337 "With source format “1.0”, whether a package is native or not was determined "
338 "by <command>dpkg-source</command> at build time. Nowadays it is recommended "
339 "to be explicit about the desired source format by putting either “3.0 "
340 "(quilt)” or “3.0 (native)” in <filename>debian/source/format</filename>. "
341 "The rest of this section relates only to non-native packages."
344 #. type: Content of: <chapter><section><para>
347 "The first time a version is uploaded which corresponds to a particular "
348 "upstream version, the original source tar file should be uploaded and "
349 "included in the <filename>.changes</filename> file. Subsequently, this very "
350 "same tar file should be used to build the new diffs and "
351 "<filename>.dsc</filename> files, and will not need to be re-uploaded."
354 #. type: Content of: <chapter><section><para>
357 "By default, <command>dpkg-genchanges</command> and "
358 "<command>dpkg-buildpackage</command> will include the original source tar "
359 "file if and only if the current changelog entry has a different upstream "
360 "version from the preceding entry. This behavior may be modified by using "
361 "<literal>-sa</literal> to always include it or <literal>-sd</literal> to "
362 "always leave it out."
365 #. type: Content of: <chapter><section><para>
368 "If no original source is included in the upload, the original source "
369 "tar-file used by <command>dpkg-source</command> when constructing the "
370 "<filename>.dsc</filename> file and diff to be uploaded "
371 "<emphasis>must</emphasis> be byte-for-byte identical with the one already in "
375 #. type: Content of: <chapter><section><para>
378 "Please notice that, in non-native packages, permissions on files that are "
379 "not present in the .orig.tar.{gz,bz2,lzma} will not be preserved, as diff "
380 "does not store file permissions in the patch. However when using source "
381 "format “3.0 (quilt)”, permissions of files inside the "
382 "<filename>debian</filename> directory are preserved since they are stored in "
386 #. type: Content of: <chapter><section><title>
388 msgid "Picking a distribution"
391 #. type: Content of: <chapter><section><para>
394 "Each upload needs to specify which distribution the package is intended "
395 "for. The package build process extracts this information from the first "
396 "line of the <filename>debian/changelog</filename> file and places it in the "
397 "<literal>Distribution</literal> field of the <filename>.changes</filename> "
401 #. type: Content of: <chapter><section><para>
404 "There are several possible values for this field: <literal>stable</literal>, "
405 "<literal>unstable</literal>, <literal>testing-proposed-updates</literal> and "
406 "<literal>experimental</literal>. Normally, packages are uploaded into "
407 "<literal>unstable</literal>."
410 #. type: Content of: <chapter><section><para>
413 "Actually, there are two other possible distributions: "
414 "<literal>stable-security</literal> and <literal>testing-security</literal>, "
415 "but read <xref linkend=\"bug-security\"/> for more information on those."
418 #. type: Content of: <chapter><section><para>
421 "It is not possible to upload a package into several distributions at the "
425 #. type: Content of: <chapter><section><section><title>
428 "Special case: uploads to the <literal>stable</literal> and "
429 "<literal>oldstable</literal> distributions"
432 #. type: Content of: <chapter><section><section><para>
435 "Uploading to <literal>stable</literal> means that the package will "
436 "transferred to the <literal>proposed-updates-new</literal> queue for review "
437 "by the stable release managers, and if approved will be installed in "
438 "<filename>stable-proposed-updates</filename> directory of the Debian "
439 "archive. From there, it will be included in <literal>stable</literal> with "
440 "the next point release."
443 #. type: Content of: <chapter><section><section><para>
446 "To ensure that your upload will be accepted, you should discuss the changes "
447 "with the stable release team before you upload. For that, send a mail to the "
448 "&email-debian-release; mailing list, including the patch you want to apply "
449 "to the package version currently in <literal>stable</literal>. Always be "
450 "verbose and detailed in your changelog entries for uploads to the "
451 "<literal>stable</literal> distribution."
454 #. type: Content of: <chapter><section><section><para>
457 "Extra care should be taken when uploading to <literal>stable</literal>. "
458 "Basically, a package should only be uploaded to <literal>stable</literal> if "
459 "one of the following happens:"
462 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
464 msgid "a truly critical functionality problem"
467 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
469 msgid "the package becomes uninstallable"
472 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
474 msgid "a released architecture lacks the package"
477 #. type: Content of: <chapter><section><section><para>
480 "In the past, uploads to <literal>stable</literal> were used to address "
481 "security problems as well. However, this practice is deprecated, as uploads "
482 "used for Debian security advisories are automatically copied to the "
483 "appropriate <filename>proposed-updates</filename> archive when the advisory "
484 "is released. See <xref linkend=\"bug-security\"/> for detailed information "
485 "on handling security problems. If the security teams deems the problem to be "
486 "too benign to be fixed through a <literal>DSA</literal>, the stable release "
487 "managers are usually willing to include your fix nonetheless in a regular "
488 "upload to <literal>stable</literal>."
491 #. type: Content of: <chapter><section><section><para>
494 "Changing anything else in the package that isn't important is discouraged, "
495 "because even trivial fixes can cause bugs later on."
498 #. type: Content of: <chapter><section><section><para>
501 "Packages uploaded to <literal>stable</literal> need to be compiled on "
502 "systems running <literal>stable</literal>, so that their dependencies are "
503 "limited to the libraries (and other packages) available in "
504 "<literal>stable</literal>; for example, a package uploaded to "
505 "<literal>stable</literal> that depends on a library package that only exists "
506 "in <literal>unstable</literal> will be rejected. Making changes to "
507 "dependencies of other packages (by messing with <literal>Provides</literal> "
508 "or <filename>shlibs</filename> files), possibly making those other packages "
509 "uninstallable, is strongly discouraged."
512 #. type: Content of: <chapter><section><section><para>
515 "Uploads to the <literal>oldstable</literal> distributions are possible as "
516 "long as it hasn't been archived. The same rules as for "
517 "<literal>stable</literal> apply."
520 #. type: Content of: <chapter><section><section><title>
522 msgid "Special case: uploads to <literal>testing/testing-proposed-updates</literal>"
525 #. type: Content of: <chapter><section><section><para>
528 "Please see the information in the <link linkend=\"t-p-u\">testing "
529 "section</link> for details."
532 #. type: Content of: <chapter><section><title>
534 msgid "Uploading a package"
537 #. type: Content of: <chapter><section><section><title>
539 msgid "Uploading to <literal>ftp-master</literal>"
542 #. type: Content of: <chapter><section><section><para>
545 "To upload a package, you should upload the files (including the signed "
546 "changes and dsc-file) with anonymous ftp to "
547 "<literal>&ftp-upload-host;</literal> in the directory <ulink "
548 "url=\"ftp://&ftp-upload-host;&upload-queue;\">&upload-queue;</ulink>. To "
549 "get the files processed there, they need to be signed with a key in the "
550 "Debian Developers keyring or the Debian Maintainers keyring (see <ulink "
551 "url=\"&url-wiki-dm;\"></ulink>)."
554 #. type: Content of: <chapter><section><section><para>
557 "Please note that you should transfer the changes file last. Otherwise, your "
558 "upload may be rejected because the archive maintenance software will parse "
559 "the changes file and see that not all files have been uploaded."
562 #. type: Content of: <chapter><section><section><para>
565 "You may also find the Debian packages <link "
566 "linkend=\"dupload\">dupload</link> or <link linkend=\"dput\">dput</link> "
567 "useful when uploading packages.These handy programs help automate the "
568 "process of uploading packages into Debian."
571 #. type: Content of: <chapter><section><section><para>
574 "For removing packages, please see <ulink "
575 "url=\"ftp://&ftp-upload-host;&upload-queue;README\"/> and the Debian package "
576 "<link linkend=\"dcut\">dcut</link>."
579 #. type: Content of: <chapter><section><section><title>
581 msgid "Delayed uploads"
584 #. type: Content of: <chapter><section><section><para>
587 "It is sometimes useful to upload a package immediately, but to want this "
588 "package to arrive in the archive only a few days later. For example, when "
589 "preparing a <link linkend=\"nmu\">Non-Maintainer Upload</link>, you might "
590 "want to give the maintainer a few days to react."
593 #. type: Content of: <chapter><section><section><para>
596 "An upload to the delayed directory keeps the package in <ulink "
597 "url=\"http://ftp-master.debian.org/deferred.html\">the deferred uploads "
598 "queue</ulink>. When the specified waiting time is over, the package is "
599 "moved into the regular incoming directory for processing. This is done "
600 "through automatic uploading to <literal>&ftp-upload-host;</literal> in "
601 "upload-directory <literal>DELAYED/[012345678]-day</literal>. 0-day is "
602 "uploaded multiple times per day to <literal>&ftp-upload-host;</literal>."
605 #. type: Content of: <chapter><section><section><para>
608 "With dput, you can use the <literal>--delayed "
609 "<replaceable>DELAY</replaceable></literal> parameter to put the package into "
613 #. type: Content of: <chapter><section><section><title>
615 msgid "Security uploads"
618 #. type: Content of: <chapter><section><section><para>
621 "Do <emphasis role=\"strong\">NOT</emphasis> upload a package to the security "
622 "upload queue (<literal>oldstable-security</literal>, "
623 "<literal>stable-security</literal>, etc.) without prior authorization from "
624 "the security team. If the package does not exactly meet the team's "
625 "requirements, it will cause many problems and delays in dealing with the "
626 "unwanted upload. For details, please see <xref linkend=\"bug-security\"/>."
629 #. type: Content of: <chapter><section><section><title>
631 msgid "Other upload queues"
634 #. type: Content of: <chapter><section><section><para>
637 "There is an alternative upload queue in Europe at <ulink "
638 "url=\"ftp://&ftp-eu-upload-host;&upload-queue;\"/>. It operates in the same "
639 "way as <literal>&ftp-upload-host;</literal>, but should be faster for "
640 "European developers."
643 #. type: Content of: <chapter><section><section><para>
646 "Packages can also be uploaded via ssh to "
647 "<literal>&ssh-upload-host;</literal>; files should be put "
648 "<literal>/srv/upload.debian.org/UploadQueue</literal>. This queue does not "
649 "support <link linkend=\"delayed-incoming\">delayed uploads</link>."
652 #. type: Content of: <chapter><section><section><title>
654 msgid "Notification that a new package has been installed"
657 #. type: Content of: <chapter><section><section><para>
660 "The Debian archive maintainers are responsible for handling package "
661 "uploads. For the most part, uploads are automatically handled on a daily "
662 "basis by the archive maintenance tools, <command>katie</command>. "
663 "Specifically, updates to existing packages to the "
664 "<literal>unstable</literal> distribution are handled automatically. In "
665 "other cases, notably new packages, placing the uploaded package into the "
666 "distribution is handled manually. When uploads are handled manually, the "
667 "change to the archive may take up to a month to occur. Please be patient."
670 #. type: Content of: <chapter><section><section><para>
673 "In any case, you will receive an email notification indicating that the "
674 "package has been added to the archive, which also indicates which bugs will "
675 "be closed by the upload. Please examine this notification carefully, "
676 "checking if any bugs you meant to close didn't get triggered."
679 #. type: Content of: <chapter><section><section><para>
682 "The installation notification also includes information on what section the "
683 "package was inserted into. If there is a disparity, you will receive a "
684 "separate email notifying you of that. Read on below."
687 #. type: Content of: <chapter><section><section><para>
690 "Note that if you upload via queues, the queue daemon software will also send "
691 "you a notification by email."
694 #. type: Content of: <chapter><section><title>
696 msgid "Specifying the package section, subsection and priority"
699 #. type: Content of: <chapter><section><para>
702 "The <filename>debian/control</filename> file's <literal>Section</literal> "
703 "and <literal>Priority</literal> fields do not actually specify where the "
704 "file will be placed in the archive, nor its priority. In order to retain "
705 "the overall integrity of the archive, it is the archive maintainers who have "
706 "control over these fields. The values in the "
707 "<filename>debian/control</filename> file are actually just hints."
710 #. type: Content of: <chapter><section><para>
713 "The archive maintainers keep track of the canonical sections and priorities "
714 "for packages in the <literal>override file</literal>. If there is a "
715 "disparity between the <literal>override file</literal> and the package's "
716 "fields as indicated in <filename>debian/control</filename>, then you will "
717 "receive an email noting the divergence when the package is installed into "
718 "the archive. You can either correct your "
719 "<filename>debian/control</filename> file for your next upload, or else you "
720 "may wish to make a change in the <literal>override file</literal>."
723 #. type: Content of: <chapter><section><para>
726 "To alter the actual section that a package is put in, you need to first make "
727 "sure that the <filename>debian/control</filename> file in your package is "
728 "accurate. Next, submit a bug against <systemitem "
729 "role=\"package\">ftp.debian.org</systemitem> requesting that the section or "
730 "priority for your package be changed from the old section or priority to the "
731 "new one. Use a Subject like <literal>override: PACKAGE1:section/priority, "
732 "[...], PACKAGEX:section/priority</literal>, and include the justification "
733 "for the change in the body of the bug report."
736 #. type: Content of: <chapter><section><para>
739 "For more information about <literal>override files</literal>, see "
740 "<citerefentry> <refentrytitle>dpkg-scanpackages</refentrytitle> "
741 "<manvolnum>1</manvolnum> </citerefentry> and <ulink "
742 "url=\"&url-bts-devel;#maintincorrect\"></ulink>."
745 #. type: Content of: <chapter><section><para>
748 "Note that the <literal>Section</literal> field describes both the section as "
749 "well as the subsection, which are described in <xref "
750 "linkend=\"archive-sections\"/>. If the section is main, it should be "
751 "omitted. The list of allowable subsections can be found in <ulink "
752 "url=\"&url-debian-policy;ch-archive.html#s-subsections\"></ulink>."
755 #. type: Content of: <chapter><section><title>
757 msgid "Handling bugs"
760 #. type: Content of: <chapter><section><para>
763 "Every developer has to be able to work with the Debian <ulink "
764 "url=\"&url-bts;\">bug tracking system</ulink>. This includes knowing how to "
765 "file bug reports properly (see <xref linkend=\"submit-bug\"/>), how to "
766 "update them and reorder them, and how to process and close them."
769 #. type: Content of: <chapter><section><para>
772 "The bug tracking system's features are described in the <ulink "
773 "url=\"&url-bts-devel;\">BTS documentation for developers</ulink>. This "
774 "includes closing bugs, sending followup messages, assigning severities and "
775 "tags, marking bugs as forwarded, and other issues."
778 #. type: Content of: <chapter><section><para>
781 "Operations such as reassigning bugs to other packages, merging separate bug "
782 "reports about the same issue, or reopening bugs when they are prematurely "
783 "closed, are handled using the so-called control mail server. All of the "
784 "commands available on this server are described in the <ulink "
785 "url=\"&url-bts-control;\">BTS control server documentation</ulink>."
788 #. type: Content of: <chapter><section><section><title>
790 msgid "Monitoring bugs"
793 #. type: Content of: <chapter><section><section><para>
796 "If you want to be a good maintainer, you should periodically check the "
797 "<ulink url=\"&url-bts;\">Debian bug tracking system (BTS)</ulink> for your "
798 "packages. The BTS contains all the open bugs against your packages. You "
799 "can check them by browsing this page: "
800 "<literal>http://&bugs-host;/<replaceable>yourlogin</replaceable>@debian.org</literal>."
803 #. type: Content of: <chapter><section><section><para>
806 "Maintainers interact with the BTS via email addresses at "
807 "<literal>&bugs-host;</literal>. Documentation on available commands can be "
808 "found at <ulink url=\"&url-bts;\"></ulink>, or, if you have installed the "
809 "<systemitem role=\"package\">doc-debian</systemitem> package, you can look "
810 "at the local files &file-bts-docs;."
813 #. type: Content of: <chapter><section><section><para>
816 "Some find it useful to get periodic reports on open bugs. You can add a "
817 "cron job such as the following if you want to get a weekly email outlining "
818 "all the open bugs against your packages:"
821 #. type: Content of: <chapter><section><section><screen>
825 "# ask for weekly reports of bugs in my packages\n"
826 "&cron-bug-report;\n"
829 #. type: Content of: <chapter><section><section><para>
832 "Replace <replaceable>address</replaceable> with your official Debian "
833 "maintainer address."
836 #. type: Content of: <chapter><section><section><title>
838 msgid "Responding to bugs"
841 #. type: Content of: <chapter><section><section><para>
844 "When responding to bugs, make sure that any discussion you have about bugs "
845 "is sent both to the original submitter of the bug, and to the bug itself "
846 "(e.g., <email><replaceable>123</replaceable>@&bugs-host;</email>). If "
847 "you're writing a new mail and you don't remember the submitter email "
848 "address, you can use the "
849 "<email><replaceable>123</replaceable>-submitter@&bugs-host;</email> email to "
850 "contact the submitter <emphasis>and</emphasis> to record your mail within "
851 "the bug log (that means you don't need to send a copy of the mail to "
852 "<email><replaceable>123</replaceable>@&bugs-host;</email>)."
855 #. type: Content of: <chapter><section><section><para>
858 "If you get a bug which mentions FTBFS, this means Fails to build from "
859 "source. Porters frequently use this acronym."
862 #. type: Content of: <chapter><section><section><para>
865 "Once you've dealt with a bug report (e.g. fixed it), mark it as "
866 "<literal>done</literal> (close it) by sending an explanation message to "
867 "<email><replaceable>123</replaceable>-done@&bugs-host;</email>. If you're "
868 "fixing a bug by changing and uploading the package, you can automate bug "
869 "closing as described in <xref linkend=\"upload-bugfix\"/>."
872 #. type: Content of: <chapter><section><section><para>
875 "You should <emphasis>never</emphasis> close bugs via the bug server "
876 "<literal>close</literal> command sent to &email-bts-control;. If you do so, "
877 "the original submitter will not receive any information about why the bug "
881 #. type: Content of: <chapter><section><section><title>
883 msgid "Bug housekeeping"
886 #. type: Content of: <chapter><section><section><para>
889 "As a package maintainer, you will often find bugs in other packages or have "
890 "bugs reported against your packages which are actually bugs in other "
891 "packages. The bug tracking system's features are described in the <ulink "
892 "url=\"&url-bts-devel;\">BTS documentation for Debian developers</ulink>. "
893 "Operations such as reassigning, merging, and tagging bug reports are "
894 "described in the <ulink url=\"&url-bts-control;\">BTS control server "
895 "documentation</ulink>. This section contains some guidelines for managing "
896 "your own bugs, based on the collective Debian developer experience."
899 #. type: Content of: <chapter><section><section><para>
902 "Filing bugs for problems that you find in other packages is one of the civic "
903 "obligations of maintainership, see <xref linkend=\"submit-bug\"/> for "
904 "details. However, handling the bugs in your own packages is even more "
908 #. type: Content of: <chapter><section><section><para>
910 msgid "Here's a list of steps that you may follow to handle a bug report:"
913 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
916 "Decide whether the report corresponds to a real bug or not. Sometimes users "
917 "are just calling a program in the wrong way because they haven't read the "
918 "documentation. If you diagnose this, just close the bug with enough "
919 "information to let the user correct their problem (give pointers to the good "
920 "documentation and so on). If the same report comes up again and again you "
921 "may ask yourself if the documentation is good enough or if the program "
922 "shouldn't detect its misuse in order to give an informative error message. "
923 "This is an issue that may need to be brought up with the upstream author."
926 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
929 "If the bug submitter disagrees with your decision to close the bug, they may "
930 "reopen it until you find an agreement on how to handle it. If you don't "
931 "find any, you may want to tag the bug <literal>wontfix</literal> to let "
932 "people know that the bug exists but that it won't be corrected. If this "
933 "situation is unacceptable, you (or the submitter) may want to require a "
934 "decision of the technical committee by reassigning the bug to <systemitem "
935 "role=\"package\">tech-ctte</systemitem> (you may use the clone command of "
936 "the BTS if you wish to keep it reported against your package). Before doing "
937 "so, please read the <ulink url=\"&url-tech-ctte;\">recommended "
941 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
944 "If the bug is real but it's caused by another package, just reassign the bug "
945 "to the right package. If you don't know which package it should be "
946 "reassigned to, you should ask for help on <link "
947 "linkend=\"irc-channels\">IRC</link> or on &email-debian-devel;. Please "
948 "inform the maintainer(s) of the package you reassign the bug to, for example "
949 "by Cc:ing the message that does the reassign to "
950 "<email><replaceable>packagename</replaceable>@packages.debian.org</email> "
951 "and explaining your reasons in that mail. Please note that a simple "
952 "reassignment is <emphasis>not</emphasis> e-mailed to the maintainers of the "
953 "package being reassigned to, so they won't know about it until they look at "
954 "a bug overview for their packages."
957 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
960 "If the bug affects the operation of your package, please consider cloning "
961 "the bug and reassigning the clone to the package that really causes the "
962 "behavior. Otherwise, the bug will not be shown in your package's bug list, "
963 "possibly causing users to report the same bug over and over again. You "
964 "should block \"your\" bug with the reassigned, cloned bug to document the "
968 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
971 "Sometimes you also have to adjust the severity of the bug so that it matches "
972 "our definition of the severity. That's because people tend to inflate the "
973 "severity of bugs to make sure their bugs are fixed quickly. Some bugs may "
974 "even be dropped to wishlist severity when the requested change is just "
978 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
981 "If the bug is real but the same problem has already been reported by someone "
982 "else, then the two relevant bug reports should be merged into one using the "
983 "merge command of the BTS. In this way, when the bug is fixed, all of the "
984 "submitters will be informed of this. (Note, however, that emails sent to "
985 "one bug report's submitter won't automatically be sent to the other report's "
986 "submitter.) For more details on the technicalities of the merge command and "
987 "its relative, the unmerge command, see the BTS control server documentation."
990 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
993 "The bug submitter may have forgotten to provide some information, in which "
994 "case you have to ask them for the required information. You may use the "
995 "<literal>moreinfo</literal> tag to mark the bug as such. Moreover if you "
996 "can't reproduce the bug, you tag it <literal>unreproducible</literal>. "
997 "Anyone who can reproduce the bug is then invited to provide more information "
998 "on how to reproduce it. After a few months, if this information has not "
999 "been sent by someone, the bug may be closed."
1002 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
1005 "If the bug is related to the packaging, you just fix it. If you are not "
1006 "able to fix it yourself, then tag the bug as <literal>help</literal>. You "
1007 "can also ask for help on &email-debian-devel; or &email-debian-qa;. If it's "
1008 "an upstream problem, you have to forward it to the upstream author. "
1009 "Forwarding a bug is not enough, you have to check at each release if the bug "
1010 "has been fixed or not. If it has, you just close it, otherwise you have to "
1011 "remind the author about it. If you have the required skills you can prepare "
1012 "a patch that fixes the bug and send it to the author at the same time. Make "
1013 "sure to send the patch to the BTS and to tag the bug as "
1014 "<literal>patch</literal>."
1017 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
1020 "If you have fixed a bug in your local copy, or if a fix has been committed "
1021 "to the VCS repository, you may tag the bug as <literal>pending</literal> to "
1022 "let people know that the bug is corrected and that it will be closed with "
1023 "the next upload (add the <literal>closes:</literal> in the "
1024 "<filename>changelog</filename>). This is particularly useful if you are "
1025 "several developers working on the same package."
1028 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
1031 "Once a corrected package is available in the archive, the bug should be "
1032 "closed indicating the version in which it was fixed. This can be done "
1033 "automatically, read <xref linkend=\"upload-bugfix\"/>."
1036 #. type: Content of: <chapter><section><section><title>
1038 msgid "When bugs are closed by new uploads"
1041 #. type: Content of: <chapter><section><section><para>
1044 "As bugs and problems are fixed in your packages, it is your responsibility "
1045 "as the package maintainer to close these bugs. However, you should not "
1046 "close a bug until the package which fixes the bug has been accepted into the "
1047 "Debian archive. Therefore, once you get notification that your updated "
1048 "package has been installed into the archive, you can and should close the "
1049 "bug in the BTS. Also, the bug should be closed with the correct version."
1052 #. type: Content of: <chapter><section><section><para>
1055 "However, it's possible to avoid having to manually close bugs after the "
1056 "upload — just list the fixed bugs in your "
1057 "<filename>debian/changelog</filename> file, following a certain syntax, and "
1058 "the archive maintenance software will close the bugs for you. For example:"
1061 #. type: Content of: <chapter><section><section><screen>
1065 "acme-cannon (3.1415) unstable; urgency=low\n"
1067 " * Frobbed with options (closes: Bug#98339)\n"
1068 " * Added safety to prevent operator dismemberment, closes: bug#98765,\n"
1069 " bug#98713, #98714.\n"
1070 " * Added man page. Closes: #98725.\n"
1073 #. type: Content of: <chapter><section><section><para>
1076 "Technically speaking, the following Perl regular expression describes how "
1077 "bug closing changelogs are identified:"
1080 #. type: Content of: <chapter><section><section><screen>
1083 msgid " /closes:\\s*(?:bug)?\\#\\s*\\d+(?:,\\s*(?:bug)?\\#\\s*\\d+)*/ig\n"
1086 #. type: Content of: <chapter><section><section><para>
1089 "We prefer the <literal>closes: #<replaceable>XXX</replaceable></literal> "
1090 "syntax, as it is the most concise entry and the easiest to integrate with "
1091 "the text of the <filename>changelog</filename>. Unless specified different "
1092 "by the <literal>-v</literal>-switch to <command>dpkg-buildpackage</command>, "
1093 "only the bugs closed in the most recent changelog entry are closed "
1094 "(basically, exactly the bugs mentioned in the changelog-part in the "
1095 "<filename>.changes</filename> file are closed)."
1098 #. type: Content of: <chapter><section><section><para>
1101 "Historically, uploads identified as <link linkend=\"nmu\">non-maintainer "
1102 "upload (NMU)</link> were tagged <literal>fixed</literal> instead of being "
1103 "closed, but that practice was ceased with the advent of version-tracking. "
1104 "The same applied to the tag <literal>fixed-in-experimental</literal>."
1107 #. type: Content of: <chapter><section><section><para>
1110 "If you happen to mistype a bug number or forget a bug in the changelog "
1111 "entries, don't hesitate to undo any damage the error caused. To reopen "
1112 "wrongly closed bugs, send a <literal>reopen "
1113 "<replaceable>XXX</replaceable></literal> command to the bug tracking "
1114 "system's control address, &email-bts-control;. To close any remaining bugs "
1115 "that were fixed by your upload, email the <filename>.changes</filename> file "
1116 "to <email><replaceable>XXX</replaceable>-done@&bugs-host;</email>, where "
1117 "<replaceable>XXX</replaceable> is the bug number, and put Version: "
1118 "<replaceable>YYY</replaceable> and an empty line as the first two lines of "
1119 "the body of the email, where <replaceable>YYY</replaceable> is the first "
1120 "version where the bug has been fixed."
1123 #. type: Content of: <chapter><section><section><para>
1126 "Bear in mind that it is not obligatory to close bugs using the changelog as "
1127 "described above. If you simply want to close bugs that don't have anything "
1128 "to do with an upload you made, do it by emailing an explanation to "
1129 "<email><replaceable>XXX</replaceable>-done@&bugs-host;</email>. Do "
1130 "<emphasis role=\"strong\">not</emphasis> close bugs in the changelog entry "
1131 "of a version if the changes in that version of the package don't have any "
1132 "bearing on the bug."
1135 #. type: Content of: <chapter><section><section><para>
1138 "For general information on how to write your changelog entries, see <xref "
1139 "linkend=\"bpp-debian-changelog\"/>."
1142 #. type: Content of: <chapter><section><section><title>
1144 msgid "Handling security-related bugs"
1147 #. type: Content of: <chapter><section><section><para>
1150 "Due to their sensitive nature, security-related bugs must be handled "
1151 "carefully. The Debian Security Team exists to coordinate this activity, "
1152 "keeping track of outstanding security problems, helping maintainers with "
1153 "security problems or fixing them themselves, sending security advisories, "
1154 "and maintaining <literal>security.debian.org</literal>."
1157 #. type: Content of: <chapter><section><section><para>
1160 "When you become aware of a security-related bug in a Debian package, whether "
1161 "or not you are the maintainer, collect pertinent information about the "
1162 "problem, and promptly contact the security team at &email-security-team; as "
1163 "soon as possible. <emphasis role=\"strong\">DO NOT UPLOAD</emphasis> any "
1164 "packages for <literal>stable</literal> without contacting the team. Useful "
1165 "information includes, for example:"
1168 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
1171 "Which versions of the package are known to be affected by the bug. Check "
1172 "each version that is present in a supported Debian release, as well as "
1173 "<literal>testing</literal> and <literal>unstable</literal>."
1176 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
1178 msgid "The nature of the fix, if any is available (patches are especially helpful)"
1181 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
1184 "Any fixed packages that you have prepared yourself (send only the "
1185 "<literal>.diff.gz</literal> and <literal>.dsc</literal> files and read <xref "
1186 "linkend=\"bug-security-building\"/> first)"
1189 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
1192 "Any assistance you can provide to help with testing (exploits, regression "
1196 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
1199 "Any information needed for the advisory (see <xref "
1200 "linkend=\"bug-security-advisories\"/>)"
1203 #. type: Content of: <chapter><section><section><para>
1206 "As the maintainer of the package, you have the responsibility to maintain "
1207 "it, even in the stable release. You are in the best position to evaluate "
1208 "patches and test updated packages, so please see the sections below on how "
1209 "to prepare packages for the Security Team to handle."
1212 #. type: Content of: <chapter><section><section><section><title>
1214 msgid "The Security Tracker"
1217 #. type: Content of: <chapter><section><section><section><para>
1220 "The security team maintains a central database, the <ulink "
1221 "url=\"http://security-tracker.debian.org/\">Debian Security "
1222 "Tracker</ulink>. This contains all public information that is known about "
1223 "security issues: which packages and versions are affected or fixed, and thus "
1224 "whether stable, testing and/or unstable are vulnerable. Information that is "
1225 "still confidential is not added to the tracker."
1228 #. type: Content of: <chapter><section><section><section><para>
1231 "You can search it for a specific issue, but also on package name. Look for "
1232 "your package to see which issues are still open. If you can, please provide "
1233 "more information about those issues, or help to address them in your "
1234 "package. Instructions are on the tracker web pages."
1237 #. type: Content of: <chapter><section><section><section><title>
1239 msgid "Confidentiality"
1242 #. type: Content of: <chapter><section><section><section><para>
1245 "Unlike most other activities within Debian, information about security "
1246 "issues must sometimes be kept private for a time. This allows software "
1247 "distributors to coordinate their disclosure in order to minimize their "
1248 "users' exposure. Whether this is the case depends on the nature of the "
1249 "problem and corresponding fix, and whether it is already a matter of public "
1253 #. type: Content of: <chapter><section><section><section><para>
1255 msgid "There are several ways developers can learn of a security problem:"
1258 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1260 msgid "they notice it on a public forum (mailing list, web site, etc.)"
1263 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1265 msgid "someone files a bug report"
1268 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1270 msgid "someone informs them via private email"
1273 #. type: Content of: <chapter><section><section><section><para>
1276 "In the first two cases, the information is public and it is important to "
1277 "have a fix as soon as possible. In the last case, however, it might not be "
1278 "public information. In that case there are a few possible options for "
1279 "dealing with the problem:"
1282 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1285 "If the security exposure is minor, there is sometimes no need to keep the "
1286 "problem a secret and a fix should be made and released."
1289 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1292 "If the problem is severe, it is preferable to share the information with "
1293 "other vendors and coordinate a release. The security team keeps in contact "
1294 "with the various organizations and individuals and can take care of that."
1297 #. type: Content of: <chapter><section><section><section><para>
1300 "In all cases if the person who reports the problem asks that it not be "
1301 "disclosed, such requests should be honored, with the obvious exception of "
1302 "informing the security team in order that a fix may be produced for a stable "
1303 "release of Debian. When sending confidential information to the security "
1304 "team, be sure to mention this fact."
1307 #. type: Content of: <chapter><section><section><section><para>
1310 "Please note that if secrecy is needed you may not upload a fix to "
1311 "<literal>unstable</literal> (or anywhere else, such as a public CVS "
1312 "repository). It is not sufficient to obfuscate the details of the change, "
1313 "as the code itself is public, and can (and will) be examined by the general "
1317 #. type: Content of: <chapter><section><section><section><para>
1320 "There are two reasons for releasing information even though secrecy is "
1321 "requested: the problem has been known for a while, or the problem or exploit "
1322 "has become public."
1325 #. type: Content of: <chapter><section><section><section><para>
1328 "The Security Team has a PGP-key to enable encrypted communication about "
1329 "sensitive issues. See the <ulink "
1330 "url=\"http://www.debian.org/security/faq#contact\">Security Team FAQ</ulink> "
1334 #. type: Content of: <chapter><section><section><section><title>
1336 msgid "Security Advisories"
1339 #. type: Content of: <chapter><section><section><section><para>
1342 "Security advisories are only issued for the current, released stable "
1343 "distribution, and <emphasis>not</emphasis> for <literal>testing</literal> or "
1344 "<literal>unstable</literal>. When released, advisories are sent to the "
1345 "&email-debian-security-announce; mailing list and posted on <ulink "
1346 "url=\"&url-debian-security-advisories;\">the security web page</ulink>. "
1347 "Security advisories are written and posted by the security team. However "
1348 "they certainly do not mind if a maintainer can supply some of the "
1349 "information for them, or write part of the text. Information that should be "
1350 "in an advisory includes:"
1353 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1355 msgid "A description of the problem and its scope, including:"
1358 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para>
1360 msgid "The type of problem (privilege escalation, denial of service, etc.)"
1363 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para>
1365 msgid "What privileges may be gained, and by whom (if any)"
1368 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para>
1370 msgid "How it can be exploited"
1373 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para>
1375 msgid "Whether it is remotely or locally exploitable"
1378 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><itemizedlist><listitem><para>
1380 msgid "How the problem was fixed"
1383 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1385 msgid "This information allows users to assess the threat to their systems."
1388 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1390 msgid "Version numbers of affected packages"
1393 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1395 msgid "Version numbers of fixed packages"
1398 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1401 "Information on where to obtain the updated packages (usually from the Debian "
1405 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1408 "References to upstream advisories, <ulink "
1409 "url=\"http://cve.mitre.org\">CVE</ulink> identifiers, and any other "
1410 "information useful in cross-referencing the vulnerability"
1413 #. type: Content of: <chapter><section><section><section><title>
1415 msgid "Preparing packages to address security issues"
1418 #. type: Content of: <chapter><section><section><section><para>
1421 "One way that you can assist the security team in their duties is to provide "
1422 "them with fixed packages suitable for a security advisory for the stable "
1426 #. type: Content of: <chapter><section><section><section><para>
1429 "When an update is made to the stable release, care must be taken to avoid "
1430 "changing system behavior or introducing new bugs. In order to do this, make "
1431 "as few changes as possible to fix the bug. Users and administrators rely on "
1432 "the exact behavior of a release once it is made, so any change that is made "
1433 "might break someone's system. This is especially true of libraries: make "
1434 "sure you never change the API or ABI, no matter how small the change."
1437 #. type: Content of: <chapter><section><section><section><para>
1440 "This means that moving to a new upstream version is not a good solution. "
1441 "Instead, the relevant changes should be back-ported to the version present "
1442 "in the current stable Debian release. Generally, upstream maintainers are "
1443 "willing to help if needed. If not, the Debian security team may be able to "
1447 #. type: Content of: <chapter><section><section><section><para>
1450 "In some cases, it is not possible to back-port a security fix, for example "
1451 "when large amounts of source code need to be modified or rewritten. If this "
1452 "happens, it may be necessary to move to a new upstream version. However, "
1453 "this is only done in extreme situations, and you must always coordinate that "
1454 "with the security team beforehand."
1457 #. type: Content of: <chapter><section><section><section><para>
1460 "Related to this is another important guideline: always test your changes. "
1461 "If you have an exploit available, try it and see if it indeed succeeds on "
1462 "the unpatched package and fails on the fixed package. Test other, normal "
1463 "actions as well, as sometimes a security fix can break seemingly unrelated "
1464 "features in subtle ways."
1467 #. type: Content of: <chapter><section><section><section><para>
1470 "Do <emphasis role=\"strong\">NOT</emphasis> include any changes in your "
1471 "package which are not directly related to fixing the vulnerability. These "
1472 "will only need to be reverted, and this wastes time. If there are other "
1473 "bugs in your package that you would like to fix, make an upload to "
1474 "proposed-updates in the usual way, after the security advisory is issued. "
1475 "The security update mechanism is not a means for introducing changes to your "
1476 "package which would otherwise be rejected from the stable release, so please "
1477 "do not attempt to do this."
1480 #. type: Content of: <chapter><section><section><section><para>
1483 "Review and test your changes as much as possible. Check the differences "
1484 "from the previous version repeatedly (<command>interdiff</command> from the "
1485 "<systemitem role=\"package\">patchutils</systemitem> package and "
1486 "<command>debdiff</command> from <systemitem "
1487 "role=\"package\">devscripts</systemitem> are useful tools for this, see "
1488 "<xref linkend=\"debdiff\"/>)."
1491 #. type: Content of: <chapter><section><section><section><para>
1493 msgid "Be sure to verify the following items:"
1496 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1499 "<emphasis role=\"strong\">Target the right distribution</emphasis> in your "
1500 "<filename>debian/changelog</filename>. For <literal>stable</literal> this "
1501 "is <literal>stable-security</literal> and for <literal>testing</literal> "
1502 "this is <literal>testing-security</literal>, and for the previous stable "
1503 "release, this is <literal>oldstable-security</literal>. Do not target "
1504 "<replaceable>distribution</replaceable><literal>-proposed-updates</literal> "
1505 "or <literal>stable</literal>!"
1508 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1510 msgid "The upload should have <emphasis role=\"strong\">urgency=high</emphasis>."
1513 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1516 "Make descriptive, meaningful changelog entries. Others will rely on them to "
1517 "determine whether a particular bug was fixed. Add "
1518 "<literal>closes:</literal> statements for any <emphasis "
1519 "role=\"strong\">Debian bugs</emphasis> filed. Always include an external "
1520 "reference, preferably a <emphasis role=\"strong\">CVE identifier</emphasis>, "
1521 "so that it can be cross-referenced. However, if a CVE identifier has not yet "
1522 "been assigned, do not wait for it but continue the process. The identifier "
1523 "can be cross-referenced later."
1526 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1529 "Make sure the <emphasis role=\"strong\">version number</emphasis> is "
1530 "proper. It must be greater than the current package, but less than package "
1531 "versions in later distributions. If in doubt, test it with <literal>dpkg "
1532 "--compare-versions</literal>. Be careful not to re-use a version number "
1533 "that you have already used for a previous upload, or one that conflicts with "
1534 "a binNMU. The convention is to append "
1535 "<literal>+</literal><replaceable>codename</replaceable><literal>1</literal>, "
1536 "e.g. <literal>1:2.4.3-4+lenny1</literal>, of course increasing 1 for any "
1537 "subsequent uploads."
1540 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1543 "Unless the upstream source has been uploaded to <literal>security.debian.org "
1544 "</literal> before (by a previous security update), build the upload "
1545 "<emphasis role=\"strong\">with full upstream source</emphasis> "
1546 "(<literal>dpkg-buildpackage -sa</literal>). If there has been a previous "
1547 "upload to <literal>security.debian.org</literal> with the same upstream "
1548 "version, you may upload without upstream source (<literal>dpkg-buildpackage "
1552 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1555 "Be sure to use the <emphasis role=\"strong\">exact same "
1556 "<filename>*.orig.tar.{gz,bz2,lzma}</filename></emphasis> as used in the "
1557 "normal archive, otherwise it is not possible to move the security fix into "
1558 "the main archives later."
1561 #. type: Content of: <chapter><section><section><section><itemizedlist><listitem><para>
1564 "Build the package on a <emphasis role=\"strong\">clean system</emphasis> "
1565 "which only has packages installed from the distribution you are building "
1566 "for. If you do not have such a system yourself, you can use a debian.org "
1567 "machine (see <xref linkend=\"server-machines\"/>) or setup a chroot (see "
1568 "<xref linkend=\"pbuilder\"/> and <xref linkend=\"debootstrap\"/>)."
1571 #. type: Content of: <chapter><section><section><section><title>
1573 msgid "Uploading the fixed package"
1576 #. type: Content of: <chapter><section><section><section><para>
1579 "Do <emphasis role=\"strong\">NOT</emphasis> upload a package to the security "
1580 "upload queue (<literal>oldstable-security</literal>, "
1581 "<literal>stable-security</literal>, etc.) without prior authorization from "
1582 "the security team. If the package does not exactly meet the team's "
1583 "requirements, it will cause many problems and delays in dealing with the "
1587 #. type: Content of: <chapter><section><section><section><para>
1590 "Do <emphasis role=\"strong\">NOT</emphasis> upload your fix to "
1591 "<literal>proposed-updates</literal> without coordinating with the security "
1592 "team. Packages from <literal>security.debian.org</literal> will be copied "
1593 "into the <literal>proposed-updates</literal> directory automatically. If a "
1594 "package with the same or a higher version number is already installed into "
1595 "the archive, the security update will be rejected by the archive system. "
1596 "That way, the stable distribution will end up without a security update for "
1597 "this package instead."
1600 #. type: Content of: <chapter><section><section><section><para>
1603 "Once you have created and tested the new package and it has been approved by "
1604 "the security team, it needs to be uploaded so that it can be installed in "
1605 "the archives. For security uploads, the place to upload to is "
1606 "<literal>ftp://security-master.debian.org/pub/SecurityUploadQueue/</literal>."
1609 #. type: Content of: <chapter><section><section><section><para>
1612 "Once an upload to the security queue has been accepted, the package will "
1613 "automatically be built for all architectures and stored for verification by "
1614 "the security team."
1617 #. type: Content of: <chapter><section><section><section><para>
1620 "Uploads which are waiting for acceptance or verification are only accessible "
1621 "by the security team. This is necessary since there might be fixes for "
1622 "security problems that cannot be disclosed yet."
1625 #. type: Content of: <chapter><section><section><section><para>
1628 "If a member of the security team accepts a package, it will be installed on "
1629 "<literal>security.debian.org</literal> as well as proposed for the proper "
1630 "<replaceable>distribution</replaceable><literal>-proposed-updates</literal> "
1631 "on <literal>&ftp-master-host;</literal>."
1634 #. type: Content of: <chapter><section><title>
1636 msgid "Moving, removing, renaming, adopting, and orphaning packages"
1639 #. type: Content of: <chapter><section><para>
1642 "Some archive manipulation operations are not automated in the Debian upload "
1643 "process. These procedures should be manually followed by maintainers. This "
1644 "chapter gives guidelines on what to do in these cases."
1647 #. type: Content of: <chapter><section><section><title>
1649 msgid "Moving packages"
1652 #. type: Content of: <chapter><section><section><para><footnote><para>
1655 "See the <ulink url=\"&url-debian-policy;\">Debian Policy Manual</ulink> for "
1656 "guidelines on what section a package belongs in."
1659 #. type: Content of: <chapter><section><section><para>
1662 "Sometimes a package will change its section. For instance, a package from "
1663 "the `non-free' section might be GPL'd in a later version, in which case the "
1664 "package should be moved to `main' or `contrib'.<placeholder "
1665 "type=\"footnote\" id=\"0\"/>"
1668 #. type: Content of: <chapter><section><section><para>
1671 "If you need to change the section for one of your packages, change the "
1672 "package control information to place the package in the desired section, and "
1673 "re-upload the package (see the <ulink url=\"&url-debian-policy;\">Debian "
1674 "Policy Manual</ulink> for details). You must ensure that you include the "
1675 "<filename>.orig.tar.{gz,bz2,lzma}</filename> in your upload (even if you are "
1676 "not uploading a new upstream version), or it will not appear in the new "
1677 "section together with the rest of the package. If your new section is "
1678 "valid, it will be moved automatically. If it does not, then contact the "
1679 "ftpmasters in order to understand what happened."
1682 #. type: Content of: <chapter><section><section><para>
1685 "If, on the other hand, you need to change the <literal>subsection</literal> "
1686 "of one of your packages (e.g., ``devel'', ``admin''), the procedure is "
1687 "slightly different. Correct the subsection as found in the control file of "
1688 "the package, and re-upload that. Also, you'll need to get the override file "
1689 "updated, as described in <xref linkend=\"override-file\"/>."
1692 #. type: Content of: <chapter><section><section><title>
1694 msgid "Removing packages"
1697 #. type: Content of: <chapter><section><section><para>
1700 "If for some reason you want to completely remove a package (say, if it is an "
1701 "old compatibility library which is no longer required), you need to file a "
1702 "bug against <literal>ftp.debian.org</literal> asking that the package be "
1703 "removed; as all bugs, this bug should normally have normal severity. The "
1704 "bug title should be in the form <literal>RM: "
1705 "<replaceable>package</replaceable> <replaceable>[architecture "
1706 "list]</replaceable> -- <replaceable>reason</replaceable></literal>, where "
1707 "<replaceable>package</replaceable> is the package to be removed and "
1708 "<replaceable>reason</replaceable> is a short summary of the reason for the "
1709 "removal request. <replaceable>[architecture list]</replaceable> is optional "
1710 "and only needed if the removal request only applies to some architectures, "
1711 "not all. Note that the <command>reportbug</command> will create a title "
1712 "conforming to these rules when you use it to report a bug against the "
1713 "<literal> ftp.debian.org</literal> pseudo-package."
1716 #. type: Content of: <chapter><section><section><para>
1719 "If you want to remove a package you maintain, you should note this in the "
1720 "bug title by prepending <literal>ROM</literal> (Request Of Maintainer). "
1721 "There are several other standard acronyms used in the reasoning for a "
1722 "package removal, see <ulink "
1723 "url=\"http://&ftp-master-host;/removals.html\"></ulink> for a complete "
1724 "list. That page also provides a convenient overview of pending removal "
1728 #. type: Content of: <chapter><section><section><para>
1731 "Note that removals can only be done for the <literal>unstable </literal>, "
1732 "<literal>experimental</literal> and <literal>stable </literal> "
1733 "distribution. Packages are not removed from <literal>testing</literal> "
1734 "directly. Rather, they will be removed automatically after the package has "
1735 "been removed from <literal>unstable</literal> and no package in "
1736 "<literal>testing </literal> depends on it."
1739 #. type: Content of: <chapter><section><section><para>
1742 "There is one exception when an explicit removal request is not necessary: If "
1743 "a (source or binary) package is an orphan, it will be removed "
1744 "semi-automatically. For a binary-package, this means if there is no longer "
1745 "any source package producing this binary package; if the binary package is "
1746 "just no longer produced on some architectures, a removal request is still "
1747 "necessary. For a source-package, this means that all binary packages it "
1748 "refers to have been taken over by another source package."
1751 #. type: Content of: <chapter><section><section><para>
1754 "In your removal request, you have to detail the reasons justifying the "
1755 "request. This is to avoid unwanted removals and to keep a trace of why a "
1756 "package has been removed. For example, you can provide the name of the "
1757 "package that supersedes the one to be removed."
1760 #. type: Content of: <chapter><section><section><para>
1763 "Usually you only ask for the removal of a package maintained by yourself. "
1764 "If you want to remove another package, you have to get the approval of its "
1765 "maintainer. Should the package be orphaned and thus have no maintainer, you "
1766 "should first discuss the removal request on &email-debian-qa;. If there is a "
1767 "consensus that the package should be removed, you should reassign and "
1768 "retitle the <literal>O:</literal> bug filed against the "
1769 "<literal>wnpp</literal> package instead of filing a new bug as removal "
1773 #. type: Content of: <chapter><section><section><para>
1776 "Further information relating to these and other package removal related "
1777 "topics may be found at <ulink "
1778 "url=\"http://wiki.debian.org/ftpmaster_Removals\"></ulink> and <ulink "
1779 "url=\"&url-debian-qa;howto-remove.html\"></ulink>."
1782 #. type: Content of: <chapter><section><section><para>
1785 "If in doubt concerning whether a package is disposable, email "
1786 "&email-debian-devel; asking for opinions. Also of interest is the "
1787 "<command>apt-cache</command> program from the <systemitem "
1788 "role=\"package\">apt</systemitem> package. When invoked as "
1789 "<literal>apt-cache showpkg <replaceable>package</replaceable></literal>, the "
1790 "program will show details for <replaceable>package</replaceable>, including "
1791 "reverse depends. Other useful programs include <literal>apt-cache "
1792 "rdepends</literal>, <command>apt-rdepends</command>, "
1793 "<command>build-rdeps</command> (in the <systemitem "
1794 "role=\"package\">devscripts</systemitem> package) and "
1795 "<command>grep-dctrl</command>. Removal of orphaned packages is discussed on "
1796 "&email-debian-qa;."
1799 #. type: Content of: <chapter><section><section><para>
1802 "Once the package has been removed, the package's bugs should be handled. "
1803 "They should either be reassigned to another package in the case where the "
1804 "actual code has evolved into another package (e.g. "
1805 "<literal>libfoo12</literal> was removed because <literal>libfoo13</literal> "
1806 "supersedes it) or closed if the software is simply no longer part of "
1807 "Debian. When closing the bugs, to avoid marking the bugs as fixed in "
1808 "versions of the packages in previous Debian releases, they should be marked "
1809 "as fixed in the version "
1810 "<literal><most-recent-version-ever-in-Debian>+rm</literal>."
1813 #. type: Content of: <chapter><section><section><section><title>
1815 msgid "Removing packages from <filename>Incoming</filename>"
1818 #. type: Content of: <chapter><section><section><section><para>
1821 "In the past, it was possible to remove packages from "
1822 "<filename>incoming</filename>. However, with the introduction of the new "
1823 "incoming system, this is no longer possible. Instead, you have to upload a "
1824 "new revision of your package with a higher version than the package you want "
1825 "to replace. Both versions will be installed in the archive but only the "
1826 "higher version will actually be available in <literal>unstable</literal> "
1827 "since the previous version will immediately be replaced by the higher. "
1828 "However, if you do proper testing of your packages, the need to replace a "
1829 "package should not occur too often anyway."
1832 #. type: Content of: <chapter><section><section><title>
1834 msgid "Replacing or renaming packages"
1837 #. type: Content of: <chapter><section><section><para>
1840 "When the upstream maintainers for one of your packages chose to rename their "
1841 "software (or you made a mistake naming your package), you should follow a "
1842 "two-step process to rename it. In the first step, change the "
1843 "<filename>debian/control</filename> file to reflect the new name and to "
1844 "replace, provide and conflict with the obsolete package name (see the <ulink "
1845 "url=\"&url-debian-policy;\"> Debian Policy Manual</ulink> for details). "
1846 "Please note that you should only add a <literal>Provides</literal> relation "
1847 "if all packages depending on the obsolete package name continue to work "
1848 "after the renaming. Once you've uploaded the package and the package has "
1849 "moved into the archive, file a bug against <literal> "
1850 "ftp.debian.org</literal> asking to remove the package with the obsolete name "
1851 "(see <xref linkend=\"removing-pkgs\"/>). Do not forget to properly reassign "
1852 "the package's bugs at the same time."
1855 #. type: Content of: <chapter><section><section><para>
1858 "At other times, you may make a mistake in constructing your package and wish "
1859 "to replace it. The only way to do this is to increase the version number "
1860 "and upload a new version. The old version will be expired in the usual "
1861 "manner. Note that this applies to each part of your package, including the "
1862 "sources: if you wish to replace the upstream source tarball of your package, "
1863 "you will need to upload it with a different version. An easy possibility is "
1864 "to replace <filename>foo_1.00.orig.tar.gz</filename> with "
1865 "<filename>foo_1.00+0.orig.tar.gz</filename> or "
1866 "<filename>foo_1.00.orig.tar.bz2</filename>. This restriction gives each "
1867 "file on the ftp site a unique name, which helps to ensure consistency across "
1868 "the mirror network."
1871 #. type: Content of: <chapter><section><section><title>
1873 msgid "Orphaning a package"
1876 #. type: Content of: <chapter><section><section><para>
1879 "If you can no longer maintain a package, you need to inform others, and see "
1880 "that the package is marked as orphaned. You should set the package "
1881 "maintainer to <literal>Debian QA Group &orphan-address;</literal> and submit "
1882 "a bug report against the pseudo package <systemitem "
1883 "role=\"package\">wnpp</systemitem>. The bug report should be titled "
1884 "<literal>O: <replaceable>package</replaceable> -- <replaceable>short "
1885 "description</replaceable></literal> indicating that the package is now "
1886 "orphaned. The severity of the bug should be set to "
1887 "<literal>normal</literal>; if the package has a priority of standard or "
1888 "higher, it should be set to important. If you feel it's necessary, send a "
1889 "copy to &email-debian-devel; by putting the address in the X-Debbugs-CC: "
1890 "header of the message (no, don't use CC:, because that way the message's "
1891 "subject won't indicate the bug number)."
1894 #. type: Content of: <chapter><section><section><para>
1897 "If you just intend to give the package away, but you can keep maintainership "
1898 "for the moment, then you should instead submit a bug against <systemitem "
1899 "role=\"package\">wnpp</systemitem> and title it <literal>RFA: "
1900 "<replaceable>package</replaceable> -- <replaceable>short "
1901 "description</replaceable></literal>. <literal>RFA</literal> stands for "
1902 "<literal>Request For Adoption</literal>."
1905 #. type: Content of: <chapter><section><section><para>
1907 msgid "More information is on the <ulink url=\"&url-wnpp;\">WNPP web pages</ulink>."
1910 #. type: Content of: <chapter><section><section><title>
1912 msgid "Adopting a package"
1915 #. type: Content of: <chapter><section><section><para>
1918 "A list of packages in need of a new maintainer is available in the <ulink "
1919 "url=\"&url-wnpp;\">Work-Needing and Prospective Packages list "
1920 "(WNPP)</ulink>. If you wish to take over maintenance of any of the packages "
1921 "listed in the WNPP, please take a look at the aforementioned page for "
1922 "information and procedures."
1925 #. type: Content of: <chapter><section><section><para>
1928 "It is not OK to simply take over a package that you feel is neglected — that "
1929 "would be package hijacking. You can, of course, contact the current "
1930 "maintainer and ask them if you may take over the package. If you have "
1931 "reason to believe a maintainer has gone AWOL (absent without leave), see "
1932 "<xref linkend=\"mia-qa\"/>."
1935 #. type: Content of: <chapter><section><section><para>
1938 "Generally, you may not take over the package without the assent of the "
1939 "current maintainer. Even if they ignore you, that is still not grounds to "
1940 "take over a package. Complaints about maintainers should be brought up on "
1941 "the developers' mailing list. If the discussion doesn't end with a positive "
1942 "conclusion, and the issue is of a technical nature, consider bringing it to "
1943 "the attention of the technical committee (see the <ulink "
1944 "url=\"&url-tech-ctte;\">technical committee web page</ulink> for more "
1948 #. type: Content of: <chapter><section><section><para>
1951 "If you take over an old package, you probably want to be listed as the "
1952 "package's official maintainer in the bug system. This will happen "
1953 "automatically once you upload a new version with an updated "
1954 "<literal>Maintainer:</literal> field, although it can take a few hours after "
1955 "the upload is done. If you do not expect to upload a new version for a "
1956 "while, you can use <xref linkend=\"pkg-tracking-system\"/> to get the bug "
1957 "reports. However, make sure that the old maintainer has no problem with the "
1958 "fact that they will continue to receive the bugs during that time."
1961 #. type: Content of: <chapter><section><title>
1963 msgid "Porting and being ported"
1966 #. type: Content of: <chapter><section><para>
1969 "Debian supports an ever-increasing number of architectures. Even if you are "
1970 "not a porter, and you don't use any architecture but one, it is part of your "
1971 "duty as a maintainer to be aware of issues of portability. Therefore, even "
1972 "if you are not a porter, you should read most of this chapter."
1975 #. type: Content of: <chapter><section><para>
1978 "Porting is the act of building Debian packages for architectures that are "
1979 "different from the original architecture of the package maintainer's binary "
1980 "package. It is a unique and essential activity. In fact, porters do most "
1981 "of the actual compiling of Debian packages. For instance, when a maintainer "
1982 "uploads a (portable) source packages with binaries for the <literal>i386 "
1983 "</literal> architecture, it will be built for each of the other "
1984 "architectures, amounting to &number-of-arches; more builds."
1987 #. type: Content of: <chapter><section><section><title>
1989 msgid "Being kind to porters"
1992 #. type: Content of: <chapter><section><section><para>
1995 "Porters have a difficult and unique task, since they are required to deal "
1996 "with a large volume of packages. Ideally, every source package should build "
1997 "right out of the box. Unfortunately, this is often not the case. This "
1998 "section contains a checklist of ``gotchas'' often committed by Debian "
1999 "maintainers — common problems which often stymie porters, and make their "
2000 "jobs unnecessarily difficult."
2003 #. type: Content of: <chapter><section><section><para>
2006 "The first and most important thing is to respond quickly to bug or issues "
2007 "raised by porters. Please treat porters with courtesy, as if they were in "
2008 "fact co-maintainers of your package (which, in a way, they are). Please be "
2009 "tolerant of succinct or even unclear bug reports; do your best to hunt down "
2010 "whatever the problem is."
2013 #. type: Content of: <chapter><section><section><para>
2016 "By far, most of the problems encountered by porters are caused by "
2017 "<emphasis>packaging bugs</emphasis> in the source packages. Here is a "
2018 "checklist of things you should check or be aware of."
2021 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2024 "Make sure that your <literal>Build-Depends</literal> and "
2025 "<literal>Build-Depends-Indep</literal> settings in "
2026 "<filename>debian/control</filename> are set properly. The best way to "
2027 "validate this is to use the <systemitem "
2028 "role=\"package\">debootstrap</systemitem> package to create an "
2029 "<literal>unstable</literal> chroot environment (see <xref "
2030 "linkend=\"debootstrap\"/>). Within that chrooted environment, install the "
2031 "<systemitem role=\"package\">build-essential</systemitem> package and any "
2032 "package dependencies mentioned in <literal>Build-Depends</literal> and/or "
2033 "<literal>Build-Depends-Indep</literal>. Finally, try building your package "
2034 "within that chrooted environment. These steps can be automated by the use "
2035 "of the <command>pbuilder</command> program which is provided by the package "
2036 "of the same name (see <xref linkend=\"pbuilder\"/>)."
2039 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2042 "If you can't set up a proper chroot, <command>dpkg-depcheck</command> may be "
2043 "of assistance (see <xref linkend=\"dpkg-depcheck\"/>)."
2046 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2049 "See the <ulink url=\"&url-debian-policy;\">Debian Policy Manual</ulink> for "
2050 "instructions on setting build dependencies."
2053 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2056 "Don't set architecture to a value other than <literal>all</literal> or "
2057 "<literal>any</literal> unless you really mean it. In too many cases, "
2058 "maintainers don't follow the instructions in the <ulink "
2059 "url=\"&url-debian-policy;\">Debian Policy Manual</ulink>. Setting your "
2060 "architecture to only one architecture (such as <literal>i386</literal> or "
2061 "<literal>amd64</literal>) is usually incorrect."
2064 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2067 "Make sure your source package is correct. Do <literal>dpkg-source -x "
2068 "<replaceable>package</replaceable>.dsc</literal> to make sure your source "
2069 "package unpacks properly. Then, in there, try building your package from "
2070 "scratch with <command>dpkg-buildpackage</command>."
2073 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2076 "Make sure you don't ship your source package with the "
2077 "<filename>debian/files</filename> or <filename>debian/substvars</filename> "
2078 "files. They should be removed by the <literal>clean</literal> target of "
2079 "<filename>debian/rules</filename>."
2082 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2085 "Make sure you don't rely on locally installed or hacked configurations or "
2086 "programs. For instance, you should never be calling programs in "
2087 "<filename>/usr/local/bin</filename> or the like. Try not to rely on "
2088 "programs being setup in a special way. Try building your package on another "
2089 "machine, even if it's the same architecture."
2092 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2095 "Don't depend on the package you're building being installed already (a "
2096 "sub-case of the above issue). There are, of course, exceptions to this rule, "
2097 "but be aware that any case like this needs manual bootstrapping and cannot "
2098 "be done by automated package builders."
2101 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2104 "Don't rely on the compiler being a certain version, if possible. If not, "
2105 "then make sure your build dependencies reflect the restrictions, although "
2106 "you are probably asking for trouble, since different architectures sometimes "
2107 "standardize on different compilers."
2110 #. type: Content of: <chapter><section><section><orderedlist><listitem><para>
2113 "Make sure your debian/rules contains separate <literal>binary-arch</literal> "
2114 "and <literal>binary-indep</literal> targets, as the Debian Policy Manual "
2115 "requires. Make sure that both targets work independently, that is, that you "
2116 "can call the target without having called the other before. To test this, "
2117 "try to run <command>dpkg-buildpackage -B</command>."
2120 #. type: Content of: <chapter><section><section><title>
2122 msgid "Guidelines for porter uploads"
2125 #. type: Content of: <chapter><section><section><para>
2128 "If the package builds out of the box for the architecture to be ported to, "
2129 "you are in luck and your job is easy. This section applies to that case; it "
2130 "describes how to build and upload your binary package so that it is properly "
2131 "installed into the archive. If you do have to patch the package in order to "
2132 "get it to compile for the other architecture, you are actually doing a "
2133 "source NMU, so consult <xref linkend=\"nmu-guidelines\"/> instead."
2136 #. type: Content of: <chapter><section><section><para>
2139 "For a porter upload, no changes are being made to the source. You do not "
2140 "need to touch any of the files in the source package. This includes "
2141 "<filename>debian/changelog</filename>."
2144 #. type: Content of: <chapter><section><section><para>
2147 "The way to invoke <command>dpkg-buildpackage</command> is as "
2148 "<literal>dpkg-buildpackage -B "
2149 "-m<replaceable>porter-email</replaceable></literal>. Of course, set "
2150 "<replaceable>porter-email</replaceable> to your email address. This will do "
2151 "a binary-only build of only the architecture-dependent portions of the "
2152 "package, using the <literal>binary-arch</literal> target in "
2153 "<filename>debian/rules </filename>."
2156 #. type: Content of: <chapter><section><section><para>
2159 "If you are working on a Debian machine for your porting efforts and you need "
2160 "to sign your upload locally for its acceptance in the archive, you can run "
2161 "<command>debsign</command> on your <filename>.changes</filename> file to "
2162 "have it signed conveniently, or use the remote signing mode of "
2163 "<command>dpkg-sig</command>."
2166 #. type: Content of: <chapter><section><section><section><title>
2168 msgid "Recompilation or binary-only NMU"
2171 #. type: Content of: <chapter><section><section><section><para>
2174 "Sometimes the initial porter upload is problematic because the environment "
2175 "in which the package was built was not good enough (outdated or obsolete "
2176 "library, bad compiler, etc.). Then you may just need to recompile it in an "
2177 "updated environment. However, you have to bump the version number in this "
2178 "case, so that the old bad package can be replaced in the Debian archive "
2179 "(<command>dak</command> refuses to install new packages if they don't have a "
2180 "version number greater than the currently available one)."
2183 #. type: Content of: <chapter><section><section><section><para>
2186 "You have to make sure that your binary-only NMU doesn't render the package "
2187 "uninstallable. This could happen when a source package generates "
2188 "arch-dependent and arch-independent packages that have inter-dependencies "
2189 "generated using dpkg's substitution variable <literal>$(Source-Version) "
2193 #. type: Content of: <chapter><section><section><section><para>
2196 "Despite the required modification of the changelog, these are called "
2197 "binary-only NMUs — there is no need in this case to trigger all other "
2198 "architectures to consider themselves out of date or requiring recompilation."
2201 #. type: Content of: <chapter><section><section><section><para>
2204 "Such recompilations require special ``magic'' version numbering, so that the "
2205 "archive maintenance tools recognize that, even though there is a new Debian "
2206 "version, there is no corresponding source update. If you get this wrong, "
2207 "the archive maintainers will reject your upload (due to lack of "
2208 "corresponding source code)."
2211 #. type: Content of: <chapter><section><section><section><para><footnote><para>
2214 "In the past, such NMUs used the third-level number on the Debian part of the "
2215 "revision to denote their recompilation-only status; however, this syntax was "
2216 "ambiguous with native packages and did not allow proper ordering of "
2217 "recompile-only NMUs, source NMUs, and security NMUs on the same package, and "
2218 "has therefore been abandoned in favor of this new syntax."
2221 #. type: Content of: <chapter><section><section><section><para>
2224 "The ``magic'' for a recompilation-only NMU is triggered by using a suffix "
2225 "appended to the package version number, following the form <literal> "
2226 "b<replaceable>number</replaceable></literal>. For instance, if the latest "
2227 "version you are recompiling against was version <literal>2.9-3</literal>, "
2228 "your binary-only NMU should carry a version of <literal>2.9-3+b1</literal>. "
2229 "If the latest version was <literal>3.4+b1 </literal> (i.e, a native package "
2230 "with a previous recompilation NMU), your binary-only NMU should have a "
2231 "version number of <literal>3.4+b2</literal>. <placeholder type=\"footnote\" "
2235 #. type: Content of: <chapter><section><section><section><para>
2238 "Similar to initial porter uploads, the correct way of invoking "
2239 "<command>dpkg-buildpackage</command> is <literal>dpkg-buildpackage "
2240 "-B</literal> to only build the architecture-dependent parts of the package."
2243 #. type: Content of: <chapter><section><section><section><title>
2245 msgid "When to do a source NMU if you are a porter"
2248 #. type: Content of: <chapter><section><section><section><para>
2251 "Porters doing a source NMU generally follow the guidelines found in <xref "
2252 "linkend=\"nmu\"/> , just like non-porters. However, it is expected that the "
2253 "wait cycle for a porter's source NMU is smaller than for a non-porter, since "
2254 "porters have to cope with a large quantity of packages. Again, the "
2255 "situation varies depending on the distribution they are uploading to. It "
2256 "also varies whether the architecture is a candidate for inclusion into the "
2257 "next stable release; the release managers decide and announce which "
2258 "architectures are candidates."
2261 #. type: Content of: <chapter><section><section><section><para>
2264 "If you are a porter doing an NMU for <literal>unstable</literal>, the above "
2265 "guidelines for porting should be followed, with two variations. Firstly, "
2266 "the acceptable waiting period — the time between when the bug is submitted "
2267 "to the BTS and when it is OK to do an NMU — is seven days for porters "
2268 "working on the <literal>unstable</literal> distribution. This period can be "
2269 "shortened if the problem is critical and imposes hardship on the porting "
2270 "effort, at the discretion of the porter group. (Remember, none of this is "
2271 "Policy, just mutually agreed upon guidelines.) For uploads to "
2272 "<literal>stable</literal> or <literal>testing </literal>, please coordinate "
2273 "with the appropriate release team first."
2276 #. type: Content of: <chapter><section><section><section><para>
2279 "Secondly, porters doing source NMUs should make sure that the bug they "
2280 "submit to the BTS should be of severity <literal>serious</literal> or "
2281 "greater. This ensures that a single source package can be used to compile "
2282 "every supported Debian architecture by release time. It is very important "
2283 "that we have one version of the binary and source package for all "
2284 "architectures in order to comply with many licenses."
2287 #. type: Content of: <chapter><section><section><section><para>
2290 "Porters should try to avoid patches which simply kludge around bugs in the "
2291 "current version of the compile environment, kernel, or libc. Sometimes such "
2292 "kludges can't be helped. If you have to kludge around compiler bugs and the "
2293 "like, make sure you <literal>#ifdef</literal> your work properly; also, "
2294 "document your kludge so that people know to remove it once the external "
2295 "problems have been fixed."
2298 #. type: Content of: <chapter><section><section><section><para>
2301 "Porters may also have an unofficial location where they can put the results "
2302 "of their work during the waiting period. This helps others running the port "
2303 "have the benefit of the porter's work, even during the waiting period. Of "
2304 "course, such locations have no official blessing or status, so buyer beware."
2307 #. type: Content of: <chapter><section><section><title>
2309 msgid "Porting infrastructure and automation"
2312 #. type: Content of: <chapter><section><section><para>
2315 "There is infrastructure and several tools to help automate package porting. "
2316 "This section contains a brief overview of this automation and porting to "
2317 "these tools; see the package documentation or references for full "
2321 #. type: Content of: <chapter><section><section><section><title>
2323 msgid "Mailing lists and web pages"
2326 #. type: Content of: <chapter><section><section><section><para>
2329 "Web pages containing the status of each port can be found at <ulink "
2330 "url=\"&url-debian-ports;\"></ulink>."
2333 #. type: Content of: <chapter><section><section><section><para>
2336 "Each port of Debian has a mailing list. The list of porting mailing lists "
2337 "can be found at <ulink url=\"&url-debian-port-lists;\"></ulink>. These "
2338 "lists are used to coordinate porters, and to connect the users of a given "
2339 "port with the porters."
2342 #. type: Content of: <chapter><section><section><section><title>
2344 msgid "Porter tools"
2347 #. type: Content of: <chapter><section><section><section><para>
2350 "Descriptions of several porting tools can be found in <xref "
2351 "linkend=\"tools-porting\"/>."
2354 #. type: Content of: <chapter><section><section><section><title>
2356 msgid "<systemitem role=\"package\">wanna-build</systemitem>"
2359 #. type: Content of: <chapter><section><section><section><para>
2362 "The <systemitem role=\"package\">wanna-build</systemitem> system is used as "
2363 "a distributed, client-server build distribution system. It is usually used "
2364 "in conjunction with build daemons running the <systemitem "
2365 "role=\"package\">buildd </systemitem> program. <literal>Build "
2366 "daemons</literal> are ``slave'' hosts which contact the central <systemitem "
2367 "role=\"package\"> wanna-build</systemitem> system to receive a list of "
2368 "packages that need to be built."
2371 #. type: Content of: <chapter><section><section><section><para>
2374 "<systemitem role=\"package\">wanna-build</systemitem> is not yet available "
2375 "as a package; however, all Debian porting efforts are using it for automated "
2376 "package building. The tool used to do the actual package builds, "
2377 "<systemitem role=\"package\">sbuild</systemitem> is available as a package, "
2378 "see its description in <xref linkend=\"sbuild\"/>. Please note that the "
2379 "packaged version is not the same as the one used on build daemons, but it is "
2380 "close enough to reproduce problems."
2383 #. type: Content of: <chapter><section><section><section><para>
2386 "Most of the data produced by <systemitem role=\"package\">wanna-build "
2387 "</systemitem> which is generally useful to porters is available on the web "
2388 "at <ulink url=\"&url-buildd;\"></ulink>. This data includes nightly updated "
2389 "statistics, queueing information and logs for build attempts."
2392 #. type: Content of: <chapter><section><section><section><para>
2395 "We are quite proud of this system, since it has so many possible uses. "
2396 "Independent development groups can use the system for different sub-flavors "
2397 "of Debian, which may or may not really be of general interest (for instance, "
2398 "a flavor of Debian built with <command>gcc</command> bounds checking). It "
2399 "will also enable Debian to recompile entire distributions quickly."
2402 #. type: Content of: <chapter><section><section><section><para>
2405 "The wanna-build team, in charge of the buildds, can be reached at "
2406 "<literal>debian-wb-team@lists.debian.org</literal>. To determine who "
2407 "(wanna-build team, release team) and how (mail, BTS) to contact, refer to "
2408 "<ulink url=\"&url-wb-team;\"></ulink>."
2411 #. type: Content of: <chapter><section><section><section><para>
2414 "When requesting binNMUs or give-backs (retries after a failed build), please "
2415 "use the format described at <ulink url=\"&url-release-wb;\"/>."
2418 #. type: Content of: <chapter><section><section><title>
2420 msgid "When your package is <emphasis>not</emphasis> portable"
2423 #. type: Content of: <chapter><section><section><para>
2426 "Some packages still have issues with building and/or working on some of the "
2427 "architectures supported by Debian, and cannot be ported at all, or not "
2428 "within a reasonable amount of time. An example is a package that is "
2429 "SVGA-specific (only available for <literal>i386</literal> and "
2430 "<literal>amd64</literal>), or uses other hardware-specific features not "
2431 "supported on all architectures."
2434 #. type: Content of: <chapter><section><section><para>
2437 "In order to prevent broken packages from being uploaded to the archive, and "
2438 "wasting buildd time, you need to do a few things:"
2441 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2444 "First, make sure your package <emphasis>does</emphasis> fail to build on "
2445 "architectures that it cannot support. There are a few ways to achieve "
2446 "this. The preferred way is to have a small testsuite during build time that "
2447 "will test the functionality, and fail if it doesn't work. This is a good "
2448 "idea anyway, as this will prevent (some) broken uploads on all "
2449 "architectures, and also will allow the package to build as soon as the "
2450 "required functionality is available."
2453 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2456 "Additionally, if you believe the list of supported architectures is pretty "
2457 "constant, you should change <literal>any</literal> to a list of supported "
2458 "architectures in <filename>debian/control</filename>. This way, the build "
2459 "will fail also, and indicate this to a human reader without actually trying."
2462 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2465 "In order to prevent autobuilders from needlessly trying to build your "
2466 "package, it must be included in <filename>packages-arch-specific</filename>, "
2467 "a list used by the <command>wanna-build</command> script. The current "
2468 "version is available as <ulink url=\"&url-buildd-p-a-s;\"/>; please see the "
2469 "top of the file for whom to contact for changes."
2472 #. type: Content of: <chapter><section><section><para>
2475 "Please note that it is insufficient to only add your package to "
2476 "Packages-arch-specific without making it fail to build on unsupported "
2477 "architectures: A porter or any other person trying to build your package "
2478 "might accidently upload it without noticing it doesn't work. If in the past "
2479 "some binary packages were uploaded on unsupported architectures, request "
2480 "their removal by filing a bug against <systemitem "
2481 "role=\"package\">ftp.debian.org</systemitem>"
2484 #. type: Content of: <chapter><section><title>
2486 msgid "Non-Maintainer Uploads (NMUs)"
2489 #. type: Content of: <chapter><section><para>
2492 "Every package has one or more maintainers. Normally, these are the people "
2493 "who work on and upload new versions of the package. In some situations, it "
2494 "is useful that other developers can upload a new version as well, for "
2495 "example if they want to fix a bug in a package they don't maintain, when the "
2496 "maintainer needs help to respond to issues. Such uploads are called "
2497 "<emphasis>Non-Maintainer Uploads (NMU)</emphasis>."
2500 #. type: Content of: <chapter><section><section><title>
2502 msgid "When and how to do an NMU"
2505 #. type: Content of: <chapter><section><section><para>
2507 msgid "Before doing an NMU, consider the following questions:"
2510 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2513 "Does your NMU really fix bugs? Fixing cosmetic issues or changing the "
2514 "packaging style in NMUs is discouraged."
2517 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2520 "Did you give enough time to the maintainer? When was the bug reported to the "
2521 "BTS? Being busy for a week or two isn't unusual. Is the bug so severe that "
2522 "it needs to be fixed right now, or can it wait a few more days?"
2525 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2528 "How confident are you about your changes? Please remember the Hippocratic "
2529 "Oath: \"Above all, do no harm.\" It is better to leave a package with an "
2530 "open grave bug than applying a non-functional patch, or one that hides the "
2531 "bug instead of resolving it. If you are not 100% sure of what you did, it "
2532 "might be a good idea to seek advice from others. Remember that if you break "
2533 "something in your NMU, many people will be very unhappy about it."
2536 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2539 "Have you clearly expressed your intention to NMU, at least in the BTS? It is "
2540 "also a good idea to try to contact the maintainer by other means (private "
2544 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2547 "If the maintainer is usually active and responsive, have you tried to "
2548 "contact him? In general it should be considered preferable that a maintainer "
2549 "takes care of an issue himself and that he is given the chance to review and "
2550 "correct your patch, because he can be expected to be more aware of potential "
2551 "issues which an NMUer might miss. It is often a better use of everyone's "
2552 "time if the maintainer is given an opportunity to upload a fix on their own."
2555 #. type: Content of: <chapter><section><section><para>
2558 "When doing an NMU, you must first make sure that your intention to NMU is "
2559 "clear. Then, you must send a patch with the differences between the current "
2560 "package and your proposed NMU to the BTS. The <literal>nmudiff</literal> "
2561 "script in the <literal>devscripts</literal> package might be helpful."
2564 #. type: Content of: <chapter><section><section><para>
2567 "While preparing the patch, you should better be aware of any "
2568 "package-specific practices that the maintainer might be using. Taking them "
2569 "into account reduces the burden of getting your changes integrated back in "
2570 "the normal package workflow and thus increases the possibilities that that "
2571 "will happen. A good place where to look for for possible package-specific "
2572 "practices is <ulink "
2573 "url=\"&url-debian-policy;ch-source.html#s-readmesource\"><literal>debian/README.source</literal></ulink>."
2576 #. type: Content of: <chapter><section><section><para>
2579 "Unless you have an excellent reason not to do so, you must then give some "
2580 "time to the maintainer to react (for example, by uploading to the "
2581 "<literal>DELAYED</literal> queue). Here are some recommended values to use "
2585 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2587 msgid "Upload fixing only release-critical bugs older than 7 days: 2 days"
2590 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2592 msgid "Upload fixing only release-critical and important bugs: 5 days"
2595 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
2597 msgid "Other NMUs: 10 days"
2600 #. type: Content of: <chapter><section><section><para>
2603 "Those delays are only examples. In some cases, such as uploads fixing "
2604 "security issues, or fixes for trivial bugs that blocking a transition, it is "
2605 "desirable that the fixed package reaches <literal>unstable</literal> sooner."
2608 #. type: Content of: <chapter><section><section><para>
2611 "Sometimes, release managers decide to allow NMUs with shorter delays for a "
2612 "subset of bugs (e.g release-critical bugs older than 7 days). Also, some "
2613 "maintainers list themselves in the <ulink "
2614 "url=\"&url-low-threshold-nmu;\">Low Threshold NMU list</ulink>, and accept "
2615 "that NMUs are uploaded without delay. But even in those cases, it's still a "
2616 "good idea to give the maintainer a few days to react before you upload, "
2617 "especially if the patch wasn't available in the BTS before, or if you know "
2618 "that the maintainer is generally active."
2621 #. type: Content of: <chapter><section><section><para>
2624 "After you upload an NMU, you are responsible for the possible problems that "
2625 "you might have introduced. You must keep an eye on the package (subscribing "
2626 "to the package on the PTS is a good way to achieve this)."
2629 #. type: Content of: <chapter><section><section><para>
2632 "This is not a license to perform NMUs thoughtlessly. If you NMU when it is "
2633 "clear that the maintainers are active and would have acknowledged a patch in "
2634 "a timely manner, or if you ignore the recommendations of this document, your "
2635 "upload might be a cause of conflict with the maintainer. You should always "
2636 "be prepared to defend the wisdom of any NMU you perform on its own merits."
2639 #. type: Content of: <chapter><section><section><title>
2641 msgid "NMUs and debian/changelog"
2644 #. type: Content of: <chapter><section><section><para>
2647 "Just like any other (source) upload, NMUs must add an entry to "
2648 "<literal>debian/changelog</literal>, telling what has changed with this "
2649 "upload. The first line of this entry must explicitely mention that this "
2650 "upload is an NMU, e.g.:"
2653 #. type: Content of: <chapter><section><section><screen>
2656 msgid " * Non-maintainer upload.\n"
2659 #. type: Content of: <chapter><section><section><para>
2661 msgid "The way to version NMUs differs for native and non-native packages."
2664 #. type: Content of: <chapter><section><section><para>
2667 "If the package is a native package (without a debian revision in the version "
2668 "number), the version must be the version of the last maintainer upload, plus "
2669 "<literal>+nmu<replaceable>X</replaceable></literal>, where "
2670 "<replaceable>X</replaceable> is a counter starting at <literal>1</literal>. "
2671 "If the last upload was also an NMU, the counter should be increased. For "
2672 "example, if the current version is <literal>1.5</literal>, then an NMU would "
2673 "get version <literal>1.5+nmu1</literal>."
2676 #. type: Content of: <chapter><section><section><para>
2679 "If the package is a not a native package, you should add a minor version "
2680 "number to the debian revision part of the version number (the portion after "
2681 "the last hyphen). This extra number must start at 1. For example, if the "
2682 "current version is <literal>1.5-2</literal>, then an NMU would get version "
2683 "<literal>1.5-2.1</literal>. If a new upstream version is packaged in the "
2684 "NMU, the debian revision is set to <literal>0</literal>, for example "
2685 "<literal>1.6-0.1</literal>."
2688 #. type: Content of: <chapter><section><section><para>
2691 "In both cases, if the last upload was also an NMU, the counter should be "
2692 "increased. For example, if the current version is "
2693 "<literal>1.5+nmu3</literal> (a native package which has already been NMUed), "
2694 "the NMU would get version <literal>1.5+nmu4</literal>."
2697 #. type: Content of: <chapter><section><section><para>
2700 "A special versioning scheme is needed to avoid disrupting the maintainer's "
2701 "work, since using an integer for the Debian revision will potentially "
2702 "conflict with a maintainer upload already in preparation at the time of an "
2703 "NMU, or even one sitting in the ftp NEW queue. It also has the benefit of "
2704 "making it visually clear that a package in the archive was not made by the "
2705 "official maintainer."
2708 #. type: Content of: <chapter><section><section><para>
2711 "If you upload a package to testing or stable, you sometimes need to \"fork\" "
2712 "the version number tree. This is the case for security uploads, for "
2713 "example. For this, a version of the form "
2714 "<literal>+deb<replaceable>XY</replaceable>u<replaceable>Z</replaceable></literal> "
2715 "should be used, where <replaceable>X</replaceable> and "
2716 "<replaceable>Y</replaceable> are the major and minor release numbers, and "
2717 "<replaceable>Z</replaceable> is a counter starting at <literal>1</literal>. "
2718 "When the release number is not yet known (often the case for "
2719 "<literal>testing</literal>, at the beginning of release cycles), the lowest "
2720 "release number higher than the last stable release number must be used. For "
2721 "example, while Etch (Debian 4.0) is stable, a security NMU to stable for a "
2722 "package at version <literal>1.5-3</literal> would have version "
2723 "<literal>1.5-3+deb40u1</literal>, whereas a security NMU to Lenny would get "
2724 "version <literal>1.5-3+deb50u1</literal>. After the release of Lenny, "
2725 "security uploads to the <literal>testing</literal> distribution will be "
2726 "versioned <literal>+deb51uZ</literal>, until it is known whether that "
2727 "release will be Debian 5.1 or Debian 6.0 (if that becomes the case, uploads "
2728 "will be versioned as <literal>+deb60uZ</literal>."
2731 #. type: Content of: <chapter><section><section><title>
2733 msgid "Using the <literal>DELAYED/</literal> queue"
2736 #. type: Content of: <chapter><section><section><para>
2739 "Having to wait for a response after you request permission to NMU is "
2740 "inefficient, because it costs the NMUer a context switch to come back to the "
2741 "issue. The <literal>DELAYED</literal> queue (see <xref "
2742 "linkend=\"delayed-incoming\"/>) allows the developer doing the NMU to "
2743 "perform all the necessary tasks at the same time. For instance, instead of "
2744 "telling the maintainer that you will upload the updated package in 7 days, "
2745 "you should upload the package to <literal>DELAYED/7</literal> and tell the "
2746 "maintainer that he has 7 days to react. During this time, the maintainer "
2747 "can ask you to delay the upload some more, or cancel your upload."
2750 #. type: Content of: <chapter><section><section><para>
2753 "The <literal>DELAYED</literal> queue should not be used to put additional "
2754 "pressure on the maintainer. In particular, it's important that you are "
2755 "available to cancel or delay the upload before the delay expires since the "
2756 "maintainer cannot cancel the upload himself."
2759 #. type: Content of: <chapter><section><section><para>
2762 "If you make an NMU to <literal>DELAYED</literal> and the maintainer updates "
2763 "his package before the delay expires, your upload will be rejected because a "
2764 "newer version is already available in the archive. Ideally, the maintainer "
2765 "will take care to include your proposed changes (or at least a solution for "
2766 "the problems they address) in that upload."
2769 #. type: Content of: <chapter><section><section><title>
2771 msgid "NMUs from the maintainer's point of view"
2774 #. type: Content of: <chapter><section><section><para>
2777 "When someone NMUs your package, this means they want to help you to keep it "
2778 "in good shape. This gives users fixed packages faster. You can consider "
2779 "asking the NMUer to become a co-maintainer of the package. Receiving an NMU "
2780 "on a package is not a bad thing; it just means that the package is "
2781 "interesting enough for other people to work on it."
2784 #. type: Content of: <chapter><section><section><para>
2787 "To acknowledge an NMU, include its changes and changelog entry in your next "
2788 "maintainer upload. If you do not acknowledge the NMU by including the NMU "
2789 "changelog entry in your changelog, the bugs will remain closed in the BTS "
2790 "but will be listed as affecting your maintainer version of the package."
2793 #. type: Content of: <chapter><section><section><title>
2795 msgid "Source NMUs vs Binary-only NMUs (binNMUs)"
2798 #. type: Content of: <chapter><section><section><para>
2801 "The full name of an NMU is <emphasis>source NMU</emphasis>. There is also "
2802 "another type, namely the <emphasis>binary-only NMU</emphasis>, or "
2803 "<emphasis>binNMU</emphasis>. A binNMU is also a package upload by someone "
2804 "other than the package's maintainer. However, it is a binary-only upload."
2807 #. type: Content of: <chapter><section><section><para>
2810 "When a library (or other dependency) is updated, the packages using it may "
2811 "need to be rebuilt. Since no changes to the source are needed, the same "
2812 "source package is used."
2815 #. type: Content of: <chapter><section><section><para>
2818 "BinNMUs are usually triggered on the buildds by wanna-build. An entry is "
2819 "added to debian/changelog, explaining why the upload was needed and "
2820 "increasing the version number as described in <xref "
2821 "linkend=\"binary-only-nmu\"/>. This entry should not be included in the "
2825 #. type: Content of: <chapter><section><section><para>
2828 "Buildds upload packages for their architecture to the archive as binary-only "
2829 "uploads. Strictly speaking, these are binNMUs. However, they are not "
2830 "normally called NMU, and they don't add an entry to debian/changelog."
2833 #. type: Content of: <chapter><section><section><title>
2835 msgid "NMUs vs QA uploads"
2838 #. type: Content of: <chapter><section><section><para>
2841 "NMUs are uploads of packages by somebody else than their assigned "
2842 "maintainer. There is another type of upload where the uploaded package is "
2843 "not yours: QA uploads. QA uploads are uploads of orphaned packages."
2846 #. type: Content of: <chapter><section><section><para>
2849 "QA uploads are very much like normal maintainer uploads: they may fix "
2850 "anything, even minor issues; the version numbering is normal, and there is "
2851 "no need to use a delayed upload. The difference is that you are not listed "
2852 "as the Maintainer or Uploader for the package. Also, the changelog entry of "
2853 "a QA upload has a special first line:"
2856 #. type: Content of: <chapter><section><section><screen>
2859 msgid " * QA upload.\n"
2862 #. type: Content of: <chapter><section><section><para>
2865 "If you want to do an NMU, and it seems that the maintainer is not active, it "
2866 "is wise to check if the package is orphaned (this information is displayed "
2867 "on the package's Package Tracking System page). When doing the first QA "
2868 "upload to an orphaned package, the maintainer should be set to "
2869 "<literal>Debian QA Group <packages@qa.debian.org></literal>. Orphaned "
2870 "packages which did not yet have a QA upload still have their old maintainer "
2871 "set. There is a list of them at <ulink url=\"&url-orphaned-not-qa;\"/>."
2874 #. type: Content of: <chapter><section><section><para>
2877 "Instead of doing a QA upload, you can also consider adopting the package by "
2878 "making yourself the maintainer. You don't need permission from anybody to "
2879 "adopt an orphaned package, you can just set yourself as maintainer and "
2880 "upload the new version (see <xref linkend=\"adopting\"/>)."
2883 #. type: Content of: <chapter><section><section><title>
2885 msgid "NMUs vs team uploads"
2888 #. type: Content of: <chapter><section><section><para>
2891 "Sometimes you are fixing and/or updating a package because you are member of "
2892 "a packaging team (which uses a mailing list as Maintainer or Uploader, see "
2893 "<xref linkend=\"collaborative-maint\"/>) but you don't want to add yourself "
2894 "to Uploaders because you do not plan to contribute regularly to this "
2895 "specific package. If it conforms with your team's policy, you can perform a "
2896 "normal upload without being listed directly as Maintainer or Uploader. In "
2897 "that case, you should start your changelog entry with the following line: "
2898 "<code> * Team upload.</code>."
2901 #. type: Content of: <chapter><section><title>
2903 msgid "Collaborative maintenance"
2906 #. type: Content of: <chapter><section><para>
2909 "Collaborative maintenance is a term describing the sharing of Debian package "
2910 "maintenance duties by several people. This collaboration is almost always a "
2911 "good idea, since it generally results in higher quality and faster bug fix "
2912 "turnaround times. It is strongly recommended that packages with a priority "
2913 "of <literal>Standard</literal> or which are part of the base set have "
2917 #. type: Content of: <chapter><section><para>
2920 "Generally there is a primary maintainer and one or more co-maintainers. The "
2921 "primary maintainer is the person whose name is listed in the "
2922 "<literal>Maintainer</literal> field of the "
2923 "<filename>debian/control</filename> file. Co-maintainers are all the other "
2924 "maintainers, usually listed in the <literal>Uploaders</literal> field of the "
2925 "<filename>debian/control</filename> file."
2928 #. type: Content of: <chapter><section><para>
2931 "In its most basic form, the process of adding a new co-maintainer is quite "
2935 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
2938 "Setup the co-maintainer with access to the sources you build the package "
2939 "from. Generally this implies you are using a network-capable version "
2940 "control system, such as <command>CVS</command> or "
2941 "<command>Subversion</command>. Alioth (see <xref linkend=\"alioth\"/>) "
2942 "provides such tools, amongst others."
2945 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
2948 "Add the co-maintainer's correct maintainer name and address to the "
2949 "<literal>Uploaders</literal> field in the first paragraph of the "
2950 "<filename>debian/control</filename> file."
2953 #. type: Content of: <chapter><section><itemizedlist><listitem><screen>
2957 "Uploaders: John Buzz <jbuzz@debian.org>, Adam Rex "
2958 "<arex@debian.org>\n"
2961 #. type: Content of: <chapter><section><itemizedlist><listitem><para>
2964 "Using the PTS (<xref linkend=\"pkg-tracking-system\"/>), the co-maintainers "
2965 "should subscribe themselves to the appropriate source package."
2968 #. type: Content of: <chapter><section><para>
2971 "Another form of collaborative maintenance is team maintenance, which is "
2972 "recommended if you maintain several packages with the same group of "
2973 "developers. In that case, the Maintainer and Uploaders field of each "
2974 "package must be managed with care. It is recommended to choose between one "
2975 "of the two following schemes:"
2978 #. type: Content of: <chapter><section><orderedlist><listitem><para>
2981 "Put the team member mainly responsible for the package in the Maintainer "
2982 "field. In the Uploaders, put the mailing list address, and the team members "
2983 "who care for the package."
2986 #. type: Content of: <chapter><section><orderedlist><listitem><para>
2989 "Put the mailing list address in the Maintainer field. In the Uploaders "
2990 "field, put the team members who care for the package. In this case, you "
2991 "must make sure the mailing list accept bug reports without any human "
2992 "interaction (like moderation for non-subscribers)."
2995 #. type: Content of: <chapter><section><para>
2998 "In any case, it is a bad idea to automatically put all team members in the "
2999 "Uploaders field. It clutters the Developer's Package Overview listing (see "
3000 "<xref linkend=\"ddpo\"/>) with packages one doesn't really care for, and "
3001 "creates a false sense of good maintenance. For the same reason, team members "
3002 "do not need to add themselves to the Uploaders field just because they are "
3003 "uploading the package once, they can do a “Team upload” (see <xref "
3004 "linkend=\"nmu-team-upload\"/>). Conversely, it it a bad idea to keep a "
3005 "package with only the mailing list address as a Maintainer and no Uploaders."
3008 #. type: Content of: <chapter><section><title>
3010 msgid "The testing distribution"
3013 #. type: Content of: <chapter><section><section><title>
3018 #. type: Content of: <chapter><section><section><para>
3021 "Packages are usually installed into the <literal>testing</literal> "
3022 "distribution after they have undergone some degree of "
3023 "<literal>testing</literal> in <literal>unstable</literal>."
3026 #. type: Content of: <chapter><section><section><para>
3029 "They must be in sync on all architectures and mustn't have dependencies that "
3030 "make them uninstallable; they also have to have generally no known "
3031 "release-critical bugs at the time they're installed into <literal>testing "
3032 "</literal>. This way, <literal>testing</literal> should always be close to "
3033 "being a release candidate. Please see below for details."
3036 #. type: Content of: <chapter><section><section><title>
3038 msgid "Updates from unstable"
3041 #. type: Content of: <chapter><section><section><para>
3044 "The scripts that update the <literal>testing</literal> distribution are run "
3045 "twice each day, right after the installation of the updated packages; these "
3046 "scripts are called <literal>britney</literal>. They generate the "
3047 "<filename>Packages</filename> files for the <literal>testing</literal> "
3048 "distribution, but they do so in an intelligent manner; they try to avoid any "
3049 "inconsistency and to use only non-buggy packages."
3052 #. type: Content of: <chapter><section><section><para>
3055 "The inclusion of a package from <literal>unstable</literal> is conditional "
3059 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3062 "The package must have been available in <literal>unstable</literal> for 2, 5 "
3063 "or 10 days, depending on the urgency (high, medium or low). Please note "
3064 "that the urgency is sticky, meaning that the highest urgency uploaded since "
3065 "the previous <literal>testing</literal> transition is taken into account. "
3066 "Those delays may be doubled during a freeze, or <literal>testing</literal> "
3067 "transitions may be switched off altogether;"
3070 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3073 "It must not have new release-critical bugs (RC bugs affecting the version "
3074 "available in <literal>unstable</literal>, but not affecting the version in "
3075 "<literal>testing</literal>);"
3078 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3081 "It must be available on all architectures on which it has previously been "
3082 "built in <literal>unstable</literal>. <xref linkend=\"dak-ls\"/> may be of "
3083 "interest to check that information;"
3086 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3089 "It must not break any dependency of a package which is already available in "
3090 "<literal>testing</literal>;"
3093 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3096 "The packages on which it depends must either be available in "
3097 "<literal>testing</literal> or they must be accepted into "
3098 "<literal>testing</literal> at the same time (and they will be if they "
3099 "fulfill all the necessary criteria);"
3102 #. type: Content of: <chapter><section><section><para>
3105 "To find out whether a package is progressing into <literal>testing</literal> "
3106 "or not, see the <literal>testing</literal> script output on the <ulink "
3107 "url=\"&url-testing-maint;\">web page of the testing distribution</ulink>, or "
3108 "use the program <command>grep-excuses</command> which is in the <systemitem "
3109 "role=\"package\">devscripts</systemitem> package. This utility can easily "
3110 "be used in a <citerefentry> <refentrytitle>crontab</refentrytitle> "
3111 "<manvolnum>5</manvolnum> </citerefentry> to keep yourself informed of the "
3112 "progression of your packages into <literal>testing</literal>."
3115 #. type: Content of: <chapter><section><section><para>
3118 "The <filename>update_excuses</filename> file does not always give the "
3119 "precise reason why the package is refused; you may have to find it on your "
3120 "own by looking for what would break with the inclusion of the package. The "
3121 "<ulink url=\"&url-testing-maint;\">testing web page</ulink> gives some more "
3122 "information about the usual problems which may be causing such troubles."
3125 #. type: Content of: <chapter><section><section><para>
3128 "Sometimes, some packages never enter <literal>testing</literal> because the "
3129 "set of inter-relationship is too complicated and cannot be sorted out by the "
3130 "scripts. See below for details."
3133 #. type: Content of: <chapter><section><section><para>
3136 "Some further dependency analysis is shown on <ulink "
3137 "url=\"http://release.debian.org/migration/\"></ulink> — but be warned, this "
3138 "page also shows build dependencies which are not considered by britney."
3141 #. type: Content of: <chapter><section><section><section><title>
3146 #. FIXME: better rename this file than document rampant professionalism?
3147 #. type: Content of: <chapter><section><section><section><para>
3150 "For the <literal>testing</literal> migration script, outdated means: There "
3151 "are different versions in <literal>unstable</literal> for the release "
3152 "architectures (except for the architectures in fuckedarches; fuckedarches is "
3153 "a list of architectures that don't keep up (in "
3154 "<filename>update_out.py</filename>), but currently, it's empty). outdated "
3155 "has nothing whatsoever to do with the architectures this package has in "
3156 "<literal>testing</literal>."
3159 #. type: Content of: <chapter><section><section><section><para>
3161 msgid "Consider this example:"
3164 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry>
3165 #: pkgs.dbk:2419 pkgs.dbk:2452
3169 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry>
3170 #: pkgs.dbk:2420 pkgs.dbk:2453
3174 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry>
3175 #: pkgs.dbk:2425 pkgs.dbk:2459 pkgs.dbk:2521
3179 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3180 #: pkgs.dbk:2426 pkgs.dbk:2431 pkgs.dbk:2460 pkgs.dbk:2461 pkgs.dbk:2468
3184 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3185 #: pkgs.dbk:2427 pkgs.dbk:2462 pkgs.dbk:2467
3189 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry>
3190 #: pkgs.dbk:2430 pkgs.dbk:2465 pkgs.dbk:2522
3194 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3195 #: pkgs.dbk:2432 pkgs.dbk:2466
3199 #. type: Content of: <chapter><section><section><section><para>
3202 "The package is out of date on alpha in <literal>unstable</literal>, and will "
3203 "not go to <literal>testing</literal>. Removing the package would not help at "
3204 "all, the package is still out of date on <literal>alpha</literal>, and will "
3205 "not propagate to testing."
3208 #. type: Content of: <chapter><section><section><section><para>
3211 "However, if ftp-master removes a package in <literal>unstable</literal> "
3212 "(here on <literal>arm</literal>):"
3215 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><thead><row><entry>
3220 #. type: Content of: <chapter><section><section><section><para>
3223 "In this case, the package is up to date on all release architectures in "
3224 "<literal>unstable</literal> (and the extra <literal>hurd-i386</literal> "
3225 "doesn't matter, as it's not a release architecture)."
3228 #. type: Content of: <chapter><section><section><section><para>
3231 "Sometimes, the question is raised if it is possible to allow packages in "
3232 "that are not yet built on all architectures: No. Just plainly no. (Except "
3233 "if you maintain glibc or so.)"
3236 #. type: Content of: <chapter><section><section><section><title>
3238 msgid "Removals from testing"
3241 #. type: Content of: <chapter><section><section><section><para>
3244 "Sometimes, a package is removed to allow another package in: This happens "
3245 "only to allow <emphasis>another</emphasis> package to go in if it's ready in "
3246 "every other sense. Suppose e.g. that <literal>a</literal> cannot be "
3247 "installed with the new version of <literal>b</literal>; then "
3248 "<literal>a</literal> may be removed to allow <literal>b</literal> in."
3251 #. type: Content of: <chapter><section><section><section><para>
3254 "Of course, there is another reason to remove a package from <literal>testing "
3255 "</literal>: It's just too buggy (and having a single RC-bug is enough to be "
3259 #. type: Content of: <chapter><section><section><section><para>
3262 "Furthermore, if a package has been removed from <literal>unstable</literal>, "
3263 "and no package in <literal>testing</literal> depends on it any more, then it "
3264 "will automatically be removed."
3267 #. type: Content of: <chapter><section><section><section><title>
3269 msgid "circular dependencies"
3272 #. type: Content of: <chapter><section><section><section><para>
3275 "A situation which is not handled very well by britney is if package "
3276 "<literal>a</literal> depends on the new version of package "
3277 "<literal>b</literal>, and vice versa."
3280 #. type: Content of: <chapter><section><section><section><para>
3282 msgid "An example of this is:"
3285 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3290 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3292 msgid "1; depends: b=1"
3295 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3297 msgid "2; depends: b=2"
3300 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3305 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3307 msgid "1; depends: a=1"
3310 #. type: Content of: <chapter><section><section><section><informaltable><tgroup><tbody><row><entry>
3312 msgid "2; depends: a=2"
3315 #. type: Content of: <chapter><section><section><section><para>
3318 "Neither package <literal>a</literal> nor package <literal>b</literal> is "
3319 "considered for update."
3322 #. type: Content of: <chapter><section><section><section><para>
3325 "Currently, this requires some manual hinting from the release team. Please "
3326 "contact them by sending mail to &email-debian-release; if this happens to "
3327 "one of your packages."
3330 #. type: Content of: <chapter><section><section><section><title>
3332 msgid "influence of package in testing"
3335 #. type: Content of: <chapter><section><section><section><para>
3338 "Generally, there is nothing that the status of a package in <literal>testing "
3339 "</literal> means for transition of the next version from <literal>unstable "
3340 "</literal> to <literal>testing</literal>, with two exceptions: If the "
3341 "RC-bugginess of the package goes down, it may go in even if it is still "
3342 "RC-buggy. The second exception is if the version of the package in "
3343 "<literal> testing</literal> is out of sync on the different arches: Then any "
3344 "arch might just upgrade to the version of the source package; however, this "
3345 "can happen only if the package was previously forced through, the arch is in "
3346 "fuckedarches, or there was no binary package of that arch present in "
3347 "<literal>unstable </literal> at all during the <literal>testing</literal> "
3351 #. type: Content of: <chapter><section><section><section><para>
3354 "In summary this means: The only influence that a package being in <literal> "
3355 "testing</literal> has on a new version of the same package is that the new "
3356 "version might go in easier."
3359 #. type: Content of: <chapter><section><section><section><title>
3364 #. type: Content of: <chapter><section><section><section><para>
3366 msgid "If you are interested in details, this is how britney works:"
3369 #. type: Content of: <chapter><section><section><section><para>
3372 "The packages are looked at to determine whether they are valid candidates. "
3373 "This gives the update excuses. The most common reasons why a package is not "
3374 "considered are too young, RC-bugginess, and out of date on some arches. For "
3375 "this part of britney, the release managers have hammers of various sizes to "
3376 "force britney to consider a package. (Also, the base freeze is coded in "
3377 "that part of britney.) (There is a similar thing for binary-only updates, "
3378 "but this is not described here. If you're interested in that, please peruse "
3382 #. type: Content of: <chapter><section><section><section><para>
3385 "Now, the more complex part happens: Britney tries to update <literal>testing "
3386 "</literal> with the valid candidates. For that, britney tries to add each "
3387 "valid candidate to the testing distribution. If the number of uninstallable "
3388 "packages in <literal>testing</literal> doesn't increase, the package is "
3389 "accepted. From that point on, the accepted package is considered to be part "
3390 "of <literal>testing</literal>, such that all subsequent installability tests "
3391 "include this package. Hints from the release team are processed before or "
3392 "after this main run, depending on the exact type."
3395 #. type: Content of: <chapter><section><section><section><para>
3398 "If you want to see more details, you can look it up on "
3399 "<filename>merkel:/org/&ftp-debian-org;/testing/update_out/</filename> (or in "
3400 "<filename>merkel:~aba/testing/update_out</filename> to see a setup with a "
3401 "smaller packages file). Via web, it's at <ulink "
3402 "url=\"http://&ftp-master-host;/testing/update_out_code/\"></ulink>"
3405 #. type: Content of: <chapter><section><section><section><para>
3408 "The hints are available via <ulink "
3409 "url=\"http://&ftp-master-host;/testing/hints/\"></ulink>."
3412 #. type: Content of: <chapter><section><section><title>
3414 msgid "Direct updates to testing"
3417 #. type: Content of: <chapter><section><section><para>
3420 "The <literal>testing</literal> distribution is fed with packages from "
3421 "<literal>unstable</literal> according to the rules explained above. "
3422 "However, in some cases, it is necessary to upload packages built only for "
3423 "<literal> testing</literal>. For that, you may want to upload to <literal> "
3424 "testing-proposed-updates</literal>."
3427 #. type: Content of: <chapter><section><section><para>
3430 "Keep in mind that packages uploaded there are not automatically processed, "
3431 "they have to go through the hands of the release manager. So you'd better "
3432 "have a good reason to upload there. In order to know what a good reason is "
3433 "in the release managers' eyes, you should read the instructions that they "
3434 "regularly give on &email-debian-devel-announce;."
3437 #. type: Content of: <chapter><section><section><para>
3440 "You should not upload to <literal>testing-proposed-updates</literal> when "
3441 "you can update your packages through <literal>unstable</literal>. If you "
3442 "can't (for example because you have a newer development version in "
3443 "<literal>unstable </literal>), you may use this facility, but it is "
3444 "recommended that you ask for authorization from the release manager first. "
3445 "Even if a package is frozen, updates through <literal>unstable</literal> are "
3446 "possible, if the upload via <literal>unstable</literal> does not pull in any "
3450 #. type: Content of: <chapter><section><section><para>
3453 "Version numbers are usually selected by adding the codename of the "
3454 "<literal>testing</literal> distribution and a running number, like "
3455 "<literal>1.2sarge1</literal> for the first upload through "
3456 "<literal>testing-proposed-updates</literal> of package version "
3457 "<literal>1.2</literal>."
3460 #. type: Content of: <chapter><section><section><para>
3462 msgid "Please make sure you didn't miss any of these items in your upload:"
3465 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3468 "Make sure that your package really needs to go through "
3469 "<literal>testing-proposed-updates</literal>, and can't go through <literal> "
3470 "unstable</literal>;"
3473 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3475 msgid "Make sure that you included only the minimal amount of changes;"
3478 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3480 msgid "Make sure that you included an appropriate explanation in the changelog;"
3483 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3486 "Make sure that you've written <literal>testing</literal> or "
3487 "<literal>testing-proposed-updates</literal> into your target distribution;"
3490 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3493 "Make sure that you've built and tested your package in "
3494 "<literal>testing</literal>, not in <literal>unstable</literal>;"
3497 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3500 "Make sure that your version number is higher than the version in "
3501 "<literal>testing</literal> and <literal>testing-proposed-updates</literal>, "
3502 "and lower than in <literal>unstable</literal>;"
3505 #. type: Content of: <chapter><section><section><itemizedlist><listitem><para>
3508 "After uploading and successful build on all platforms, contact the release "
3509 "team at &email-debian-release; and ask them to approve your upload."
3512 #. type: Content of: <chapter><section><section><title>
3514 msgid "Frequently asked questions"
3517 #. type: Content of: <chapter><section><section><section><title>
3519 msgid "What are release-critical bugs, and how do they get counted?"
3522 #. type: Content of: <chapter><section><section><section><para>
3525 "All bugs of some higher severities are by default considered "
3526 "release-critical; currently, these are <literal>critical</literal>, "
3527 "<literal>grave</literal> and <literal>serious</literal> bugs."
3530 #. type: Content of: <chapter><section><section><section><para>
3533 "Such bugs are presumed to have an impact on the chances that the package "
3534 "will be released with the <literal>stable</literal> release of Debian: in "
3535 "general, if a package has open release-critical bugs filed on it, it won't "
3536 "get into <literal>testing</literal>, and consequently won't be released in "
3537 "<literal> stable</literal>."
3540 #. type: Content of: <chapter><section><section><section><para>
3543 "The <literal>unstable</literal> bug count are all release-critical bugs "
3544 "which are marked to apply to "
3545 "<replaceable>package</replaceable>/<replaceable>version </replaceable> "
3546 "combinations that are available in unstable for a release architecture. The "
3547 "<literal>testing</literal> bug count is defined analogously."
3550 #. type: Content of: <chapter><section><section><section><title>
3553 "How could installing a package into <literal>testing</literal> possibly "
3554 "break other packages?"
3557 #. type: Content of: <chapter><section><section><section><para>
3560 "The structure of the distribution archives is such that they can only "
3561 "contain one version of a package; a package is defined by its name. So when "
3562 "the source package <literal>acmefoo</literal> is installed into "
3563 "<literal>testing</literal>, along with its binary packages "
3564 "<literal>acme-foo-bin</literal>, <literal> acme-bar-bin</literal>, "
3565 "<literal>libacme-foo1</literal> and <literal> libacme-foo-dev</literal>, the "
3566 "old version is removed."
3569 #. type: Content of: <chapter><section><section><section><para>
3572 "However, the old version may have provided a binary package with an old "
3573 "soname of a library, such as <literal>libacme-foo0</literal>. Removing the "
3574 "old <literal>acmefoo</literal> will remove <literal>libacme-foo0</literal>, "
3575 "which will break any packages which depend on it."
3578 #. type: Content of: <chapter><section><section><section><para>
3581 "Evidently, this mainly affects packages which provide changing sets of "
3582 "binary packages in different versions (in turn, mainly libraries). However, "
3583 "it will also affect packages upon which versioned dependencies have been "
3584 "declared of the ==, <=, or << varieties."
3587 #. type: Content of: <chapter><section><section><section><para>
3590 "When the set of binary packages provided by a source package change in this "
3591 "way, all the packages that depended on the old binaries will have to be "
3592 "updated to depend on the new binaries instead. Because installing such a "
3593 "source package into <literal>testing</literal> breaks all the packages that "
3594 "depended on it in <literal>testing</literal>, some care has to be taken now: "
3595 "all the depending packages must be updated and ready to be installed "
3596 "themselves so that they won't be broken, and, once everything is ready, "
3597 "manual intervention by the release manager or an assistant is normally "
3601 #. type: Content of: <chapter><section><section><section><para>
3604 "If you are having problems with complicated groups of packages like this, "
3605 "contact &email-debian-devel; or &email-debian-release; for help."