[liblinux-distribution-perl] 06/34: import Linux::Distribution 0.13 from CPAN

gregor herrmann gregoa at debian.org
Thu Jun 4 21:35:35 UTC 2015


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to annotated tag v0.22
in repository liblinux-distribution-perl.

commit d42d2bb5806ccd2453ff2ad117f6ed065b11e00c
Author: Re Alberto <kerberus at accidia.net>
Date:   Mon Jan 16 23:29:13 2006 -0800

    import Linux::Distribution 0.13 from CPAN
    
    git-cpan-module: Linux::Distribution
    git-cpan-version: 0.13
---
 Changes                   |  53 +++++-----------------
 META.yml                  |   4 +-
 README                    |  15 ++++--
 lib/Linux/Distribution.pm | 113 +++++++++++++++++++++++++++++++++++++++++-----
 4 files changed, 127 insertions(+), 58 deletions(-)

diff --git a/Changes b/Changes
index 37d8700..f7cc07f 100644
--- a/Changes
+++ b/Changes
@@ -1,59 +1,30 @@
-------------------------------------------------------------------------
-r13 | kerberus | 2005-03-10 08:37:58 +0100 (Thu, 10 Mar 2005) | 2 lines
+* 2006-16-01
+Thanks to Judith Lebzelter now the module gets advantage of the LSB's /etc/lsb-release file.
+Added support for Ubuntu and version information retrieval for gentoo, debian, suse, fedora,
+redhat and slackware.
 
+* 2005-03-10
 Added support for yoper, arch-linux and libranet.
 
-------------------------------------------------------------------------
-r12 | kerberus | 2005-03-09 20:04:12 +0100 (Wed, 09 Mar 2005) | 3 lines
-
+* 2005-03-09
 Cleaned code.
 
-
-------------------------------------------------------------------------
-r10 | kerberus | 2005-03-08 12:16:11 +0100 (Tue, 08 Mar 2005) | 1 line
-
-
-------------------------------------------------------------------------
-r9 | kerberus | 2005-03-08 12:15:48 +0100 (Tue, 08 Mar 2005) | 4 lines
-
+* 2005-03-08
 Version 0.03.
-
 Added support for Adamantix and Trustix.
 
-------------------------------------------------------------------------
-r8 | kerberus | 2005-03-07 23:03:50 +0100 (Mon, 07 Mar 2005) | 4 lines
-
+* 2005-03-07
 Reduced needed perl version to 5.6.0.
-
 Removed copyright line from pod documentation.
 
-------------------------------------------------------------------------
-r6 | kerberus | 2005-03-06 20:29:33 +0100 (Sun, 06 Mar 2005) | 1 line
-
-
-------------------------------------------------------------------------
-r5 | kerberus | 2005-03-06 20:27:46 +0100 (Sun, 06 Mar 2005) | 4 lines
-
+* 2005-03-06
 Version 0.02.
 
-Updated changelog.
-
-------------------------------------------------------------------------
-r4 | kerberus | 2005-03-06 20:25:16 +0100 (Sun, 06 Mar 2005) | 3 lines
-
+* 2005-03-06
 Added support for immunix, conectiva, tinysofa and va-linux.
 
-
-------------------------------------------------------------------------
-r2 | kerberus | 2005-03-06 20:16:36 +0100 (Sun, 06 Mar 2005) | 2 lines
-
+* 2005-03-06
 Updated changelog
 
-------------------------------------------------------------------------
-r1 | kerberus | 2005-03-06 20:14:28 +0100 (Sun, 06 Mar 2005) | 4 lines
-
+* 2005-03-06 20:14:28 +0100
 Version 0.01.
-
-Imported original source tree.
-
-------------------------------------------------------------------------
diff --git a/META.yml b/META.yml
index 1302898..1e65e95 100644
--- a/META.yml
+++ b/META.yml
@@ -1,10 +1,10 @@
 # http://module-build.sourceforge.net/META-spec.html
 #XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
 name:         Linux-Distribution
-version:      0.11
+version:      0.13
 version_from: lib/Linux/Distribution.pm
 installdirs:  site
 requires:
 
 distribution_type: module
