#!/usr/bin/perl -w # check the package list in a chroot against a reference list. # # Copyright © 2006-2008 Roger Leigh # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see # . # ####################################################################### use strict; use warnings; our $mode = undef; package Options; use Sbuild::OptionsBase; use Sbuild::Conf qw(); BEGIN { use Exporter (); our (@ISA, @EXPORT); @ISA = qw(Exporter Sbuild::OptionsBase); @EXPORT = qw(); } sub set_options { my $self = shift; $self->add_options( "l|list" => sub { $mode = "list"; }, "s|set" => sub { $mode = "set"; }); } package main; use locale; use POSIX qw(locale_h); use Getopt::Long; use Sbuild qw(help_text version_text usage_error check_packages check_group_membership); use Sbuild::Conf qw(); use Sbuild::Utility qw(setup cleanup shutdown); my $conf = Sbuild::Conf::new(); exit 1 if !defined($conf); my $options = Options->new($conf, "sbuild-checkpackages", "1"); exit 1 if !defined($options); check_group_membership(); usage_error("sbuild-checkpackages", "--list or --set must be specified") if (!defined($mode)); usage_error("sbuild-checkpackages", "A chroot must be specified") if (@ARGV != 1); my $chroot = $ARGV[0]; setlocale(LC_COLLATE, "POSIX"); $ENV{'LC_COLLATE'} = "POSIX"; my $session = setup('source', $chroot, $conf) or die "Chroot setup failed"; check_packages($session, $mode); cleanup($conf); exit 0;