This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.

Please visit our production wiki at https://wiki.gentoo.org

GLEP:52

From Gentoo Wiki (test)
Jump to:navigation Jump to:search
Warning
This GLEP is no longer maintained in the Gentoo Wiki and remains here only as a historical record. Please visit https://www.gentoo.org/glep/glep-0052.html for the current version of this GLEP.
GLEP 52: RESTRICT=unattended
Type Standards Track
Status Withdrawn
Author Marius Mauch <genone@gentoo.org>
Editor
Replaces
Replaced by (none)
Requires
Post History

Abstract

This GLEP proposes a new value for the RESTRICT metadata variable in ebuilds to indicate that an ebuild requires interaction by the user.

Motivation

Certain ebuilds in the current tree require certain actions from the user to progress. A popular example are ebuilds that require physical media (cd/dvd-rom) for their distfiles instead of fetching them form the net. However ebuilds are supposed to be non-interactive, so this behavior, while sometimes necessary, violates existing policies. To account for this situation a new RESTRICT value should be added to allow filtering those ebuilds based on metadata and to inform users upfront (when displaying the depgraph) that a certain package will require their attention during the build process.

Specification

Portage (and by extension other package managers) will support a new value for the RESTRICT metadata variable called unattended. This value may be used by the package manager and tools using its API to filter packages that require interactive actions (for example to mask them in automated build environments). How the package manager exactly reacts on the presence of this new flag is beyond this specification, but it's recommended to indicate it's presence to the user whenever relevant.

This new setting should be used in ebuilds if it is known that they typically require user attention during the build process. If an ebuild just has a limited risk of becoming interactive (like using the built_with_use function) it shouldn't be restricted. Note that only package installation is covered here, interactivity in package removals (in pkg_prerm and pkg_postrm) can not be indicated with this feature.

Rationale

The new RESTRICT=unattended metadata setting will give us the following benefits:

  1. Enable masking of interactive ebuilds for automated build environments
  2. Metadata based searching for interactive ebuilds (superior to grep)
  3. Less frustrated users caused by hanging build processes

This proposal does not change the existing policy regarding interactive ebuilds (ebuilds still should be non-interactive whenever possible), it merely states a way to identify them.

Backwards Compatibility

Strictly speaking this extension would requires an EAPI bump, however as existing portage ignore unknown RESTRICT values it shouldn't cause any real breakage to introduce it without.

Reference Implementation

A patch against portage-2.1.2_pre2-r6 [1] is available with this document.

Credits

Thanks to the following persons for their input on or related to this GLEP (even though they might not have known it): Alec Warner, Zac Medico, Simon Stelling

References

Copyright

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/.