Bug 812132 - Review Request: python-lvm - Python module to use LVM
Summary: Review Request: python-lvm - Python module to use LVM
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: David Cantrell
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-04-12 20:16 UTC by Andy Grover
Modified: 2012-08-07 23:56 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-08-07 23:56:08 UTC
Type: ---
Embargoed:
dcantrell: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Andy Grover 2012-04-12 20:16:50 UTC
Spec URL: http://fedorapeople.org/~grover/new/python-lvm.spec
SRPM URL: http://fedorapeople.org/~grover/new/python-lvm-1.0-1.el6.src.rpm
Description: Python module to allow the creation and use of LVM
logical volumes, physical volumes, and volume groups.

Comment 1 Bill Nottingham 2012-04-12 20:19:55 UTC
CC'ing authors of alternative python implementations that allow creation/use/modification of LVM to see if people want to share code.

Comment 2 Andy Grover 2012-04-12 20:25:38 UTC
I'm planning on using this module for a service I'm working on that will allow remote configuration of a storage appliance.

I'm the upstream maintainer (but not original author) for this module so I'm very open to collaboration -- I just need the functionality from Python :)

Comment 3 Andy Grover 2012-04-17 19:18:00 UTC
Updated.

Spec URL: http://fedorapeople.org/~grover/new/python-lvm.spec
SRPM URL: http://fedorapeople.org/~grover/new/python-lvm-1.1-1.fc17.src.rpm

changes:
- License field was wrong, corrected to LGPLv2+
- New upstream release

Comment 4 Andy Grover 2012-05-03 19:06:18 UTC
dcantrell: I looked at pyparted and saw the capability to create partitions with type 0x8e (LVM) but nothing to do with lvm PVs, VGs, or LVs specifically, right? I believe pyparted and python-lvm may be complimentary.

Still looking for a pkg reviewer..

Comment 5 David Cantrell 2012-05-04 13:59:43 UTC
Correct, pyparted exposes the libparted API to Python programs.  libparted just deals with creating partitions on physical devices.  Functionality beyond that, for example, things that build on top of LVM physical volumes, are out of scope for libparted.  Are pyparted and python-lvm complimentary, yes.  I'll try to work in a review today.

Comment 6 David Cantrell 2012-05-04 17:54:23 UTC
rpmlint output looks good:

[dcantrel@rawhide ~]$ rpmlint python-lvm-1.1-1.fc17.src.rpm 
1 packages and 0 specfiles checked; 0 errors, 0 warnings.

Comment 7 David Cantrell 2012-05-04 18:09:24 UTC
The package looks pretty clean, but I have some questions/concerns:

1) Is the github repo the upstream?

2) Having the source archive be a gzipped tar file but named "v1.1" is bad form.  Please correct this.  See https://fedoraproject.org/wiki/Packaging/SourceURL for more information on options here.  github presents a challenge because there is not a good way for us to reference tar.gz downloads and it is up to the maintainer to create those, though if you are also upstream I would recommend creating those.

3) The license in the spec file is correctly noted as LGPLv2+, but the source archive contains both a copy of the GPLv2+ and LGPLv2+.  Reading the code, I see no mention of GPL-only licensed code.  It's all LGPL.  I would recommend removing the GPLv2+ COPYING file and just keeping the LGPLv2+ file.  In fact, the FSF distributes that file as COPYING.LIB (see ftp://ftp.gnu.org/gnu/Licenses/), which is the name I recommend you use rather than COPYING.LESSER

4) The source archive unpacks to agrover-python-lvm-3363431, which is a little confusing.  If you are generating this archive, please make it %{name}-%{version}.

Comment 8 Andy Grover 2012-05-04 20:34:47 UTC
(In reply to comment #7)
> 1) Is the github repo the upstream?

Yes

> 2) Having the source archive be a gzipped tar file but named "v1.1" is bad
> form.  Please correct this.  See
> https://fedoraproject.org/wiki/Packaging/SourceURL for more information on
> options here.  github presents a challenge because there is not a good way for
> us to reference tar.gz downloads and it is up to the maintainer to create
> those, though if you are also upstream I would recommend creating those.

OK will do.

