aboutsummaryrefslogtreecommitdiff
blob: 8fb9f50908dee7cdf91fffcaf9b7838b7317d7b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?xml version="1.0"?>
<guide self="ebuild-maintenance/removal/">
<chapter>
<title>Removing Ebuilds and Packages</title>

<section>
<title>Removing ebuilds</title>
<body>

<p>
When removing an ebuild make sure that no dependencies in Portage are broken
due to the removal <d/> additionally, your git commit message should explain
clearly why the ebuild is being removed from the git repository.
</p>

<p>
If you need to remove ebuilds, make sure you do not accidentally remove
the newest/only stable ebuild for any architecture. If you would like to
get a newer version marked stable, then please file a bug or ask on IRC.
</p>

<p>
You should also not cause an unnecessary downgrade for any <c>~arch</c> when
removing ebuilds <d/> instead, it is best to get the newest version marked
<c>~arch</c> first and then remove redundant versions of the ebuild.
</p>

</body>
</section>

<section>
<title>Removing a package</title>
<body>

<p>
When removing packages follow these steps:
</p>

<ol>
  <li>
    Make sure that no dependencies in the Gentoo repository are broken due to
    the removal
  </li>
  <li>Send last rites to gentoo-dev-announce and gentoo-dev</li>
  <li>Mask the package</li>
  <li>Wait 30 days (or more)</li>
  <li>Remove from the git tree unless the reason for removal has been fixed</li>
  <li>
    Remove any references to the package from other ebuilds, e.g.,
    use-conditional dependencies. Blockers are the only exception to this.
  </li>
  <li>Remove package.mask and any package.use.mask entries</li>
  <li>
    Remove the <c>&lt;pkg&gt;</c> tags referencing this package in the
    <uri link="::ebuild-writing/misc-files/metadata">metadata.xml</uri>
    files of other packages.
  </li>
  <li>Close open bugs as WONTFIX</li>
</ol>

<p>
Here is a list of commands that will delete <c>dev-util/pmk</c>
from the tree:
</p>

<pre>
# cd dev-qt
# git rm -rf qtphonon
# git commit --signoff --gpg-sign
</pre>

<p>
An example commit message is shown below:
</p>

<pre>
commit b97eb6d43f45dfd5b739638928db22d3f3392685
Author: Michael Palimaka &lt;kensington@gentoo.org&gt;
Date:   Tue Oct 3 21:43:03 2017 +1100

  dev-qt/qtphonon: remove last rited package

  Closes: https://bugs.gentoo.org/629144
</pre>

</body>
</section>

<section>
<title>Removing a virtual package</title>
<body>

<p>
Virtual packages are generally removed when they have no more than one
provider left. The removal is preceded by updating the remaining ebuilds
not to use the virtual. Since virtuals do not install any files, there
is little value in proactively forcing them to be uninstalled from user
systems or unnecessarily informing the user about the fact. Therefore,
an alternative removal process is recommended.
</p>

<p>
In order to remove a virtual package, follow the following procedure:
</p>

<ol>
  <li>
    If the virtual is being removed along with any of its providers,
    include the virtual in the last-rites mail. However, please
    do not include it in the <c>package.mask</c> entry as users do not need
    to be forced to proactively unmerge it. Instead, add it
    to <c>package.deprecated</c> to warn developers not to depend on it.
    Wait the time appropriate for the last rites.
  </li>
  <li>
    Update all ebuilds not to reference the virtual. Since there is
    no urgent need to remove the virtual from user systems
    and the resulting rebuilds would be unnecessary, do not bump ebuilds
    when replacing the dependency.
  </li>
  <li>
    Remove the package directly
  </li>
  <li>
    Perform the post-removal cleanup, as with regular packages
  </li>
</ol>

</body>
</section>
</chapter>
</guide>