--- PureOS is currently carrying this as its only patch to dpkg package. Moving it upstream would make things so much more convenient, so I'm putting it here for your consideration :-)
scripts/Dpkg/Vendor/PureOS.pm | 84 +++++++++++++++++++++++++++++++++++ scripts/Makefile.am | 1 + 2 files changed, 85 insertions(+) create mode 100644 scripts/Dpkg/Vendor/PureOS.pm diff --git a/scripts/Dpkg/Vendor/PureOS.pm b/scripts/Dpkg/Vendor/PureOS.pm new file mode 100644 index 000000000000..004c159eb690 --- /dev/null +++ b/scripts/Dpkg/Vendor/PureOS.pm @@ -0,0 +1,84 @@ +# Copyright © 2009-2011 Raphaël Hertzog <hert...@debian.org> +# Copyright © 2009, 2011-2017 Guillem Jover <guil...@debian.org> +# Copyright © 2017-2019 Matthias Klumpp <matthias.klu...@puri.sm> +# Copyright © 2021 Jonas Smedegaard <d...@jones.dk> +# Copyright © 2021 Purism, SPC +# +# 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 <https://www.gnu.org/licenses/>. + +=encoding utf8 + +=head1 NAME + +Dpkg::Vendor::PureOS - PureOS vendor class + +=head1 DESCRIPTION + +This vendor class customizes the behavior of dpkg scripts for PureOS +specific behavior and policies. + +B<Note>: This is a private module, its API can change at any time. + +=cut + +package Dpkg::Vendor::PureOS 0.01; + +use strict; +use warnings; + +use Dpkg::ErrorHandling; +use Dpkg::Gettext; +use Dpkg::Control::Types; + +use parent qw(Dpkg::Vendor::Debian); + +sub run_hook { + my ($self, $hook, @params) = @_; + + if ($hook eq 'before-source-build') { + my $src = shift @params; + my $fields = $src->{fields}; + + if (defined($fields->{'Version'}) and defined($fields->{'Maintainer'}) and + $fields->{'Version'} =~ /pureos/) { + unless ($fields->{'Original-Maintainer'}) { + warning(g_('Version number suggests PureOS changes, but there is no XSBC-Original-Maintainer field')); + } + } + + } elsif ($hook eq 'keyrings') { + return $self->run_hook('package-keyrings', @params); + } elsif ($hook eq 'package-keyrings') { + return ($self->SUPER::run_hook($hook), + '/usr/share/keyrings/pureos-archive-keyring.gpg'); + } elsif ($hook eq 'archive-keyrings') { + return ($self->SUPER::run_hook($hook), + '/usr/share/keyrings/pureos-archive-keyring.gpg'); + } elsif ($hook eq 'archive-keyrings-historic') { + return ($self->SUPER::run_hook($hook), + '/usr/share/keyrings/pureos-archive-removed-keys.gpg'); + } else { + return $self->SUPER::run_hook($hook, @params); + } +} + +=head1 CHANGES + +=head2 Version 0.xx + +This is a private module. + +=cut + +1; diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 242a0bddf289..645925287d80 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -91,6 +91,7 @@ nobase_dist_perllib_DATA = \ Dpkg/Vendor/Debian.pm \ Dpkg/Vendor/Default.pm \ Dpkg/Vendor/Devuan.pm \ + Dpkg/Vendor/PureOS.pm \ Dpkg/Vendor/Ubuntu.pm \ Dpkg/Version.pm \ Dpkg.pm \ -- 2.48.1