> 3) The license in the spec file is correctly noted as LGPLv2+, but the source
> archive contains both a copy of the GPLv2+ and LGPLv2+.  Reading the code, I
> see no mention of GPL-only licensed code.  It's all LGPL.  I would recommend
> removing the GPLv2+ COPYING file and just keeping the LGPLv2+ file.  In fact,
> the FSF distributes that file as COPYING.LIB (see
> ftp://ftp.gnu.org/gnu/Licenses/), which is the name I recommend you use rather
> than COPYING.LESSER

I went by this:

http://www.gnu.org/licenses/gpl-howto.html

which renames COPYING.LIB to COPYING.LESSER and recommends COPYING also included since COPYING.LESSER builds on COPYING.

I have left it as-is for now, but am fine with either way.

> 4) The source archive unpacks to agrover-python-lvm-3363431, which is a little
> confusing.  If you are generating this archive, please make it
> %{name}-%{version}.

Will do.

Updated:

Spec URL: http://fedorapeople.org/~grover/new/python-lvm.spec
SRPM URL: http://repos.fedorapeople.org/repos/grover/target/fedora-17/SRPMS/python-lvm-1.1.1-1.fc17.src.rpm

Comment 9 David Cantrell 2012-05-07 20:46:19 UTC
(In reply to comment #8)
> (In reply to comment #7)
> > 2) Having the source archive be a gzipped tar file but named "v1.1" is bad
> > form.  Please correct this.  See
> > https://fedoraproject.org/wiki/Packaging/SourceURL for more information on
> > options here.  github presents a challenge because there is not a good way for
> > us to reference tar.gz downloads and it is up to the maintainer to create
> > those, though if you are also upstream I would recommend creating those.
> 
> OK will do.

Much better now, thanks.

> > 3) The license in the spec file is correctly noted as LGPLv2+, but the source
> > archive contains both a copy of the GPLv2+ and LGPLv2+.  Reading the code, I
> > see no mention of GPL-only licensed code.  It's all LGPL.  I would recommend
> > removing the GPLv2+ COPYING file and just keeping the LGPLv2+ file.  In fact,
> > the FSF distributes that file as COPYING.LIB (see
> > ftp://ftp.gnu.org/gnu/Licenses/), which is the name I recommend you use rather
> > than COPYING.LESSER
> 
> I went by this:
> 
> http://www.gnu.org/licenses/gpl-howto.html
> 
> which renames COPYING.LIB to COPYING.LESSER and recommends COPYING also
> included since COPYING.LESSER builds on COPYING.
> 
> I have left it as-is for now, but am fine with either way.

Huh, well that page is new to me.  I find the FSF's suggestions on how to cram the GPL in to every piece of software is a little unnecessary.  If the license is LGPL, just include that text.  But that's just me.  I have no problems if you want to keep it this way.

> > 4) The source archive unpacks to agrover-python-lvm-3363431, which is a little
> > confusing.  If you are generating this archive, please make it
> > %{name}-%{version}.
> 
> Will do.
> 
> Updated:
> 
> Spec URL: http://fedorapeople.org/~grover/new/python-lvm.spec
> SRPM URL:
> http://repos.fedorapeople.org/repos/grover/target/fedora-17/SRPMS/python-lvm-1.1.1-1.fc17.src.rpm

Looks clean, will post updated rpmlint and build output.

Comment 10 David Cantrell 2012-05-07 20:47:20 UTC
Clean rpmlint:

[dcantrel@rawhide ~]$ rpmlint python-lvm-1.1.1-1.fc17.src.rpm 
1 packages and 0 specfiles checked; 0 errors, 0 warnings.

