.TH "REPOMAN" "1" "June 2012" "Portage VERSION" "Portage"
.SH NAME
repoman \- Gentoo's program to enforce a minimal level of quality assurance in packages added to the portage tree
.SH SYNOPSIS
\fBrepoman\fR [\fIoption\fR] [\fImode\fR]
.SH DESCRIPTION
.BR "Quality is job zero."

.BR repoman
checks the quality of ebuild repositories.

Note: \fBrepoman commit\fR only works \fIinside local\fR cvs, git, or subversion repositories.
.SH OPTIONS
.TP
\fB-a\fR, \fB--ask\fR
Request a confirmation before commiting
.TP
\fB\-\-digest=<y|n>\fR
Automatically update Manifest digests for modified files. This
option triggers a behavior that is very similar to that enabled
by FEATURES="digest" in \fBmake.conf\fR(5). In order to enable
this behavior by default for repoman alone, add
\fB\-\-digest=y\fR to the \fIREPOMAN_DEFAULT_OPTS\fR variable in
\fBmake.conf\fR(5). The \fBmanifest\-check\fR mode will
automatically ignore the \-\-digest option.

\fBNOTE:\fR
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 \fBmanifest\fR mode
together with the \fB\-\-force\fR option.
.TP
\fB--force\fR
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 \fBmanifest\fR mode, \fB--force\fR 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. \fBWARNING:\fR 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.
.TP
\fB-q\fR, \fB--quiet\fR
Be less verbose about extraneous info
.TP
\fB-p\fR, \fB--pretend\fR
Don't commit or fix anything; just show what would be done
.TP
\fB-x\fR, \fB--xmlparse\fR
Forces the metadata.xml parse check to be carried out
.TP
\fB-v\fR, \fB--verbose\fR
Displays every package name while checking
.TP
\fB\-\-echangelog=<y|n|force>\fR
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
\fBportage(5)\fR).
.TP
\fB\-\-if\-modified=<y|n>\fR
Only check packages that have uncommitted modifications
.TP
\fB\-i\fR, \fB\-\-ignore\-arches\fR
Ignore arch-specific failures (where arch != host)
.TP
\fB\-\-ignore\-default\-opts\fR
Do not use the \fIREPOMAN_DEFAULT_OPTS\fR environment variable.
.TP
\fB\-I\fR, \fB\-\-ignore\-masked\fR
Ignore masked packages (not allowed with commit mode)
.TP
\fB\-d\fR, \fB\-\-include\-dev\fR
Include dev profiles in dependency checks.
.TP
\fB\-\-unmatched\-removal\fR
Enable strict checking of package.mask and package.unmask files for
unmatched removal atoms.
.TP
\fB\-\-without\-mask\fR
Behave as if no package.mask entries exist (not allowed with commit mode)
.TP
\fB-m\fR, \fB--commitmsg\fR
Adds a commit message via the command line
.TP
\fB-M\fR, \fB--commitmsgfile\fR
Adds a commit message from the specified file
.TP
\fB-V\fR, \fB--version\fR
Show version info
.TP
\fB-h\fR, \fB--help\fR
Show this screen
.SH MODES
.TP
.B full
Scan directory tree for QA issues (full listing)
.TP
.B help
Show this screen
.TP
.B scan
Scan directory tree for QA issues (short listing)
.TP
.B fix
Fix simple QA issues (stray digests, missing digests)
.TP
.B manifest
Generate a Manifest (fetches distfiles if necessary). See the \fB\-\-force\fR
option if you would like to replace existing distfiles digests.
.TP
.B manifest-check
Check Manifests for missing or incorrect digests
.TP
.B commit
Scan directory tree for QA issues; if OK, commit via cvs
.SH QA KEYWORDS
.TP
.B CVS/Entries.IO_error
Attempting to commit, and an IO error was encountered access the Entries file
.TP
.B DEPEND.bad
User-visible ebuilds with bad DEPEND settings (matched against *visible* ebuilds)
.TP
.B DEPEND.badindev
User-visible ebuilds with bad DEPEND settings (matched against *visible* ebuilds) in developing arch
.TP
.B DEPEND.badmasked
Masked ebuilds with bad DEPEND settings (matched against *all* ebuilds)
.TP
.B DEPEND.badmaskedindev
Masked ebuilds with bad DEPEND settings (matched against *all* ebuilds) in developing arch
.TP
.B DEPEND.badtilde
DEPEND uses the ~ dep operator with a non-zero revision part, which is useless (the revision is ignored)
.TP
.B DEPEND.syntax
Syntax error in DEPEND (usually an extra/missing space/parenthesis)
.TP
.B DESCRIPTION.missing
Ebuilds that have a missing or empty DESCRIPTION variable
.TP
.B EAPI.definition
EAPI definition does not conform to PMS section 7.3.1 (first
non\-comment, non\-blank line). See bug #402167.
.TP
.B EAPI.deprecated
Ebuilds that use features that are deprecated in the current EAPI
.TP
.B EAPI.incompatible
Ebuilds that use features that are only available with a different EAPI
.TP
.B EAPI.unsupported
Ebuilds that have an unsupported EAPI version (you must upgrade portage)
.TP
.B HOMEPAGE.missing
Ebuilds that have a missing or empty HOMEPAGE variable
.TP
.B HOMEPAGE.virtual
Virtuals that have a non-empty HOMEPAGE variable
.TP
.B IUSE.invalid
This ebuild has a variable in IUSE that is not in the use.desc or its metadata.xml file
.TP
.B IUSE.missing
This ebuild has a USE conditional which references a flag that is not listed in IUSE
.TP
.B KEYWORDS.dropped
Ebuilds that appear to have dropped KEYWORDS for some arch
.TP
.B KEYWORDS.invalid
This ebuild contains KEYWORDS that are not listed in profiles/arch.list or for which no valid profile was found
.TP
.B KEYWORDS.missing
Ebuilds that have a missing or empty KEYWORDS variable
.TP
.B KEYWORDS.stable
Ebuilds that have been added directly with stable KEYWORDS
.TP
.B KEYWORDS.stupid
Ebuilds that use KEYWORDS=-* instead of package.mask
.TP
.B LICENSE.invalid
This ebuild is listing a license that doesnt exist in portages license/ dir.
.TP
.B LICENSE.missing
Ebuilds that have a missing or empty LICENSE variable
.TP
.B LICENSE.syntax
Syntax error in LICENSE (usually an extra/missing space/parenthesis)
.TP
.B LICENSE.virtual
Virtuals that have a non-empty LICENSE variable
.TP
.B LIVEVCS.stable
Ebuild is a live ebuild (cvs, git, darcs, svn, etc) checkout with stable keywords.
.TP
.B 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.
.TP
.B PDEPEND.bad
User-visible ebuilds with bad PDEPEND settings (matched against *visible* ebuilds)
.TP
.B PDEPEND.badindev
User-visible ebuilds with bad PDEPEND settings (matched against *visible* ebuilds) in developing arch
.TP
.B PDEPEND.badmasked
Masked ebuilds with PDEPEND settings (matched against *all* ebuilds)
.TP
.B PDEPEND.badmaskedindev
Masked ebuilds with PDEPEND settings (matched against *all* ebuilds) in developing arch
.TP
.B PDEPEND.badtilde
PDEPEND uses the ~ dep operator with a non-zero revision part, which is useless (the revision is ignored)
.TP
.B PDEPEND.suspect
PDEPEND contains a package that usually only belongs in DEPEND
.TP
.B PDEPEND.syntax
Syntax error in PDEPEND (usually an extra/missing space/parenthesis)
.TP
.B PROVIDE.syntax
Syntax error in PROVIDE (usually an extra/missing space/parenthesis)
.TP
.B RDEPEND.bad
User-visible ebuilds with bad RDEPEND settings (matched against *visible* ebuilds)
.TP
.B RDEPEND.badindev
User-visible ebuilds with bad RDEPEND settings (matched against *visible* ebuilds) in developing arch
.TP
.B RDEPEND.badmasked
Masked ebuilds with RDEPEND settings (matched against *all* ebuilds)
.TP
.B RDEPEND.badmaskedindev
Masked ebuilds with RDEPEND settings (matched against *all* ebuilds) in developing arch
.TP
.B RDEPEND.badtilde
RDEPEND uses the ~ dep operator with a non-zero revision part, which is useless (the revision is ignored)
.TP
.B RDEPEND.implicit
RDEPEND is unset in the ebuild which triggers implicit RDEPEND=$DEPEND
assignment (prior to EAPI 4)
.TP
.B RDEPEND.suspect
RDEPEND contains a package that usually only belongs in DEPEND
.TP
.B RDEPEND.syntax
Syntax error in RDEPEND (usually an extra/missing space/parenthesis)
.TP
.B PROPERTIES.syntax
Syntax error in PROPERTIES (usually an extra/missing space/parenthesis)
.TP
.B RESTRICT.syntax
Syntax error in RESTRICT (usually an extra/missing space/parenthesis)
.B SLOT.invalid
Ebuilds that have a missing or invalid SLOT variable value
.TP
.B SRC_URI.mirror
A uri listed in profiles/thirdpartymirrors is found in SRC_URI
.TP
.B changelog.ebuildadded
An ebuild was added but the ChangeLog was not modified
.TP
.B changelog.missing
Missing ChangeLog files
.TP
.B changelog.notadded
ChangeLogs that exist but have not been added to cvs
.TP
.B 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)
.TP
.B digest.assumed
Existing digest must be assumed correct (Package level only)
.TP
.B digest.missing
Some files listed in SRC_URI aren't referenced in the Manifest
.TP
.B digest.unused
Some files listed in the Manifest aren't referenced in SRC_URI
.TP
.B ebuild.badheader
This ebuild has a malformed header
.TP
.B ebuild.invalidname
Ebuild files with a non-parseable or syntactically incorrect name (or using 2.1 versioning extensions)
.TP
.B ebuild.majorsyn
This ebuild has a major syntax error that may cause the ebuild to fail partially or fully
.TP
.B ebuild.minorsyn
This ebuild has a minor syntax error that contravenes gentoo coding style
.TP
.B ebuild.namenomatch
Ebuild files that do not have the same name as their parent directory
.TP
.B ebuild.nesteddie
Placing 'die' inside ( ) prints an error, but doesn't stop the ebuild.
.TP
.B ebuild.notadded
Ebuilds that exist but have not been added to cvs
.TP
.B ebuild.output
A simple sourcing of the ebuild produces output; this breaks ebuild policy.
.TP
.B ebuild.patches
PATCHES variable should be a bash array to ensure white space safety
.TP
.B ebuild.syntax
Error generating cache entry for ebuild; typically caused by ebuild syntax error
or digest verification failure.
.TP
.B file.UTF8
File is not UTF8 compliant
.TP
.B file.executable
Ebuilds, digests, metadata.xml, Manifest, and ChangeLog do not need the executable bit
.TP
.B file.name
File/dir name must be composed of only the following chars: a-zA-Z0-9._-+:
.TP
.B file.size
Files in the files directory must be under 20k
.TP
.B inherit.missing
Ebuild uses functions from an eclass but does not inherit it
.TP
.B inherit.unused
Ebuild inherits an eclass but does not use it
.TP
.B inherit.deprecated
Ebuild inherits a deprecated eclass
.TP
.B java.eclassesnotused
With virtual/jdk in DEPEND you must inherit a java eclass. Refer to
\fIhttp://www.gentoo.org/proj/en/java/java\-devel.xml\fR for more information.
.TP
.B manifest.bad
Manifest has missing or incorrect digests
.TP
.B metadata.bad
Bad metadata.xml files
.TP
.B metadata.missing
Missing metadata.xml files
.TP
.B metadata.warning
Warnings in metadata.xml files
.TP
.B portage.internal
The ebuild uses an internal Portage function
.TP
.B upstream.workaround
The ebuild works around an upstream bug, an upstream bug should be filed and
tracked in bugs.gentoo.org
.TP
.B usage.obsolete
The ebuild makes use of an obsolete construct
.TP
.B variable.invalidchar
A variable contains an invalid character that is not part of the ASCII
character set.
.TP
.B variable.readonly
Assigning a readonly variable
.TP
.B variable.usedwithhelpers
Ebuild uses D, ROOT, ED, EROOT or EPREFIX with helpers
.TP
.B 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.
.TP
.B virtual.suspect
Ebuild contains a package that usually should be pulled via virtual/,
not directly.
.TP
.B wxwidgets.eclassnotused
Ebuild DEPENDs on x11-libs/wxGTK without inheriting wxwidgets.eclass. Refer to
bug #305469 for more information.
.SH "REPORTING BUGS"
Please report bugs via http://bugs.gentoo.org/
.SH AUTHORS
.nf
Daniel Robbins <drobbins@gentoo.org>
Saleem Abdulrasool <compnerd@gentoo.org>
.fi
.SH "SEE ALSO"
.BR emerge (1)
