Bug 717337

Summary: Review Request: URCU - Userspace RCU Implementation
Product: [Fedora] Fedora Reporter: Yannick Brosseau <greenscientist>
Component: Package ReviewAssignee: Bill Nottingham <notting>
Status: CLOSED DUPLICATE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: fedora-package-review, notting, pbonzini, rvokal, veeti.paananen, yannick.brosseau
Target Milestone: ---Flags: notting: fedora-review?
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-06-13 22:48:35 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Yannick Brosseau 2011-06-28 15:20:37 UTC
Spec URL: http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SPECS/urcu.spec 
SRPM URL: http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SRPMS/liburcu-0.6.3-1.src.rpm
Description: Userspace RCU  (read-copy-update) Implementation from LTTng UST.
This data synchronization library provides read-side access which scales linearly with the number of cores. It does so by allowing multiples copies of a given data structure to live at the same time, and by monitoring the data structure accesses to detect grace periods after which memory reclamation is possible. 

http://www.lttng.org/urcu/

Needed by the UST - the LTTng Userspace tracer that will be posted shortly.

Comment 1 Yannick Brosseau 2011-06-28 15:33:52 UTC
This is my first Fedora package, so I'll need a sponsor.

Comment 2 Veeti Paananen 2011-06-29 19:25:27 UTC
Some comments:

1. The spec file should be named after the package (so it should be "liburcu.spec").

2. The License should be "LGPLv2+" instead.

3. The Release tag should be in the format "1%{?dist}".

4. The build should be done with "make %{?_smp_mflags}".

