New @live-rebuild and @module-rebuild package sets

I’ve implemented new @live-rebuild and @module-rebuild package sets, and added them to the default sets.conf file for the next sys-apps/portage release (that will be 2.2_rc6). Here are the relevant sections from sets.conf:

# Installed ebuilds that inherit from known live eclasses.
[live-rebuild]
class = portage.sets.dbapi.InheritSet
world-candidate = False
inherits = cvs darcs git mercurial subversion

# Installed packages that own files inside /lib/modules.
[module-rebuild]
class = portage.sets.dbapi.OwnerSet
world-candidate = False
files = /lib/modules

Given the new InheritSet and OwnerSet classes, it’s easy to define similar sets based on inherited eclasses and installed files, respectively.

EAPI=”2_pre1″ with USE dependencies

Version 2.2_rc5 of sys-apps/portage adds support for EAPI=”2_pre1″ which has some changes in conditional USE dependency syntax. The previous experimental EAPI=”2_pre0″ value is no longer supported.

For more information about experimental EAPI features, refer to bug #233213 and also see the “Ebuild” chapter of the html documentation that is installed with portage when USE=doc is enabled. I’ve posted a copy of the EAPI=”2_pre1″ documentation here:

EAPI 2_pre1

  Helpers

    doman

      Language codes in file names are now used for path translation.

      Table 6.1. Man Page Path Translation

        Source        Destination
        foo.1         /usr/share/man/man1/foo.1
        foo.lang.1    /usr/share/man/lang/man1/foo.1

  USE Dependencies

    Unconditional USE Dependencies

      Table 6.2. Syntax Examples

        Example          Meaning
        foo[bar]         foo must have bar enabled
        foo[bar,baz]     foo must have both bar and baz enabled
        foo[-bar,baz]    foo must have bar disabled and baz enabled

    Conditional USE Dependencies

      Table 6.3. Syntax Examples

        Compact Form    Equivalent Expanded Form
        foo[bar?]       bar? ( foo[bar]  ) !bar? ( foo       )
        foo[!bar?]      bar? ( foo       ) !bar? ( foo[-bar] )
        foo[bar=]       bar? ( foo[bar]  ) !bar? ( foo[-bar] )
        foo[!bar=]      bar? ( foo[-bar] ) !bar? ( foo[bar]  )

Portage now supports building multiple packages in parallel

In >=portage-2.2_rc2 there are a few new emerge options that many Gentoo users will probably be interested in:

--jobs JOBS
	Specifies the number of packages to build simultaneously.
	Also see the related --load-average option.

--keep-going
	Continue as much as possible after an error. When an error
	occurs, dependencies are recalculated for remaining packages
	and any with unsatisfied dependencies are automatically
	dropped. Also see the related --skipfirst option.

--load-average LOAD
	Specifies that no new builds should be started if there are
	other builds running and the load average is at least LOAD (a
	floating-point number). This option is recommended for use in
	combination with --jobs in order to avoid excess load. See
	make(1) for information about analogous options that should
	be configured via MAKEOPTS in make.conf(5).

Here is some sample parallel build output from a catalyst stage2 build, with emerge’s new –jobs option enabled:

>>> Building (1 of 10) sys-devel/gettext-0.17 for /
>>> Building (2 of 10) sys-libs/zlib-1.2.3-r1 for /
>>> Building (3 of 10) virtual/libintl-0 for /
>>> Building (4 of 10) dev-util/unifdef-1.20 for /
>>> Installing virtual/libintl-0 to /
>>> Installing dev-util/unifdef-1.20 to /
>>> Building (5 of 10) sys-kernel/linux-headers-2.6.23-r3 for /
>>> Installing sys-libs/zlib-1.2.3-r1 to /
>>> Jobs: 3 of 10 complete, 2 running               Load avg: 3.44, 1.46, 0.69