root/releases/pkgcore/0.2.5/dev-notes/eapi.rst @ marienz%2540gentoo.org-20061013140431-a193063713928608

Revision marienz%2540gentoo.org-20061013140431-a193063713928608, 3.6 KB (checked in by Marien Zwart <marienz@…>, 2 years ago)

Reformat and clarify the eapi doc a bit.

Line 
1===========
2Ebuild EAPI
3===========
4
5
6This should hold the proposed (with a chance of making it in), accepted, and
7implemented changes for ebuild format version 1.  A version 0 doc would also
8be a good idea ( no one has volunteered thus far ).
9
10Version 0 (or undefined eapi, <=portage-2.0.52*)]
11*************************************************
12
13Version 1
14*********
15
16This should be fairly easy stuff to implement for the package manager,
17so 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
66Version 1+
67**********
68
69Not sure about these. Maybe some can go into version 1, maybe they
70will 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.
Note: See TracBrowser for help on using the browser.