Gentoo Archives: gentoo-commits

From: "Göktürk Yüksek" <gokturk@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/devmanual:codesample-indent-fix commit in: ebuild-maintenance/maintenance-tasks/, ebuild-maintenance/
Date: Wed, 03 Jan 2018 05:57:44
Message-Id: 1514942419.d2e77eb8f1abe200a4c0ede569fa169c08205545.gokturk@gentoo
1 commit: d2e77eb8f1abe200a4c0ede569fa169c08205545
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sat Oct 14 09:40:48 2017 +0000
4 Commit: Göktürk Yüksek <gokturk <AT> gentoo <DOT> org>
5 CommitDate: Wed Jan 3 01:20:19 2018 +0000
6 URL: https://gitweb.gentoo.org/proj/devmanual.git/commit/?id=d2e77eb8
7
8 Convert 'Ebuild Maintenance' into a section
9
10 The committer has reflowed some of the lines past 80 characters.
11
12 .../{ => maintenance-tasks}/text.xml | 62 +-
13 ebuild-maintenance/text.xml | 670 +--------------------
14 2 files changed, 44 insertions(+), 688 deletions(-)
15
16 diff --git a/ebuild-maintenance/text.xml b/ebuild-maintenance/maintenance-tasks/text.xml
17 similarity index 92%
18 copy from ebuild-maintenance/text.xml
19 copy to ebuild-maintenance/maintenance-tasks/text.xml
20 index 0a94d9c..ba401ca 100644
21 --- a/ebuild-maintenance/text.xml
22 +++ b/ebuild-maintenance/maintenance-tasks/text.xml
23 @@ -1,7 +1,7 @@
24 <?xml version="1.0"?>
25 -<guide self="ebuild-maintenance/">
26 +<guide self="ebuild-maintenance/maintenance-tasks/">
27 <chapter>
28 -<title>Ebuild Maintenance</title>
29 +<title>Maintenance Tasks</title>
30
31 <body>
32 <p>
33 @@ -33,17 +33,18 @@ select all possible fields, then submit the query. For you lazy people, click
34 <p>
35 In general, the Gentoo repository should only be used for storing
36 <path>.ebuild</path> files, as well as any relatively small companion
37 -files, such as patches or sample configuration files. These types of
38 -files should be placed in the <path>/usr/portage/mycat/mypkg/files</path>
39 -directory to keep the main <path>mycat/mypkg</path> directory uncluttered.
40 -Exceptions to this rule are for larger patch files (we recommend this for patches
41 -above 20KB) which should be distributed as tarballs via the
42 -<uri link="::general-concepts/mirrors/#suitable-download-hosts">Gentoo mirror system</uri>
43 -so that people do not waste excessive amounts of bandwidth and hard drive
44 -space. Also, you should not add binary (non-ASCII) files to the
45 -git tree. Also, speaking of merging
46 -changes, any patches you add to Portage should generally <e>not</e> be
47 -compressed. This will allow git to merge changes and correctly inform
48 +files, such as patches or sample configuration files. These types of
49 +files should be placed in the
50 +<path>/usr/portage/mycat/mypkg/files</path> directory to keep the main
51 +<path>mycat/mypkg</path> directory uncluttered. Exceptions to this
52 +rule are for larger patch files (we recommend this for patches above
53 +20KB) which should be distributed as tarballs via the
54 +<uri link="::general-concepts/mirrors/#suitable-download-hosts">Gentoo
55 +mirror system</uri> so that people do not waste excessive amounts of
56 +bandwidth and hard drive space. Also, you should not add binary
57 +(non-ASCII) files to the git tree. Also, speaking of merging changes,
58 +any patches you add to Portage should generally <e>not</e> be
59 +compressed. This will allow git to merge changes and correctly inform
60 developers of conflicts.
61 </p>
62
63 @@ -303,7 +304,12 @@ critical issue that needs to be handled ASAP. Otherwise a soft limit
64 of 2 to 4 weeks depending on the severity of the bug is an acceptable
65 time frame before you go ahead and fix it yourself.
66 </p>
67 -<important> Common sense dictates to us that toolchain/base-system/core packages and eclasses or anything else which is delicate (e.g. glibc) or widely used (e.g. gtk+) should usually be left to those maintainers. If in doubt, don't touch it.</important>
68 +<important>
69 +Common sense dictates to us that toolchain/base-system/core packages
70 +and eclasses or anything else which is delicate (e.g. glibc) or widely
71 +used (e.g. gtk+) should usually be left to those maintainers. If in
72 +doubt, don't touch it.
73 +</important>
74
75 <p>
76 Respect developers' coding preferences. Unnecessarily changing the
77 @@ -367,10 +373,16 @@ the team can keep an eye out for possible keywording mistakes.
78 </p>
79
80 <p>
81 -Exotic architectures (like alpha, ia64, sparc, hppa, ppc*) are short on manpower, so it's best if you avoid opening stabilization bugs for them unless it is absolutely necessary (eg, a reverse dependency for your package). More about keywording policies can be found in the <uri link="::keywording">keywording</uri> section.
82 +Exotic architectures (like alpha, ia64, sparc, hppa, ppc*) are short
83 +on manpower, so it's best if you avoid opening stabilization bugs for
84 +them unless it is absolutely necessary (eg, a reverse dependency for
85 +your package). More about keywording policies can be found in the
86 +<uri link="::keywording">keywording</uri> section.
87 </p>
88 <p>
89 -Some architectures (like m68k, mips, s390, sh) do not maintain a stable keyword. So there is no use in marking a package stable for one of these architectures.
90 +Some architectures (like m68k, mips, s390, sh) do not maintain a
91 +stable keyword. So there is no use in marking a package stable for one
92 +of these architectures.
93 </p>
94 </body>
95 </section>
96 @@ -522,18 +534,20 @@ Date: Tue Nov 3 20:26:52 2015 +0100
97 <title>Changing ebuild's SLOT</title>
98 <body>
99 <p>
100 -The process for changing the ebuild's SLOT is very similar to the previous process.
101 -Besides changing the SLOT in the ebuild file, you also need to create a new entry
102 -in <path>profiles/updates/</path> in the Gentoo repository in the following format:
103 +The process for changing the ebuild's SLOT is very similar to the
104 +previous process. Besides changing the SLOT in the ebuild file, you
105 +also need to create a new entry in <path>profiles/updates/</path> in
106 +the Gentoo repository in the following format:
107 </p>
108
109 <pre caption="Adding an entry to updates">
110 slotmove app-text/gtkspell 0 2
111 </pre>
112
113 -<p>Make sure that you have fixed all the reverse dependencies and that you have
114 -updated every file in <path>profiles/</path> directory that happens to contain an
115 -entry which may be affected by your change.
116 +<p>
117 +Make sure that you have fixed all the reverse dependencies and that
118 +you have updated every file in <path>profiles/</path> directory that
119 +happens to contain an entry which may be affected by your change.
120 </p>
121
122 </body>
123 @@ -573,7 +587,9 @@ When removing packages follow these steps:
124 </p>
125
126 <ol>
127 - <li>Make sure that no dependencies in Portage are broken due to the removal</li>
128 + <li>
129 + Make sure that no dependencies in Portage are broken due to the removal
130 + </li>
131 <li>Send last rites to gentoo-dev-announce and gentoo-dev</li>
132 <li>Mask the package</li>
133 <li>Wait 30 days (or more)</li>
134
135 diff --git a/ebuild-maintenance/text.xml b/ebuild-maintenance/text.xml
136 index 0a94d9c..46ab82f 100644
137 --- a/ebuild-maintenance/text.xml
138 +++ b/ebuild-maintenance/text.xml
139 @@ -5,677 +5,17 @@
140
141 <body>
142 <p>
143 -This guide aims to explain common everyday ebuild maintenance
144 -routines, as well as other rarer maintenance routines which
145 -developers may not be familiar with.
146 +This section covers various tasks related to working with ebuilds.
147 </p>
148 -
149 -<section>
150 -<title>Adding a new ebuild</title>
151 -<body>
152 -
153 -<subsection>
154 -<title>What (not) to put in the Gentoo repository</title>
155 -<body>
156 -
157 -<p>
158 -Before writing a new ebuild, check
159 -<uri link="https://bugs.gentoo.org/">bugs.gentoo.org</uri>
160 -to see if an ebuild has already been written for the package, but has not yet
161 -been added to the Gentoo repository. Go to <uri
162 -link="https://bugs.gentoo.org/">bugs.gentoo.org</uri>, choose query and select
163 -Advanced Search; as product select <e>Gentoo Linux</e>, as component select
164 -<e>ebuilds</e>. In the search field put the name of the ebuild and as status
165 -select all possible fields, then submit the query. For you lazy people, click
166 -<uri link="https://bugs.gentoo.org/query.cgi?format=advanced&amp;product=Gentoo%20Linux&amp;component=New%20Ebuilds&amp;bug_Status=UNCONFIRMED&amp;bug_status=CONFIRMED&amp;bug_status=IN_PROGRESS&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED">here</uri>.
167 -</p>
168 -
169 -<p>
170 -In general, the Gentoo repository should only be used for storing
171 -<path>.ebuild</path> files, as well as any relatively small companion
172 -files, such as patches or sample configuration files. These types of
173 -files should be placed in the <path>/usr/portage/mycat/mypkg/files</path>
174 -directory to keep the main <path>mycat/mypkg</path> directory uncluttered.
175 -Exceptions to this rule are for larger patch files (we recommend this for patches
176 -above 20KB) which should be distributed as tarballs via the
177 -<uri link="::general-concepts/mirrors/#suitable-download-hosts">Gentoo mirror system</uri>
178 -so that people do not waste excessive amounts of bandwidth and hard drive
179 -space. Also, you should not add binary (non-ASCII) files to the
180 -git tree. Also, speaking of merging
181 -changes, any patches you add to Portage should generally <e>not</e> be
182 -compressed. This will allow git to merge changes and correctly inform
183 -developers of conflicts.
184 -</p>
185 -
186 -<p>
187 -Remember, the packages that you commit must be <e>ready</e> <e>out of the
188 -box</e> for end users when committed as stable. Make sure that you have a good
189 -set of default settings that will satisfy the majority of systems and
190 -users that will use your package. If your package is broken, and you are
191 -not sure how to get it to work, check some other distributions that have
192 -done their own versions of the package. You can check
193 -<uri link="http://cvs.mandriva.com/cgi-bin/viewvc.cgi/SPECS/">Mandriva</uri>
194 -or <uri link="http://www.debian.org/distrib/packages">Debian</uri> or
195 -<uri link="http://pkgs.fedoraproject.org/cgit/rpms/">Fedora</uri> for some
196 -examples.
197 -</p>
198 -
199 -<p>
200 -When committing to git, all developers should use <c>repoman commit</c>
201 -instead of <c>git commit</c> to submit their ebuilds. Before committing,
202 -please run <c>repoman full</c> to make sure you didn't forget something.
203 -</p>
204 -
205 -</body>
206 -</subsection>
207 -
208 -<subsection>
209 -<title>Initial Architecture Keywords</title>
210 -<body>
211 -<p>
212 -When adding a new ebuild, you should only include <c>KEYWORDS</c> for
213 -architectures on which you have actually tested the ebuild, confirming
214 -that it works as it should and that <c>USE</c> flags are properly
215 -honoured in the resulting package which would be installed. If
216 -possible, you should give the actual library or application thorough
217 -testing as well, since you would be responsible for any breakages for
218 -your architecture(s). Minimal testing such as checking that the
219 -application starts up without any errors should always be performed.
220 -</p>
221 -
222 -<p>
223 -If you are adding a user-submitted ebuild, do not assume that the
224 -submitter has done testing on various architectures: often, <c>KEYWORDS</c>
225 -are cloned across packages or generated from documentation in the
226 -source packages, which does not signify that the package does indeed
227 -work on those architectures.
228 -</p>
229 -
230 -</body>
231 -</subsection>
232 -
233 -<subsection>
234 -<title>Git Commit Message Format</title>
235 -<body>
236 -
237 -<p>
238 -It is important to format the commit messages properly so that they
239 -communicate the changes to the reader in a clear and concise
240 -way. Additionally, consistency in message format allows for easier
241 -parsing by external tools. The first line of the commit message should
242 -contain a brief summary of the changes, followed by an empty new
243 -line. From the third line onward should be a detailed, multiline
244 -explanation of the changes introduced by the commit. At the very end,
245 -auxiliary information such as the bugs related to the commit,
246 -contributors, and reviewers should be listed using RFC822/git style
247 -tags. The length of the lines in the message should be 70-75
248 -characters at maximum.
249 -</p>
250 -
251 -<p>
252 -The summary line should start with referencing what is affected by the
253 -change followed by a colon ':' character. Use the rules in the
254 -following list to determine the proper format based on what has
255 -changed, substituting the package, category and eclass names
256 -appropriately:
257 -
258 -<ul>
259 -<li><c>${CATEGORY}/${PN}:</c>Single Package (Note that <c>repoman commit</c>
260 -automatically inserts this for you)</li>
261 -<li><c>${CATEGORY}:</c> Package Category</li>
262 -<li><c>profiles:</c> Profile Directory</li>
263 -<li><c>${ECLASS}.eclass:</c> Eclass Directotry</li>
264 -<li><c>licenses:</c> Licenses Directory</li>
265 -<li><c>metadata:</c> Metadata Directory</li>
266 -</ul>
267 -
268 -For packages where <c>${CATEGORY}/${PN}:</c> is long, the line length
269 -limit can be exceeded, if absolutely necessary, to ensure a more
270 -useful summary line. If a commit affects multiple directories, prepend
271 -the message with which reflects the intention of the change best. If
272 -there are any bugs on Gentoo Bugzilla associated with the commit, id
273 -of the bug can be appended to the summary line using the format
274 -<c>#BUG-ID</c>. If you are modifying keywords, clearly state what
275 -keywords are added/removed.
276 -
277 -<warning>
278 -By default, lines starting with <c>#</c> are considered to be comments
279 -by git and not included in the commit message. Make sure that a new
280 -line does not start with <c>#BUG-ID</c>. Optionally, git can be
281 -configured to use a different character for comments by changing the
282 -<c>commentchar</c> option.
283 -</warning>
284 -</p>
285 -
286 -<p>
287 -For non-trivial commits, the message should contain a detailed
288 -explanation of what the commit intends to change, why it is required,
289 -and how it is accomplished, along with any other supplementary
290 -information.
291 -</p>
292 -
293 -<p>
294 -Finally the commit message should list auxiliary information such as
295 -people who are involved in authoring, suggesting, reviewing and
296 -testing the changes, and revelant bugs. Use RFC822/git style tags as
297 -explained in the
298 -<uri link="https://kernel.org/doc/html/latest/process/submitting-patches.html">
299 -Linux Kernel patch guideline</uri>. Additionally, the following tags
300 -are optionally used in Gentoo:
301 -
302 -<ul>
303 -<li><c>Bug:</c> Use this to reference bugs <e>without</e> closing them.
304 -The value is a URL to the bug. If multiple bugs need to be referenced,
305 -each one should be listed in a separate <c>Bug</c> tag. If a bug
306 -on Gentoo Bugzilla, or an issue or a pull request on GitHub
307 -is referenced, a reference to the commit will be added
308 -automatically.</li>
309 -<li><c>Closes:</c> Use this to reference bugs and close them
310 -automatically. Alike <c>Bug:</c>, the value is a single URL to the bug,
311 -and multiple tags can be used to close multiple bugs. If a bug on Gentoo
312 -Bugzilla, or an issue or a pull request on a GitHub repository
313 -mirrored by Gentoo is referenced, it will be closed (as fixed)
314 -automatically with reference to the commit.</li>
315 -<li><c>Package-Manager:</c> This is automatically inserted by
316 -<c>repoman commit</c> and it specifies the version of
317 -<pkg>sys-apps/portage</pkg> on the system.</li>
318 -<li><c>RepoMan-Options:</c> This is automatically inserted by
319 -<c>repoman commit</c> and records the options passed to repoman (such
320 -as --force) for the commit.</li>
321 -</ul>
322 -</p>
323 -
324 -<p>
325 -Additionally, some developers prefer referencing bugs on the summary
326 -line using the <c>#nnnnnn</c> form. Developers are free to use either
327 -form, or both simultaneously to combine their advantages.
328 -</p>
329 -
330 -<p>
331 -When committing <uri link="::ebuild-writing/user-submitted">user
332 -contributions</uri>, make sure to credit them in your commit message
333 -with the user's full name and email address. Be aware and respectful
334 -of their privacy: some users prefer to be only known by a
335 -nickname. Take advantage of the tags such as <c>Suggested-By</c> or
336 -<c>Reported-By:</c>when entering such information to the commit
337 -message.
338 -</p>
339 -
340 -<p>
341 -An example commit message is shown below:
342 -</p>
343 -
344 -<pre caption="Example commit message">
345 -app-misc/foo: version bump to 0.5
346 -
347 -This also adds a new USE flag 'bar' which controls the
348 -new bar functionality introduced with this version.
349 -
350 -Bug: https://bugs.gentoo.org/00000
351 -Closes: https://bugs.gentoo.org/00001
352 -</pre>
353 -
354 </body>
355 -</subsection>
356 -
357 -<subsection>
358 -<title>Git Commit Policy</title>
359 -<body>
360 -
361 -<ul>
362 -<li>Always run <c>repoman scan</c> before you commit.</li>
363 -<li>Please run <c>repoman full</c> before you commit.</li>
364 -<li>Always test that <path>package.mask</path> is okay by doing
365 -<c>emerge --pretend mypkg</c> before you commit and check
366 -that it doesn't contain any conflicts.</li>
367 -<li>Always commit the updated <path>package.mask</path> before
368 -the updated package.</li>
369 -<li>Always do atomic commits; if you commit a package with a new license,
370 -or that is masked, then first commit the revised <path>package.mask</path> and/or license,
371 -then commit the ebuild, patches
372 -and <uri link="::ebuild-writing/misc-files/metadata">metadata.xml</uri> all in <b>one</b> go
373 -.</li>
374 -<note> Although the set of changes in a single git commit is atomic, and
375 -combining <path>package.mask</path>/license changes with ebuild changes in a
376 -single commit wouldn't break atomicity, it is not currently possible to do so
377 -using <c>repoman commit</c>.</note>
378 -<!-- See: https://bugs.gentoo.org/show_bug.cgi?id=390651 -->
379 -</ul>
380 -
381 -</body>
382 -</subsection>
383 -
384 -<subsection>
385 -<title>The files Directory</title>
386 -<body>
387 -
388 -<p>
389 -As noted earlier, under each package subdirectory is
390 -a <path>files/</path> directory. Any patches, configuration files, or
391 -other ancillary files your package might require should be added to
392 -this directory; any files bigger than 20KB-or-so should go to the
393 -mirrors to lower the amount of (unneeded) files our users have to
394 -download. You may want to consider naming patches you create yourself
395 -just to get your package to build with a version-specific name, such
396 -as <path>mypkg-1.0-gentoo.diff</path>, or more
397 -simply, <path>1.0-gentoo.diff</path>. Also note that the
398 -<path>gentoo</path> extension informs people that this patch was created
399 -by us, the Gentoo Linux developers, rather than having been grabbed from a
400 -mailing list or somewhere else. Again, you should not compress these
401 -patches.
402 -</p>
403 -
404 -<p>
405 -Consider prefixing or suffixing (such as <path>mypkg-1.0</path>) every file
406 -you put into the <path>files/</path> directory, so that the files used for
407 -each individual version on an ebuild are distinguishable from one another, and
408 -so that the changes between different revisions are visible. This is generally
409 -a really good idea :). You may want to use a different suffix if you wish to
410 -convey more meaning with the patch name.
411 -</p>
412 -
413 -<p>
414 -If you have many files that should go into the <path>files/</path> directory,
415 -consider creating subdirectories such as <path>files/1.0/</path> and putting the
416 -relevant files in the appropriate subdirectory. If you use this method,
417 -you do not need to add version information to the names of the files,
418 -which is often more convenient.
419 -</p>
420 -
421 -</body>
422 -</subsection>
423 -
424 -</body>
425 -</section>
426
427 <section>
428 -<title>Touching other developers ebuilds</title>
429 +<title>Contents</title>
430 <body>
431 -<p>
432 -Usually you don't just change other developers ebuilds without
433 -permission unless you know that developer does not mind or if you are
434 -part of the project involved in maintenance (this information can
435 -typically be found in metadata.xml). Start with filing a bug or trying
436 -to catch them on IRC or via email. Sometimes you cannot reach them, or
437 -there is no response to your bug. It's a good idea to consult other
438 -developers on how to handle the situation, especially if it's a
439 -critical issue that needs to be handled ASAP. Otherwise a soft limit
440 -of 2 to 4 weeks depending on the severity of the bug is an acceptable
441 -time frame before you go ahead and fix it yourself.
442 -</p>
443 -<important> Common sense dictates to us that toolchain/base-system/core packages and eclasses or anything else which is delicate (e.g. glibc) or widely used (e.g. gtk+) should usually be left to those maintainers. If in doubt, don't touch it.</important>
444 -
445 -<p>
446 -Respect developers' coding preferences. Unnecessarily changing the
447 -syntax of an ebuild can cause complications for others. Syntax changes
448 -should only be done if there is a real benefit, such as faster
449 -compilation, improved information for the end user, or compliance with
450 -Gentoo policies.
451 -</p>
452 -
453 +<contentsTree/>
454 </body>
455 </section>
456 -
457 -<section>
458 -<title>Stabilizing ebuilds</title>
459 -<body>
460 -
461 -<p>
462 -Only architecture maintainers for a given architecture should mark packages as
463 -stable on that architecture. The maintainer of the package should always be
464 -contacted just in case there are reasons not to do so. The exception to this
465 -is if you are part of an architecture team, in which case you may mark the
466 -package stable for that architecture. If you are not part of an architecture
467 -team, you should consult the guidelines below; if the architecture you are
468 -looking for is not listed then please consult the relevant lead.
469 -</p>
470 -
471 -<p>
472 -You should <e>never</e> stabilize packages on
473 -architectures for which you cannot test and instead you should file a bug to
474 -the relevant architecture team, such as <mail link="sparc@g.o">
475 -sparc@g.o</mail> asking them to stabilize the
476 -ebuild. Alternatively, you may be able to find Gentoo developers on
477 -IRC who could help you with your request.
478 -</p>
479 -
480 -<p>
481 -It is best to not use <mail link="arch-maintainers@g.o">
482 -arch-maintainers@g.o</mail>, adding architecture teams onto a
483 -bug's CC list individually instead. That way teams can remove
484 -themselves from the list when they are done, giving a clear indication
485 -of which teams still have to stabilize a package.
486 -</p>
487 -
488 -</body>
489 -</section>
490 -
491 -<section>
492 -<title>Stabilization rules</title>
493 -<body>
494 -
495 -<p>
496 -SPARC: You must have prior permission from the arch lead. Usually we expect
497 -you to be on the sparc alias for QA reasons, although other arrangements
498 -can be made if you will only be working with a small group of packages.
499 -</p>
500 -
501 -<p>
502 -ALPHA: Maintainers may keyword their own packages but are reminded to inform
503 -the Alpha team if they can help out with testing and keywording packages so
504 -the team can keep an eye out for possible keywording mistakes.
505 -</p>
506 -
507 -<p>
508 -Exotic architectures (like alpha, ia64, sparc, hppa, ppc*) are short on manpower, so it's best if you avoid opening stabilization bugs for them unless it is absolutely necessary (eg, a reverse dependency for your package). More about keywording policies can be found in the <uri link="::keywording">keywording</uri> section.
509 -</p>
510 -<p>
511 -Some architectures (like m68k, mips, s390, sh) do not maintain a stable keyword. So there is no use in marking a package stable for one of these architectures.
512 -</p>
513 -</body>
514 -</section>
515 -
516 -<section>
517 -<title>Upgrading ebuilds</title>
518 -<body>
519 -
520 -<p>
521 -New ebuilds should rarely go in with "<c>arch</c>" keywords and even if they do
522 -not, the package <e>must</e> be tested on any architectures listed in the
523 -<c>KEYWORDS</c> variable of the new ebuild.
524 -</p>
525 -
526 -<p>
527 -Exceptions to the no "<c>arch</c>" rule are major bug fixes, or
528 -security fixes. If the previous version of the ebuild
529 -contains <c>KEYWORDS</c> which you cannot test for, you should
530 -downgrade them: turn any "<c>arch</c>" keyword to "<c>~arch</c>". If you
531 -think that your package may not work at all even on "<c>~arch</c>"
532 -then it is best to leave the keyword out and request testing from the
533 -relevant team: if you are to do this, you must file a bug to the team
534 -in question.
535 -</p>
536 -
537 -<p>
538 -If a new version introduces new dependencies which are not available
539 -on some architectures, then you should file a bug or ask on IRC before
540 -you upgrade the package. If you really need to get the ebuild added in
541 -a hurry, for example, for a security fix, then you should drop
542 -any <c>KEYWORDS</c> which are causing problems and CC the relevant
543 -architectures on the bug - you should file a new bug to the
544 -architecture in question regarding this if no bug is already
545 -available.
546 -</p>
547 -
548 -<p>
549 -If there are no new dependencies, do not remove keywords if your
550 -commit fails with repoman - please try a full <c>git pull</c> and if
551 -you still have problems, then commit with <c>repoman -I</c> and file a
552 -bug to the broken architecture, noting it in your git commit message.
553 -</p>
554 -
555 -<warning>
556 -When committing, make sure that you reference any bugs in the
557 -commit message. Failing to do so is considered
558 -to be in very poor taste and may result in disciplinary action.
559 -</warning>
560 -
561 -</body>
562 -</section>
563 -
564 -<section>
565 -<title>Moving a package</title>
566 -<body>
567 -
568 -<p>
569 -Moving a package in the tree requires several operations. Firstly,
570 -the package directory needs to be moved to the correct category
571 -using <c>git mv</c>. After this, a new entry needs to be added to
572 -the latest file in <path>profiles/updates/</path> in the
573 -following format:
574 -</p>
575 -
576 -<pre caption="Adding an entry to updates">
577 -move old-category/package-name new-category/package-name
578 -</pre>
579 -
580 -<p>
581 -Following the update entry, ebuilds that have a
582 -<uri link="::general-concepts/dependencies">dependency</uri>
583 -to this package (in other words, the reverse dependencies of
584 -the package to be moved) need to be updated properly.
585 -</p>
586 -
587 -<p>
588 -Next is checking the files under <path>profiles/</path> such as
589 -<path>profiles/package.mask</path> and update them to reflect the ebuild
590 -move. Various eclasses automatically provide some of the dependencies upon
591 -inherit, so the files under <path>eclass/</path> should be checked and updated
592 -properly. If the package metadata.xml has tags with <c>restrict</c>
593 -attribute, they should be updated to reflect the move. The
594 -metadata.xml for various packages may contain references to the
595 -package being moved using the <c>&lt;pkg&gt;</c> tag which need to be
596 -updated accordingly as well. Lastly, the titles of the open bugs
597 -related to the package should be updated.
598 -</p>
599 -
600 -<p>
601 -Here is an example where the package
602 -<path>net-misc/fwbuilder</path> is transparently moved to
603 -<path>net-firewall/fwbuilder</path>:
604 -</p>
605 -
606 -<ol>
607 - <li>Issue <c>git mv net-misc/fwbuilder net-firewall/fwbuilder</c></li>
608 - <li>
609 - <p>
610 - Add the following entry to the latest file in
611 - <path>profile/updates/</path>:
612 - </p>
613 - <p><c>move net-misc/fwbuilder net-firewall/fwbuilder</c></p>
614 - </li>
615 - <li>Update the reverse dependencies of the package</li>
616 - <li>
617 - Update <path>profiles/package.mask</path> and other related files under
618 - <path>profiles/</path>
619 - </li>
620 - <li>Check the eclasses that may be referencing the package</li>
621 - <li>
622 - Update all the
623 - <uri link="::ebuild-writing/misc-files/metadata">metadata.xml</uri>
624 - files which contain a reference to this package using the
625 - <c>&lt;pkg&gt;</c> tag or the <c>restrict</c> attribute.
626 - </li>
627 - <li>
628 - Stage all the changed files using <c>git add</c>. For example: <c>git add
629 - profiles/package.mask</c>
630 - </li>
631 - <li>
632 - Commit all the changes in one commit using: <c>git commit --gpg-sign</c>
633 - </li>
634 - <li>
635 - Update any <uri link="::general-concepts/news">news items</uri>
636 - referencing the package in a <c>Display-If-Installed</c> header
637 - or in the item's body (and increment their <c>Revision</c>).
638 - </li>
639 - <li>Update any open bugs related to the package</li>
640 -</ol>
641 -
642 -<p>
643 -It is very important to commit all the changes in a single commit to ensure
644 -that no breakage occurs. The commit message should follow a format similar
645 -to the following:
646 -</p>
647 -
648 -<pre>
649 -commit d391643289097344a0b18ab2665bb26198a0e3a1
650 -Author: Guilherme Amadio &lt;amadio@g.o&gt;
651 -Date: Tue Nov 3 20:26:52 2015 +0100
652 -
653 - media-fonts/nanumfont: renamed to media-fonts/nanum
654 -</pre>
655 -
656 -</body>
657 -</section>
658 -
659 -<section>
660 -<title>Changing ebuild's SLOT</title>
661 -<body>
662 -<p>
663 -The process for changing the ebuild's SLOT is very similar to the previous process.
664 -Besides changing the SLOT in the ebuild file, you also need to create a new entry
665 -in <path>profiles/updates/</path> in the Gentoo repository in the following format:
666 -</p>
667 -
668 -<pre caption="Adding an entry to updates">
669 -slotmove app-text/gtkspell 0 2
670 -</pre>
671 -
672 -<p>Make sure that you have fixed all the reverse dependencies and that you have
673 -updated every file in <path>profiles/</path> directory that happens to contain an
674 -entry which may be affected by your change.
675 -</p>
676 -
677 -</body>
678 -</section>
679 -
680 -<section>
681 -<title>Removing ebuilds</title>
682 -<body>
683 -
684 -<p>
685 -When removing an ebuild make sure that no dependencies in Portage are broken
686 -due to the removal - additionally, your git commit message should explain
687 -clearly why the ebuild is being removed from the git repository.
688 -</p>
689 -
690 -<p>
691 -If you need to remove ebuilds, make sure you do not accidentally remove
692 -the newest/only stable ebuild for any architecture. If you would like to
693 -get a newer version marked stable, then please file a bug or ask on IRC.
694 -</p>
695 -
696 -<p>
697 -You should also not cause an unnecessary downgrade for any "<c>~arch</c>"
698 -when removing ebuilds - instead, it is best to get the newest version
699 -marked "<c>~arch</c>" first and then remove redundant versions of the ebuild.
700 -</p>
701 -
702 -</body>
703 -</section>
704 -
705 -<section>
706 -<title>Removing a package</title>
707 -<body>
708 -
709 -<p>
710 -When removing packages follow these steps:
711 -</p>
712 -
713 -<ol>
714 - <li>Make sure that no dependencies in Portage are broken due to the removal</li>
715 - <li>Send last rites to gentoo-dev-announce and gentoo-dev</li>
716 - <li>Mask the package</li>
717 - <li>Wait 30 days (or more)</li>
718 - <li>Remove from the git tree unless the reason for removal has been fixed</li>
719 - <li>Remove package.mask entry</li>
720 - <li>
721 - Remove the <c>&lt;pkg&gt;</c> tags referencing this package in the
722 - <uri link="::ebuild-writing/misc-files/metadata">metadata.xml</uri>
723 - files of other packages.
724 - </li>
725 - <li>Close open bugs as WONTFIX</li>
726 -</ol>
727 -
728 -<p>
729 -Here is a list of commands that will delete <path>dev-util/pmk</path>
730 -from the tree:
731 -</p>
732 -
733 -<pre caption="Removing a package from git">
734 -# cd dev-util
735 -# git rm -rf pmk
736 -# git commit --gpg-sign
737 -</pre>
738 -
739 -<p>
740 -An example commit message is shown below:
741 -</p>
742 -
743 -<pre caption="Package removal commit message">
744 -commit e0bbcf8291501dc7de6b4b120d4372061367dd7a
745 -Author: Michael Palimaka &lt;kensington@g.o&gt;
746 -Date: Fri Jan 29 07:11:01 2016 +1100
747 -
748 - dev-util/pmk: remove last-rited package
749 -
750 - Gentoo-bug: 541522
751 -</pre>
752 -
753 -</body>
754 -</section>
755 -
756 -<section>
757 -<title>Conflicting files</title>
758 -<body>
759 -
760 -<p>
761 -When you encounter a package that is trying to install files that are
762 -already provided by another package (detectable with
763 -<c>FEATURES=collision-protect</c> for example) you have to fix this
764 -situation before you can commit the ebuild or, if you encounter this
765 -with an existing package, file a bug about that package (see below for
766 -a few exceptions). The reason file conflicts are critical is because
767 -if "foo" provides the file <path>/usr/bin/example</path> and "bar" is
768 -going to overwrite it, and later "bar" is unmerged, Portage will remove
769 -<path>/usr/bin/example</path> and it is therefore likely it will break
770 -"foo".
771 -</p>
772 -
773 -<p>
774 -The most obvious fix is to add a blocking dependency to both packages
775 -that want to install that file, so they can't be installed at the same
776 -time. But unless there are also other reasons for those packages to
777 -block each other you should avoid this if possible and rather fix the
778 -package, which could include one or more of the following steps:
779 -</p>
780 -
781 -<ul>
782 - <li>Make "foo" (R)DEPEND on "bar" and not install the conflicting
783 - file.</li>
784 - <li>Remove conflicting files from "foo" in <c>src_install</c>
785 - or <c>pkg_preinst</c>.</li>
786 - <li>Move conflicting files into a new subpackage and make "foo" and
787 - "bar" both (R)DEPEND on that package.</li>
788 - <li>Change the location where "foo" or "bar" installs conflicting
789 - files.</li>
790 -</ul>
791 -
792 -<p>
793 -In some cases conflicting files can't be really fixed or aren't
794 -critical, currently known exceptions are Perl module manpages
795 -(overwriting the ones from Perl itself) and <c>CONFIG_PROTECT</c>'ed
796 -files (which should still be fixed, but aren't critical as Portage
797 -won't overwrite them).
798 -</p>
799 -
800 -</body>
801 -</section>
802 -
803 -<section>
804 -<title>Homepage unavailable</title>
805 -<body>
806 -
807 -<p>
808 -If the <c>HOMEPAGE</c> of your package seems to be unavailable or it
809 -never existed at all, please set the HOMEPAGE variable in every ebuild
810 -to <uri link="https://wiki.gentoo.org/wiki/No_homepage">
811 -https://wiki.gentoo.org/wiki/No_homepage</uri>
812 -</p>
813 -
814 -</body>
815 -</section>
816 -
817 -</body>
818 </chapter>
819 +
820 +<include href="maintenance-tasks/"/>
821 </guide>