---
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

Reply via email to