REPOMAN(1)

NAME
repoman - Gentoo's program to enforce a minimal level of quality assurance in packages added to the portage tree

SYNOPSIS
repoman [option] [mode]

DESCRIPTION
Quality is job zero. repoman checks the quality of ebuild repositories. Note: repoman commit only works inside local cvs, git, or subversion repositories. Note: Messages pertaining to specific lines may be inaccurate in the prescence of continuation lines from use of the \ character in BASH.

OPTIONS

-a, --ask
    Request a confirmation before commiting

--digest=<y|n>
    Automatically update Manifest digests for modified files. This option triggers a behavior that is very similar to that enabled by FEATURES="digest" in make.conf(5). In order to enable this behavior by default for repoman alone, add --digest=y to the REPOMAN_DEFAULT_OPTS variable in make.conf(5). The manifest-check mode will automatically ignore the --digest option. NOTE: This option does not trigger update of digests for Manifest DIST entries that already exist. Replacement of existing Manifest DIST entries can be forced by using the manifest mode together with the --force option.

-f, --force
    Force commit to proceed, regardless of QA issues. For convenience, this option causes the most time consuming QA checks to be skipped. The commit message will include an indication that this option has been enabled, together with the usual portage version stamp. When used together with manifest mode, --force causes existing digests to be replaced for any files that exist in ${DISTDIR}. Existing digests are assumed to be correct for files that would otherwise have to be downloaded in order to recompute digests. WARNING: When replacing existing digests, it is the user's responsibility to ensure that files contained in ${DISTDIR} have the correct identities. Especially beware of partially downloaded files.

-S, --straight-to-stable
    Allow committing straight to stable

-q, --quiet
    Be less verbose about extraneous info

-p, --pretend
    Don't commit or fix anything; just show what would be done

-x, --xmlparse
    Forces the metadata.xml parse check to be carried out

-v, --verbose
    Displays every package name while checking

--echangelog=<y|n|force>
    For commit mode, call echangelog if ChangeLog is unmodified (or regardless of modification if 'force' is specified). This option can be enabled by default for a particular repository by setting "update-changelog = true" in metadata/layout.conf (see portage(5)).

--experimental-inherit=<y|n>
    Enable experimental inherit.missing checks which may misbehave when the internal eclass database becomes outdated.

--if-modified=<y|n>
    Only check packages that have uncommitted modifications

-i, --ignore-arches
    Ignore arch-specific failures (where arch != host)

--ignore-default-opts
    Do not use the REPOMAN_DEFAULT_OPTS environment variable.

-I, --ignore-masked
    Ignore masked packages (not allowed with commit mode)

--include-arches ARCHES
    A space separated list of arches used to filter the selection of profiles for dependency checks.

-d, --include-dev
    Include dev profiles in dependency checks.

-e <y|n>, --include-exp-profiles=<y|n>
    Include exp profiles in dependency checks.

--unmatched-removal
    Enable strict checking of package.mask and package.unmask files for unmatched removal atoms.

--without-mask
    Behave as if no package.mask entries exist (not allowed with commit mode)

-m, --commitmsg
    Adds a commit message via the command line

-M, --commitmsgfile
    Adds a commit message from the specified file

-V, --version
    Show version info

-h, --help
    Show this screen

MODES

full
    Scan directory tree for QA issues (full listing)

help
    Show this screen

scan
    Scan directory tree for QA issues (short listing)

fix Fix simple QA issues (stray digests, missing digests)

manifest
    Generate a Manifest (fetches distfiles if necessary). See the --force option if you would like to replace existing distfiles digests.

manifest-check
    Check Manifests for missing or incorrect digests

commit
    Scan directory tree for QA issues; if OK, commit via VCS

ci  Synonym for commit

QA KEYWORDS

CVS/Entries.IO_error
    Attempting to commit, and an IO error was encountered access the Entries file

DESCRIPTION.missing
    Ebuilds that have a missing or empty DESCRIPTION variable

EAPI.definition
    EAPI definition does not conform to PMS section 7.3.1 (first non-comment, non-blank line). See bug #402167.

EAPI.deprecated
    Ebuilds that use features that are deprecated in the current EAPI

EAPI.incompatible
    Ebuilds that use features that are only available with a different EAPI

EAPI.unsupported
    Ebuilds that have an unsupported EAPI version (you must upgrade portage)

HOMEPAGE.missing
    Ebuilds that have a missing or empty HOMEPAGE variable

HOMEPAGE.virtual
    Virtuals that have a non-empty HOMEPAGE variable

IUSE.invalid
    This ebuild has a variable in IUSE that is not in the use.desc or its metadata.xml file

IUSE.missing
    This ebuild has a USE conditional which references a flag that is not listed in IUSE

KEYWORDS.dropped
    Ebuilds that appear to have dropped KEYWORDS for some arch

KEYWORDS.invalid
    This ebuild contains KEYWORDS that are not listed in profiles/arch.list or for which no valid profile was found

KEYWORDS.missing
    Ebuilds that have a missing or empty KEYWORDS variable

KEYWORDS.stable
    Ebuilds that have been added directly with stable KEYWORDS

KEYWORDS.stupid
    Ebuilds that use KEYWORDS=-* instead of package.mask

LICENSE.deprecated
    This ebuild is listing a deprecated license.

LICENSE.invalid
    This ebuild is listing a license that doesnt exist in portages license/ dir.

LICENSE.missing
    Ebuilds that have a missing or empty LICENSE variable

LICENSE.syntax
    Syntax error in LICENSE (usually an extra/missing space/parenthesis)

LICENSE.virtual
    Virtuals that have a non-empty LICENSE variable

LIVEVCS.stable
    Ebuild is a live ebuild (cvs, git, darcs, svn, etc) checkout with stable keywords.

