sbuild: add Trisquel's auto-selector DistroInfo switch for backports

This commit is contained in:
Ark74 2025-09-15 01:41:26 -06:00
parent d61972afb9
commit 6183e8282b
2 changed files with 106 additions and 0 deletions

View file

@ -0,0 +1,75 @@
diff --git a/lib/Sbuild/Conf.pm b/lib/Sbuild/Conf.pm
index 79ae1c15..4ae269ce 100644
--- a/lib/Sbuild/Conf.pm
+++ b/lib/Sbuild/Conf.pm
@@ -42,9 +42,35 @@ BEGIN {
@EXPORT = qw(new setup read);
}
-my $ubuntu_mmdebstrap_extra_args = {};
use Debian::DistroInfo;
-for my $series (UbuntuDistroInfo->new()->supported()) {
+
+# Add distro-info provider auto-detect switch
+our $DISTROINFO_CLASS;
+our $IS_TRISQUEL = 0;
+BEGIN {
+ eval {
+ require Debian::DistroInfo;
+ Debian::DistroInfo->import();
+ 1;
+ };
+ if (defined &UbuntuDistroInfo::new) {
+ $DISTROINFO_CLASS = 'UbuntuDistroInfo';
+ warn "sbuild: Debian::DistroInfo used: Ubuntu\n";
+ } elsif (defined &TrisquelDistroInfo::new) {
+ $DISTROINFO_CLASS = 'TrisquelDistroInfo';
+ $IS_TRISQUEL = 1;
+ warn "sbuild: Debian::DistroInfo used: Trisquel\n";
+ } else {
+ $DISTROINFO_CLASS = undef;
+ warn "sbuild: Debian::DistroInfo not available; mmdebstrap extras disabled at build-time\n";
+ }
+}
+
+my $ubuntu_mmdebstrap_extra_args = {};
+my $trisquel_mmdebstrap_extra_args = {};
+
+if (defined $DISTROINFO_CLASS && $DISTROINFO_CLASS eq 'UbuntuDistroInfo') {
+ for my $series (UbuntuDistroInfo->new()->supported()) {
$ubuntu_mmdebstrap_extra_args->{$series} = [ '--components=main,universe' ];
# We use snapshot.ubuntu.com here so it works both for ports and non-ports architectures without having to do complicated architecture detection logic
$ubuntu_mmdebstrap_extra_args->{"$series-proposed"} = [
@@ -63,6 +83,32 @@ for my $series (UbuntuDistroInfo->new()->supported()) {
'--components=main,universe',
'--setup-hook=sed -i /-updates/d "$1"/etc/apt/sources.list',
];
+ }
+}
+
+if (defined $DISTROINFO_CLASS && $DISTROINFO_CLASS eq 'TrisquelDistroInfo') {
+ for my $series (TrisquelDistroInfo->new()->supported()) {
+ $trisquel_mmdebstrap_extra_args->{$series} = [ '--components=main' ];
+ $trisquel_mmdebstrap_extra_args->{"$series-updates"} = [
+ '--components=main',
+ '--include=ca-certificates',
+ '--setup-hook=echo "deb [signed-by=/usr/share/keyrings/trisquel-archive-keyring.gpg] https://archive.trisquel.org/trisquel ' . $series . '-updates main" > "$1"/etc/apt/sources.list.d/updates.list'
+ ];
+ $trisquel_mmdebstrap_extra_args->{"$series-security"} = [
+ '--components=main',
+ '--include=ca-certificates',
+ '--setup-hook=echo "deb [signed-by=/usr/share/keyrings/trisquel-archive-keyring.gpg] https://archive.trisquel.org/trisquel ' . $series . '-security main" > "$1"/etc/apt/sources.list.d/security.list'
+ ];
+ $trisquel_mmdebstrap_extra_args->{"$series-backports"} = [
+ '--components=main',
+ '--include=ca-certificates',
+ '--setup-hook=echo "deb [signed-by=/usr/share/keyrings/trisquel-archive-keyring.gpg] https://archive.trisquel.org/trisquel ' . $series . '-backports main" > "$1"/etc/apt/sources.list.d/backports.list'
+ ];
+ }
+}
+
+if ($IS_TRISQUEL) {
+ $ubuntu_mmdebstrap_extra_args = $trisquel_mmdebstrap_extra_args;
}
sub setup ($);