From 8e79ad9f544d1c4a0476e0d96aef0496ca7fc741 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:46:56 +0200 Subject: Adding upstream version 0.85.6. Signed-off-by: Daniel Baumann --- lib/Buildd/DistConf.pm | 159 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 lib/Buildd/DistConf.pm (limited to 'lib/Buildd/DistConf.pm') diff --git a/lib/Buildd/DistConf.pm b/lib/Buildd/DistConf.pm new file mode 100644 index 0000000..6edffba --- /dev/null +++ b/lib/Buildd/DistConf.pm @@ -0,0 +1,159 @@ +# +# Conf.pm: configuration library for buildd +# Copyright © 1998 Roman Hodek +# Copyright © 2005 Ryan Murray +# Copyright © 2006-2009 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 +# . +# +####################################################################### + +package Buildd::DistConf; + +use strict; +use warnings; + +use Sbuild::ConfBase; +use Sbuild::Sysconfig; +use Buildd::ClientConf qw(); + +BEGIN { + use Exporter (); + our (@ISA, @EXPORT); + + @ISA = qw(Exporter); + + @EXPORT = qw(new_hash setup read_hash); +} + +sub new_hash (@); +sub setup ($); +sub read_hash ($$); + +sub new_hash (@) { + my %opts = @_; + + my $queue_config = Sbuild::ConfBase->new(%opts); + + Buildd::DistConf::setup($queue_config); + Buildd::DistConf::read_hash($queue_config, $opts{'HASH'}); + + return $queue_config; +} + +sub setup ($) { + my $conf = shift; + + my $validate_directory_in_home = sub { + my $conf = shift; + my $entry = shift; + my $key = $entry->{'NAME'}; + my $directory = $conf->get($key); + my $home_directory = $conf->get('HOME'); + + die "$key directory is not defined" + if !defined($directory) || !$directory; + + die "$key directory '$home_directory/$directory' does not exist" + if !-d $home_directory . "/" . $directory; + }; + + my $arch = $conf->get('ARCH'); + + my %buildd_dist_keys = ( + 'DIST_NAME' => { + DEFAULT => 'unstable' + }, + 'BUILT_ARCHITECTURE' => { + DEFAULT => undef, + }, + 'SBUILD_CHROOT' => { + DEFAULT => undef, + }, + 'WANNA_BUILD_SSH_HOST' => { + DEFAULT => 'buildd.debian.org' + }, + 'WANNA_BUILD_SSH_USER' => { + DEFAULT => 'buildd_' . $arch + }, + 'WANNA_BUILD_SSH_SOCKET' => { + DEFAULT => undef + }, + 'WANNA_BUILD_SSH_OPTIONS' => { + DEFAULT => [] + }, + 'WANNA_BUILD_DB_NAME' => { + DEFAULT => undef, + }, + 'WANNA_BUILD_DB_USER' => { + DEFAULT => $Buildd::username + }, + 'WANNA_BUILD_API' => { + DEFAULT => undef, + }, + 'WANNA_BUILD_MIN_AGE' => { + DEFAULT => undef, + }, + 'DUPLOAD_LOCAL_QUEUE_DIR' => { + CHECK => $validate_directory_in_home, + DEFAULT => 'upload' + }, + 'NO_AUTO_BUILD' => { + DEFAULT => [] + }, + 'WEAK_NO_AUTO_BUILD' => { + DEFAULT => [] + }, + 'NO_BUILD_REGEX' => { + DEFAULT => undef + }, + 'BUILD_REGEX' => { + DEFAULT => undef + }, + 'LOGS_MAILED_TO' => { + DEFAULT => undef + }, + 'LOGS_MAIL_ALSO' => { + DEFAULT => undef + }, + 'BUILD_DEP_RESOLVER' => { + DEFAULT => undef + }, + 'SIGN_WITH' => { + DEFAULT => undef + }, + 'MAINTAINER_NAME' => { + DEFAULT => undef + }, + 'MAILFROM' => { + DEFAULT => undef + }, + ); + + $conf->set_allowed_keys(\%buildd_dist_keys); + + Buildd::ClientConf::setup($conf); +} + +sub read_hash($$) { + my $conf = shift; + my $data = shift; + + for my $key (keys %$data) { + $conf->set($key, $data->{$key}); + } +} + +1; -- cgit v1.2.3