Hi release team, I'd like to ask for a freeze exception for liblinux-lvm-perl. I've just uploaded 0.14-1 to unstable, which fixes an RC bug: #488205 The package has mostly been prepared by David Bremner, and he did the tests to make sure the bug is fixed; cf. his comments in the bug report. This is a new upstream release but the actual changes are only in one file (LVM.pm), so backporting them would just shift the diff from upstream to debian/patches. We tried to keep the changes in debian/* to a minimum. I'm attaching the debdiff output between 0.13-2 and 0.14-1. Cheers, gregor -- .''`. http://info.comodo.priv.at/ | gpg key ID: 0x00F3CFE4 : :' : debian gnu/linux user, admin & developer - http://www.debian.org/ `. `' member of https://www.vibe.at/ | how to reply: http://got.to/quote/ `- NP: Ostbahn-Kurti & Die Chefpartie: Tequila Sunrise
diff -Nru liblinux-lvm-perl-0.13/Changes liblinux-lvm-perl-0.14/Changes
--- liblinux-lvm-perl-0.13/Changes 2003-04-10 14:48:39.000000000 +0200
+++ liblinux-lvm-perl-0.14/Changes 2008-07-02 09:54:21.000000000 +0200
@@ -14,7 +14,11 @@
- Added some basic error checking.
0.13 Mon Apr 10 07:45:00 2003
- - Reworked some of the regule expressions.
+ - Reworked some of the regular expressions.
- Improved the source documentation.
- Added some examples of how to use the module.
+0.14 Wed Jul 2 02:54:14 CDT 2008
+ - Fixed some logic errors to get it working a little better
+ - Full rewrite underway
+
diff -Nru liblinux-lvm-perl-0.13/LVM.pm liblinux-lvm-perl-0.14/LVM.pm
--- liblinux-lvm-perl-0.13/LVM.pm 2003-04-09 21:55:57.000000000 +0200
+++ liblinux-lvm-perl-0.14/LVM.pm 2008-07-02 09:53:41.000000000 +0200
@@ -36,7 +36,7 @@
get_lv_info
);
-our $VERSION = '0.13';
+our $VERSION = '0.14';
# Preloaded methods go here.
@@ -151,177 +151,196 @@
my $lvn;
my $pvn;
- if( ! -e "/sbin/vgdisplay" ) { die("LVM utilities not installed in /sbin"); }
- my @vginfo = `/sbin/vgdisplay -v`;
+ if( ! -e "/usr/sbin/vgdisplay" ) { die("LVM utilities not installed in /sbin"); }
+ my @vginfo = `/usr/sbin/vgdisplay -v`;
VGINF: foreach(@vginfo) {
+ chomp;
+ s/^\s+//g;
+ s/\s+$//g;
+ next VGINF if m/^$/;
# Parse the volume group name.
- if( m/^VG Name\s+(\S+)/ ) {
+ if( m/VG Name\s+(\S+)/ ) {
$vgn = $1; $vghash{$vgn}->{vgname} = $1;
next VGINF; }
# Parse the volume group access.
- elsif( m/^VG Access\s+(\S+)/ ) {
+ elsif( m/VG Access\s+(\S+)/ ) {
$vghash{$vgn}->{access} = $1;
next VGINF; }
# Parse the volume group status.
- elsif( m/^VG Status\s+(.+)/ ) {
+ elsif( m/VG Status\s+(.+)/ ) {
$vghash{$vgn}->{status} = $1;
next VGINF; }
# Parse the volume group number.
- elsif( m/^VG #\s+(\S+)/ ) {
+ elsif( m/VG #\s+(\S+)/ ) {
$vghash{$vgn}->{vg_number} = $1;
next VGINF; }
# Parse the maximum logical volume size and size unit for the volume group.
- elsif( m/^MAX LV Size\s+(\S+) (\S+)/ ) {
+ elsif( m/MAX LV Size\s+(\S+) (\S+)/ ) {
$vghash{$vgn}->{max_lv_size} = $1;
$vghash{$vgn}->{max_lv_size_unit} = $2;
next VGINF; }
# Parse the maximum number of logical volumes for the volume group.
- elsif( m/^MAX LV\s+(\S+)/ ) {
+ elsif( m/MAX LV\s+(\S+)/ ) {
$vghash{$vgn}->{max_lv} = $1;
next VGINF; }
# Parse the current number of logical volumes for the volume group.
- elsif( m/^Cur LV\s+(\S+)/ ) {
+ elsif( m/Cur LV\s+(\S+)/ ) {
$vghash{$vgn}->{cur_lv} = $1;
next VGINF; }
# Parse the number of open logical volumes for the volume group.
- elsif( m/^Open LV\s+(\S+)/ ) {
+ elsif( m/Open LV\s+(\S+)/ ) {
$vghash{$vgn}->{open_lv} = $1;
next VGINF; }
# Parse the number of physical volumes accessible to the volume group.
- elsif( m/^Max PV\s+(\S+)/ ) {
+ elsif( m/Max PV\s+(\S+)/ ) {
$vghash{$vgn}->{max_pv} = $1;
next VGINF; }
# Parse the current number of physical volumes in the volume group.
- elsif( m/^Cur PV\s+(\S+)/ ) {
+ elsif( m/Cur PV\s+(\S+)/ ) {
$vghash{$vgn}->{cur_pv} = $1;
next VGINF; }
# Parse the number of active physical volumes in the volume group.
- elsif( m/^Act PV\s+(\S+)/ ) {
+ elsif( m/Act PV\s+(\S+)/ ) {
$vghash{$vgn}->{act_pv} = $1;
next VGINF; }
# Parse the size of the volume group.
- elsif( m/^VG Size\s+(\S+) (\S+)/ ) {
+ elsif( m/VG Size\s+(\S+) (\S+)/ ) {
$vghash{$vgn}->{vg_size} = $1;
$vghash{$vgn}->{vg_size_unit} = $2;
next VGINF; }
# Parse the physical extent size and unit for one extent of volume group.
- elsif( m/^PE Size\s+(\S+) (\S+)/ ) {
+ elsif( m/PE Size\s+(\S+) (\S+)/ ) {
$vghash{$vgn}->{pe_size} = $1;
$vghash{$vgn}->{pe_size_unit} = $2;
next VGINF; }
# Parse the total number and number of free physical extents from the physical disk.
- elsif( m/^Total PE \/ Free PE\s+(\S+) \/ (\S+)/m ) {
+ elsif( m/Total PE \/ Free PE\s+(\S+) \/ (\S+)/m ) {
$vghash{$vgn}->{pvols}->{$pvn}->{total_pe} = $1;
$vghash{$vgn}->{pvols}->{$pvn}->{free_pe} = $2;
next VGINF; }
# Parse the total number of physical extents from the volume group.
- elsif( m/^Total PE\s+(\S+)/ ) {
+ elsif( m/Total PE\s+(\S+)/ ) {
$vghash{$vgn}->{total_pe} = $1;
next VGINF; }
# Parse the number of allocated physical extents from the volume group.
- elsif( m/^Alloc PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
+ elsif( m/Alloc PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
$vghash{$vgn}->{alloc_pe} = $1;
$vghash{$vgn}->{alloc_pe_size} = $2;
$vghash{$vgn}->{alloc_pe_size_unit} = $3;
next VGINF; }
# Parse the volume group name.
- elsif( m/^Free PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
+ elsif( m/Free PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
$vghash{$vgn}->{free_pe} = $1;
$vghash{$vgn}->{free_pe_size} = $2;
$vghash{$vgn}->{free_pe_size_unit} = $3;
next VGINF; }
# Parse the volume group uuid.
- elsif( m/^VG UUID\s+(\S+)/ ) {
+ elsif( m/VG UUID\s+(\S+)/ ) {
$vghash{$vgn}->{uuid} = $1;
next VGINF; }
# Parse the logical volume name.
- elsif( m/^LV Name\s+(\S+)/ ) {
+ elsif( m/LV Name\s+(\S+)/ ) {
$lvn = $1;
$vghash{$vgn}->{lvols}->{$lvn}->{name} = $1;
next VGINF; }
+ # Parse the logical volume UUID.
+ elsif( m/LV UUID\s+(\S+)/ ) {
+ $vghash{$vgn}->{lvols}->{$lvn}->{uuid} = $1;
+ next VGINF; }
+
+ # Parse the logical volume UUID.
+ elsif( m/Segments\s+(\S+)/ ) {
+ $vghash{$vgn}->{lvols}->{$lvn}->{segments} = $1;
+ next VGINF; }
+
# Parse the logical volume size and unit.
- elsif( m/^LV Size\s+(\S+) (\S+)/ ) {
+ elsif( m/LV Size\s+(\S+) (\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{lv_size} = $1;
$vghash{$vgn}->{lvols}->{$lvn}->{lv_size_unit} = $2;
next VGINF; }
# Parse the logical volume write access.
- elsif( m/^LV Write Access\s+(\S+)/ ) {
+ elsif( m/LV Write Access\s+(\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{write_access} = $1;
next VGINF; }
# Parse the logical volume status.
- elsif( m/^LV Status\s+(.+)/ ) {
+ elsif( m/LV Status\s+(.+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{status} = $1;
next VGINF; }
# Parse the number of logical extents in the logical volume.
- elsif( m/^Current LE\s+(\S+)/ ) {
+ elsif( m/Current LE\s+(\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{cur_le} = $1;
next VGINF; }
# Parse the number of allocated logical extents in the logical volume.
- elsif( m/^Allocated LE\s+(\S+)/ ) {
+ elsif( m/Allocated LE\s+(\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{alloc_le} = $1;
next VGINF; }
# Parse the allocation type for the logical volume.
- elsif( m/^Allocation\s+(.+)/ ) {
+ elsif( m/Allocation\s+(.+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{allocation} = $1;
next VGINF; }
# Parse the volume number.
- elsif( m/^LV #\s+(\S+)/ ) {
+ elsif( m/LV #\s+(\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{lv_number} = $1;
next VGINF; }
# Parse the number of times the logical volume is open.
- elsif( m/^# open\s+(\S+)/ ) {
+ elsif( m/# open\s+(\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{open_lv} = $1;
next VGINF; }
# Parse the block device of the logical volume.
- elsif( m/^Block device\s+(\S+)/ ) {
+ elsif( m/Block device\s+(\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{device} = $1;
next VGINF; }
# Parse the value for the read ahead sectors of the logical volume.
- elsif( m/^Read ahead sectors\s+(\S+)/ ) {
+ elsif( m/Read ahead sectors\s+(\S+)/ ) {
$vghash{$vgn}->{lvols}->{$lvn}->{read_ahead} = $1;
next VGINF; }
# Parse the physical disk name.
- elsif( m/^PV Name \(\#\)\s+(\S+) \((\S)\)/ ) {
- $pvn = $2;
+ elsif( m/PV Name\s+(\S+)/ ) {
+ $pvn = $1;
$vghash{$vgn}->{pvols}->{$pvn}->{device} = $1;
- $vghash{$vgn}->{pvols}->{$pvn}->{pv_number} = $2;
next VGINF; }
# Parse the status of the physical disk.
- elsif( m/^PV Status\s+(.+)/ ) {
+ elsif( m/PV Status\s+(.+)/ ) {
$vghash{$vgn}->{pvols}->{$pvn}->{status} = $1;
next VGINF; }
+
+ # Parse the status of the physical disk.
+ elsif( m/PV UUID\s+(.+)/ ) {
+ $vghash{$vgn}->{pvols}->{$pvn}->{uuid} = $1;
+ next VGINF; }
+
}
return %vghash;
} # End of the get_vg_information routine.
@@ -342,71 +361,69 @@
my %pvhash;
if( ! -e "$pvname" ) { die("Physical Disk: $pvname does not exist."); }
- if( ! -e "/sbin/pvdisplay" ) { die("LVM utilities not installed in /sbin"); }
- my @pvinfo = `/sbin/pvdisplay $pvname`;
+ if( ! -e "/usr/sbin/pvdisplay" ) { die("LVM utilities not installed in /sbin"); }
+ my @pvinfo = `/usr/sbin/pvdisplay $pvname`;
PVINF: foreach(@pvinfo) {
# Get the name of the physical volume.
- if( m/^PV Name\s+(\S+)/ ) {
+ if( m/PV Name\s+(\S+)/ ) {
$pvhash{pv_name} = $1;
next PVINF; }
# Get the name of the volume group the physical volume belongs to.
- if( m/^VG Name\s+(\S+)/ ) {
+ if( m/VG Name\s+(\S+)/ ) {
$pvhash{vg_name} = $1;
next PVINF; }
# Get the size information of the physical volume.
- if( m/^PV Size\s+(\S+) (\S+) \[(\S+) secs\] \/ (.+)/ ) {
+ if( m/PV Size\s+(\S+) (\S+)/ ) {
$pvhash{size} = $1;
$pvhash{size_unit} = $2;
- $pvhash{sectors} = $3;
- $pvhash{size_info} = $4;
next PVINF; }
# Get the physical volume number.
- if( m/^PV\#\s+(\S+)/ ) {
+ if( m/PV\#\s+(\S+)/ ) {
$pvhash{pv_number} = $1;
next PVINF; }
# Get the status of the physical volume.
- if( m/^PV Status\s+(.+)/ ) {
+ if( m/PV Status\s+(.+)/ ) {
$pvhash{status} = $1;
next PVINF; }
# Get the allocation status of the physical volume.
- if( m/^Allocatable\s+(.+)/ ) {
+ if( m/Allocatable\s+(.+)/ ) {
$pvhash{allocatable} = $1;
next PVINF; }
# Get the number of logical volumes on the physical volume.
- if( m/^Cur LV\s+(\S+)/ ) {
+ if( m/Cur LV\s+(\S+)/ ) {
$pvhash{num_lvols} = $1;
next PVINF; }
# Get the physical extent size and unit of the physical volume.
- if( m/^PE Size \((\S+)\)\s+(\S+)/ ) {
+ if( m/PE Size \((\S+)\)\s+(\S+)/ ) {
$pvhash{pe_size} = $2;
$pvhash{pe_size_unit} = $1;
next PVINF; }
# Get the total numver of physical extents on the physical volume.
- if( m/^Total PE\s+(\S+)/ ) {
+ if( m/Total PE\s+(\S+)/ ) {
$pvhash{total_pe} = $1;
next PVINF; }
# Get the number of free extents on the physical volume.
- if( m/^Free PE\s+(\S+)/ ) {
+ if( m/Free PE\s+(\S+)/ ) {
$pvhash{free_pe} = $1;
next PVINF; }
# Get the number of allocated physical extents on the physical volume.
- if( m/^Allocated PE\s+(\S+)/ ) {
+ if( m/Allocated PE\s+(\S+)/ ) {
$pvhash{alloc_pe} = $1;
next PVINF; }
# Get the UUID of the physical volume.
- if( m/^PV UUID\s+(\S+)/ ) {
+ if( m/PV UUID\s+(\S+)/ ) {
$pvhash{uuid} = $1;
next PVINF; }
}
@@ -428,69 +445,74 @@
my $lvname = $_[0];
my %lvhash;
if( ! -e "$lvname" ) { die("Logical Disk: $lvname does not exist."); }
- if( ! -e "/sbin/lvdisplay" ) { die("LVM utilities not installed in /sbin"); }
- my @lvinfo = `/sbin/lvdisplay $lvname`;
+ if( ! -e "/usr/sbin/lvdisplay" ) { die("LVM utilities not installed in /sbin"); }
+ my @lvinfo = `/usr/sbin/lvdisplay $lvname`;
LVINF: foreach(@lvinfo) {
# Get the logical volume name.
- if( m/^LV Name\s+(\S+)/ ) {
+ if( m/LV Name\s+(\S+)/ ) {
$lvhash{lv_name} = $1;
next LVINF; }
# Get the volume group name.
- if( m/^VG Name\s+(\S+)/ ) {
+ if( m/VG Name\s+(\S+)/ ) {
$lvhash{vg_name} = $1;
next LVINF; }
+ # Get the volume group name.
+ if( m/LV UUID\s+(\S+)/ ) {
+ $lvhash{uuid} = $1;
+ next LVINF; }
+
# Get the logical volume write status.
- if( m/^LV Write Access\s+(.+)/ ) {
+ if( m/LV Write Access\s+(.+)/ ) {
$lvhash{access} = $1;
next LVINF; }
# Get the logical volume status.
- if( m/^LV Status\s+(.+)/ ) {
+ if( m/LV Status\s+(.+)/ ) {
$lvhash{status} = $1;
next LVINF; }
# Get the logical volume number.
- if( m/^LV \#\s+(\S+)/ ) {
+ if( m/LV \#\s+(\S+)/ ) {
$lvhash{lv_number} = $1;
next LVINF; }
# Get the number of opens for the logical volume.
- if( m/^\# open\s+(\S+)/ ) {
+ if( m/\# open\s+(\S+)/ ) {
$lvhash{lv_open} = $1;
next LVINF; }
# Get the logical volume size and size unit.
- if( m/^LV Size\s+(\S+) (\S+)/ ) {
+ if( m/LV Size\s+(\S+) (\S+)/ ) {
$lvhash{size} = $1;
$lvhash{size_unit} = $2;
next LVINF; }
# Get the number of extents assigned to the logical volume.
- if( m/^Current LE\s+(\S+)/ ) {
+ if( m/Current LE\s+(\S+)/ ) {
$lvhash{current_le} = $1;
next LVINF; }
# Get the number of extents allocated to the logical volume.
- if( m/^Allocated LE\s+(\S+)/ ) {
+ if( m/Allocated LE\s+(\S+)/ ) {
$lvhash{alloc_le} = $1;
next LVINF; }
# Get the extent allocation type of the logical volume.
- if( m/^Allocation\s+(.+)/ ) {
+ if( m/Allocation\s+(.+)/ ) {
$lvhash{allocation} = $1;
next LVINF; }
# Get the number of read ahead sectors for the logical volume.
- if( m/^Read ahead sectors\s+(\S+)/ ) {
+ if( m/Read ahead sectors\s+(\S+)/ ) {
$lvhash{read_ahead} = $1;
next LVINF; }
# Get the block device of the logical volume.
- if( m/^Block device\s+(\S+)/ ) {
+ if( m/Block device\s+(\S+)/ ) {
$lvhash{block_device} = $1;
next LVINF; }
}
diff -Nru liblinux-lvm-perl-0.13/MANIFEST liblinux-lvm-perl-0.14/MANIFEST
--- liblinux-lvm-perl-0.13/MANIFEST 2003-04-10 15:04:05.000000000 +0200
+++ liblinux-lvm-perl-0.14/MANIFEST 2008-07-02 09:55:20.000000000 +0200
@@ -7,3 +7,4 @@
examples/get_lv_info.pl
examples/get_pv_info.pl
examples/prt_vg_info.pl
+META.yml Module meta-data (added by MakeMaker)
diff -Nru liblinux-lvm-perl-0.13/META.yml liblinux-lvm-perl-0.14/META.yml
--- liblinux-lvm-perl-0.13/META.yml 1970-01-01 01:00:00.000000000 +0100
+++ liblinux-lvm-perl-0.14/META.yml 2008-07-02 09:55:20.000000000 +0200
@@ -0,0 +1,10 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
+name: Linux-LVM
+version: 0.14
+version_from: LVM.pm
+installdirs: site
+requires:
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.30
diff -Nru liblinux-lvm-perl-0.13/README liblinux-lvm-perl-0.14/README
--- liblinux-lvm-perl-0.13/README 2003-04-04 15:02:52.000000000 +0200
+++ liblinux-lvm-perl-0.14/README 2008-03-02 03:29:00.000000000 +0100
@@ -1,4 +1,4 @@
-Linux/LVM version 0.01
+Linux/LVM version 0.14
======================
This module was written so that I could create my own disk allocation
@@ -22,7 +22,7 @@
COPYRIGHT AND LICENCE
-Copyright (C) 2003 Chad Kerner
+Copyright (C) 2008 Chad Kerner
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff -Nru liblinux-lvm-perl-0.13/debian/README.source liblinux-lvm-perl-0.14/debian/README.source
--- liblinux-lvm-perl-0.13/debian/README.source 1970-01-01 01:00:00.000000000 +0100
+++ liblinux-lvm-perl-0.14/debian/README.source 2008-08-28 17:14:47.000000000 +0200
@@ -0,0 +1,5 @@
+This package uses quilt to manage all modifications to the upstream
+source. Changes are stored in the source package as diffs in
+debian/patches and applied during the build.
+
+See /usr/share/doc/quilt/README.source for a detailed explanation.
diff -Nru liblinux-lvm-perl-0.13/debian/changelog liblinux-lvm-perl-0.14/debian/changelog
--- liblinux-lvm-perl-0.13/debian/changelog 2008-08-28 17:14:46.000000000 +0200
+++ liblinux-lvm-perl-0.14/debian/changelog 2008-08-28 17:14:47.000000000 +0200
@@ -1,3 +1,23 @@
+liblinux-lvm-perl (0.14-1) unstable; urgency=low
+
+ [ Jeremiah C. Foster ]
+ * New upstream release (Closes: #488205)
+
+ [ David Bremner ]
+ * Remove obsolete patch for whitespace in command output (fixed upstream)
+ * Patch /usr/sbin paths to /sbin
+ * Add myself to uploaders
+ * Add lvm2 to Recommends
+ * Fix broken long/short description
+
+ [ gregor herrmann ]
+ * Set Standards-Version to 3.8.0.
+ * Add debian/README.source to document quilt usage, as required by
+ Debian Policy since 3.8.0.
+ * debian/copyright: update year of copyright.
+
+ -- David Bremner <bremner@unb.ca> Thu, 28 Aug 2008 14:54:50 +0000
+
liblinux-lvm-perl (0.13-2) unstable; urgency=low
* Added myself as an uploader
diff -Nru liblinux-lvm-perl-0.13/debian/control liblinux-lvm-perl-0.14/debian/control
--- liblinux-lvm-perl-0.13/debian/control 2008-08-28 17:14:46.000000000 +0200
+++ liblinux-lvm-perl-0.14/debian/control 2008-08-28 17:14:47.000000000 +0200
@@ -4,8 +4,8 @@
Build-Depends: debhelper (>= 5.0.0), quilt
Build-Depends-Indep: perl (>= 5.8.8-11.1)
Maintainer: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
-Uploaders: Jeremiah C. Foster <jeremiah@jeremiahfoster.com>, Gunnar Wolf <gwolf@debian.org>
-Standards-Version: 3.7.3
+Uploaders: Jeremiah C. Foster <jeremiah@jeremiahfoster.com>, Gunnar Wolf <gwolf@debian.org>, David Bremner <bremner@unb.ca>
+Standards-Version: 3.8.0
Vcs-Svn: svn://svn.debian.org/pkg-perl/trunk/liblinux-lvm-perl/
Vcs-Browser: http://svn.debian.org/wsvn/pkg-perl/trunk/liblinux-lvm-perl/
Homepage: http://search.cpan.org/dist/Linux::LVM/
@@ -13,5 +13,7 @@
Package: liblinux-lvm-perl
Architecture: all
Depends: ${perl:Depends}
-Description: Perl extension for accessing Logical Volume Manager(LVM)
- data structures on Linux.
+Recommends: lvm2
+Description: module to access LVM status information in perl scripts
+ Linux::LVM parses the output from vgdisplay, pvdisplay, and lvdisplay and
+ makes it available as a Perl hash.
diff -Nru liblinux-lvm-perl-0.13/debian/copyright liblinux-lvm-perl-0.14/debian/copyright
--- liblinux-lvm-perl-0.13/debian/copyright 2008-08-28 17:14:46.000000000 +0200
+++ liblinux-lvm-perl-0.14/debian/copyright 2008-08-28 17:14:47.000000000 +0200
@@ -6,7 +6,7 @@
The upstream author is: Chad Kerner, <chadkerner@yahoo.com>.
-Copyright (c) 2003 Chad Kerner
+Copyright (c) 2008 Chad Kerner
This module is free software. It may be used, redistributed
and/or modified under the same terms as Perl itself.
diff -Nru liblinux-lvm-perl-0.13/debian/patches/binaries_in_sbin liblinux-lvm-perl-0.14/debian/patches/binaries_in_sbin
--- liblinux-lvm-perl-0.13/debian/patches/binaries_in_sbin 1970-01-01 01:00:00.000000000 +0100
+++ liblinux-lvm-perl-0.14/debian/patches/binaries_in_sbin 2008-08-28 17:14:47.000000000 +0200
@@ -0,0 +1,35 @@
+--- liblinux-lvm-perl.orig/LVM.pm
++++ liblinux-lvm-perl/LVM.pm
+@@ -151,8 +151,8 @@
+ my $lvn;
+ my $pvn;
+
+- if( ! -e "/usr/sbin/vgdisplay" ) { die("LVM utilities not installed in /sbin"); }
+- my @vginfo = `/usr/sbin/vgdisplay -v`;
++ if( ! -e "/sbin/vgdisplay" ) { die("LVM utilities not installed in /sbin"); }
++ my @vginfo = `/sbin/vgdisplay -v`;
+
+ VGINF: foreach(@vginfo) {
+ chomp;
+@@ -361,8 +361,8 @@
+ my %pvhash;
+
+ if( ! -e "$pvname" ) { die("Physical Disk: $pvname does not exist."); }
+- if( ! -e "/usr/sbin/pvdisplay" ) { die("LVM utilities not installed in /sbin"); }
+- my @pvinfo = `/usr/sbin/pvdisplay $pvname`;
++ if( ! -e "/sbin/pvdisplay" ) { die("LVM utilities not installed in /sbin"); }
++ my @pvinfo = `/sbin/pvdisplay $pvname`;
+
+ PVINF: foreach(@pvinfo) {
+ # Get the name of the physical volume.
+@@ -445,8 +445,8 @@
+ my $lvname = $_[0];
+ my %lvhash;
+ if( ! -e "$lvname" ) { die("Logical Disk: $lvname does not exist."); }
+- if( ! -e "/usr/sbin/lvdisplay" ) { die("LVM utilities not installed in /sbin"); }
+- my @lvinfo = `/usr/sbin/lvdisplay $lvname`;
++ if( ! -e "/sbin/lvdisplay" ) { die("LVM utilities not installed in /sbin"); }
++ my @lvinfo = `/sbin/lvdisplay $lvname`;
+
+ LVINF: foreach(@lvinfo) {
+
diff -Nru liblinux-lvm-perl-0.13/debian/patches/process_whitespace_in_command_output liblinux-lvm-perl-0.14/debian/patches/process_whitespace_in_command_output
--- liblinux-lvm-perl-0.13/debian/patches/process_whitespace_in_command_output 2008-08-28 17:14:46.000000000 +0200
+++ liblinux-lvm-perl-0.14/debian/patches/process_whitespace_in_command_output 1970-01-01 01:00:00.000000000 +0100
@@ -1,360 +0,0 @@
-Index: liblinux-lvm-perl/LVM.pm
-===================================================================
---- liblinux-lvm-perl.orig/LVM.pm 2008-05-26 11:52:05.000000000 -0500
-+++ liblinux-lvm-perl/LVM.pm 2008-05-26 11:53:06.000000000 -0500
-@@ -157,169 +157,169 @@
- VGINF: foreach(@vginfo) {
-
- # Parse the volume group name.
-- if( m/^VG Name\s+(\S+)/ ) {
-+ if( m/^\s*VG Name\s+(\S+)/ ) {
- $vgn = $1; $vghash{$vgn}->{vgname} = $1;
- next VGINF; }
-
- # Parse the volume group access.
-- elsif( m/^VG Access\s+(\S+)/ ) {
-+ elsif( m/^\s*VG Access\s+(\S+)/ ) {
- $vghash{$vgn}->{access} = $1;
- next VGINF; }
-
- # Parse the volume group status.
-- elsif( m/^VG Status\s+(.+)/ ) {
-+ elsif( m/^\s*VG Status\s+(.+)/ ) {
- $vghash{$vgn}->{status} = $1;
- next VGINF; }
-
- # Parse the volume group number.
-- elsif( m/^VG #\s+(\S+)/ ) {
-+ elsif( m/^\s*VG #\s+(\S+)/ ) {
- $vghash{$vgn}->{vg_number} = $1;
- next VGINF; }
-
- # Parse the maximum logical volume size and size unit for the volume group.
-- elsif( m/^MAX LV Size\s+(\S+) (\S+)/ ) {
-+ elsif( m/^\s*MAX LV Size\s+(\S+) (\S+)/ ) {
- $vghash{$vgn}->{max_lv_size} = $1;
- $vghash{$vgn}->{max_lv_size_unit} = $2;
- next VGINF; }
-
- # Parse the maximum number of logical volumes for the volume group.
-- elsif( m/^MAX LV\s+(\S+)/ ) {
-+ elsif( m/^\s*MAX LV\s+(\S+)/ ) {
- $vghash{$vgn}->{max_lv} = $1;
- next VGINF; }
-
- # Parse the current number of logical volumes for the volume group.
-- elsif( m/^Cur LV\s+(\S+)/ ) {
-+ elsif( m/^\s*Cur LV\s+(\S+)/ ) {
- $vghash{$vgn}->{cur_lv} = $1;
- next VGINF; }
-
- # Parse the number of open logical volumes for the volume group.
-- elsif( m/^Open LV\s+(\S+)/ ) {
-+ elsif( m/^\s*Open LV\s+(\S+)/ ) {
- $vghash{$vgn}->{open_lv} = $1;
- next VGINF; }
-
- # Parse the number of physical volumes accessible to the volume group.
-- elsif( m/^Max PV\s+(\S+)/ ) {
-+ elsif( m/^\s*Max PV\s+(\S+)/ ) {
- $vghash{$vgn}->{max_pv} = $1;
- next VGINF; }
-
- # Parse the current number of physical volumes in the volume group.
-- elsif( m/^Cur PV\s+(\S+)/ ) {
-+ elsif( m/^\s*Cur PV\s+(\S+)/ ) {
- $vghash{$vgn}->{cur_pv} = $1;
- next VGINF; }
-
- # Parse the number of active physical volumes in the volume group.
-- elsif( m/^Act PV\s+(\S+)/ ) {
-+ elsif( m/^\s*Act PV\s+(\S+)/ ) {
- $vghash{$vgn}->{act_pv} = $1;
- next VGINF; }
-
- # Parse the size of the volume group.
-- elsif( m/^VG Size\s+(\S+) (\S+)/ ) {
-+ elsif( m/^\s*VG Size\s+(\S+) (\S+)/ ) {
- $vghash{$vgn}->{vg_size} = $1;
- $vghash{$vgn}->{vg_size_unit} = $2;
- next VGINF; }
-
- # Parse the physical extent size and unit for one extent of volume group.
-- elsif( m/^PE Size\s+(\S+) (\S+)/ ) {
-+ elsif( m/^\s*PE Size\s+(\S+) (\S+)/ ) {
- $vghash{$vgn}->{pe_size} = $1;
- $vghash{$vgn}->{pe_size_unit} = $2;
- next VGINF; }
-
- # Parse the total number and number of free physical extents from the physical disk.
-- elsif( m/^Total PE \/ Free PE\s+(\S+) \/ (\S+)/m ) {
-+ elsif( m/^\s*Total PE \/ Free PE\s+(\S+) \/ (\S+)/m ) {
- $vghash{$vgn}->{pvols}->{$pvn}->{total_pe} = $1;
- $vghash{$vgn}->{pvols}->{$pvn}->{free_pe} = $2;
- next VGINF; }
-
- # Parse the total number of physical extents from the volume group.
-- elsif( m/^Total PE\s+(\S+)/ ) {
-+ elsif( m/^\s*Total PE\s+(\S+)/ ) {
- $vghash{$vgn}->{total_pe} = $1;
- next VGINF; }
-
- # Parse the number of allocated physical extents from the volume group.
-- elsif( m/^Alloc PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
-+ elsif( m/^\s*Alloc PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
- $vghash{$vgn}->{alloc_pe} = $1;
- $vghash{$vgn}->{alloc_pe_size} = $2;
- $vghash{$vgn}->{alloc_pe_size_unit} = $3;
- next VGINF; }
-
- # Parse the volume group name.
-- elsif( m/^Free PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
-+ elsif( m/^\s*Free PE \/ Size\s+(\S+) \/ (\S+) (\S+)/ ) {
- $vghash{$vgn}->{free_pe} = $1;
- $vghash{$vgn}->{free_pe_size} = $2;
- $vghash{$vgn}->{free_pe_size_unit} = $3;
- next VGINF; }
-
- # Parse the volume group uuid.
-- elsif( m/^VG UUID\s+(\S+)/ ) {
-+ elsif( m/^\s*VG UUID\s+(\S+)/ ) {
- $vghash{$vgn}->{uuid} = $1;
- next VGINF; }
-
- # Parse the logical volume name.
-- elsif( m/^LV Name\s+(\S+)/ ) {
-+ elsif( m/^\s*LV Name\s+(\S+)/ ) {
- $lvn = $1;
- $vghash{$vgn}->{lvols}->{$lvn}->{name} = $1;
- next VGINF; }
-
- # Parse the logical volume size and unit.
-- elsif( m/^LV Size\s+(\S+) (\S+)/ ) {
-+ elsif( m/^\s*LV Size\s+(\S+) (\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{lv_size} = $1;
- $vghash{$vgn}->{lvols}->{$lvn}->{lv_size_unit} = $2;
- next VGINF; }
-
- # Parse the logical volume write access.
-- elsif( m/^LV Write Access\s+(\S+)/ ) {
-+ elsif( m/^\s*LV Write Access\s+(\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{write_access} = $1;
- next VGINF; }
-
- # Parse the logical volume status.
-- elsif( m/^LV Status\s+(.+)/ ) {
-+ elsif( m/^\s*LV Status\s+(.+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{status} = $1;
- next VGINF; }
-
- # Parse the number of logical extents in the logical volume.
-- elsif( m/^Current LE\s+(\S+)/ ) {
-+ elsif( m/^\s*Current LE\s+(\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{cur_le} = $1;
- next VGINF; }
-
- # Parse the number of allocated logical extents in the logical volume.
-- elsif( m/^Allocated LE\s+(\S+)/ ) {
-+ elsif( m/^\s*Allocated LE\s+(\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{alloc_le} = $1;
- next VGINF; }
-
- # Parse the allocation type for the logical volume.
-- elsif( m/^Allocation\s+(.+)/ ) {
-+ elsif( m/^\s*Allocation\s+(.+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{allocation} = $1;
- next VGINF; }
-
- # Parse the volume number.
-- elsif( m/^LV #\s+(\S+)/ ) {
-+ elsif( m/^\s*LV #\s+(\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{lv_number} = $1;
- next VGINF; }
-
- # Parse the number of times the logical volume is open.
-- elsif( m/^# open\s+(\S+)/ ) {
-+ elsif( m/^\s*# open\s+(\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{open_lv} = $1;
- next VGINF; }
-
- # Parse the block device of the logical volume.
-- elsif( m/^Block device\s+(\S+)/ ) {
-+ elsif( m/^\s*Block device\s+(\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{device} = $1;
- next VGINF; }
-
- # Parse the value for the read ahead sectors of the logical volume.
-- elsif( m/^Read ahead sectors\s+(\S+)/ ) {
-+ elsif( m/^\s*Read ahead sectors\s+(\S+)/ ) {
- $vghash{$vgn}->{lvols}->{$lvn}->{read_ahead} = $1;
- next VGINF; }
-
- # Parse the physical disk name.
-- elsif( m/^PV Name \(\#\)\s+(\S+) \((\S)\)/ ) {
-+ elsif( m/^\s*PV Name \(\#\)\s+(\S+) \((\S)\)/ ) {
- $pvn = $2;
- $vghash{$vgn}->{pvols}->{$pvn}->{device} = $1;
- $vghash{$vgn}->{pvols}->{$pvn}->{pv_number} = $2;
- next VGINF; }
-
- # Parse the status of the physical disk.
-- elsif( m/^PV Status\s+(.+)/ ) {
-+ elsif( m/^\s*PV Status\s+(.+)/ ) {
- $vghash{$vgn}->{pvols}->{$pvn}->{status} = $1;
- next VGINF; }
- }
-@@ -347,17 +347,17 @@
-
- PVINF: foreach(@pvinfo) {
- # Get the name of the physical volume.
-- if( m/^PV Name\s+(\S+)/ ) {
-+ if( m/^\s*PV Name\s+(\S+)/ ) {
- $pvhash{pv_name} = $1;
- next PVINF; }
-
- # Get the name of the volume group the physical volume belongs to.
-- if( m/^VG Name\s+(\S+)/ ) {
-+ if( m/^\s*VG Name\s+(\S+)/ ) {
- $pvhash{vg_name} = $1;
- next PVINF; }
-
- # Get the size information of the physical volume.
-- if( m/^PV Size\s+(\S+) (\S+) \[(\S+) secs\] \/ (.+)/ ) {
-+ if( m/^\s*PV Size\s+(\S+) (\S+) \[(\S+) secs\] \/ (.+)/ ) {
- $pvhash{size} = $1;
- $pvhash{size_unit} = $2;
- $pvhash{sectors} = $3;
-@@ -365,48 +365,48 @@
- next PVINF; }
-
- # Get the physical volume number.
-- if( m/^PV\#\s+(\S+)/ ) {
-+ if( m/^\s*PV\#\s+(\S+)/ ) {
- $pvhash{pv_number} = $1;
- next PVINF; }
-
- # Get the status of the physical volume.
-- if( m/^PV Status\s+(.+)/ ) {
-+ if( m/^\s*PV Status\s+(.+)/ ) {
- $pvhash{status} = $1;
- next PVINF; }
-
- # Get the allocation status of the physical volume.
-- if( m/^Allocatable\s+(.+)/ ) {
-+ if( m/^\s*Allocatable\s+(.+)/ ) {
- $pvhash{allocatable} = $1;
- next PVINF; }
-
- # Get the number of logical volumes on the physical volume.
-- if( m/^Cur LV\s+(\S+)/ ) {
-+ if( m/^\s*Cur LV\s+(\S+)/ ) {
- $pvhash{num_lvols} = $1;
- next PVINF; }
-
- # Get the physical extent size and unit of the physical volume.
-- if( m/^PE Size \((\S+)\)\s+(\S+)/ ) {
-+ if( m/^\s*PE Size \((\S+)\)\s+(\S+)/ ) {
- $pvhash{pe_size} = $2;
- $pvhash{pe_size_unit} = $1;
- next PVINF; }
-
- # Get the total numver of physical extents on the physical volume.
-- if( m/^Total PE\s+(\S+)/ ) {
-+ if( m/^\s*Total PE\s+(\S+)/ ) {
- $pvhash{total_pe} = $1;
- next PVINF; }
-
- # Get the number of free extents on the physical volume.
-- if( m/^Free PE\s+(\S+)/ ) {
-+ if( m/^\s*Free PE\s+(\S+)/ ) {
- $pvhash{free_pe} = $1;
- next PVINF; }
-
- # Get the number of allocated physical extents on the physical volume.
-- if( m/^Allocated PE\s+(\S+)/ ) {
-+ if( m/^\s*Allocated PE\s+(\S+)/ ) {
- $pvhash{alloc_pe} = $1;
- next PVINF; }
-
- # Get the UUID of the physical volume.
-- if( m/^PV UUID\s+(\S+)/ ) {
-+ if( m/^\s*PV UUID\s+(\S+)/ ) {
- $pvhash{uuid} = $1;
- next PVINF; }
- }
-@@ -434,63 +434,63 @@
- LVINF: foreach(@lvinfo) {
-
- # Get the logical volume name.
-- if( m/^LV Name\s+(\S+)/ ) {
-+ if( m/^\s*LV Name\s+(\S+)/ ) {
- $lvhash{lv_name} = $1;
- next LVINF; }
-
- # Get the volume group name.
-- if( m/^VG Name\s+(\S+)/ ) {
-+ if( m/^\s*VG Name\s+(\S+)/ ) {
- $lvhash{vg_name} = $1;
- next LVINF; }
-
- # Get the logical volume write status.
-- if( m/^LV Write Access\s+(.+)/ ) {
-+ if( m/^\s*LV Write Access\s+(.+)/ ) {
- $lvhash{access} = $1;
- next LVINF; }
-
- # Get the logical volume status.
-- if( m/^LV Status\s+(.+)/ ) {
-+ if( m/^\s*LV Status\s+(.+)/ ) {
- $lvhash{status} = $1;
- next LVINF; }
-
- # Get the logical volume number.
-- if( m/^LV \#\s+(\S+)/ ) {
-+ if( m/^\s*LV \#\s+(\S+)/ ) {
- $lvhash{lv_number} = $1;
- next LVINF; }
-
- # Get the number of opens for the logical volume.
-- if( m/^\# open\s+(\S+)/ ) {
-+ if( m/^\s*\# open\s+(\S+)/ ) {
- $lvhash{lv_open} = $1;
- next LVINF; }
-
- # Get the logical volume size and size unit.
-- if( m/^LV Size\s+(\S+) (\S+)/ ) {
-+ if( m/^\s*LV Size\s+(\S+) (\S+)/ ) {
- $lvhash{size} = $1;
- $lvhash{size_unit} = $2;
- next LVINF; }
-
- # Get the number of extents assigned to the logical volume.
-- if( m/^Current LE\s+(\S+)/ ) {
-+ if( m/^\s*Current LE\s+(\S+)/ ) {
- $lvhash{current_le} = $1;
- next LVINF; }
-
- # Get the number of extents allocated to the logical volume.
-- if( m/^Allocated LE\s+(\S+)/ ) {
-+ if( m/^\s*Allocated LE\s+(\S+)/ ) {
- $lvhash{alloc_le} = $1;
- next LVINF; }
-
- # Get the extent allocation type of the logical volume.
-- if( m/^Allocation\s+(.+)/ ) {
-+ if( m/^\s*Allocation\s+(.+)/ ) {
- $lvhash{allocation} = $1;
- next LVINF; }
-
- # Get the number of read ahead sectors for the logical volume.
-- if( m/^Read ahead sectors\s+(\S+)/ ) {
-+ if( m/^\s*Read ahead sectors\s+(\S+)/ ) {
- $lvhash{read_ahead} = $1;
- next LVINF; }
-
- # Get the block device of the logical volume.
-- if( m/^Block device\s+(\S+)/ ) {
-+ if( m/^\s*Block device\s+(\S+)/ ) {
- $lvhash{block_device} = $1;
- next LVINF; }
- }
diff -Nru liblinux-lvm-perl-0.13/debian/patches/series liblinux-lvm-perl-0.14/debian/patches/series
--- liblinux-lvm-perl-0.13/debian/patches/series 2008-08-28 17:14:46.000000000 +0200
+++ liblinux-lvm-perl-0.14/debian/patches/series 2008-08-28 17:14:47.000000000 +0200
@@ -1 +1 @@
-process_whitespace_in_command_output
+binaries_in_sbin
diff -Nru liblinux-lvm-perl-0.13/examples/get_lv_info.pl liblinux-lvm-perl-0.14/examples/get_lv_info.pl
--- liblinux-lvm-perl-0.13/examples/get_lv_info.pl 2003-04-10 14:45:53.000000000 +0200
+++ liblinux-lvm-perl-0.14/examples/get_lv_info.pl 2007-10-25 21:07:24.000000000 +0200
@@ -1,7 +1,7 @@
use Linux::LVM;
-%hash = get_lv_info("/dev/vg00/code");
+%hash = get_lv_info("/dev/vg00/software");
foreach(sort keys %hash) {
print "$_ = $hash{$_} \n";
diff -Nru liblinux-lvm-perl-0.13/examples/get_pv_info.pl liblinux-lvm-perl-0.14/examples/get_pv_info.pl
--- liblinux-lvm-perl-0.13/examples/get_pv_info.pl 2003-04-10 14:47:13.000000000 +0200
+++ liblinux-lvm-perl-0.14/examples/get_pv_info.pl 2008-03-02 03:42:47.000000000 +0100
@@ -1,7 +1,10 @@
use Linux::LVM;
+use Data::Dumper;
-%hash = get_pv_info("/dev/hdb");
+%hash = get_pv_info("/dev/hdd1");
+
+print Dumper(\%hash);
foreach(sort keys %hash) {
print "$_ = $hash{$_} \n";
Attachment:
signature.asc
Description: Digital signature