-generated_by: ExtUtils::MakeMaker version 6.30
+generated_by: ExtUtils::MakeMaker version 6.17
diff --git a/README b/README
index 9eaa1cd..37e4100 100644
--- a/README
+++ b/README
@@ -1,8 +1,15 @@
-Linux-Distribution version 0.11
+Linux-Distribution version 0.13
 ===============================
 
-This is a module that guess on what kind of linux distribution we are running looking for distro's specific release file into /etc.
-It currently recognize slackware, debian, suse, fedora, redhat, turbolinux, yellowdog, knoppix, mandrake, conectiva, immunix, tinysofa, va-linux, trustix, adamantix, yoper, arch-linux, libranet and gentoo.
+This is a simple module that tries to guess on what linux distribution we are running by looking
+for release's files in /etc.  It now looks for 'lsb-release' first as that should be the most cor-
+rect and adds ubuntu support.  Secondly, it will look for the distro specific files.
+
+It currently recognizes slackware, debian, suse, fedora, redhat, turbolinux, yellowdog, knoppix,
+mandrake, conectiva, immunix, tinysofa, va-linux, trustix, adamantix, yoper, arch-linux, libranet,
+gentoo and ubuntu.
+
+It has function to get the version for debian, suse, redhat, gentoo, slackware and ubuntu(lsb).
 
 INSTALLATION
 
@@ -19,7 +26,7 @@ This module has no dependencies.
 
 COPYRIGHT AND LICENCE
 
-Copyright (C) 2005 by Alberto Re <kerberus at accidia.net>
+Copyright (C) 2006 by Alberto Re <kerberus at accidia.net>
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself, either Perl version 5.8.5 or,
diff --git a/lib/Linux/Distribution.pm b/lib/Linux/Distribution.pm
index 8821f38..76db669 100644
--- a/lib/Linux/Distribution.pm
+++ b/lib/Linux/Distribution.pm
@@ -8,9 +8,11 @@ require Exporter;
 
 our @ISA = qw(Exporter);
 
-our @EXPORT_OK = qw( distribution_name );
+our @EXPORT_OK = qw( distribution_name distribution_version );
 