Comment 11 David Cantrell 2012-05-07 20:48:08 UTC
Clean build:

Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.KoCoh7
+ umask 022
+ cd /home/dcantrel/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /home/dcantrel/rpmbuild/BUILD
+ rm -rf python-lvm-1.1.1
+ /usr/bin/tar -xf -
+ /usr/bin/gzip -dc /home/dcantrel/rpmbuild/SOURCES/python-lvm-1.1.1.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd python-lvm-1.1.1
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.KWgWfo
+ umask 022
+ cd /home/dcantrel/rpmbuild/BUILD
+ cd python-lvm-1.1.1
+ LANG=C
+ export LANG
+ unset DISPLAY
+ /usr/bin/python setup.py build
running build
running build_ext
building 'lvm' extension
creating build
creating build/temp.linux-x86_64-2.7
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c liblvm.c -o build/temp.linux-x86_64-2.7/liblvm.o
creating build/lib.linux-x86_64-2.7
gcc -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-2.7/liblvm.o -L/usr/lib64 -llvm2app -lpython2.7 -o build/lib.linux-x86_64-2.7/lvm.so
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.yIzEzG
+ umask 022
+ cd /home/dcantrel/rpmbuild/BUILD
+ '[' /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64 '!=' / ']'
+ rm -rf /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64
++ dirname /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64
+ mkdir -p /home/dcantrel/rpmbuild/BUILDROOT
+ mkdir /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64
+ cd python-lvm-1.1.1
+ LANG=C
+ export LANG
+ unset DISPLAY
+ /usr/bin/python setup.py install --skip-build --root /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64
running install
running install_lib
creating /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr
creating /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/lib64
creating /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/lib64/python2.7
creating /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/lib64/python2.7/site-packages
copying build/lib.linux-x86_64-2.7/lvm.so -> /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/lib64/python2.7/site-packages
running install_egg_info
Writing /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/lib64/python2.7/site-packages/lvm-1.1.1-py2.7.egg-info
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/dcantrel/rpmbuild/BUILD/python-lvm-1.1.1
extracting debug info from /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/lib64/python2.7/site-packages/lvm.so
57 blocks
+ '[' '%{buildarch}' = noarch ']'
+ QA_CHECK_RPATHS=1
+ case "${QA_CHECK_RPATHS:-}" in
+ /usr/lib/rpm/check-rpaths
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
Bytecompiling .py files below /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/lib64/python2.7/ using /usr/bin/python2.7
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: python-lvm-1.1.1-1.fc18.x86_64
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.1QVaL3
+ umask 022
+ cd /home/dcantrel/rpmbuild/BUILD
+ cd python-lvm-1.1.1
+ DOCDIR=/home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/share/doc/python-lvm-1.1.1
+ export DOCDIR
+ /usr/bin/mkdir -p /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/share/doc/python-lvm-1.1.1
+ cp -pr COPYING COPYING.LESSER README /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64/usr/share/doc/python-lvm-1.1.1
+ exit 0
Provides: lvm.so()(64bit) python-lvm = 1.1.1-1.fc18 python-lvm(x86-64) = 1.1.1-1.fc18
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) liblvm2app.so.2.2()(64bit) liblvm2app.so.2.2(Base)(64bit) libpthread.so.0()(64bit) libpython2.7.so.1.0()(64bit) python(abi) = 2.7 rtld(GNU_HASH)
Processing files: python-lvm-debuginfo-1.1.1-1.fc18.x86_64
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64
Wrote: /home/dcantrel/rpmbuild/SRPMS/python-lvm-1.1.1-1.fc18.src.rpm
Wrote: /home/dcantrel/rpmbuild/RPMS/x86_64/python-lvm-1.1.1-1.fc18.x86_64.rpm
Wrote: /home/dcantrel/rpmbuild/RPMS/x86_64/python-lvm-debuginfo-1.1.1-1.fc18.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.VGw7hE
+ umask 022
+ cd /home/dcantrel/rpmbuild/BUILD
+ cd python-lvm-1.1.1
+ /usr/bin/rm -rf /home/dcantrel/rpmbuild/BUILDROOT/python-lvm-1.1.1-1.fc18.x86_64
+ exit 0

Comment 12 David Cantrell 2012-05-07 20:49:17 UTC
I approve, with the added comment that I personally don't feel it necessary to include the text of the GPL in a source release that's released under the LGPL.

Comment 13 Andy Grover 2012-05-08 22:17:32 UTC
New Package SCM Request
=======================
Package Name: python-lvm
Short Description: Python bindings for LVM
Owners: grover
Branches: f17
InitialCC:

Comment 14 Gwyn Ciesla 2012-05-09 12:32:08 UTC
Git done (by process-git-requests).

Comment 15 Alasdair Kergon 2012-06-14 10:32:29 UTC
(This looks to be a basic python wrapper around liblvm that we should probably distribute alongside liblvm itself in future, ensuring the two keep in sync with each other.)


Note You need to log in before you can comment on or make changes to this bug.