5. The libraries seem to include rpaths (http://fedoraproject.org/wiki/Packaging:Guidelines#Beware_of_Rpath).

Comment 3 Yannick Brosseau 2011-06-29 20:38:39 UTC
(In reply to comment #2)
> Some comments:

Thank you for the feedbacks,

I've posted an update spec and srpm:

http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SPECS/liburcu.spec
http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SRPMS/liburcu-0.6.3-1.fc15.src.rpm

Comment 4 Paolo Bonzini 2011-07-01 12:21:33 UTC
An alternative way to fix the rpath problem is to rebuild autoconf-generated files at RPM build time.  This has the advantage of incorporating bugfixes to autoconf/automake/libtool automatically.

So that would be

BuildRequires:  pkgconfig, autoconf, automake, libtool
...
%build
autoreconf -fvi
%configure

without the sed lines mentioned in the packaging guidelines.  I'll let you and other reviewers decide the preferred resolution.

Comment 5 Yannick Brosseau 2011-07-05 21:19:00 UTC
(In reply to comment #4)
> 
> without the sed lines mentioned in the packaging guidelines.  I'll let you and
> other reviewers decide the preferred resolution.

Looks cleaner. I'll see if there is other opinions on the subject

Comment 6 Yannick Brosseau 2011-09-01 19:51:57 UTC
I've put a new SPEC and SRPM with small fixes

Spec URL: http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SPECS/urcu.spec 
SRPM URL:
http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SRPMS/liburcu-0.6.3-2.fc15.src.rpm

Comment 7 Michael Schwendt 2011-09-18 12:00:59 UTC
Several of the findings in comment 2 have not been added to the spec file and have not been commented on either. Please respond to reviewers' comments even if you disagree with them.


> License:        LGPL v2 or later

The correct license identifier really is "LGPLv2+" as pointed out in comment 2. The related guidelines are these:

https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#Valid_License_Short_Names


Writing this comment I noticed the linked spec file is out-of-date and doesn't match the latest src.rpm. Hmmm... continueing with the src.rpm then:


> License:        LGPLv2

So, same comment as above applies. ;)


> Name:           liburcu
> Group:          Development/Libraries

Dunno whether or when RPM will get rid of these Group tags (if at all), but library base packages typically belong into

  Group: System Environment/Libraries


> %description
> Userspace RCU (Read-Copy-Update) Implementation from the LTTng project.

Very brief and reads more like a summary. The top lines at http://lttng.org/urcu/ contain a somewhat more detailed description that could be copied and modified slightly to build a more detailed description:

| This package contains liburcu, a userspace RCU (read-copy-update)
| library. This data synchronization library provides read-side access
| which scales linearly with the number of cores. It does so by allowing
| multiples copies of a given data structure to live at the same time,
| and by monitoring the data structure accesses to detect grace periods
| after which memory reclamation is possible.

What do you think?


> ExclusiveArch:  %ix86 x86_64 ppc ppc64 s390 s390x

Based on
http://fedoraproject.org/wiki/Architectures#ExcludeArch_.26_ExclusiveArch
I recommend dropping this, especially since no spec file comment gives a strong rationale.


> %package -n liburcu-devel
> Requires:       liburcu = %{version}-%{release}

Be aware of %{?_isa} having entered the guidelines as a MUST item:
https://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package


> autoreconf -fvi

No strong feelings here. Just know that depending on what versions of the GNU Autotools may be required by the liburcu build files, a full autoreconf may cause broken builds. Sometimes without terminating the RPM package build job.


> make  %{?_smp_mflags}

For more verbose build.log output, this one works:

  V=1 make %{?_smp_mflags}


> %files -n liburcu-devel
> %{_prefix}/include/*

Note that %{_includedir} exists, too, and is the one set by the %configure macro.

As convenient as wildcards may be, with some packages, it can also be beneficial to be a little bit more specific about what file names to include, e.g.

  %{_includedir}/urcu*

or even

  %{_includedir}/urcu/
  %{_includedir}/urcu*.h

would implicitly protect against unexpected renames during package version upgrades. You would learn about substantial changes below %_includedir due to the build failing. Not mandatory, of course.


> %{_libdir}/*.a

https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Static_Libraries


> # rpmlint *

> liburcu.x86_64: W: shared-lib-calls-exit /usr/lib64/liburcu-qsbr.so.1.0.0
> exit.5

and several more. Please find out why/when it calls exit and whether you can get rid of this.


> liburcu-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/userspace-rcu-0.6.3/urcu/list.h
> liburcu-devel.x86_64: E: incorrect-fsf-address /usr/include/urcu/rcuhlist.h
> liburcu-devel.x86_64: E: incorrect-fsf-address /usr/include/urcu/rculist.h
> liburcu-devel.x86_64: E: incorrect-fsf-address /usr/include/urcu/list.h

Please try to get this fixed in the upstream tarball. 0.6.4 is available, btw.


> %doc README LICENSE

https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#License_Text

Comment 8 Paolo Bonzini 2011-09-19 09:42:32 UTC
>> liburcu.x86_64: W: shared-lib-calls-exit /usr/lib64/liburcu-qsbr.so.1.0.0
>> exit.5
>
> and several more. Please find out why/when it calls exit and whether you can
> get rid of this.

Looks like it's called if pthread_mutex_{lock,unlock} fails, which shouldn't happen.  Not nice, though.

Comment 9 Yannick Brosseau 2011-09-19 20:06:53 UTC
(In reply to comment #7)
> Several of the findings in comment 2 have not been added to the spec file and
> have not been commented on either. Please respond to reviewers' comments even
> if you disagree with them.

Sorry, it seems I've missed them. Will address those and your new comments with a new package soon. 


> > liburcu.x86_64: W: shared-lib-calls-exit /usr/lib64/liburcu-qsbr.so.1.0.0
> > exit.5
> 
> and several more. Please find out why/when it calls exit and whether you can
> get rid of this.

These have been reported upstream and is being worked on. 
 
> 
> > liburcu-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/userspace-rcu-0.6.3/urcu/list.h
> 
> Please try to get this fixed in the upstream tarball. 0.6.4 is available, btw.

These have been reported and fixed upstream.

Comment 10 Yannick Brosseau 2011-10-11 21:16:34 UTC
Here is the updated version following your comments. Including the new release. 

http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SPECS/liburcu.spec

http://www.dorsal.polymtl.ca/~ybrosseau/fedora/SRPMS/liburcu-0.6.5-1.fc15.src.rpm

The exits call are still present, but they should be fixed in the next upstream release. 

I've decided to put back the sed to fix the rpath as they seems less risky.

Comment 11 Michael Schwendt 2011-11-19 13:59:06 UTC
I've just discovered that Bill Nottingham (notting) has sponsored you already, so I'm giving back the tickets. :-/

[ Note that I haven't found the first package approval, so something about the process might not be right here.
  https://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Get_Sponsored 
  https://fedoraproject.org/wiki/Packager_sponsor_responsibilities
]

Comment 12 Bill Nottingham 2012-02-28 18:13:42 UTC
- Package meets naming and packaging guidelines ***

Upstream tarball is named userspace-rcu. Package is named liburcu.

I'm inclined to let it go, though.

- Spec file matches base package name. - OK
- Spec has consistant macro usage.  - OK
- Meets Packaging Guidelines. - OK
- License - LGPLv2+
- License field in spec matches - OK
- License file included in package - ***

License file (LICENSE) isn't in package's %doc.

- Spec in American English - OK
- Spec is legible. - OK
- Sources match upstream md5sum:  - OK
a455ea20ca7fc4f259f7b7fd92f0e975da8f0f19  userspace-rcu-0.6.5.tar.bz2

- Package needs ExcludeArch - has it for mips, which we don't support -> OK
- BuildRequires correct - OK
- Spec handles locales/find_lang - N/A
- Package is relocatable and has a reason to be. - N/A
- Package has %defattr and permissions on files is good. ***

Permissions are fine. %defattr not included, not needed unless you're backporting to older ELs.

- Package has a correct %clean section. ***

%clean not included, but not needed unless you're backporting to older ELs.

- Package is code or permissible content. - N/A
- Doc subpackage needed/used. - N/A
- Packages %doc files don't affect runtime. - OK

- Headers/static libs in -devel subpackage. - OK
- Spec has needed ldconfig in post and postun - OK
- .pc files in -devel subpackage/requires pkgconfig - ***

liburcu-devel should have Requires: pkgconfig

- .so files in -devel subpackage. - OK
- -devel package Requires: %{name} = %{version}-%{release}  - OK
- .la files are removed. - OK

- Package compiles and builds on at least one arch. - OK (tested x86_64)
- Package has no duplicate files in %files. - OK
- Package doesn't own any directories other packages own. - OK
- Package owns all the directories it creates. - ***

Package should own %{includedir}/urcu

- No rpmlint output.

liburcu.x86_64: W: spelling-error Summary(en_US) Userspace -> User space, User-space, Users pace
Can be ignored (can also be fixed if you're bored).

liburcu.x86_64: W: shared-lib-calls-exit /usr/lib64/liburcu.so.1.0.0 exit.5

Does not need fixed, but can be impolite.

- final provides and requires are sane: - OK, modulo pkgconfig item above

SHOULD Items:

- Should build in mock. - OK
- Should build on all supported archs - tested x86_64
- Should function as described. - didn't test
- Should have sane scriptlets. - OK
- Should have subpackages require base package with fully versioned depend. - OK
- Should have dist tag - OK
- Should package latest version  ***

Latest is 0.6.7.

Issues:

1. Package license file
2. liburcu-devel should have Requires: pkgconfig
3. Package should own %{includedir}/urcu
4. Should upgrade to 0.6.7.
5. %defattr/%clean can be included if you want, but not required.

Comment 13 Bill Nottingham 2012-02-28 18:55:36 UTC
#2 (liburcu-devel requiring pkgconfig) is picked up already, not an issue.

Comment 15 Yannick Brosseau 2012-06-04 15:50:23 UTC
Is there anything missing to finish this review?

Comment 16 Yannick Brosseau 2012-06-13 22:48:35 UTC

*** This bug has been marked as a duplicate of bug 529861 ***