# EAPI 5-progress

Also see the official EAPI 5-progress Specification.

## Helpers

### master_repositories

New master_repositories function prints space-separated list of master repositories for specified repository.

### repository_path

New repository_path function prints path to specified repository.

### available_eclasses

New available_eclasses function prints space-separated list of available eclasses for current repository.

### eclass_path

New eclass_path function prints path to specified eclass for current repository.

### license_path

New license_path function prints path to specified license for current repository.

### package_manager_build_user

New package_manager_build_user function prints name of user used by package manager in build phases.

### package_manager_build_group

New package_manager_build_group function prints name of group used by package manager in build phases.

### Extended default list of extensions in dohtml

dohtml by default additionally installs files with .ico, .svg, .xhtml and .xml extensions.

### Case-insensitive matching of extensions in unpack

unpack matches extensions case-insensitively.

### Helpers Banned in Global Scope

- diropts

- docompress

- exeopts

- insopts

- libopts

- use

- use_enable

- use_with

- useq

- usev

- usex

## Metadata

### Support for Period Characters in Package Names

The "." character is allowed in package names.

### Support for Period Characters in USE Flags

The "." character is allowed in USE flags.

### Repository Dependencies

Repository dependencies are supported in atoms in DEPEND, PDEPEND and RDEPEND and atoms passed to best_version and has_version functions. Repository dependency is specified by two colons followed by repository name.

#### Repository Dependency Examples

Atom
dev-lang/python::progress
>=dev-lang/python-3.2::progress
dev-lang/python:3.2::progress
dev-lang/python::progress[xml]
dev-lang/python:3.2::progress[xml]

### Automatic Unpack Dependencies

Dependencies on packages required to unpack archives specified in SRC_URI are automatically appended to DEPEND. These dependencies are calculated from filename extensions of archives specified in SRC_URI. Dependencies (for ebuilds using given EAPI) corresponding to given filename extensions are configured in ${repository_path}/profiles/unpack_dependencies/${EAPI} files.

#### Unpack Dependencies Configuration Examples

bz2 app-arch/bzip2
gz app-arch/gzip
tar app-arch/tar
tar.bz2 app-arch/tar app-arch/bzip2
tar.gz app-arch/tar app-arch/gzip
zip app-arch/unzip

## globstar shell option enabled by default

globstar shell option is enabled by default, which enables recursive expansion of ** pattern in pathname expansion context.

## Variables

### REPOSITORY Variable

The new REPOSITORY variable is set in ebuild environment. This variable contains name of repository, which contains currently used ebuild.

## Extended Repository-Level Configuration

Repository-level configuration in ${repository_path}/profiles is supported for the following files:

- make.defaults

- package.use

- package.use.force

- package.use.mask

- package.use.stable.force

- package.use.stable.mask

- use.force

- use.mask

- use.stable.force

- use.stable.mask

## Directories Allowed for Profile-Level and Repository-Level Configuration

The following files can be directories:

- package.mask

- package.use

- package.use.force

- package.use.mask

- package.use.stable.force

- package.use.stable.mask

- use.force

- use.mask

- use.stable.force

- use.stable.mask

## USE Flag Aliases

USE flag aliases are supported to allow to satisfy dependencies of packages from other repositories, which require differently named USE flags. USE flag aliases are defined in ${repository_path}/profiles/use.aliases and ${repository_path}/profiles/package.use.aliases files.

### use.aliases Example

real_flag1 alias1 alias2
real_flag2 alias3 alias4

### package.use.aliases Example

category/package1 real_flag1 alias1 alias2
category/package1 real_flag2 alias3 alias4
=category/package2-1* real_flag3 alias5 alias6
=category/package2-2* real_flag4 alias5 alias6