Bug 812132 - Review Request: python-lvm - Python module to use LVM
Review Request: python-lvm - Python module to use LVM
Status: CLOSED RAWHIDE
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: David Cantrell
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2012-04-12 16:16 EDT by Andy Grover
Modified: 2012-08-07 19:56 EDT (History)
6 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2012-08-07 19:56:08 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
dcantrell: fedora‑review+
limburgher: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Andy Grover 2012-04-12 16:16:50 EDT
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 16:19:55 EDT
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 16:25:38 EDT
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 15:18:00 EDT
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 15:06:18 EDT
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 09:59:43 EDT
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 13:54:23 EDT
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 14:09:24 EDT
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 16:34:47 EDT
(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 16:46:19 EDT
(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 16:47:20 EDT
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 16:48:08 EDT
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 16:49:17 EDT
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 18:17:32 EDT
New Package SCM Request
=======================
Package Name: python-lvm
Short Description: Python bindings for LVM
Owners: grover
Branches: f17
InitialCC:
Comment 14 Jon Ciesla 2012-05-09 08:32:08 EDT
Git done (by process-git-requests).
Comment 15 Alasdair Kergon 2012-06-14 06:32:29 EDT
(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.