diff options
author | Pascal Terjan <pterjan@mageia.org> | 2020-03-15 23:14:52 +0000 |
---|---|---|
committer | Pascal Terjan <pterjan@mageia.org> | 2020-03-15 23:16:33 +0000 |
commit | d1617f868b16a297a9644b86b00889b954b450f1 (patch) | |
tree | 9b319a3b2551aabc3e6c7eb779ad5593959cf86a /lib/Iurt/RPM.pm | |
parent | 6511f894ab99f9036505ba315834d2470569c6b9 (diff) | |
download | iurt-d1617f868b16a297a9644b86b00889b954b450f1.tar iurt-d1617f868b16a297a9644b86b00889b954b450f1.tar.gz iurt-d1617f868b16a297a9644b86b00889b954b450f1.tar.bz2 iurt-d1617f868b16a297a9644b86b00889b954b450f1.tar.xz iurt-d1617f868b16a297a9644b86b00889b954b450f1.zip |
Move check_{no,}arch to a new RPM module
They have nothing to do with the config and work on an RPM file.
Diffstat (limited to 'lib/Iurt/RPM.pm')
-rw-r--r-- | lib/Iurt/RPM.pm | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/Iurt/RPM.pm b/lib/Iurt/RPM.pm new file mode 100644 index 0000000..de09ba4 --- /dev/null +++ b/lib/Iurt/RPM.pm @@ -0,0 +1,55 @@ +package Iurt::RPM; + +use base qw(Exporter); +use RPM4::Header; +use MDK::Common; +use strict; + +our @EXPORT = qw( + check_arch + check_noarch +); + +sub check_noarch { + my ($rpm) = @_; + my $hdr = RPM4::Header->new($rpm); + + # Stupid rpm doesn't return an empty list so we must check for (none) + + my ($build_archs) = $hdr->queryformat('%{BUILDARCHS}'); + + if ($build_archs ne '(none)') { + ($build_archs) = $hdr->queryformat('[%{BUILDARCHS} ]'); + my @list = split ' ', $build_archs; + return 1 if member('noarch', @list); + } + + return 0; +} + +sub check_arch { + my ($rpm, $arch) = @_; + my $hdr = RPM4::Header->new($rpm); + + # Stupid rpm doesn't return an empty list so we must check for (none) + + my ($exclusive_arch) = $hdr->queryformat('%{EXCLUSIVEARCH}'); + + if ($exclusive_arch ne '(none)') { + ($exclusive_arch) = $hdr->queryformat('[%{EXCLUSIVEARCH} ]'); + my @list = split ' ', $exclusive_arch; + return 0 unless member($arch, @list); + } + + my ($exclude_arch) = $hdr->queryformat('[%{EXCLUDEARCH} ]'); + + if ($exclude_arch ne '(none)') { + ($exclude_arch) = $hdr->queryformat('[%{EXCLUDEARCH} ]'); + my @list = split ' ', $exclude_arch; + return 0 if member($arch, @list); + } + + return 1; +} + +1; |