[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[SCM] Debian package checker branch, master, updated. 2.5.10-56-g3a62926



The following commit has been merged in the master branch:
commit 8bedbc5ca9be47c4470edc77aa2e0d1a4ee2d5c6
Author: Niels Thykier <niels@thykier.net>
Date:   Mon Jul 16 22:57:17 2012 +0200

    L::I::FrontendUtil: Always use Dpkg::Vendor
    
    Remove the dpkg-vendor usage and instead always use Dpkg::Vendor to
    find the default vendor.  The Dpkg::Vendor API has been marked as
    "stable", so there is no reason why it could not be used by default.
    
    Signed-off-by: Niels Thykier <niels@thykier.net>

diff --git a/debian/changelog b/debian/changelog
index e5bd225..cebb864 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -70,6 +70,10 @@ lintian (2.5.11) UNRELEASED; urgency=low
     + [NT] Bump API for objdump method.
   * lib/Lintian/Collect/Package.pm:
     + [NT] Strip leading slash off files extracted from tar.
+  * lib/Lintian/Internal/FrontendUtil.pm:
+    + [NT] Always use Dpkg::Vendor to determine the default
+      vendor.  Previously dpkg-vendor would be preferred if
+      available.
 
   * man/lintian.pod.in:
     + [NT] Remove documentation about removed options.
diff --git a/lib/Lintian/Internal/FrontendUtil.pm b/lib/Lintian/Internal/FrontendUtil.pm
index d56e86a..664c518 100644
--- a/lib/Lintian/Internal/FrontendUtil.pm
+++ b/lib/Lintian/Internal/FrontendUtil.pm
@@ -21,6 +21,9 @@ use strict;
 use warnings;
 
 use base qw(Exporter);
+
+use Dpkg::Vendor;
+
 use Lintian::Util qw(check_path fail);
 
 our @EXPORT = qw(&check_test_feature &find_default_profile);
@@ -36,65 +39,25 @@ sub check_test_feature{
     return 0;
 }
 
-# _find_parent_vendor_dpkg_vendor($vendor)
-#
-# returns the parent vendor using dpkg-vendor
-sub _find_parent_vendor_dpkg_vendor {
-    my ($cur) = @_;
-    my $par;
-    chomp($par = `dpkg-vendor --vendor "$cur" --query Parent`);
-    # dpkg-vendor returns 1 if there is no parent (because the query failed),
-    # which we translate into ''; but other values suggests an internal
-    # dpkg-vendor error.
-    if ( $? ){
-        my $err = ($? >> 8) & 256;
-        fail('dpkg-vendor failed (status: ' .  ($? >> 8). ").\n") if $err != 1;
-        return '';
-    }
-    return $par;
-}
-
-# _find_parent_vendor_dpkg_vendor($vendor)
-#
-# returns the parent vendor using libdpkg-perl
-#  - assumes Dpkg::Vendor has been required before
-#    being invoked.
-sub _find_parent_vendor_libdpkg_perl {
-    my ($cur) = @_;
-    my $info = Dpkg::Vendor::get_vendor_info($cur);
-    # Cannot happen atm, but in case Dpkg::Vendor changes its internals
-    #  or our code changes
-    fail("Could not look up the parent vendor of $cur.\n") unless $info;
-    return $info->{'Parent'};
-}
-
 # find_default_profile(@prof_path)
 #
 # locates the default profile - used if no profile was explicitly given.
 sub find_default_profile {
     my (@prof_path) = @_;
-    my ($vendor, $orig);
-    # CODE-ref to query for the parent vendor
-    #  $qparent->("Ubuntu") returns Debian
-    #  $qparent->("Debian") returns '' or undef
-    my $qparent;
-    # Use dpkg-vendor if present (unless we are testing our libdpkg-perl code)
-    if(check_path('dpkg-vendor') && !check_test_feature('vendor-libdpkg-perl')){
-        chomp($vendor = `dpkg-vendor --query Vendor`);
-        fail('dpkg-vendor failed (status: ' .  ($? >> 8). ").\n") if $?;
-        $qparent = \&_find_parent_vendor_dpkg_vendor;
-    } else {
-        require Dpkg::Vendor;
-        $vendor = Dpkg::Vendor::get_current_vendor();
-        fail("Could not determine the current vendor.\n") unless $vendor;
-        $qparent = \&_find_parent_vendor_libdpkg_perl;
-    }
-    $orig = $vendor;
+    my $vendor = Dpkg::Vendor::get_current_vendor();
+    fail "Could not determine the current vendor.\n"
+        unless $vendor;
+    my $orig = $vendor; # copy
     while ($vendor) {
         my $p;
         $p = Lintian::Profile->find_profile(lc($vendor), @prof_path);
         last if $p;
-        $vendor = $qparent->($vendor);
+        my $info = Dpkg::Vendor::get_vendor_info ($vendor);
+        # Cannot happen atm, but in case Dpkg::Vendor changes its internals
+        #  or our code changes
+        fail "Could not look up the parent vendor of $vendor.\n"
+            unless $info;
+        $vendor = $info->{'Parent'};
     }
     fail("Could not find a profile for vendor $orig") unless $vendor;
     return lc($vendor);

-- 
Debian package checker


Reply to: