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.
CC'ing authors of alternative python implementations that allow creation/use/modification of LVM to see if people want to share code.
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 :)
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
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..
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.
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.
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}.
(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
(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.
Clean rpmlint: [dcantrel@rawhide ~]$ rpmlint python-lvm-1.1.1-1.fc17.src.rpm 1 packages and 0 specfiles checked; 0 errors, 0 warnings.
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
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.
New Package SCM Request ======================= Package Name: python-lvm Short Description: Python bindings for LVM Owners: grover Branches: f17 InitialCC:
Git done (by process-git-requests).
(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.)