=head1 NAME

ceve - parse package metadata 

=head1 SYNOPSIS

=over 

=item B<ceve> [-h] [-v] [-c I<pkgspec>] [-r I<pkgspec>] [--depth=I<n>]I<> [-T I<format>] [-G I<graph type>] [-o I<filename>] I<input-spec> 

=back

=head1 DESCRIPTION

Ceve is a generalized metadata parser. It reads package specifications,
extracts package metadata from them, performs some manipulations, and outputs
the package metadata in one of several formats. 

=head1 OPTIONS

=over 4

=item B<-h> 

This option displays the help message. Can also be specified as B<--help>. 

=item B<-v> 

Be verbose. This option can be repeated for more verbosity. 

=item B<-c >I<pkgspec>

The B<match> of an atomic dependency (a package name p possibly together with a
version constraint c) is the set of all packages in the repository with name p,
and a version that satisfies the constraint c.  The dependency cone of a
package p is the set of all matches of all atomic dependencies of p, together
with their respective dependency cones. 
The package specification I<pkgspec> is a list of packages (separated by a
semicolon), where each package is specified as follows:
(I<name>,I<version>).

This option extracts the union of the dependency cones of all packages selected
by I<pkgspec>. This option can also be specified as --cone=I<pkgspec>.

=item B<-r >I<pkgspec> 

Using the same syntax as in B<-c>, this option use the reverse dependency
relation to make the transitive closure. This option can also be specified
as --rcone=I<pkgspec>.

=item B<--depth >I<n> 

In combination with the B<-c> or B<-r> options, this specifies the
maximum depth for the transitive closure.
 
=item B<-T >I<format> 

Specifies the output format to use. Possible values are B<dot> for a graph
output in Dot/GraphViz format, B<cnf> for an output in CNF format, B<dimacs>
for an output in the DIMACS format for CNF formulae, and B<cudf> for a
pretty-print output in an RFC 822-like format.

=item B<-t >I<input-spec>

Select the input type.

=item B<--request >I<installation-request>

Specifies an installation request of the form "B<install:> I<vpkglist>" or
"B<remove:> I<vpkglist>" or "B<upgrade:> I<vpkglist>" where I<vpkglist> is a
list of (real) packages possibly associated with a constraint. Ex.: bash (<
2.0), exim (= 3.1-debian1). This option can be repeated to specify install,
remove and upgrade actions.

Examples:

=item --request "install: bash (< 2.0), exim (= 3.1-debian1)" --request "upgrade: apt-cudf"

=item B<-G >I<graph type> 

Specifies the graph type format to compute. This option must be used together
with the option B<-T >I<dot|gml|grml>. Possible values are:

=item .

B<syn> for the syntactic graph where disjunctions nodes and conflicts are
explicitly added to the graph. 

=item .

B<pkg> for the package graph where all dependencies are threated uniformely and
conflicts are not added to the graph.

=item .

B<strong> the strong dependency graph. A package p strong depends on q iff p
cannot be installed if q is not installed.

=item .

B<conj> the conjunctive graph where only conjunctive dependencies are
considered.

=item B<-o >I<filename> 

Instead of stdout, send output to the file I<filename>.

=item I<input-spec> 

This is a URL specifying both the input format and the file to get the input
from. Possible schemes are: 

=item .

B<cudf> for cudf files 

=item .

B<deb> for Debian package files (possibly compressed with L<gzip(1)> or
L<bzip2(1)>, depending on compile-time options for dose3) 

=item .

B<debstdin> for Debian package files read from standard input 

=item .

B<edsp> for apt-get External Dependency Solver Protocol

=item .

B<eclipse> for Eclipse (p2) package files 

=item .

B<hdlist> for RPM hdlists 

=item .

B<synth> for urpmi synthesis hdlists 

Some examples of URLs: 
 
=item .

deb://Packages.gz (the Debian file packages.gz in the current directory)

=item .

cudf:///home/examples/cudf/test.cudf (the CUDF file /home/examples/cudf/test.cudf)

=back

=head2 DEBIAN SPECIFIC OPTIONS

Multi-arch annotations are handled by ceve. Packages whose's architecture is
neither the native architecture nor in the list of foreign architectures (see
below) are ignored.

=over 8

=item B<--deb-native-arch=>I<name>

Specify the native architecture. The default behavior is to deduce
the native architecture from the first package stanza in the input
that has an architecture different from all.

=item B<--deb-foreign-archs=>I<name> [,I<name>] ...

Specify a comma-separated list of foreign architectures. The default
is an empty list of foreign architectures.

=item B<--deb-ignore-essential>

By default all essential package are considered as a dependency of all packages
in the universe. This option allows the user to ignore essential packages.

=back

