Bug 674006 - Review Request: openni - Library for human-machine Natural Interaction
Review Request: openni - Library for human-machine Natural Interaction
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Rich Mattes
Fedora Extras Quality Assurance
:
Depends On:
Blocks: 674007
  Show dependency treegraph
 
Reported: 2011-01-31 05:18 EST by Tim Niemueller
Modified: 2011-03-02 22:20 EST (History)
3 users (show)

See Also:
Fixed In Version: openni-1.0.0.25-0.3.git4c9ff978.fc14
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2011-02-21 02:29:41 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
richmattes: fedora‑review+
tibbs: fedora‑cvs+


Attachments (Terms of Use)

  None (edit)
Description Tim Niemueller 2011-01-31 05:18:11 EST
Spec URL: http://fedorapeople.org/~timn/robotics/openni.spec
SRPM URL: http://fedorapeople.org/~timn/robotics/openni-1.0.0.25-0.1_git4c9ff978.fc14.src.rpm
Project URL: http://www.openni.org
Description: OpenNI (Open Natural Interaction) is a multi-language, cross-platform framework that defines APIs for writing applications utilizing Natural
Interaction. OpenNI APIs are composed of a set of interfaces for writing NI applications. The main purpose of OpenNI is to form a standard API that enables communication with both:
 * Vision and audio sensors
 * Vision and audio perception middleware

Koji: https://koji.fedoraproject.org/koji/taskinfo?taskID=2750188

rpmlint: 
openni.spec: W: invalid-url Source0: openni-1.0.0.25-git4c9ff978.tar.gz
openni.src: W: invalid-url Source0: openni-1.0.0.25-git4c9ff978.tar.gz
- no tarballs are released, need to pull from git

openni.src: W: spelling-error %description -l en_US multi -> mulch, mufti
openni.src: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
openni.x86_64: W: spelling-error %description -l en_US multi -> mulch, mufti
openni.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
- false positives

openni.x86_64: W: incoherent-version-in-changelog 1.0.0.25-0.1git4c9ff978.fc14 ['1.0.0.25-0.1_git4c9ff978.fc14', '1.0.0.25-0.1_git4c9ff978']
- no dist tag in changelog

openni.x86_64: W: no-soname /usr/lib64/libOpenNI.so
openni.x86_64: W: no-soname /usr/lib64/libnimMockNodes.so
openni.x86_64: W: no-soname /usr/lib64/libnimCodecs.so
openni.x86_64: W: no-soname /usr/lib64/libNiSampleModule.so
openni.x86_64: W: no-soname /usr/lib64/libnimRecorder.so
- their build system does not produce soname/soversion. Will try to add something and get it accepted upstream later.


openni.x86_64: W: no-manual-page-for-binary niLicense
openni.x86_64: W: no-manual-page-for-binary niReg
openni-doc.noarch: W: no-documentation
openni-samples.x86_64: W: no-documentation
openni-samples.x86_64: W: no-manual-page-for-binary NiCRead
openni-samples.x86_64: W: no-manual-page-for-binary NiConvertXToONI
openni-samples.x86_64: W: no-manual-page-for-binary NiAudioSample
openni-samples.x86_64: W: no-manual-page-for-binary NiViewer
openni-samples.x86_64: W: no-manual-page-for-binary NiBackRecorder
openni-samples.x86_64: W: no-manual-page-for-binary NiUserTracker
openni-samples.x86_64: W: no-manual-page-for-binary NiRecordSynthetic
openni-samples.x86_64: W: no-manual-page-for-binary NiSimpleCreate
openni-samples.x86_64: W: no-manual-page-for-binary NiSimpleRead
openni-samples.x86_64: W: no-manual-page-for-binary NiSimpleViewer
- does not exist, -doc contains the doxygen documentation...

5 packages and 1 specfiles checked; 0 errors, 26 warnings.
Comment 1 Rich Mattes 2011-01-31 19:29:34 EST
I'll handle doing this review.

1) The package version is a little wonky.  The package naming guidelines would have you use a format like "1.0.0.25-0.1.%{gitrev}git%{dist}".  Note the dot instead of an underscore between the 0.1 and gitrevision.  Likewise, your changelog entry should read "1.0.0.25-0.1.4c9ff978git".  There are no explicit examples for git, but the svn examples all have "svn" coming after the numbers.  I don't think it matters all that much since the 0.1 part of revision should be bumped each time, nullifying all the junk after the next decimal point.

http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Pre-Release_packages

