26
26
use POSIX qw(locale_h);
28
use Sbuild qw(help_text version_text usage_error);
29
use Sbuild::Conf qw($package_checklist);
28
use Sbuild qw(help_text version_text usage_error check_packages);
30
30
use Sbuild::Utility qw(setup cleanup shutdown);
36
my $conf = Sbuild::Conf->new();
37
39
"h|help" => sub { help_text("1", "sbuild-checkpackages"); },
38
40
"V|version" => sub {version_text("sbuild-checkpackages"); },
48
50
setlocale(LC_COLLATE, "POSIX");
49
51
$ENV{'LC_COLLATE'} = "POSIX";
51
my $session = setup($chroot) or die "Chroot setup failed";
52
my $chroot_dir = $session->{'Location'};
53
my (@status, @ref, @install, @remove);
55
if (! open STATUS, "grep-status -F Status -s Package ' installed' '$chroot_dir/var/lib/dpkg/status' | awk '{print \$2}' |" ) {
56
print STDERR "Can't read dpkg status file in chroot: $!\n";
64
print STDERR "Error reading dpkg status file in chroot: $!\n";
67
@status = sort @status;
69
print STDERR "dpkg status file is empty\n";
74
if (! open WREF, "> $chroot_dir/$package_checklist") {
75
print STDERR "Can't write reference status file $chroot_dir/$package_checklist: $!\n";
82
print STDERR "Error writing reference status file: $!\n";
87
if (! open REF, "< $chroot_dir/$package_checklist") {
88
print STDERR "Can't read reference status file $chroot_dir/$package_checklist: $!\n";
96
print STDERR "Error reading reference status file: $!\n";
102
print STDERR "Reference status file is empty\n";
106
print "DELETE ADD\n";
107
print "======================================\n";
111
while ($i < scalar @status && $j < scalar @ref) {
113
my $c = $status[$i] cmp $ref[$j];
115
# In status, not reference; remove.
116
print "$status[$i]\n";
119
# In reference, not status; install.
128
# Print any remaining elements
129
while ($i < scalar @status) {
130
print "$status[$i]\n";
133
while ($j < scalar @ref) {
53
my $session = setup($chroot, $conf) or die "Chroot setup failed";
55
check_packages($session, $mode);