diff options
-rw-r--r-- | Makefile.PL | 3 | ||||
-rw-r--r-- | URPM.xs | 18 | ||||
-rw-r--r-- | t/parse.t | 3 |
3 files changed, 21 insertions, 3 deletions
diff --git a/Makefile.PL b/Makefile.PL index 5f406d2..50975b1 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -50,6 +50,9 @@ if ($version =~ /^4\.(4\.[5-9]$|4\.\d\d|[5-9]\.|\d\d)/) { if ($version =~ /^4\.4/ && (split(/\./, $version))[2] >= 6) { $ccflags .= ' -DRPM_446'; } +if ($version =~ /^4\.4/ && (split(/\./, $version))[2] >= 8) { + $ccflags .= ' -DRPM_448'; +} WriteMakefile( NAME => 'URPM', @@ -1334,7 +1334,10 @@ Pkg_arch(pkg) int Pkg_is_arch_compat(pkg) URPM::Package pkg + INIT: + char * platform; CODE: + char * arch; read_config_files(0); if (pkg->info) { char *arch; @@ -1342,11 +1345,22 @@ Pkg_is_arch_compat(pkg) get_fullname_parts(pkg, NULL, NULL, NULL, &arch, &eos); *eos = 0; - RETVAL = strcmp(arch, "noarch") == 0 ? 4 : rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch); +#ifdef RPM_448 + platform = rpmExpand(arch, "-%{_real_vendor}-%{_target_os}%{?_gnu}", NULL); + RETVAL = rpmPlatformScore(platform, NULL, 0); +#else + RETVAL = rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch); +#endif *eos = '@'; + free(platform); } else if (pkg->h && headerIsEntry(pkg->h, RPMTAG_SOURCERPM)) { char *arch = get_name(pkg->h, RPMTAG_ARCH); - RETVAL = strcmp(arch, "noarch") == 0 ? 4 : rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch); +#ifdef RPM_448 + platform = rpmExpand(arch, "-%{_real_vendor}-%{_target_os}%{?_gnu}", NULL); + RETVAL = rpmPlatformScore(platform, NULL, 0); +#else + RETVAL = rpmMachineScore(RPM_MACHTABLE_INSTARCH, arch); +#endif } else { RETVAL = 0; } @@ -4,7 +4,7 @@ use strict; use warnings; -use Test::More tests => 39; +use Test::More tests => 40; use MDV::Packdrakeng; use URPM; use URPM::Build; @@ -99,6 +99,7 @@ ok(URPM::rpmvercmp("1:1-1mdk", "2:1-1mdk") == -1, "epoch 1 vs 2 = -1"); is($pkg->get_tag(1001), '1.0'); is($pkg->get_tag(1002), '1mdk'); is($pkg->queryformat("%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}"), "test-rpm-1.0-1mdk.noarch"); + ok($pkg->is_arch_compat(), "Arch compat works"); close $hdfh; } |