2) When you install files using the "install" command that ship with the tarball, like the SamplesConfig.xml, you should use -p to preserve the timestamps on the file.

3) Looking at the scriptlets, you're only registering the libraries on a new install, and unregistering them when the package is erased.  Do you have to re-register libraries if they change at all?

4) When you build the source tarball, you should rm -rf the Platform/Win32 folder.  There's a bunch of pre-built windows dll junk and a Visual C++ redistributable in there that don't need to go into the Fedora SCM.
Comment 2 Tim Niemueller 2011-02-01 05:48:54 EST
(In reply to comment #1)
> I'll handle doing this review.

Thanks.

> 1) The package version is a little wonky.  The package naming guidelines would
> have you use a format like "1.0.0.25-0.1.%{gitrev}git%{dist}".  Note the dot
> instead of an underscore between the 0.1 and gitrevision.  Likewise, your
> changelog entry should read "1.0.0.25-0.1.4c9ff978git".  There are no explicit
> examples for git, but the svn examples all have "svn" coming after the numbers.
>  I don't think it matters all that much since the 0.1 part of revision should
> be bumped each time, nullifying all the junk after the next decimal point.
> 
> http://fedoraproject.org/wiki/Packaging/NamingGuidelines#Pre-Release_packages

Changed to use a dot instead of an underscore, not going to change the changelog entry, I want it to be close to the actual version (minus dist tag since it's built on multiple branches).

> 2) When you install files using the "install" command that ship with the
> tarball, like the SamplesConfig.xml, you should use -p to preserve the
> timestamps on the file.

Good point, done.

> 3) Looking at the scriptlets, you're only registering the libraries on a new
> install, and unregistering them when the package is erased.  Do you have to
> re-register libraries if they change at all?

No, therefore the guard. It only writes the file path to an XML file, no symbol or version information or anything else.

> 4) When you build the source tarball, you should rm -rf the Platform/Win32
> folder.  There's a bunch of pre-built windows dll junk and a Visual C++
> redistributable in there that don't need to go into the Fedora SCM.

Done.

New SRPM at http://fedorapeople.org/~timn/robotics/openni-1.0.0.25-0.2.git4c9ff978.fc14.src.rpm. Spec changed in place.
Comment 3 Rich Mattes 2011-02-02 18:50:39 EST
I found a couple more bundled libraries contained in the git tarball.  According to  http://fedoraproject.org/wiki/Packaging:Treatment_Of_Bundled_Libraries, bundled libraries should be deleted explicitly in %prep.  This should include
- Platform/Linux-x86/Build/Prerequisites/libusb-1.0.8.tar.bz2
- Source/External
It also looks like NiSimpleViewer, NiUserTracker, and NiViewer are including their own GL and glut headers.  In order to avoid conflicts with the system libs, you should remove those folders and let the samples use the system headers (doing this in %prep is fine)

It’s not a problem now, but if you do add version suffixes to the libraries, you’ll probably have to un and re-register the libraries on upgrade.  The .so.suffix could change with new api versions.  Also, is niReg creating a file somewhere?  If so, your package should own it if niReg -u doesn’t delete it (so it doesn’t get left behind on uninstall).  

I don’t really understand your rationale for leaving the changelog entry different than the package version number.  Changelog E-V-R doesn’t have anything to do with the source tarball, and the actual version of the package works out to 1.0.0.25-0.2.git4c9ff978.  There shouldn’t be a .fc14 in there either.

