[liblinux-distribution-perl] 13/34: CentOS detection
gregor herrmann
gregoa at debian.org
Thu Jun 4 21:35:36 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 061677913b0383fb394e7bc6660f6c38c3b54a57
Author: Alexandr Ciornii <alexchorny at gmail.com>
Date: Sun Dec 5 17:36:30 2010 +0200
CentOS detection
---
Changes | 1 +
lib/Linux/Distribution.pm | 28 +++++++++++++++++++++-------
t/centos.t | 14 ++++++++++++++
t/centos/files | 5 +++++
t/centos/redhat-release | 1 +
5 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/Changes b/Changes
index 64d80e0..3cd613e 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,5 @@
Fixed version detection for Gentoo
+CentOS detection (modified patch from XSAWYERX)
* 2008-11-02 version 0.14_01
diff --git a/lib/Linux/Distribution.pm b/lib/Linux/Distribution.pm
index d57baa6..e3d9855 100644
--- a/lib/Linux/Distribution.pm
+++ b/lib/Linux/Distribution.pm
@@ -12,6 +12,7 @@ our @EXPORT_OK = qw( distribution_name distribution_version );
our $VERSION = '0.14_01';
+our $release_files_directory='/etc';
our $standard_release_file = 'lsb-release';
our %release_files = (
@@ -51,6 +52,7 @@ our %version_match = (
'redhat' => 'Red Hat Linux release (.*) \(',
'slackware' => '^Slackware (.+)$',
'pardus' => '^Pardus (.+)$',
+ 'centos' => '^CentOS release (.+)(?:\s\(Final\))',
);
@@ -80,8 +82,8 @@ sub distribution_name {
}
foreach ('fedora-release') {
- if (-f "/etc/$_" && !-l "/etc/$_"){
- if (-f "/etc/$_" && !-l "/etc/$_"){
+ if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){
+ if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){
$self->{'DISTRIB_ID'} = $release_files{$_};
$self->{'release_file'} = $_;
return $self->{'DISTRIB_ID'};
@@ -90,10 +92,21 @@ sub distribution_name {
}
foreach (keys %release_files) {
- if (-f "/etc/$_" && !-l "/etc/$_"){
- if (-f "/etc/$_" && !-l "/etc/$_"){
- $self->{'DISTRIB_ID'} = $release_files{$_};
+ if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){
+ if (-f "$release_files_directory/$_" && !-l "$release_files_directory/$_"){
+ if ( $release_files{$_} eq 'redhat' ) {
+ $self->{'pattern'} = $version_match{'centos'};
+ $self->{'release_file'}='redhat-release';
+ if ( $self->_get_file_info() ) {
+ $self->{'DISTRIB_ID'} = 'centos';
+ $self->{'release_file'} = $_;
+ return $self->{'DISTRIB_ID'};
+ } else {
+ $self->{'pattern'}='';
+ }
+ }
$self->{'release_file'} = $_;
+ $self->{'DISTRIB_ID'} = $release_files{$_};
return $self->{'DISTRIB_ID'};
}
}
@@ -118,7 +131,7 @@ sub _get_lsb_info {
my $self = shift;
my $field = shift || 'DISTRIB_ID';
my $tmp = $self->{'release_file'};
- if ( -r '/etc/' . $standard_release_file ) {
+ if ( -r "$release_files_directory/" . $standard_release_file ) {
$self->{'release_file'} = $standard_release_file;
$self->{'pattern'} = $field . '=(.+)';
my $info = $self->_get_file_info();
@@ -134,8 +147,9 @@ sub _get_lsb_info {
sub _get_file_info {
my $self = shift;
- open my $fh, '<', '/etc/' . $self->{'release_file'} or die 'Cannot open file: /etc/' . $self->{'release_file'};
+ open my $fh, '<', "$release_files_directory/" . $self->{'release_file'} or die 'Cannot open file: '.$release_files_directory.'/' . $self->{'release_file'};
my $info = '';
+ local $_;
while (<$fh>){
chomp $_;
($info) = $_ =~ m/$self->{'pattern'}/;
diff --git a/t/centos.t b/t/centos.t
new file mode 100644
index 0000000..b8a4c70
--- /dev/null
+++ b/t/centos.t
@@ -0,0 +1,14 @@
+use 5.006000;
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+use lib '../lib/';
+use Linux::Distribution;
+
+local $Linux::Distribution::release_files_directory='centos/';
+my $linux = Linux::Distribution->new;
+my $distro = $linux->distribution_name();
+is($distro,'centos');
+my $version = $linux->distribution_version();
+is ($version,'5.5');
diff --git a/t/centos/files b/t/centos/files
new file mode 100644
index 0000000..36395eb
--- /dev/null
+++ b/t/centos/files
@@ -0,0 +1,5 @@
+exists:
+redhat-release
+do not:
+redhat_version
+lsb-release
diff --git a/t/centos/redhat-release b/t/centos/redhat-release
new file mode 100644
index 0000000..f449f3f
--- /dev/null
+++ b/t/centos/redhat-release
@@ -0,0 +1 @@
+CentOS release 5.5 (Final)
--
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