-our $VERSION = '0.11';
+our $VERSION = '0.13';
+
+our $standard_release_file = 'lsb-release';
 
 our %release_files = (
     'gentoo-release'        => 'gentoo',
@@ -38,42 +40,130 @@ our %release_files = (
     'va-release'            => 'va-linux'
 );
 
+our %version_match = (
+    'gentoo'                => 'Gentoo Base System version (.*)',
+    'debian'                => '(.+)',
+    'suse'                  => 'VERSION = (.*)',
+    'fedora'                => 'Fedora Core release (\d+) \(',
+    'redhat'                => 'Red Hat Linux release (.*) \(',
+    'slackware'             => '^Slackware (.+)$'
+);
+
 
 if ($^O ne 'linux') {
 	require Carp;
 	Carp::croak 'you are trying to use a linux specific module on a different OS';
 }
 
+sub new {
+    my %self = (
+        'DISTRIB_ID'          => '',
+        'DISTRIB_RELEASE'     => '',
+        'DISTRIB_CODENAME'    => '',
+        'DISTRIB_DESCRIPTION' => '',
+        'release_file'        => '',
+        'pattern'             => ''
+    );
+    
+    return bless \%self;
+}
+
 sub distribution_name {
+    my $self = shift || new();
+    my $distro;
+    if ($distro = $self->_get_lsb_info()){
+        $self->{'DISTRIB_ID'} = $distro;
+        return $distro if ($distro = $self->_get_lsb_info());
+    }
     foreach (keys %release_files) {
-        return $release_files{$_} if -f "/etc/$_" && !-l "/etc/$_"
+        if (-f "/etc/$_" && !-l "/etc/$_"){
+            if (-f "/etc/$_" && !-l "/etc/$_"){
+                $self->{'DISTRIB_ID'} = $release_files{$_};
+                $self->{'release_file'} = $_;
+                return $self->{'DISTRIB_ID'};
+            }
+        }
     }
     undef 
 }
 
+sub distribution_version {
+    my $self = shift || new();
+    my $release;
+    return $release if ($release = $self->_get_lsb_info('DISTRIB_RELEASE'));
+    if (! $self->{'DISTRIB_ID'}){
+         $self->distribution_name() or die 'No version because no distro.';
+    }
+    $self->{'pattern'} = $version_match{$self->{'DISTRIB_ID'}};
+    return $self->_get_file_info();
+    undef 
+}
+
+sub _get_lsb_info {
+    my $self = shift;
+    my $field = shift || "DISTRIB_ID";
+    my $tmp = $self->{'release_file'};
+    if ( -f '/etc/' . $standard_release_file ) {
+        $self->{'release_file'} = $standard_release_file;
+        $self->{'pattern'} = $field . '=(.+)';
+        my $info = $self->_get_file_info();
+        return $info if $info;
+    } 
+    $self->{'release_file'} = $tmp;
+    $self->{'pattern'} = '';
+    undef;
+}
+
+sub _get_file_info {
+    my $self = shift;
+    open FH, '/etc/' . $self->{'release_file'} or die 'Cannot open file: /etc/' . $self->{'release_file'};
+    my $info = '';
+    while (<FH>){
+        chomp $_;
+        ($info) = $_ =~ m/$self->{'pattern'}/;
+        return "\L$info" if $info;
+    }
+    undef;
+}
+
 1;
 __END__
 
 
 =head1 NAME
 
-Linux::Distribution - Perl extension to guess on what linux distribution we are running on.
+Linux::Distribution - Perl extension to guess on which Linux distribution we are running.
 
 =head1 SYNOPSIS
 
-  use Linux::Distribution qw(distribution_name);
+  use Linux::Distribution qw(distribution_name distribution_version);
 
   if(my $distro = distribution_name) {
-  	print "you are running $distro\n";
+        my $version = distribution_version();
+  	print "you are running $distro, version $version\n";
   } else {
   	print "distribution unknown\n";
   }
 
+  Or else do it OO:
+
+  use Linux::Distribution qw(distribution_name distribution_version);
+
+  $linux = new Linux::Distribution;
+  if(my $distro = $linux->distribution_name()) {
+        my $version = $linux->distribution_version();
+        print "you are running $distro, version $version\n";
+  } else {
+        print "distribution unknown\n";
+  }
+
 =head1 DESCRIPTION
 
-This is a simple module that try to guess on what linux distribution we are running looking for release's files in /etc.
+This is a simple module that tries to guess on what linux distribution we are running by looking for release's files in /etc.  It now looks for 'lsb-release' first as that should be the most correct and adds ubuntu support.  Secondly, it will look for the distro specific files.
+
+It currently recognizes slackware, debian, suse, fedora, redhat, turbolinux, yellowdog, knoppix, mandrake, conectiva, immunix, tinysofa, va-linux, trustix, adamantix, yoper, arch-linux, libranet, gentoo and ubuntu.
 
-It currently recognize slackware, debian, suse, fedora, redhat, turbolinux, yellowdog, knoppix, mandrake, conectiva, immunix, tinysofa, va-linux, trustix, adamantix, yoper, arch-linux, libranet and gentoo.
+It has function to get the version for debian, suse, redhat, gentoo, slackware and ubuntu(lsb). People running unsupported distro's are greatly encouraged to submit patches :-)
 
 =head2 EXPORT
 
@@ -81,11 +171,12 @@ None by default.
 
 =head1 TODO
 
-Add the capability of recognize the version of the distribution.
+Add the capability of recognize the version of the distribution for all recognized distributions.
 
-=head1 AUTHOR
+=head1 AUTHORS
 
-Alberto Re, E<lt>kerberus at accidia.netE<gt>
+Alberto Re, E<lt>alberto at accidia.netE<gt>
+Judith Lebzelter, E<lt>judith at osdl.orgE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/liblinux-distribution-perl.git



More information about the Pkg-perl-cvs-commits mailing list