+ = OK, - = Needs Attention
[+] MUST: rpmlint must be run on the source rpm and all binary rpms the build produces. The output should be posted in the review.
$ rpmlint openni.spec ../RPMS/x86_64/openni-*
openni.spec: W: invalid-url Source0: openni-1.0.0.25-git4c9ff978.tar.gz
openni.x86_64: W: spelling-error %description -l en_US multi -> mulch, mufti
openni.x86_64: W: spelling-error %description -l en_US middleware -> middle ware, middle-ware, middleweight
openni.x86_64: W: incoherent-version-in-changelog 1.0.0.25-0.2git4c9ff978.fc14 ['1.0.0.25-0.2.git4c9ff978.fc14', '1.0.0.
25-0.2.git4c9ff978']
openni.x86_64: W: no-soname /usr/lib64/libOpenNI.so
openni.x86_64: W: no-soname /usr/lib64/libnimMockNodes.so
openni.x86_64: W: no-soname /usr/lib64/libnimCodecs.so
openni.x86_64: W: no-soname /usr/lib64/libNiSampleModule.so
openni.x86_64: W: no-soname /usr/lib64/libnimRecorder.so
openni.x86_64: W: no-manual-page-for-binary niLicense
openni.x86_64: W: no-manual-page-for-binary niReg
openni-samples.x86_64: W: no-documentation
openni-samples.x86_64: W: no-manual-page-for-binary NiCRead
openni-samples.x86_64: W: no-manual-page-for-binary NiConvertXToONI
openni-samples.x86_64: W: no-manual-page-for-binary NiAudioSample
openni-samples.x86_64: W: no-manual-page-for-binary NiViewer
openni-samples.x86_64: W: no-manual-page-for-binary NiBackRecorder
openni-samples.x86_64: W: no-manual-page-for-binary NiUserTracker
openni-samples.x86_64: W: no-manual-page-for-binary NiRecordSynthetic
openni-samples.x86_64: W: no-manual-page-for-binary NiSimpleCreate
openni-samples.x86_64: W: no-manual-page-for-binary NiSimpleRead
openni-samples.x86_64: W: no-manual-page-for-binary NiSimpleViewer
4 packages and 1 specfiles checked; 0 errors, 22 warnings.

[+] MUST: The package must be named according to the Package Naming Guidelines .
[+] MUST: The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption.
[-] MUST: The package must meet the Packaging Guidelines .
Bundled library and changelog notes above

[+] MUST: The package must be licensed with a Fedora approved license and meet the Licensing Guidelines .
[+] MUST: The License field in the package spec file must match the actual license. 
[-] MUST: 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 must be included in %doc.

Is there any reason the GPL text is also included?

[+] MUST: The spec file must be written in American English. 
[+] MUST: The spec file for the package MUST be legible. 
[N/A] MUST: The sources used to build the package must match the upstream source, as provided in the spec URL. Reviewers should use md5sum for this task. If no upstream URL can be specified for this package, please see the Source URL Guidelines for how to deal with this.
[+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture. 
[N/A] MUST: If the package does not successfully compile, build or work on an architecture, then those architectures should be listed in the spec in ExcludeArch.
[+] MUST: All build dependencies must be listed in BuildRequires, except for any that are listed in the exceptions section of the Packaging Guidelines ; inclusion of those as BuildRequires is optional. Apply common sense.
[N/A] MUST: The spec file MUST handle locales properly. This is done by using the %find_lang macro. Using %{_datadir}/locale/* is strictly forbidden
[+] MUST: Every binary RPM package (or subpackage) which stores shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in %post and %postun. 
[-] MUST: Packages must NOT bundle copies of system libraries.
See above notes.
[N/A] MUST: If the package is designed to be relocatable, the packager must state this fact in the request for review, along with the rationalization for relocation of that specific package.
[+] MUST: A package must own all directories that it creates. If it does not create a directory that it uses, then it should require a package which does create that directory.
[+] MUST: A Fedora package must not list a file more than once in the spec file's %files listings. 
[+] MUST: Permissions on files must be set properly. Executables should be set with executable permissions, for example. Every %files section must include a %defattr(...) line. 
[+] MUST: Each package must consistently use macros. 
[+] MUST: The package must contain code, or permissable content.
[N/A] MUST: Large documentation files must go in a -doc subpackage.
[+] MUST: If a package includes something as %doc, it must not affect the runtime of the application. To summarize: If it is in %doc, the program must run properly if it is not present.
[+] MUST: Header files must be in a -devel package.
[N/A] MUST: Static libraries must be in a -static package.
[N/A] MUST: If a package contains library files with a suffix (e.g. libfoo.so.1.1), then library files that end in .so (without suffix) must go in a -devel package.
[+] MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release}
[+] MUST: Packages must NOT contain any .la libtool archives, these must be removed in the spec if they are built.
[-] MUST: Packages containing GUI applications must include a %{name}.desktop file, and that file must be properly installed with desktop-file-install in the %install section. If you feel that your packaged GUI application does not need a .desktop file, you must put a comment in the spec file with your explanation.
The niViewer stuff in the samples is creating GUIs, you might want to note that you don’t want to include .desktop files.
[+] MUST: Packages must not own files or directories already owned by other packages.
[+] MUST: All filenames in rpm packages must be valid UTF-8.
Comment 4 Tim Niemueller 2011-02-08 16:30:02 EST
(In reply to comment #3)
> libraries should be deleted explicitly in %prep.  This should include

Done.

> It’s not a problem now, but if you do add version suffixes to the libraries,
> you’ll probably have to un and re-register the libraries on upgrade.  The
> .so.suffix could change with new api versions.  Also, is niReg creating a file
> somewhere?  If so, your package should own it if niReg -u doesn’t delete it (so
> it doesn’t get left behind on uninstall).  

The libraries are plugins, therefore they don't need version numbers.


> I don’t really understand your rationale for leaving the changelog entry
> different than the package version number.  Changelog E-V-R doesn’t have
> anything to do with the source tarball, and the actual version of the package
> works out to 1.0.0.25-0.2.git4c9ff978.  There shouldn’t be a .fc14 in there
> either.

I tried to mute rpmlint. But I agree and have removed the dist tag from changelog entries.

> [-] MUST: The package must meet the Packaging Guidelines .
> Bundled library and changelog notes above

Done.

> [-] MUST: 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 must be included in %doc.
> 
> Is there any reason the GPL text is also included?

No, removed.

> [-] MUST: Packages must NOT bundle copies of system libraries.
> See above notes.

It didn't, I patched them out. GL and Libs are deleted in %prep now, glh headers are C++ template headers, which are directly compiled into objects. The libraries are BSD licensed and do not seem to be available stand-alone but only as part of some NVidia SDK.

> [-] MUST: Packages containing GUI applications must include a %{name}.desktop
> file, and that file must be properly installed with desktop-file-install in the
> %install section. If you feel that your packaged GUI application does not need
> a .desktop file, you must put a comment in the spec file with your explanation.
> The niViewer stuff in the samples is creating GUIs, you might want to note that
> you don’t want to include .desktop files.

Added note in %files section.


New SRPM at http://fedorapeople.org/~timn/robotics/openni-1.0.0.25-0.3.git4c9ff978.fc14.src.rpm, spec changed in place.

Changed license to include BSD for glh headers. Renamed samples to examples sub-package.
Comment 5 Rich Mattes 2011-02-09 09:29:18 EST
Alright it looks like you've taken care of everything.  You might want to consider using the %doc macro instead of manually installing the docs in the doc package, e.g. %doc Source/DoxyGen/html/* which will place them in /usr/share/doc.  It makes the file install path consistent with other *-doc packages.

I can't find an active upstream for the glh stuff anywhere.  It’s just used for the example apps and isn’t exposed as an API anywhere, so I think it's safe to just leave it as is.

rpmlint is still complaining about the changelogs because it expects a . in front of "git4c9ff978"

These last comments aren't blockers, just suggestions.  So,

APPROVED
Comment 6 Tim Niemueller 2011-02-10 04:41:55 EST
New Package SCM Request
=======================
Package Name: openni
Short Description: Library for human-machine Natural Interaction
Owners: timn
Branches: f14 f15 el5 el6
InitialCC:
Comment 7 Jason Tibbitts 2011-02-10 09:02:49 EST
Please don't request f15 branches until f15 has actually been branched.

Git done (by process-git-requests).
Comment 8 Fedora Update System 2011-02-11 03:57:40 EST
openni-1.0.0.25-0.3.git4c9ff978.fc14 has been submitted as an update for Fedora 14.
https://admin.fedoraproject.org/updates/openni-1.0.0.25-0.3.git4c9ff978.fc14
Comment 9 Fedora Update System 2011-02-11 03:58:59 EST
openni-1.0.0.25-0.3.git4c9ff978.fc15 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/openni-1.0.0.25-0.3.git4c9ff978.fc15
Comment 10 Fedora Update System 2011-02-11 04:06:27 EST
openni-1.0.0.25-0.4.git4c9ff978.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/openni-1.0.0.25-0.4.git4c9ff978.el6
Comment 11 Fedora Update System 2011-02-13 03:53:11 EST
openni-1.0.0.25-0.3.git4c9ff978.fc14 has been pushed to the Fedora 14 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update openni'.  You can provide feedback for this update here: https://admin.fedoraproject.org/updates/openni-1.0.0.25-0.3.git4c9ff978.fc14
Comment 12 Fedora Update System 2011-02-21 02:29:35 EST
openni-1.0.0.25-0.3.git4c9ff978.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 13 Fedora Update System 2011-02-28 19:01:54 EST
openni-1.0.0.25-0.4.git4c9ff978.el6 has been pushed to the Fedora EPEL 6 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 14 Fedora Update System 2011-03-02 22:20:39 EST
openni-1.0.0.25-0.3.git4c9ff978.fc15 has been pushed to the Fedora 15 stable repository.  If problems still persist, please make note of it in this bug report.

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