LIVEVCS.unmasked
    Ebuild is a live ebuild (cvs, git, darcs, svn, etc) checkout but has keywords and is not masked in the global package.mask.

PDEPEND.suspect
    PDEPEND contains a package that usually only belongs in DEPEND

PROVIDE.syntax
    Syntax error in PROVIDE (usually an extra/missing space/parenthesis)

RDEPEND.implicit
    RDEPEND is unset in the ebuild which triggers implicit RDEPEND=$DEPEND assignment (prior to EAPI 4)

RDEPEND.suspect
    RDEPEND contains a package that usually only belongs in DEPEND

PROPERTIES.syntax
    Syntax error in PROPERTIES (usually an extra/missing space/parenthesis)

RESTRICT.syntax
    Syntax error in RESTRICT (usually an extra/missing space/parenthesis) SLOT.invalid Ebuilds that have a missing or invalid SLOT variable value

SRC_URI.mirror
    A uri listed in profiles/thirdpartymirrors is found in SRC_URI

changelog.ebuildadded
    An ebuild was added but the ChangeLog was not modified

changelog.missing
    Missing ChangeLog files

changelog.notadded
    ChangeLogs that exist but have not been added to cvs

dependency.bad
    User-visible ebuilds with unsatisfied dependencies (matched against *visible* ebuilds)

dependency.badindev
    User-visible ebuilds with unsatisfied dependencies (matched against *visible* ebuilds) in developing arch

dependency.badmasked
    Masked ebuilds with unsatisfied dependencies (matched against *all* ebuilds)

dependency.badmaskedindev
    Masked ebuilds with unsatisfied dependencies (matched against *all* ebuilds) in developing arch

dependency.badtilde
    Uses the ~ dep operator with a non-zero revision part, which is useless (the revision is ignored)

dependency.syntax
    Syntax error in dependency string (usually an extra/missing space/parenthesis)

dependency.unknown
    Ebuild has a dependency that refers to an unknown package (which may be valid if it is a blocker for a renamed/removed package, or is an alternative choice provided by an overlay)

digest.assumed
    Existing digest must be assumed correct (Package level only)

digest.missing
    Some files listed in SRC_URI aren't referenced in the Manifest

digest.unused
    Some files listed in the Manifest aren't referenced in SRC_URI

ebuild.badheader
    This ebuild has a malformed header

ebuild.invalidname
    Ebuild files with a non-parseable or syntactically incorrect name (or using 2.1 versioning extensions)

ebuild.majorsyn
    This ebuild has a major syntax error that may cause the ebuild to fail partially or fully

ebuild.minorsyn
    This ebuild has a minor syntax error that contravenes gentoo coding style

ebuild.namenomatch
    Ebuild files that do not have the same name as their parent directory

ebuild.nesteddie
    Placing 'die' inside ( ) prints an error, but doesn't stop the ebuild.

ebuild.notadded
    Ebuilds that exist but have not been added to cvs

ebuild.output
    A simple sourcing of the ebuild produces output; this breaks ebuild policy.

ebuild.patches
    PATCHES variable should be a bash array to ensure white space safety

ebuild.syntax
    Error generating cache entry for ebuild; typically caused by ebuild syntax error or digest verification failure.

file.UTF8
    File is not UTF8 compliant

file.executable
    Ebuilds, digests, metadata.xml, Manifest, and ChangeLog do not need the executable bit

file.name
    File/dir name must be composed of only the following chars: a-zA-Z0-9._-+:

file.size
    Files in the files directory must be under 20k

inherit.missing
    Ebuild uses functions from an eclass but does not inherit it

inherit.unused
    Ebuild inherits an eclass but does not use it

inherit.deprecated
    Ebuild inherits a deprecated eclass

java.eclassesnotused
    With virtual/jdk in DEPEND you must inherit a java eclass. Refer to https://wiki.gentoo.org/wiki/Project:Java for more information.

manifest.bad
    Manifest has missing or incorrect digests

metadata.bad
    Bad metadata.xml files

metadata.missing
    Missing metadata.xml files

metadata.warning
    Warnings in metadata.xml files

repo.eapi.banned
    The ebuild uses an EAPI which is banned by the repository's metadata/layout.conf settings.

repo.eapi.deprecated
    The ebuild uses an EAPI which is deprecated by the repository's metadata/layout.conf settings.

IUSE.rubydeprecated
    The ebuild has set a ruby interpreter in USE_RUBY, that is not available as a ruby target anymore

portage.internal
    The ebuild uses an internal Portage function or variable

upstream.workaround
    The ebuild works around an upstream bug, an upstream bug should be filed and tracked in bugs.gentoo.org

usage.obsolete
    The ebuild makes use of an obsolete construct

variable.invalidchar
    A variable contains an invalid character that is not part of the ASCII character set.

variable.readonly
    Assigning a readonly variable

variable.usedwithhelpers
    Ebuild uses D, ROOT, ED, EROOT or EPREFIX with helpers

virtual.oldstyle
    The ebuild PROVIDEs an old-style virtual (see GLEP 37). This is an error unless "allow-provide-virtuals = true" is set in metadata/layout.conf.

virtual.suspect
    Ebuild contains a package that usually should be pulled via virtual/, not directly.

wxwidgets.eclassnotused
    Ebuild DEPENDs on x11-libs/wxGTK without inheriting wxwidgets.eclass. Refer to bug #305469 for more information.

REPORTING BUGS
Please report bugs via http://bugs.gentoo.org/

AUTHORS
Daniel Robbins <drobbins@gentoo.org>
Saleem Abdulrasool <compnerd@gentoo.org>

SEE ALSO
emerge(1)