REPOMAN
Section: Repoman (1)
Updated: Mar 2018
Page Index
NAME
repoman - Gentoo's program to enforce a minimal level of quality assurance in
packages added to the ebuild repository
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
- -b, --bug
-
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 https://bugs.gentoo.org/NNNNNN 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.
- -c, --closes
-
Include a Closes 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 https://bugs.gentoo.org/NNNNNN 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 Closes tag include GitLab and Bitbucket.
- --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.
- --experimental-repository-modules=<y|n>
-
Enable experimental repository modules:
https://wiki.gentoo.org/wiki/Project:Portage/Repoman-Module-specs
- --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. 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.
- -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.missingurischeme
-
HOMEPAGE is missing an URI scheme
- 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
- KEYWORDS.unsorted
-
Ebuilds that contain KEYWORDS which are not sorted alphabetically.
- 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
- 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 the vcs
- 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.badinexp
-
User-visible ebuilds with unsatisfied dependencies (matched against *visible*
ebuilds) in experimental 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.badmaskedinexp
-
Masked ebuilds with unsatisfied dependencies (matched against *all* ebuilds) in
experimental 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.absdosym
-
Ebuild uses 'dosym' with explicit absolute path where relative path
could be used
- 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 the vcs
- 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.empty
-
Empty file in the files directory
- 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, BROOT, ED, EROOT or EPREFIX with helpers
- 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.
BEHAVIOR
When invoked from a level higher than a package directory,
repoman
will recurse through a directory tree and execute the given command
on a per-package basis, e.g.
repoman manifest at the root of
the repository will generate manifests for every package within the
repository.
REPORTING BUGS
Please report bugs via
https://bugs.gentoo.org/
AUTHORS
Daniel Robbins <drobbins@gentoo.org>
Saleem Abdulrasool <compnerd@gentoo.org>
SEE ALSO
emerge(1)