=head1 NAME

dose-builddebcheck - Check if a package can be built on a Debian system 

=head1 SYNOPSIS

=over 

=item B<dose-builddebcheck> [options] I<binary-repositories> I<source-repository> 

=back
=cut

=head1 DESCRIPTION

dose-builddebcheck determines, for a set of debian source package control
stanzas, called the source repository, whether a build environment for the
packages of the source repository can be installed by using packages from the
binary repository. For this, only package meta-information is taken into
account: build-dependencies and build-conflicts in the source package, and
inter-package relationsships expressed in the binary repository. The constraint
solving algorithm is complete, that is it finds a solution whenever there
exists one, even for multiple disjunctive dependencies and deep package
conflicts.  This problem is computationally infeasible in theory (that is,
NP-complete), but can be solved very efficiently for package repositories that
actually occur in practice. Installability of binary packages is analyzed
according to their B<Depends>, B<Conflicts>, and B<Provides> fields with their
meaning as of Debian policy version 3.9.0. B<Pre-depends> are treated like
B<Depends>, and B<Breaks> are treated like B<Conflicts>. 

=cut

=head1 Input Format

The B<binary-repositories> argument is a list of filenames containing stanzas
in the format of L<deb-control(5)>, separated by one blank line. For instance,
the Packages files as found on a Debian mirror server, or in the directory
I</var/lib/apt/lists/> of a Debian system, are suitable. The
B<source-repository> argument is the name of a file containing debian source
control stanzas, separated by one blank line. For instance, the Sources files
as found on a Debian mirror server, or in the directory I</var/lib/apt/lists/>
of a Debian system, are suitable. 

Multi-arch annotations are correctly considered by dose-builddebcheck. Packages
whose's architecture is neither the native architecture nor in the list of
foreign architectures (see below) are ignored. Here, native and foreign refers
at the same time to the architecture on which the compilation will be run, and
to the target architecture of the compilation. Cross-compilation is supported
by specifying the I<host> architecture.

=cut

=head1 OPTIONS

=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-host-arch=>I<name>...

Specify the host architecture.

=item B<-f --failures> 

Only show broken packages that fail the installability check. 

=item B<-v --successes> 

Only show packages that do not fail the installability check. 

=item B<-e --explain> 

Explain the results in more detail. 

=item B<-v>

Enable info / warnings / debug messages. This option may be repeated up
to three times in order to increase verbosity. 

=item B<-h, --help> 

Display this list of options. 

=back
=cut

=head1 EXAMPLE

Compute the list of source packages in Sources for which
it is not possible to install a build environment on i386, assuming that
the binary packages described in file Packages are available: 

 dose-builddebcheck -v -f -e --arch amd64 \
 /var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_main_binary-amd64_Packages\
 /var/lib/apt/lists/ftp.fr.debian.org_debian_dists_sid_main_source_Sources

Compute the list of source packages for armel in Sources for which it is not
possible to install a mix build environment on amd64 plus armel, assuming that
the binary packages described in file Packages are available: 

 deb-builddebcheck --failures --successes --deb-native-arch=amd64 \
 --deb-foreign-archs=armel,linux-any --deb-host-arch=armel \
 DebianPackages/Sid-amd64-armel-Packages-050812.bz2 
 DebianPackages/Sid-Sources-single-version-050812.bz2

=cut

=head1 AUTHOR

The current version has been rewritten on the basis of the dose3 library by
Pietro Abate; it replaces an earlier version that was  simply a wrapper for
edos-distcheck.

=cut

=head1 SEE ALSO

L<B<deb-control>(5)>, 
L<B<dose3-distcheck>(1)> 

<http://www.edos-project.org> is the home page of the EDOS project. 
<http://www.mancoosi.org> is the home page of the Mancoosi project. 
 
