| 1 | GLEP: 60 |
1 | GLEP: 60 |
| 2 | Title: Manifest2 filetypes |
2 | Title: Manifest2 filetypes |
| 3 | Version: $Revision: 1.3 $ |
3 | Version: $Revision: 1.6 $ |
| 4 | Last-Modified: $Date: 2008/10/28 07:46:51 $ |
4 | Last-Modified: $Date: 2010/01/13 00:54:50 $ |
| 5 | Author: Robin Hugh Johnson <robbat2@gentoo.org> |
5 | Author: Robin Hugh Johnson <robbat2@gentoo.org> |
| 6 | Status: Draft |
6 | Status: Draft |
| 7 | Type: Standards Track |
7 | Type: Standards Track |
| 8 | Content-Type: text/x-rst |
8 | Content-Type: text/x-rst |
| 9 | Requires: 44 |
9 | Requires: 44 |
| 10 | Created: November 2007 |
10 | Created: November 2007 |
| 11 | Updated: June 2008, July 2008, October 2008 |
11 | Updated: June 2008, July 2008, October 2008, January 2010 |
| 12 | Updates: 44 |
12 | Updates: 44 |
| 13 | Post-History: |
13 | Post-History: December 2009 |
| 14 | |
14 | |
| 15 | Abstract |
15 | Abstract |
| 16 | ======== |
16 | ======== |
| 17 | Clarification of the Manifest2 [#GLEP44] specification, including new types to |
17 | Clarification of the Manifest2 [#GLEP44] specification, including new types to |
| 18 | help in the tree-signing specification. |
18 | help in the tree-signing specification. |
| … | |
… | |
| 103 | |
103 | |
| 104 | _CRIT (new, abstract) |
104 | _CRIT (new, abstract) |
| 105 | ~~~~~~~~~~~~~~~~~~~~~ |
105 | ~~~~~~~~~~~~~~~~~~~~~ |
| 106 | - _CRIT is based off the _INFO type. |
106 | - _CRIT is based off the _INFO type. |
| 107 | - The modification or absence of a file listed as a _CRIT-derived type |
107 | - The modification or absence of a file listed as a _CRIT-derived type |
| 108 | must be treated as an error. |
108 | MUST be treated as an error. |
| 109 | |
109 | |
| 110 | EBUILD |
110 | EBUILD |
| 111 | ~~~~~~ |
111 | ~~~~~~ |
| 112 | - Now derived from _CRIT. |
112 | - Now derived from _CRIT. |
| 113 | - Otherwise unchanged. |
113 | - Otherwise unchanged. |
| … | |
… | |
| 136 | |
136 | |
| 137 | ECLASS (new) |
137 | ECLASS (new) |
| 138 | ~~~~~~~~~~~~ |
138 | ~~~~~~~~~~~~ |
| 139 | - uses _CRIT. |
139 | - uses _CRIT. |
| 140 | - This type shall be used for all eclasses only. |
140 | - This type shall be used for all eclasses only. |
| 141 | - TODO: What about patches etc under eclasses/? Probably EXEC? |
|
|
| 142 | |
141 | |
| 143 | DATA (new) |
142 | DATA (new) |
| 144 | ~~~~~~~~~~ |
143 | ~~~~~~~~~~ |
| 145 | - uses _CRIT. |
144 | - uses _CRIT. |
| 146 | - The DATA type shall be used for all files that directly affect the |
145 | - The DATA type shall be used for all files that directly affect the |
| … | |
… | |
| 152 | - If the file gets sourced, executed, or causes a change (patches) in |
151 | - If the file gets sourced, executed, or causes a change (patches) in |
| 153 | how something is sourced or execututed, it belongs in the EXEC |
152 | how something is sourced or execututed, it belongs in the EXEC |
| 154 | filetype. |
153 | filetype. |
| 155 | - This filetype should be used for the scripts directories of a |
154 | - This filetype should be used for the scripts directories of a |
| 156 | repository for important files. |
155 | repository for important files. |
|
|
156 | - This filetype is not limited to being used in the files/ |
|
|
157 | subdirectory. |
| 157 | |
158 | |
| 158 | UNKNOWN (new) |
159 | OTHER (new) |
| 159 | ~~~~~~~~~~~~~ |
160 | ~~~~~~~~~~~ |
| 160 | - uses _CRIT. |
161 | - uses _CRIT. |
| 161 | - All other files that are not covered by another type should be |
162 | - All other files that are not covered by another type should be |
| 162 | considered as 'UNKNOWN'. |
163 | considered as 'OTHER'. |
|
|
164 | - Any further new filetypes should be introduced to subtract files |
|
|
165 | from the 'OTHER' set. |
|
|
166 | - If a package manager runs into a unknown Manifest2 type, it should |
|
|
167 | be treated as 'OTHER'. |
| 163 | |
168 | |
| 164 | On Bloat |
169 | On Bloat |
| 165 | -------- |
170 | -------- |
| 166 | If repeated use of a common path prefix is considered a bloat problem, a |
171 | If repeated use of a common path prefix is considered a bloat problem, a |
| 167 | Manifest file should be added inside the common directory, however this |
172 | Manifest file should be added inside the common directory, however this |
| 168 | should not be done blindly, as bloat by inodes is more significant for |
173 | should not be done blindly, as bloat by inodes is more significant for |
| 169 | the majority of use cases. |
174 | the majority of use cases. See also [#GLEP58] on size reductions of |
|
|
175 | Manifests. |
| 170 | |
176 | |
| 171 | Chosing a filetype |
177 | Chosing a filetype |
| 172 | ------------------ |
178 | ------------------ |
| 173 | 1. matches Manifest |
179 | 1. matches ``Manifest`` |
| 174 | => MANIFEST, stop. |
180 | => MANIFEST, stop. |
| 175 | 2. matches ``*.ebuild`` |
181 | 2. matches ``*.ebuild`` |
| 176 | => EBUILD, stop. |
182 | => EBUILD, stop. |
| 177 | 3. matches ``*.eclass`` |
183 | 3. matches ``*.eclass`` |
| 178 | => ECLASS, stop. |
184 | => ECLASS, stop. |
| … | |
… | |
| 185 | 7. matches any of ``metadata/cache/*``, ``profiles/``, ``package.*``, ``use.mask*``, ... |
191 | 7. matches any of ``metadata/cache/*``, ``profiles/``, ``package.*``, ``use.mask*``, ... |
| 186 | => DATA, stop. |
192 | => DATA, stop. |
| 187 | 8. matches any of ``ChangeLog``, ``metadata.xml``, ``*.desc``, ... |
193 | 8. matches any of ``ChangeLog``, ``metadata.xml``, ``*.desc``, ... |
| 188 | => MISC, stop. |
194 | => MISC, stop. |
| 189 | 9. not matched by any other rule |
195 | 9. not matched by any other rule |
| 190 | => UNKNOWN, stop. |
196 | => OTHER, stop. |
| 191 | |
197 | |
| 192 | The logic behind 5, 6, 7 is ensuring that every item that by it's |
198 | The logic behind 5, 6, 7 is ensuring that every item that by it's |
| 193 | presence or absense may be dangerous should always be treated strictly. |
199 | presence or absense may be dangerous should always be treated strictly. |
| 194 | (Consider epatch given a directory of patches ``${FILESDIR}/${PV}/``, |
200 | (Consider epatch given a directory of patches ``${FILESDIR}/${PV}/``, |
| 195 | where it blindly includes them, or alternatively, the package.mask file |
201 | where it blindly includes them, or alternatively, the package.mask file |
| 196 | or a profile being altered/missing). |
202 | or a profile being altered/missing). |
|
|
203 | |
|
|
204 | The above lists of file patterns are not intended to be exhaustive, |
|
|
205 | but merely demonstrative. |
| 197 | |
206 | |
| 198 | Note: The AUX entries should only be generated if we are generating a |
207 | Note: The AUX entries should only be generated if we are generating a |
| 199 | compatible Manifest that supports older versions of Portage. They should |
208 | compatible Manifest that supports older versions of Portage. They should |
| 200 | be generated along with the new type. |
209 | be generated along with the new type. |
| 201 | |
210 | |
| … | |
… | |
| 203 | ======================= |
212 | ======================= |
| 204 | For generation of existing package Manifests, the AUX entries must |
213 | For generation of existing package Manifests, the AUX entries must |
| 205 | continue to be present for the standard Portage deprecation cycle. |
214 | continue to be present for the standard Portage deprecation cycle. |
| 206 | The new entries may be included already in all Manifest files, as they |
215 | The new entries may be included already in all Manifest files, as they |
| 207 | will be ignored by older Portage versions. Over time, ECLASS, DATA, |
216 | will be ignored by older Portage versions. Over time, ECLASS, DATA, |
| 208 | EXEC, UNKNOWN may replace the existing AUX type. |
217 | EXEC, OTHER may replace the existing AUX type. |
| 209 | |
218 | |
| 210 | The adoption of this proposal does also affect [#GLEP58] as part of |
219 | The adoption of this proposal does also affect [#GLEP58] as part of |
| 211 | this GLEP series, however this GLEP was an offset of the research in |
220 | this GLEP series, however this GLEP was an offset of the research in |
| 212 | that GLEP. |
221 | that GLEP. |
| 213 | |
222 | |