.TH "REPOMAN" "1" "Mar 2018" "Repoman VERSION" "Repoman"
.SH NAME
repoman \- Gentoo's program to enforce a minimal level of quality assurance in
packages added to the ebuild repository
.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.

Note: Messages pertaining to specific lines may be inaccurate in the
prescence of continuation lines from use of the \fI\\\fR character in
BASH.
.SH OPTIONS
.TP
\fB-a\fR, \fB--ask\fR
Request a confirmation before commiting
.TP
\fB-b\fR, \fB--bug\fR
Include a bug reference in the commit message footer. The argument can
be either a Gentoo bug number or a full bug URL (either Gentoo
or upstream). Gentoo bug URLs are automatically shortened to
the canonical \fBhttps://bugs.gentoo.org/NNNNNN\fR form, and HTTPS
is forced for known bug trackers.

When pushing to the Gentoo repository, the reference to the commit
will be automatically added as a comment on the bug.
.TP
\fB-c\fR, \fB--closes\fR
Include a \fBCloses\fR tag in the commit message footer that can be used
to close bugs and pull requests. The argument can be either a Gentoo bug
number or a full PR/bug URL. Gentoo bug URLs are automatically shortened
to the canonical \fBhttps://bugs.gentoo.org/NNNNNN\fR form, and HTTPS
is forced for known bug trackers.

When pushing to the Gentoo repository, the referenced bugs will be
closed as RESOLVED/FIXED automatically with a comment referencing
the commit. Furthermore, GitHub pull requests will be closed as well
due to the automatic GitHub mirroring.

Other platforms using the \fBCloses\fR tag include GitLab and Bitbucket.
.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-f\fR, \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-S\fR, \fB--straight-to-stable\fR
Allow committing straight to stable
.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\fR(5)).
.TP
\fB\-\-experimental\-inherit=<y|n>\fR
Enable experimental inherit.missing checks which may misbehave when the
internal eclass database becomes outdated.
.TP
\fB\-\-experimental\-repository\-modules=<y|n>\fR
Enable experimental repository modules:
\fIhttps://wiki.gentoo.org/wiki/Project:Portage/Repoman-Module-specs\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
.BR "\-\-include\-arches " ARCHES
A space separated list of arches used to filter the selection of
profiles for dependency checks.
.TP
.BR "\-\-include\-profiles " PROFILES
A space separated list of profiles used to
define the selection of profiles for dependency checks.
.TP
\fB\-d\fR, \fB\-\-include\-dev\fR
Include dev profiles in dependency checks.
.TP
\fB\-e <y|n>\fR, \fB\-\-include\-exp\-profiles=<y|n>\fR
Include exp 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.  This option also will perform
an automatic text substitution of a leading "cat/pkg: " string (upper or lower
case) with the actual category/package prefix as defined by the required message
format.  Use this option for templating a common commit message for multiple
package updates.
.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 VCS
.TP
.B ci
Synonym for commit
.SH QA KEYWORDS
.TP
.B CVS/Entries.IO_error
Attempting to commit, and an IO error was encountered access the Entries file
.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.missingurischeme
HOMEPAGE is missing an URI scheme
.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 KEYWORDS.unsorted
Ebuilds that contain KEYWORDS which are not sorted alphabetically.
.TP
.B LICENSE.deprecated
This ebuild is listing a deprecated license.
.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.suspect
PDEPEND contains a package that usually only belongs in DEPEND
.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 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 the vcs
.TP
.B dependency.bad
User-visible ebuilds with unsatisfied dependencies (matched against *visible*
ebuilds)
.TP
.B dependency.badindev
User-visible ebuilds with unsatisfied dependencies (matched against *visible*
ebuilds) in developing arch
.TP
.B dependency.badinexp
User-visible ebuilds with unsatisfied dependencies (matched against *visible*
ebuilds) in experimental arch
.TP
.B dependency.badmasked
Masked ebuilds with unsatisfied dependencies (matched against *all* ebuilds)
.TP
.B dependency.badmaskedindev
Masked ebuilds with unsatisfied dependencies (matched against *all* ebuilds) in
developing arch
.TP
.B dependency.badmaskedinexp
Masked ebuilds with unsatisfied dependencies (matched against *all* ebuilds) in
experimental arch
.TP
.B dependency.badtilde
Uses the ~ dep operator with a non-zero revision part, which is useless (the
revision is ignored)
.TP
.B dependency.deprecated
Ebuild has a dependency that refers to a deprecated package
.TP
.B dependency.syntax
Syntax error in dependency string (usually an extra/missing space/parenthesis)
.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.absdosym
Ebuild uses 'dosym' with explicit absolute path where relative path
could be used
.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 the vcs
.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.empty
Empty file in the files directory
.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
\fIhttps://wiki.gentoo.org/wiki/Project:Java\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 repo.eapi.banned
The ebuild uses an EAPI which is banned by the repository's
metadata/layout.conf settings.
.TP
.B repo.eapi.deprecated
The ebuild uses an EAPI which is deprecated by the repository's
metadata/layout.conf settings.
.TP
.B IUSE.rubydeprecated
The ebuild has set a ruby interpreter in USE_RUBY, that is not available as a ruby target anymore
.TP
.B portage.internal
The ebuild uses an internal Portage function or variable
.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, BROOT, ED, EROOT or EPREFIX with helpers
.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 "BEHAVIOR"
When invoked from a level higher than a package directory, \fBrepoman\fR
will recurse through a directory tree and execute the given command
on a per\-package basis, e.g. \fBrepoman manifest\fR at the root of
the repository will generate manifests for every package within the
repository.
.SH "REPORTING BUGS"
Please report bugs via https://bugs.gentoo.org/
.SH AUTHORS
.nf
Daniel Robbins <drobbins@gentoo.org>
Saleem Abdulrasool <compnerd@gentoo.org>
.fi
.SH "SEE ALSO"
.BR emerge (1)
