What's in?
As some people are not able to describe those changes in a neutral way, I have to repeat all new features of EAPI 3 in my own words, although I hoped to just post a referrer to that blog entries here. Most changes are not user visible but will ease developer's lifes in many ways. For all the details have a look into the Package Manager Specification. Let's start:pkg_pretend
A user pretending to merge a package to check the pulled-in dependencies maybe needs some important information beforehand. Those can be output with the pkg_pretend function which is by default empty. Note that you should not rely on anything but the most basic functions and programs.SLOT operator dependencies
Two new operators for SLOT dependencies are now available- :* – The package works with every SLOT of the dependency and does not mind if the run-time version is different from the compile-time version.
- := – The package works with every SLOT of the dependency as long as it is still the same which it was built with.
USE dependency defaults
Apart from the possibilities introduced in EAPI 1, USE flags can get a postfix in the dependency listing. (+) tells the package manager to assume the USE flag in the dependency to be switched on if not found at all and (-) means the opposite: Assume it turned off if not found.DEFINED_PHASES and PROPERTIES now mandatory
Those are important from a package manager's perspective so I won't go into detail here.Default src_install
The src_install function is not empty anymore but has a sane default, so creation of src_install is not always needed. A variable DOCS is available whose contents is automatically installed.Controllable compression
Files in /usr/share/doc, /usr/share/info and /usr/share/man are automatically compressed, apart from /usr/share/doc/PF/html. The docompress command adds directories to the list of compressed files, the -x switch excludes them.dodoc -r and doins symlink support
Recursively installing everything from a directory is now possible with the -r switch of dodoc, making some loop constructs unnecessary. Symbolic links are now correctly handled by doins.Ban of dohard and dosed, removal of AA and KV
dohard and dosed are not allowed anymore while the variables AA and KV are not set anymore. None of the former things had any real use case in ebuilds.Support for xz compression
The LZMA successor XZ is now officially supported.Changes in econf arguments
--disable-dependency-tracking is now a default switch for econf.pkg_info changes
pkg_info can now be called even for non-installed packages, providing some general information about a package so the user does not need to merge it.Profile-controlled IUSE injection
Important for the package manager, so no details again (sorry, I have limited time in the end). Important for ebuild writers is to list all USE flags that are used in IUSE, except for some things like ARCH, USERLAND and KERNEL.Replace version variables
REPLACING_VERSIONS contains a list of all package versions that are replaced by the current install, while REPLACED_BY_VERSION holds the version of the currently replaced package (only valid in pkg_prerm and pkg_postrm).S to WORKDIR fallback limited
If the package manager's assumption of S was incorrect it made a fall-back to S=WORKDIR, which could lead to a successful package merge that was not usable. This only happens now if A is empty and none of the src_ functions is defined.No RDEPEND=DEPEND anymore
The automagic definition of RDEPEND=DEPEND is gone. Period.Automated abort of most utility functions
Some widely-used functions aborted automatically on error, others did not. Automatic abort is now the default for most functions, but you can override that behaviour by prefixing the utility call with nonfatal.What's out?
Some changes did not make it, for example the new functions doexample and doins. Others will wait for EAPI 4 as no consensus was reached.
Note: This post has been edited to correct mistakes.
| < Zurück | Weiter > |
|---|





Kommentare
Please inform your readers that they need to go and forget anything they've read in this post and relearn it from an accurate source. Your lack of care for accuracy is blatantly irresponsible.
Couldn't you stll link to them? Warn or state that you disagree or what not...