| 1 | =========== |
|---|
| 2 | Ebuild EAPI |
|---|
| 3 | =========== |
|---|
| 4 | |
|---|
| 5 | |
|---|
| 6 | This should hold the proposed (with a chance of making it in), accepted, and |
|---|
| 7 | implemented changes for ebuild format version 1. A version 0 doc would also |
|---|
| 8 | be a good idea ( no one has volunteered thus far ). |
|---|
| 9 | |
|---|
| 10 | Version 0 (or undefined eapi, <=portage-2.0.52*)] |
|---|
| 11 | ************************************************* |
|---|
| 12 | |
|---|
| 13 | Version 1 |
|---|
| 14 | ********* |
|---|
| 15 | |
|---|
| 16 | This should be fairly easy stuff to implement for the package manager, |
|---|
| 17 | so this can actually happen in a fairly short timeframe. |
|---|
| 18 | |
|---|
| 19 | - EAPI = 1 required |
|---|
| 20 | - src_configure phase is run before src_compile. If the ebuild or |
|---|
| 21 | eclass does not override there is a default that does nothing. |
|---|
| 22 | Things like econf should be run in this phase, allowing rerunning |
|---|
| 23 | the build phase without rerunning configure during development. |
|---|
| 24 | - Make the default implementation of phases/functions available under |
|---|
| 25 | a second name (possibly using EXPORT_FUNCTIONS) so you can call |
|---|
| 26 | base_src_compile from your src_compile. |
|---|
| 27 | - default src_install. Exactly what goes in needs to be figured out, |
|---|
| 28 | see bug 33544. |
|---|
| 29 | - RDEPEND="${RDEPEND-${DEPEND}}" is no longer set by portage, same for eclass. |
|---|
| 30 | - (proposed) BDEPEND metadata addition, maybe. These are the |
|---|
| 31 | dependencies that are run on the build system (toolchain, autotools |
|---|
| 32 | etc). Useful for ROOT != "/". Probably hard to get right for ebuild |
|---|
| 33 | devs who always have ROOT="/". |
|---|
| 34 | - default IUSE support, IUSE="+gcj" == USE="gcj" unless the user disables it. |
|---|
| 35 | - GLEP 37 ("Virtuals Deprecation"), maybe. The glep is "deferred". How |
|---|
| 36 | much of this actually needs to be done? package.preferred? |
|---|
| 37 | - test depend, test src_uri (or represent test in the use namespace |
|---|
| 38 | somehow). Possibilities: TEST_{SRC_URI,{B,R,}DEPEND}, test "USE" |
|---|
| 39 | flag getting set by FEATURES=test. |
|---|
| 40 | - drop AA (unused). |
|---|
| 41 | - represent in metadata if the pkg needs pkg_preinst to have access to |
|---|
| 42 | ${D} or not. If this is not required a binpkg can be unpacked |
|---|
| 43 | straight to root after pkg_preinst. If pkg_preinst needs access to |
|---|
| 44 | ${D} the binpkg is unpacked there as usual. |
|---|
| 45 | - use groups in some form (kill use_expand off). |
|---|
| 46 | - ebuilds can no longer use PORTDIR and ECLASSDIR(s); they break any |
|---|
| 47 | potential remote, and are dodgey as all hell for multiple repos |
|---|
| 48 | combined together. |
|---|
| 49 | - disallow direct access to /var/db/pkg |
|---|
| 50 | - deprecate ebuild access/awareness of PORTAGE_* vars; perl ebuilds |
|---|
| 51 | security fix for PORTAGE_TMPDIR (rpath stripping in a way) might |
|---|
| 52 | make this harder. |
|---|
| 53 | - use/slot deps, optionally repository deps. |
|---|
| 54 | - hard one to slide in, but change versioning rules; no longer allow |
|---|
| 55 | 1.006, require it to be 1.6 |
|---|
| 56 | - pkg_setup must be sandboxable. |
|---|
| 57 | - allowed USE conditional configurations; new metadata key, extend |
|---|
| 58 | depset syntax to include xor, represent allowed configurations. |
|---|
| 59 | - true incremental stacking support for metadata keys between |
|---|
| 60 | eclasses/ebuilds; RESTRICT=-strip for example in the ebuild. |
|---|
| 61 | - drop -* from keywords; it's package.masking, use that instead (-arch |
|---|
| 62 | is acceptable although daft) |
|---|
| 63 | - blockers aren't allowed in PDEPEND (the result of that is serious |
|---|
| 64 | insanity for resolving) |
|---|
| 65 | |
|---|
| 66 | Version 1+ |
|---|
| 67 | ********** |
|---|
| 68 | |
|---|
| 69 | Not sure about these. Maybe some can go into version 1, maybe they |
|---|
| 70 | will happen later. |
|---|
| 71 | |
|---|
| 72 | - Elibs |
|---|
| 73 | - some way to 'bind' a rdep/pdep so that it's explicit "I'm locked |
|---|
| 74 | against the version I was compiled against" |
|---|
| 75 | - some form of optional metadata specifying that a binpkg works on |
|---|
| 76 | multiple arches, iow it doesn't rely on compiled components. |
|---|
| 77 | - A way to move svn/cvs/etc source fetching over to the package |
|---|
| 78 | manager. The current way of doing this through an eclass is a bit |
|---|
| 79 | ugly since it requires write access to the distdir. Moving it to the |
|---|
| 80 | package manager fixes that and allows integrating it with things |
|---|
| 81 | like parallel fetch. This needs to be fleshed out. |
|---|