portage.package.ebuild.config module

portage.package.ebuild.config._get_feature_flags(eapi_attrs)
class portage.package.ebuild.config._iuse_implicit_match_cache(settings)

Bases: object

portage.package.ebuild.config._lazy_iuse_regex(iuse_implicit)

The PORTAGE_IUSE value is lazily evaluated since re.escape() is slow and the value is only used when an ebuild phase needs to be executed (it’s used only to generate QA notices).

portage.package.ebuild.config.autouse(myvartree, use_cache=1, mysettings=None)
portage.package.ebuild.config.best_from_dict(key, top_dict, key_order, EmptyOnError=1, FullCopy=1, AllowEmpty=1)
portage.package.ebuild.config.check_config_instance(test)
class portage.package.ebuild.config.config(clone=None, mycpv=None, config_profile_path=None, config_incrementals=None, config_root=None, target_root=None, sysroot=None, eprefix=None, local_config=True, env=None, _unmatched_removal=False, repositories=None)

Bases: object

This class encompasses the main portage configuration. Data is pulled from ROOT/PORTDIR/profiles/, from ROOT/etc/make.profile incrementally through all parent profiles as well as from ROOT/PORTAGE_CONFIGROOT/* for user specified overrides.

Generally if you need data like USE flags, FEATURES, environment variables, virtuals …etc you look in here.

_accept_chost(cpv, metadata)

:return True if pkg CHOST is accepted, False otherwise.

_calc_iuse_effective()

Beginning with EAPI 5, IUSE_EFFECTIVE is defined by PMS.

_case_insensitive_vars = ('AUTOCLEAN', 'NOCOLOR')
_constant_keys = frozenset({'PORTAGE_BIN_PATH', 'PORTAGE_GID', 'PORTAGE_PYM_PATH', 'PORTAGE_PYTHONPATH'})
_default_globals = {'ACCEPT_PROPERTIES': '*', 'PORTAGE_BZIP2_COMMAND': 'bzip2'}
_deprecated_keys = {'PORTAGE_LOGDIR': 'PORT_LOGDIR', 'PORTAGE_LOGDIR_CLEAN': 'PORT_LOGDIR_CLEAN'}
_env_blacklist = frozenset({'A', 'AA', 'BASH_FUNC____in_portage_iuse%%', 'BDEPEND', 'BROOT', 'CATEGORY', 'DEPEND', 'DESCRIPTION', 'DOCS', 'EAPI', 'EBUILD_FORCE_TEST', 'EBUILD_PHASE', 'EBUILD_PHASE_FUNC', 'EBUILD_SKIP_MANIFEST', 'ED', 'EMERGE_FROM', 'EPREFIX', 'EROOT', 'GREP_OPTIONS', 'HOMEPAGE', 'IDEPEND', 'INHERITED', 'IUSE', 'IUSE_EFFECTIVE', 'KEYWORDS', 'LICENSE', 'MERGE_TYPE', 'PDEPEND', 'PF', 'PKGUSE', 'PORTAGE_BACKGROUND', 'PORTAGE_BACKGROUND_UNMERGE', 'PORTAGE_BUILDDIR_LOCKED', 'PORTAGE_BUILT_USE', 'PORTAGE_CONFIGROOT', 'PORTAGE_EXPLICIT_INHERIT', 'PORTAGE_INTERNAL_CALLER', 'PORTAGE_IUSE', 'PORTAGE_NONFATAL', 'PORTAGE_PIPE_FD', 'PORTAGE_REPO_NAME', 'PORTAGE_USE', 'PROPERTIES', 'RDEPEND', 'REPOSITORY', 'REQUIRED_USE', 'RESTRICT', 'ROOT', 'SANDBOX_LOG', 'SLOT', 'SRC_URI', '_'})
_environ_filter = frozenset({'ACCEPT_CHOSTS', 'ACCEPT_KEYWORDS', 'ACCEPT_PROPERTIES', 'ACCEPT_RESTRICT', 'AUTOCLEAN', 'BDEPEND', 'BINPKG_COMPRESS', 'BINPKG_COMPRESS_FLAGS', 'CLEAN_DELAY', 'COLLISION_IGNORE', 'CONFIG_PROTECT', 'CONFIG_PROTECT_MASK', 'DEPEND', 'EGENCACHE_DEFAULT_OPTS', 'EMERGE_DEFAULT_OPTS', 'EMERGE_LOG_DIR', 'EMERGE_WARNING_DELAY', 'FETCHCOMMAND', 'FETCHCOMMAND_FTP', 'FETCHCOMMAND_HTTP', 'FETCHCOMMAND_HTTPS', 'FETCHCOMMAND_RSYNC', 'FETCHCOMMAND_SFTP', 'GENTOO_MIRRORS', 'HISTFILE', 'IDEPEND', 'INFOPATH', 'MANPATH', 'NOCONFMEM', 'O', 'PDEPEND', 'PORTAGE_BACKGROUND', 'PORTAGE_BACKGROUND_UNMERGE', 'PORTAGE_BINHOST', 'PORTAGE_BINPKG_FORMAT', 'PORTAGE_BUILDDIR_LOCKED', 'PORTAGE_CHECKSUM_FILTER', 'PORTAGE_ELOG_CLASSES', 'PORTAGE_ELOG_MAILFROM', 'PORTAGE_ELOG_MAILSUBJECT', 'PORTAGE_ELOG_MAILURI', 'PORTAGE_ELOG_SYSTEM', 'PORTAGE_FETCH_CHECKSUM_TRY_MIRRORS', 'PORTAGE_FETCH_RESUME_MIN_SIZE', 'PORTAGE_GPG_DIR', 'PORTAGE_GPG_KEY', 'PORTAGE_GPG_SIGNING_COMMAND', 'PORTAGE_IONICE_COMMAND', 'PORTAGE_LOGDIR', 'PORTAGE_LOGDIR_CLEAN', 'PORTAGE_LOG_FILTER_FILE_CMD', 'PORTAGE_PACKAGE_EMPTY_ABORT', 'PORTAGE_REPO_DUPLICATE_WARN', 'PORTAGE_RO_DISTDIRS', 'PORTAGE_RSYNC_EXTRA_OPTS', 'PORTAGE_RSYNC_OPTS', 'PORTAGE_RSYNC_RETRIES', 'PORTAGE_SSH_OPTS', 'PORTAGE_SYNC_STALE', 'PORTAGE_USE', 'POSIXLY_CORRECT', 'QUICKPKG_DEFAULT_OPTS', 'RDEPEND', 'REPOMAN_DEFAULT_OPTS', 'RESUMECOMMAND', 'RESUMECOMMAND_FTP', 'RESUMECOMMAND_HTTP', 'RESUMECOMMAND_HTTPS', 'RESUMECOMMAND_RSYNC', 'RESUMECOMMAND_SFTP', 'SRC_URI', 'SYNC', 'UNINSTALL_IGNORE', 'USER', 'USE_EXPAND_HIDDEN', 'USE_ORDER', '__PORTAGE_HELPER'})
_environ_whitelist = frozenset({'A', 'AA', 'ACCEPT_LICENSE', 'BASH_ENV', 'BASH_FUNC____in_portage_iuse%%', 'BINPKG_FORMAT', 'BROOT', 'BUILD_PREFIX', 'CATEGORY', 'COLORTERM', 'COLUMNS', 'CVS_RSH', 'D', 'DISPLAY', 'DISTDIR', 'DOC_SYMLINKS_DIR', 'EAPI', 'EBUILD', 'EBUILD_FORCE_TEST', 'EBUILD_PHASE', 'EBUILD_PHASE_FUNC', 'ECHANGELOG_USER', 'ECLASSDIR', 'ECLASS_DEPTH', 'ED', 'EDITOR', 'EMERGE_FROM', 'ENV_UNSET', 'EPREFIX', 'EROOT', 'ESYSROOT', 'FEATURES', 'FILESDIR', 'GPG_AGENT_INFO', 'HOME', 'INSTALL_MASK', 'LANG', 'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_MESSAGES', 'LC_MONETARY', 'LC_NUMERIC', 'LC_PAPER', 'LC_TIME', 'LESS', 'LESSOPEN', 'LOGNAME', 'LS_COLORS', 'MERGE_TYPE', 'NOCOLOR', 'P', 'PAGER', 'PATH', 'PF', 'PKGDIR', 'PKGUSE', 'PKG_INSTALL_MASK', 'PKG_LOGDIR', 'PKG_TMPDIR', 'PM_EBUILD_HOOK_DIR', 'PN', 'PORTAGE_ACTUAL_DISTDIR', 'PORTAGE_ARCHLIST', 'PORTAGE_BASHRC', 'PORTAGE_BASHRC_FILES', 'PORTAGE_BINPKG_FILE', 'PORTAGE_BINPKG_TAR_OPTS', 'PORTAGE_BINPKG_TMPFILE', 'PORTAGE_BIN_PATH', 'PORTAGE_BUILDDIR', 'PORTAGE_BUILD_GROUP', 'PORTAGE_BUILD_USER', 'PORTAGE_BUNZIP2_COMMAND', 'PORTAGE_BZIP2_COMMAND', 'PORTAGE_COLORMAP', 'PORTAGE_COMPRESS', 'PORTAGE_COMPRESSION_COMMAND', 'PORTAGE_COMPRESS_EXCLUDE_SUFFIXES', 'PORTAGE_CONFIGROOT', 'PORTAGE_DEBUG', 'PORTAGE_DEPCACHEDIR', 'PORTAGE_DOHTML_UNWARNED_SKIPPED_EXTENSIONS', 'PORTAGE_DOHTML_UNWARNED_SKIPPED_FILES', 'PORTAGE_DOHTML_WARN_ON_SKIPPED_FILES', 'PORTAGE_EBUILD_EXIT_FILE', 'PORTAGE_ECLASS_LOCATIONS', 'PORTAGE_FEATURES', 'PORTAGE_GID', 'PORTAGE_GRPNAME', 'PORTAGE_INST_GID', 'PORTAGE_INST_UID', 'PORTAGE_INTERNAL_CALLER', 'PORTAGE_IPC_DAEMON', 'PORTAGE_IUSE', 'PORTAGE_LOG_FILE', 'PORTAGE_OVERRIDE_EPREFIX', 'PORTAGE_PIPE_FD', 'PORTAGE_PROPERTIES', 'PORTAGE_PYM_PATH', 'PORTAGE_PYTHON', 'PORTAGE_PYTHONPATH', 'PORTAGE_QUIET', 'PORTAGE_REPOSITORIES', 'PORTAGE_REPO_NAME', 'PORTAGE_RESTRICT', 'PORTAGE_SIGPIPE_STATUS', 'PORTAGE_SOCKS5_PROXY', 'PORTAGE_TMPDIR', 'PORTAGE_UPDATE_ENV', 'PORTAGE_USERNAME', 'PORTAGE_VERBOSE', 'PORTAGE_WORKDIR_MODE', 'PORTAGE_XATTR_EXCLUDE', 'PORTDIR', 'PORTDIR_OVERLAY', 'PR', 'PREROOTPATH', 'PV', 'PVR', 'PYTHONDONTWRITEBYTECODE', 'REPLACED_BY_VERSION', 'REPLACING_VERSIONS', 'ROOT', 'ROOTPATH', 'SANDBOX_LOG', 'SSH_AGENT_PID', 'SSH_AUTH_SOCK', 'STY', 'SYSROOT', 'T', 'TEMP', 'TERM', 'TERMCAP', 'TMP', 'TMPDIR', 'USER', 'USE_EXPAND', 'USE_ORDER', 'WINDOW', 'WORKDIR', 'XARGS', 'XAUTHORITY', '__PORTAGE_TEST_HARDLINK_LOCKS', 'ftp_proxy', 'http_proxy', 'no_proxy'})
_environ_whitelist_re = re.compile('^(CCACHE_|DISTCC_).*')
_getKeywords(cpv, metadata)
_getMaskAtom(cpv, metadata)

Take a package and return a matching package.mask atom, or None if no such atom exists or it has been cancelled by package.unmask.

Parameters
  • cpv (String) – The package name

  • metadata (dict) – A dictionary of raw package metadata

Return type

String

Returns

A matching atom string or None if one is not found.

_getMissingKeywords(cpv, metadata)

Take a package and return a list of any KEYWORDS that the user may need to accept for the given package. If the KEYWORDS are empty and the ** keyword has not been accepted, the returned list will contain ** alone (in order to distinguish from the case of “none missing”).

Parameters
  • cpv (String) – The package name (for package.keywords support)

  • metadata (dict) – A dictionary of raw package metadata

Return type

List

Returns

A list of KEYWORDS that have not been accepted.

_getMissingLicenses(cpv, metadata)

Take a LICENSE string and return a list of any licenses that the user may need to accept for the given package. The returned list will not contain any licenses that have already been accepted. This method can throw an InvalidDependString exception.

Parameters
  • cpv (String) – The package name (for package.license support)

  • metadata (dict) – A dictionary of raw package metadata

Return type

List

Returns

A list of licenses that have not been accepted.

_getMissingProperties(cpv, metadata)

Take a PROPERTIES string and return a list of any properties the user may need to accept for the given package. The returned list will not contain any properties that have already been accepted. This method can throw an InvalidDependString exception.

Parameters
  • cpv (String) – The package name (for package.properties support)

  • metadata (dict) – A dictionary of raw package metadata

Return type

List

Returns

A list of properties that have not been accepted.

_getMissingRestrict(cpv, metadata)

Take a RESTRICT string and return a list of any tokens the user may need to accept for the given package. The returned list will not contain any tokens that have already been accepted. This method can throw an InvalidDependString exception.

Parameters
  • cpv (String) – The package name (for package.accept_restrict support)

  • metadata (dict) – A dictionary of raw package metadata

Return type

List

Returns

A list of tokens that have not been accepted.

_getPKeywords(cpv, metadata)
_getProfileMaskAtom(cpv, metadata)

Take a package and return a matching profile atom, or None if no such atom exists. Note that a profile atom may or may not have a “*” prefix.

Parameters
  • cpv (String) – The package name

  • metadata (dict) – A dictionary of raw package metadata

Return type

String

Returns

A matching profile atom string or None if one is not found.

_getRawMaskAtom(cpv, metadata)

Take a package and return a matching package.mask atom, or None if no such atom exists or it has been cancelled by package.unmask.

Parameters
  • cpv (String) – The package name

  • metadata (dict) – A dictionary of raw package metadata

Return type

String

Returns

A matching atom string or None if one is not found.

_getRawMissingKeywords(cpv, metadata)

Take a package and return a list of any KEYWORDS that the user may need to accept for the given package. If the KEYWORDS are empty, the returned list will contain ** alone (in order to distinguish from the case of “none missing”). This DOES NOT apply any user config package.accept_keywords acceptance.

Parameters
  • cpv (String) – The package name (for package.keywords support)

  • metadata (dict) – A dictionary of raw package metadata

Return type

List

Returns

lists of KEYWORDS that have not been accepted

and the keywords it looked for.

_getUseForce(pkg, stable=None)
_getUseMask(pkg, stable=None)
_get_implicit_iuse()

Prior to EAPI 5, these flags are considered to be implicit members of IUSE:

  • Flags derived from ARCH

  • Flags derived from USE_EXPAND_HIDDEN variables

  • Masked flags, such as those from {,package}use.mask

  • Forced flags, such as those from {,package}use.force

  • build and bootstrap flags used by bootstrap.sh

_getitem(mykey)
_global_only_vars = frozenset({'CONFIG_PROTECT'})
_grab_pkg_env(penv, container, protected_keys=None)
_init_dirs()

Create a few directories that are critical to portage operation

_init_iuse()
_isStable(pkg)
_iuse_effective_match(flag)
property _keywords_manager
class _lazy_use_expand(settings, unfiltered_use, use, usemask, iuse_effective, use_expand_split, use_expand_dict)

Bases: object

Lazily evaluate USE_EXPAND variables since they are only needed when an ebuild shell is spawned. Variables values are made consistent with the previously calculated USE settings.

class _lazy_vars(built_use, settings)

Bases: object

_flatten(var, use, settings)
_init_values()
built_use
settings
values
property _mask_manager
_module_aliases = {'cache.metadata_overlay.database': 'portage.cache.flat_hash.mtime_md5_database', 'portage.cache.metadata_overlay.database': 'portage.cache.flat_hash.mtime_md5_database'}
_populate_treeVirtuals_if_needed(vartree)

Reduce the provides into a list by CP.

_setcpv_aux_keys = ('BDEPEND', 'DEFINED_PHASES', 'DEPEND', 'EAPI', 'IDEPEND', 'INHERITED', 'IUSE', 'REQUIRED_USE', 'KEYWORDS', 'LICENSE', 'PDEPEND', 'PROPERTIES', 'RDEPEND', 'SLOT', 'repository', 'RESTRICT', 'LICENSE')
_setcpv_recursion_gate()

Raise AssertionError for recursive setcpv calls.

_validate_commands()
property _virtuals_manager
archlist()
backup_changes(key=None)
environ()

return our locally-maintained environment

expandLicenseTokens(tokens)

Take a token from ACCEPT_LICENSE or package.license and expand it if it’s a group token (indicated by @) or just return it if it’s not a group. If a group is negated then negate all group elements.

get(k, x=None)
get_virts_p()
getvirtuals()
items()
iteritems()
iterkeys()
keys()
load_best_module(property_string)
lock()
modifying()
property mygcfg
property pkeywordsdict
property pmaskdict
pop(key, *args)
property punmaskdict
regenerate(useonly=0, use_cache=None)

Regenerate settings This involves regenerating valid USE flags, re-expanding USE_EXPAND flags re-stacking USE flags (-flag and -*), as well as any other INCREMENTAL variables. This also updates the env.d configdict; useful in case an ebuild changes the environment.

If FEATURES has already stacked, it is not stacked twice.

Parameters

useonly (Boolean) – Only regenerate USE flags (not any other incrementals)

Return type

None

reload()

Reload things like /etc/profile.env that can change during runtime.

reset(keeping_pkg=0, use_cache=None)

Restore environment from self.backupenv, call self.regenerate() :param keeping_pkg: Should we keep the setcpv() data or delete it. :type keeping_pkg: Boolean @rype: None

selinux_enabled()
setcpv(*args, **kwargs)
setdefault(k, x=None)
setinst(mycpv, mydbapi)

This used to update the preferences for old-style virtuals. It is no-op now.

property soname_provided
thirdpartymirrors()
unlock()
validate()

Validate miscellaneous settings and display warnings if necessary. (This code was previously in the global scope of portage.py)

property virts_p
property virtuals