Spec URL: https://dl.dropbox.com/u/23916303/ee6phiYi/python-evdev.spec SRPM URL: https://dl.dropbox.com/u/23916303/ee6phiYi/python-evdev-0.3.1-1.fc17.src.rpm Description: > Python-evdev provides bindings to the generic input event interface in > Linux. The evdev interface serves the purpose of passing events > generated in the kernel directly to userspace through character > devices that are typically located in /dev/input/. > > Python-evdev also comes with bindings to uinput, the userspace input > subsystem. Uinput allows userspace programs to create and handle input > devices from which input events can be directly injected into the > input subsystem. > $ rpmlint python-evdev.spec > 0 packages and 1 specfiles checked; 0 errors, 0 warnings. I am the upstream maintainer of python-evdev. This is also one of my first package review requests. I would be thankful to anyone willing to sponsor me. Fedora Account System Username: gvalkov Koji Build: https://koji.fedoraproject.org/koji/taskinfo?taskID=4722708
I'm renewing my effort to get this into Fedora. Please consider this comment as the official Review Request, instead of the one above. Spec URL: http://gvalkov.fedorapeople.org/python-evdev-0.4.1/python-evdev.spec SRPM URL: http://gvalkov.fedorapeople.org/python-evdev-0.4.1/python-evdev-0.4.1-1.fc19.src.rpm Description: > Python-evdev provides bindings to the generic input event interface in Linux. > The evdev interface serves the purpose of passing events generated in the > kernel directly to userspace through character devices that are typically > located in /dev/input/. > Python-evdev also comes with bindings to uinput, the userspace input subsystem. > Uinput allows userspace programs to create and handle input devices from which > input events can be directly injected into the input subsystem. > $ rpmlint python-evdev-0.4.1-1.fc19.src.rpm > python-evdev.src: W: spelling-error %description -l en_US userspace -> user space, user-space, users pace > python-evdev.src: W: spelling-error %description -l en_US dev -> deb, derv, div > python-evdev.src: W: spelling-error %description -l en_US uinput -> input, u input, Putin > python-evdev.src: W: spelling-error %description -l en_US Uinput -> Input, U input, Putin > python-evdev.src: W: no-version-in-last-changelog > 1 packages and 0 specfiles checked; 0 errors, 5 warnings. I am the upstream maintainer of python-evdev. This is also one of my first package review requests. I would be thankful to anyone willing to sponsor me. Fedora Account System Username: gvalkov Koji Build: http://koji.fedoraproject.org/koji/taskinfo?taskID=5651095
Hello gvalkov , overall looks tidy >%install >rm -rf %{buildroot} http://fedoraproject.org/wiki/How_to_create_an_RPM_package#.25install_section Removal of %{buildroot} is no longer necessary, except for EPEL 5. Other way spec file looks clean, someone more experienced will have to do a more deep dive intoit. VM
One more comment, i managed to build this SRPM. +1 to Karma :)
1. BuildRequires: python-devel should be python2-devel 2. I suggest you using pypi as Source0, this will safe your time of finding commit numbers ;) 3. You'd better add version and release number in changelog, example like this: * Wed Jul 24 2013 Georgi Valkov <georgi.t.valkov> - 0.4.1-1 - Initial version
Thank you for the reviews, gentlemen. I have updated the spec. > 2. I suggest you using pypi as Source0, this will safe your time of finding commit numbers ;) The source package doesn't include the sphinx docs and the example evtest program :(
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - Permissions on files are not set properly. Note: See rpmlint output See: http://fedoraproject.org/wiki/Packaging/Guidelines#FilePermissions - As you are the upstream author, please add the appropriate license header to all source files. - Not a must, but please consider adding tests and a %check section. ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: Development (unversioned) .so files in -devel subpackage, if present. Note: Unversioned so-files in private %_libdir subdirectory (see attachment). Verify they are not in ld path. [x]: Package does not contain any libtool archives (.la) [x]: Rpath absent or only used for internal libs. Generic: [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Unknown or generated". 27 files have unknown license. Detailed output of licensecheck in /export/home/orion/redhat/python-evdev-0.4.1/review- python-evdev/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: %build honors applicable compiler flags or justifies otherwise. [x]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. Note: Using prebuilt rpms. [x]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [-]: Package contains desktop file if it is a GUI application. [-]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package is named according to the Package Naming Guidelines. [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. [x]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [x]: Useful -debuginfo package or justification otherwise. [x]: Package is not known to require an ExcludeArch tag. [x]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 163840 bytes in 10 files. [x]: Package complies to the Packaging Guidelines [x]: Package installs properly. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: If (and only if) the source package includes the text of the license(s) in its own file, then that file, containing the text of the license(s) for the package is included in %doc. [x]: Package requires other packages for directories it uses. [x]: Package must own all directories that it creates. [x]: Package does not own files or directories owned by other packages. [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: Each %files section contains %defattr if rpm < 4.4 [x]: Macros in Summary, %description expandable at SRPM build time. [x]: Package does not contain duplicates in %files. [x]: Package use %makeinstall only when make install' ' DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [x]: Package do not use a name that already exist [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: File names are valid UTF-8. [x]: Packages must not store files under /srv, /opt or /usr/local Python: [x]: Python eggs must not download any dependencies during the build process. [x]: A package which is used by another package via an egg interface should provide egg info. [x]: Package meets the Packaging Guidelines::Python [x]: Package contains BR: python2-devel or python3-devel [x]: Binary eggs must be removed in %prep ===== SHOULD items ===== Generic: [x]: Reviewer should test that the package builds in mock. [x]: Uses parallel make %{?_smp_mflags} macro. [-]: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [x]: Final provides and requires are sane (see attachments). [x]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in python3-evdev [x]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [x]: Package should compile and build into binary rpms on all supported architectures. [-]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [x]: Dist tag is present (not strictly required in GL). [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: SourceX tarball generation or download is documented. [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: python-evdev-0.4.1-1.fc21.x86_64.rpm python3-evdev-0.4.1-1.fc21.x86_64.rpm python-evdev-0.4.1-1.fc21.src.rpm python-evdev.x86_64: W: spelling-error %description -l en_US userspace -> user space, user-space, users pace python-evdev.x86_64: W: spelling-error %description -l en_US dev -> deb, derv, div python-evdev.x86_64: W: spelling-error %description -l en_US uinput -> input, u input, Putin python-evdev.x86_64: W: spelling-error %description -l en_US Uinput -> Input, U input, Putin python-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python2.7/site-packages/evdev/_input.so 0775L python-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python2.7/site-packages/evdev/_ecodes.so 0775L python-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python2.7/site-packages/evdev/_uinput.so 0775L python-evdev.x86_64: W: doc-file-dependency /usr/share/doc/python-evdev/evtest.py /usr/bin/env python3-evdev.x86_64: W: spelling-error %description -l en_US userspace -> user space, user-space, users pace python3-evdev.x86_64: W: spelling-error %description -l en_US dev -> deb, derv, div python3-evdev.x86_64: W: spelling-error %description -l en_US uinput -> input, u input, Putin python3-evdev.x86_64: W: spelling-error %description -l en_US Uinput -> Input, U input, Putin python3-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python3.3/site-packages/evdev/_uinput.cpython-33m.so 0775L python3-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python3.3/site-packages/evdev/_input.cpython-33m.so 0775L python3-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python3.3/site-packages/evdev/_ecodes.cpython-33m.so 0775L python3-evdev.x86_64: W: doc-file-dependency /usr/share/doc/python3-evdev/evtest.py /usr/bin/env python-evdev.src: W: spelling-error %description -l en_US userspace -> user space, user-space, users pace python-evdev.src: W: spelling-error %description -l en_US dev -> deb, derv, div python-evdev.src: W: spelling-error %description -l en_US uinput -> input, u input, Putin python-evdev.src: W: spelling-error %description -l en_US Uinput -> Input, U input, Putin 3 packages and 0 specfiles checked; 6 errors, 14 warnings. Rpmlint (installed packages) ---------------------------- # rpmlint python3-evdev python-evdev python3-evdev.x86_64: W: spelling-error %description -l en_US userspace -> user space, user-space, users pace python3-evdev.x86_64: W: spelling-error %description -l en_US dev -> deb, derv, div python3-evdev.x86_64: W: spelling-error %description -l en_US uinput -> input, u input, Putin python3-evdev.x86_64: W: spelling-error %description -l en_US Uinput -> Input, U input, Putin python3-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python3.3/site-packages/evdev/_uinput.cpython-33m.so 0775L python3-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python3.3/site-packages/evdev/_input.cpython-33m.so 0775L python3-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python3.3/site-packages/evdev/_ecodes.cpython-33m.so 0775L python3-evdev.x86_64: W: doc-file-dependency /usr/share/doc/python3-evdev/evtest.py /usr/bin/env python-evdev.x86_64: W: spelling-error %description -l en_US userspace -> user space, user-space, users pace python-evdev.x86_64: W: spelling-error %description -l en_US dev -> deb, derv, div python-evdev.x86_64: W: spelling-error %description -l en_US uinput -> input, u input, Putin python-evdev.x86_64: W: spelling-error %description -l en_US Uinput -> Input, U input, Putin python-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python2.7/site-packages/evdev/_input.so 0775L python-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python2.7/site-packages/evdev/_ecodes.so 0775L python-evdev.x86_64: E: non-standard-executable-perm /usr/lib64/python2.7/site-packages/evdev/_uinput.so 0775L python-evdev.x86_64: W: doc-file-dependency /usr/share/doc/python-evdev/evtest.py /usr/bin/env 2 packages and 0 specfiles checked; 6 errors, 10 warnings. # echo 'rpmlint-done:' Requires -------- python3-evdev (rpmlib, GLIBC filtered): /usr/bin/env libc.so.6()(64bit) libpthread.so.0()(64bit) libpython3.3m.so.1.0()(64bit) python(abi) rtld(GNU_HASH) python-evdev (rpmlib, GLIBC filtered): /usr/bin/env libc.so.6()(64bit) libpthread.so.0()(64bit) libpython2.7.so.1.0()(64bit) python(abi) rtld(GNU_HASH) Provides -------- python3-evdev: python3-evdev python3-evdev(x86-64) python-evdev: python-evdev python-evdev(x86-64) Unversioned so-files -------------------- python-evdev: /usr/lib64/python2.7/site-packages/evdev/_ecodes.so python-evdev: /usr/lib64/python2.7/site-packages/evdev/_input.so python-evdev: /usr/lib64/python2.7/site-packages/evdev/_uinput.so python3-evdev: /usr/lib64/python3.3/site-packages/evdev/_ecodes.cpython-33m.so python3-evdev: /usr/lib64/python3.3/site-packages/evdev/_input.cpython-33m.so python3-evdev: /usr/lib64/python3.3/site-packages/evdev/_uinput.cpython-33m.so Source checksums ---------------- https://github.com/gvalkov/python-evdev/archive/5b281884e5e4016becae7f5119c61ff09c864f59/python-evdev-0.4.1-5b28188.tar.gz : CHECKSUM(SHA256) this package : 065a078c87a4ad28e312b7349c046f13716a234f3bf9fad64750f74c9a57f6c1 CHECKSUM(SHA256) upstream package : 065a078c87a4ad28e312b7349c046f13716a234f3bf9fad64750f74c9a57f6c1 Generated by fedora-review 0.5.0 (920221d) last change: 2013-08-30 Command line :/usr/bin/fedora-review -n python-evdev -p Buildroot used: fedora-19-x86_64 Active plugins: Generic, Python, Shell-api, C/C++ Disabled plugins: Java, SugarActivity, Perl, R, PHP, Ruby Disabled flags: EPEL5, EXARCH, DISTTAG
Are you still interested in packaging this?
Yes. I'll update the spec as soon as I push a new python-evdev release (working on force feedback event support at the moment). Thank you for your previous review. Is adding a license header to all source files really necessary?
Yes, because you are the upstream. Plus, it's a good habit.
(In reply to gvalkov from comment #8) > Thank you for your previous review. Is adding a license header to all source > files really necessary? Well, it's not strictly a blocker, but a file's license header is the ultimate authority of the license of that file. If it doesn't have one.... As the upstream author you should get in the habit of properly licensing your files.
pbrobinson's scratch build of linux-user-chroot?#b7afe5173cbd31b029b027b6f8a14baa5e6ce87a for epel7-archbootstrap and git://pkgs.fedoraproject.org/linux-user-chroot?#b7afe5173cbd31b029b027b6f8a14baa5e6ce87a failed http://koji.fedoraproject.org/koji/taskinfo?taskID=12089939
Hello, The Fedora Python packaging guidelines have changed since this package was initially submitted. Please consider reviewing the following spec and SRPMs for version 0.6.1 of python-evdev: Spec URL: https://raw.githubusercontent.com/gvalkov/python-evdev/master/packaging/python-evdev.spec SRPM URL: https://copr-be.cloud.fedoraproject.org/results/gvalkov/python-evdev/fedora-24-i386/00327749-python-evdev/python-evdev-0.6.1-1.fc24.src.rpm Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=14390476 The provided spec file is used to build the python-evdev COPR packages for f23 and f24: https://copr.fedorainfracloud.org/coprs/gvalkov/python-evdev As far as the license headers are concerned, I find them somewhat redundant and I'm not too enthusiastic about adding them to all source files.
%_summary macro is not necessary. Just write out the first Summary normally, and then user "Summary: %summary" in the subsequent ones. %gittag0 is also not necessary. Just use "v%{version}". Group tag is not necessary [https://fedoraproject.org/wiki/Packaging:Guidelines#Tags_and_Sections]. It's nice not to repeat the %description. I'd suggest something like this: %global _description \ This package provides bindings to the generic input event interface in Linux. \ The evdev interface serves the purpose of passing events generated in the kernel\ directly to userspace through character devices that are typically located in \ ... %description %_description %description -n python3-evdev %_description etc. "-n %{name}-%{version}" is exactly the default for %autosetup, so it's not necessary. It's better to specify the files under %{python[23]_sitearch}, rather than using a glob. Something like this: %files -n python3-evdev ... %{python3_sitearch}/evdev/ %{python3_sitearch}/evdev-%{version}-py%{python3_version}.egg-info/ and similarly for python2. This would catch any mistakes in the installation of a wrong version or name. BuildRequires should generally be one-per-line. This makes diffs much more readable. > As far as the license headers are concerned, I find them somewhat redundant and I'm not too enthusiastic about adding them to all source files. Ack. There's no strict requirement for this, and certainly lots of packages don't follow this. The license must be unambiguous, that's all.
Thanks you for the review, Zbigniew. Those were all very valid points, which I hope to have addressed in the latest version of the spec: Spec URL: https://raw.githubusercontent.com/gvalkov/python-evdev/436a967967a862481d7e34c5d243a67351d84500/packaging/python-evdev.spec SRPM URL: https://gvalkov.fedorapeople.org/python-evdev/python-evdev-0.6.1-1.fc24.src.rpm Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=15326372 This is the diff: https://github.com/gvalkov/python-evdev/commit/436a967967a862481d7e34c5d243a67351d84500 > rpmlint python-evdev.spec > 0 packages and 1 specfiles checked; 0 errors, 0 warnings. > rpmlint python3-evdev-0.6.1-1.fc24.x86_64.rpm > python3-evdev.x86_64: W: spelling-error %description -l en_US userspace -> user space, user-space, users pace > python3-evdev.x86_64: W: spelling-error %description -l en_US dev -> deb, derv, div > python3-evdev.x86_64: W: spelling-error %description -l en_US uinput -> input, u input, Putin > python3-evdev.x86_64: W: spelling-error %description -l en_US Uinput -> Input, U input, Putin > python3-evdev.x86_64: E: wrong-script-interpreter /usr/lib64/python3.5/site-packages/evdev/genecodes.py /usr/bin/env python > python3-evdev.x86_64: E: non-executable-script /usr/lib64/python3.5/site-packages/evdev/genecodes.py 644 /usr/bin/env python > python3-evdev.x86_64: E: wrong-script-interpreter /usr/lib64/python3.5/site-packages/evdev/evtest.py /usr/bin/env python > python3-evdev.x86_64: E: non-executable-script /usr/lib64/python3.5/site-packages/evdev/evtest.py 644 /usr/bin/env python > 1 packages and 0 specfiles checked; 4 errors, 4 warnings. Imho, these don't matter, as genecodes and evtest aren't execv-ed as scripts (anymore). I simply forgot to remove the shebang when I made them into executable modules (i.e. python -m evdev.evtest). I'll fix this upstream.
> BuildRequires: python-setuptools BuildRequires: python2-setuptools ;)
Package looks OK.
Doh. Fixed the python-setuptools bit. Spec URL: https://raw.githubusercontent.com/gvalkov/python-evdev/eff6213cf782ad6552a98716516cc0b9c082bedc/packaging/python-evdev.spec SRPM URL: https://gvalkov.fedorapeople.org/python-evdev/python-evdev-0.6.1-1.fc24.src.rpm Koji build: http://koji.fedoraproject.org/koji/taskinfo?taskID=15329370
APPROVED
What's up with this package? I see gvalkov is in packagers group, and fedora-review+ is set.
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/rpms/python-evdev
python-evdev-0.6.1-1.fc25 has been submitted as an update to Fedora 25. https://bodhi.fedoraproject.org/updates/FEDORA-2016-76396fd739
python-evdev-0.6.1-1.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2016-c33638448e
python-evdev-0.6.1-1.fc25 has been pushed to the Fedora 25 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-76396fd739
python-evdev-0.6.1-1.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-c33638448e
python-evdev-0.6.1-1.fc25 has been pushed to the Fedora 25 stable repository. If problems still persist, please make note of it in this bug report.
python-evdev-0.6.1-1.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report.