Bug 653682 - Review Request: jemalloc - General-purpose scalable concurrent malloc(3) implementation
Summary: Review Request: jemalloc - General-purpose scalable concurrent malloc(3) impl...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Martin Gieseking
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-11-15 22:37 UTC by Ingvar Hagelund
Modified: 2010-12-10 20:33 UTC (History)
5 users (show)

Fixed In Version: jemalloc-2.0.1-2.fc13
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-12-10 17:29:20 UTC
Type: ---
martin.gieseking: fedora-review+
j: fedora-cvs+


Attachments (Terms of Use)

Description Ingvar Hagelund 2010-11-15 22:37:43 UTC
Spec URL: http://users.linpro.no/ingvar/jemalloc/jemalloc.spec
SRPM URL: http://users.linpro.no/ingvar/jemalloc/2.0.1/f14/src/jemalloc-2.0.1-1.fc14.src.rpm
Description: jemalloc is a general-purpose scalable concurrent malloc(3) implementation. This distribution is a stand-alone "portable" implementation that currently targets Linux and Apple OS X.  jemalloc is included as the default allocator in the FreeBSD and NetBSD operating systems, and it is used by the Mozilla Firefox web browser on Microsoft Windows-related platforms.

Comment 1 Ingvar Hagelund 2010-11-16 08:43:55 UTC
f15 koji build:

http://koji.fedoraproject.org/koji/taskinfo?taskID=2603530

Comment 2 Golo Fuchert 2010-11-17 23:30:28 UTC
Since I am not yet sponsored I can only do an informal review for this package.
Please note that since I am quite new here I may have overseen some details.

---

Informal review:

[+] = ok
[o] = does not apply
[-] = not ok


[+] The rpmlint output seems to be ok:

jemalloc.src: W: spelling-error Summary(en_US) malloc -> mallow, Mallorca, Mallory
jemalloc.src: W: spelling-error %description -l en_US malloc -> mallow, Mallorca, Mallory
jemalloc.x86_64: W: spelling-error Summary(en_US) malloc -> mallow, Mallorca, Mallory
jemalloc.x86_64: W: spelling-error %description -l en_US malloc -> mallow, Mallorca, Mallory

- I vote for Mallorca, but if you really want to you can stick to malloc. ;-)

jemalloc.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 65: warning: `UR' not defined
jemalloc.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 67: warning: `UE' not defined

- honestly, I have no idea what those warnings mean. I saw they were no
  blockers in other reviews, but this is a bit disappointing. Maybe someone
  can say more about these.

jemalloc.x86_64: W: no-manual-page-for-binary pprof

- would be nice to have one but no blocker.

2 packages and 1 specfiles checked; 0 errors, 7 warnings.

[+] The package is named according to the guidelines
[+] Spec file name matches base package name
[+] The package follows the Packaging Guidelines
[+] The license is an approved license (BSD)
[+] The License field matches the actual license
[+] License file from source file is included in %doc
[+] The spec file is written in American English
[+] The spec file is legible
[+] Used sources match width upstream sources (md5)
	rpmdev-md5 jemalloc-2.0.1-1.fc14.src.rpm 
	4687f59c073975f39375ece49c402bdc  jemalloc-2.0.1.tar.bz2
	md5sum jemalloc-2.0.1.tar.bz2 
	4687f59c073975f39375ece49c402bdc  jemalloc-2.0.1.tar.bz2
[+] Package build at least on one primary architecture (x86_64 tested)
[+] No architectures are known not to work
[+] All build dependencies are listed in the spec file (checked with mock)
[o] No locales for the package
[+] Package stores shared libraries and calls ldconfig in %post/%postun
[+] Package does not bundle copies of system libraries
[o] Package is not relocatable
[-] Package does not own all directories that are created:
	-devel sub-package creates %{_includedir}/jemalloc but doesn't own it
[+] No files are listed more then once in the %files section
[+] File permissions are set properly (%defattr(...) is used)
[+] Consistent use of macros
[+] Package contains code and documentation only, no content
[o] No large documentation files
[+] %doc files do not affect runtime
[+] No Header files included outside of the -devel package
[o] No static libraries included
[+] Library files ending with .so correctly in a -devel package
[-] -devel package should require the package correctly as %{name} =
%{version}-%{release} (missed the -%{release} part)
[+] No libtool .la archives included
[o] No GUI application
[+] Package does not own files or directories that are owned by other packages
[+] All filenames are valid UTF-8

---

Further comments:
- The description contains a lot of trademarks. As far as I can tell they are
  used properly, but I feel a bit uncomfortable with that. Don't you think
  that the users searching for this kind of package know who uses it for what?
  However, I _think_ it is safe like that but maybe others can comment on this.
- A dot would be the perfect ending to the description of the devel package.
- Extensive globbing in the file section is a dangerous thing; you might include
  files and dirs you don't want to include and it gets more legible if you are a
  bit more explicit. Especially when you glob just one file like in %{_mandir}/man3/*.
- Would do no harm to use the %{name} macro in the SOURCE0 tag.

---

Conclusion:
Yes, the package needs some fixing right now, but please note that I like
the clean look of the SPEC file and overall I think it is almost complete.

Comment 3 Martin Gieseking 2010-11-18 08:59:15 UTC
Here are some additional notes:

- the Group of the devel package should be Development/Libraries

- I suggest to use the default %description for the devel package:
  The %{name}-devel package contains libraries and header files for
  developing applications that use %{name}.

- the man3 manual page belongs to the devel package as it contains the API
  documentation of the library

- Drop %{_bindir}/pprof from the package since it's part of google-perftools.

- replace %{_libdir}/*so with %{_libdir}/*.so 
  (or even better with %{_libdir}/libjemalloc.so)

- The same files must not be packaged multiple times. So, drop all %doc files
  from the devel package.


(In reply to comment #2)
> jemalloc.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 65:
> warning: `UR' not defined
> jemalloc.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 67:
> warning: `UE' not defined

The two groff macros UR and UE are used to create hyperlinks. However, the man backend currently doesn't evaluate them, i.e. the target URL doesn't show up in the manpage. But that isn't a problem at all.

Comment 4 Susi Lehtola 2010-11-18 09:15:32 UTC
(In reply to comment #3)
> - The same files must not be packaged multiple times. So, drop all %doc files
>   from the devel package.

The important thing here is that you should not duplicate files in interdependent packages. -devel requires the main package, so the files are going to be present anyway.

btw.
 Requires:       %{name} = %{version}
should read
 Requires:       %{name} = %{version}-%{release}
unless you have an *extremely good* reason not to use a fully versioned Requires.

Comment 5 Ingvar Hagelund 2010-11-18 10:21:07 UTC
* Golo Fuchert wrote
> Since I am not yet sponsored I can only do an informal review for
> this package.  Please note that since I am quite new here I may have
> overseen some details.

Thank you for the effort, Golo, and welcome to Fedora!

> jemalloc.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 65:
> warning: `UR' not defined
> jemalloc.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 67:
> warning: `UE' not defined
>
> - honestly, I have no idea what those warnings mean. I saw they were
>   no blockers in other reviews, but this is a bit
>   disappointing. Maybe someone can say more about these.

These are caused because by som reason troff is unable to parse the
.UR (url start) and .UE (url end) tags correctly, though I can't see
why this happens. There are a lot of other packages using these tags,
where they seem they get parsed correctly. This could be caused
by some compatibility strangeness since the source is from the BSD
camp.

> jemalloc.x86_64: W: no-manual-page-for-binary pprof
> - would be nice to have one but no blocker.

I removed pprof, since it's part of another package, see comment #3.

> [-] Package does not own all directories that are created:
>  -devel sub-package creates %{_includedir}/jemalloc but doesn't own it

Fixed.

> [-] -devel package should require the package correctly as %{name} =
> %{version}-%{release} (missed the -%{release} part)

Fixed.

> Further comments:
> - The description contains a lot of trademarks. As far as I can tell
>   they are used properly, but I feel a bit uncomfortable with
>   that. Don't you think that the users searching for this kind of
>   package know who uses it for what?  However, I _think_ it is safe
>   like that but maybe others can comment on this.

I agree that they are uneccessary. Removed.

> - A dot would be the perfect ending to the description of the devel package.

Fixed.

> - Extensive globbing in the file section is a dangerous thing; you
>   might include files and dirs you don't want to include and it gets
>   more legible if you are a bit more explicit. Especially when you
>   glob just one file like in
>   %{_mandir}/man3/*.

Fixed.

> - Would do no harm to use the %{name} macro in the SOURCE0 tag.

Fixed.


* Martin Gieseking
> Here are some additional notes:
> - the Group of the devel package should be Development/Libraries

Fixed.

> - I suggest to use the default %description for the devel package:
>   The %{name}-devel package contains libraries and header files for
>   developing applications that use %{name}.

Works for me. Fixed.

> - the man3 manual page belongs to the devel package as it contains the API
>   documentation of the library

Fixed.

* Jussi Lehtola
> (In reply to comment #3)
> The important thing here is that you should not duplicate files in
> interdependent packages. -devel requires the main package, so the
> files are going to be present anyway.

Fixed.

> btw.
>  Requires:       %{name} = %{version}
> should read
>  Requires:       %{name} = %{version}-%{release}
> unless you have an *extremely good* reason not to use a fully versioned
> Requires.

Yep, I overlooked that one. Fixed.

Thank you too, Martin and Jussi. Updated srpm and specfile at http://users.linpro.no/ingvar/jemalloc

Ingvar

Comment 6 Martin Gieseking 2010-11-18 11:12:22 UTC
Hi Ingvar,

sorry for nagging again, but there are still some things to consider in your latest spec:

- please add a short comment above Patch0 telling what the patch does

- swap the Groups of base and devel package:
  base package:  System Environment/Libraries
  devel package: Development/Libraries

- Please replace %{_libdir}/libjemalloc.so.1 with 
  %{_libdir}/libjemalloc.so.* to simplify future soname bumps and to ensure 
  that all versioned library variants (if there will be any in the future) get
  packaged.

- drop %{_includedir}/jemalloc/* in %files devel, as the preceding line 
  %{_includedir}/jemalloc already adds the directory including all its contents

- replace %{_mandir}/man3/jemalloc.3.gz with %{_mandir}/man3/jemalloc.3*
  since we should not rely on a specific compression format applied by rpmbuild

Comment 7 Ingvar Hagelund 2010-11-18 12:02:09 UTC
* Martin Gieseking
> sorry for nagging again, but there are still some things to consider
> in your latest spec:

NP :-)


> - please add a short comment above Patch0 telling what the patch does

Fixed.

> - swap the Groups of base and devel package:
>   base package:  System Environment/Libraries
>   devel package: Development/Libraries

Gah! Stupid me. That _was_ my intention. Fixed.

> - Please replace %{_libdir}/libjemalloc.so.1 with 
>   %{_libdir}/libjemalloc.so.* to simplify future soname bumps and to ensure 
>   that all versioned library variants (if there will be any in the future) get
>   packaged.

Fixed.

> - drop %{_includedir}/jemalloc/* in %files devel, as the preceding line 
>   %{_includedir}/jemalloc already adds the directory including all its 
>   contents

Fixed.

> - replace %{_mandir}/man3/jemalloc.3.gz with %{_mandir}/man3/jemalloc.3*
>   since we should not rely on a specific compression format applied by 
>   rpmbuild

Fixed.

Updated srpm and specfile at http://users.linpro.no/ingvar/jemalloc

Ingvar

Comment 8 Martin Gieseking 2010-11-18 17:47:11 UTC
Hi Ingvar,

you should have bumped the Release number. ;-)
Besides that, the package looks fine now, and we can finish here.

$ rpmlint /var/lib/mock/fedora-14-x86_64/result/*.rpm
jemalloc.src: W: spelling-error Summary(en_US) malloc -> mallow, Mallorca, Mallory
jemalloc.src: W: spelling-error %description -l en_US malloc -> mallow, Mallorca, Mallory
jemalloc.x86_64: W: spelling-error Summary(en_US) malloc -> mallow, Mallorca, Mallory
jemalloc.x86_64: W: spelling-error %description -l en_US malloc -> mallow, Mallorca, Mallory
jemalloc-devel.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 65: warning: macro `UR' not defined
jemalloc-devel.x86_64: W: manual-page-warning /usr/share/man/man3/jemalloc.3.gz 67: warning: macro `UE' not defined
4 packages and 0 specfiles checked; 0 errors, 8 warnings.

The above warnings can savely be ignored:
- spelling errors are false positive
- undefined groff macros UR/UE don't harm the proper display of the manpage


---------------------------------
key:

[+] OK
[.] OK, not applicable
[X] needs work
---------------------------------

[+] MUST: The package must be named according to the Package Naming Guidelines.
[+] MUST: The spec file name must match the base package %{name}.
[+] MUST: The package must meet the Packaging Guidelines.
[+] MUST: The package must be licensed with a Fedora approved license.
    BSD (2- and 3-clause variants)

[+] MUST: The License field in the package spec file must match the actual license.
[+] MUST: The file containing the text of the license(s) for the package must be included in %doc.
[+] MUST: The spec file must be written in American English.
[+] MUST: The spec file for the package MUST be legible.
[+] MUST: The sources used to build the package must match the upstream source.
    $ md5sum jemalloc-2.0.1.tar.bz2*
    4687f59c073975f39375ece49c402bdc  jemalloc-2.0.1.tar.bz2
    4687f59c073975f39375ece49c402bdc  jemalloc-2.0.1.tar.bz2.1

[+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture.
    koji scratch build:
    http://koji.fedoraproject.org/koji/taskinfo?taskID=2608809

[.] MUST: If the package does not successfully compile, build or work on an architecture, ...
[.] MUST: All build dependencies must be listed in BuildRequires.
    - none required

[.] MUST: The spec file MUST handle locales properly. 
[+] MUST: Packages storing shared library files (not just symlinks) must call ldconfig in %post and %postun.
[+] MUST: Packages must NOT bundle copies of system libraries.
[.] MUST: If the package is designed to be relocatable, ...
[+] MUST: A package must own all directories that it creates. 
[+] MUST: A Fedora package must not list a file more than once in %files.
[+] MUST: Permissions on files must be set properly.
[+] MUST: Each package must consistently use macros.
[+] MUST: The package must contain code, or permissable content.
[.] MUST: Large documentation files must go in a -doc subpackage.
[+] MUST: Files in %doc must not affect the runtime of the application.
[+] MUST: Header files must be in a -devel package.
[.] MUST: Static libraries must be in a -static package.
[+] MUST: library files with a suffix must go in a -devel package.
[+] MUST: devel packages must require the base package using a fully versioned dependency
[+] MUST: Packages must NOT contain any .la libtool archives
[.] MUST: Packages containing GUI applications must include a %{name}.desktop file
[+] MUST: Packages must not own files or directories already owned by other packages.
[+] MUST: All filenames in rpm packages must be valid UTF-8.

[.] SHOULD: If the source package does not include license text(s) ...
[+] SHOULD: The reviewer should test that the package builds in mock.
[+] SHOULD: The package should compile and build into binary rpms on all supported architectures.
[+] SHOULD: The reviewer should test that the package functions as described.
[+] SHOULD: If scriptlets are used, those scriptlets must be sane.
[.] SHOULD: subpackages other than devel should require the base package
[.] SHOULD: pkgconfig(.pc) files should be placed in a -devel pkg.
[.] SHOULD: If the package has file dependencies outside of /etc, /bin, /sbin, /usr/bin, or /usr/sbin ...
[+] SHOULD: your package should contain man pages for binaries/scripts. 

----------------
Package APPROVED
----------------

Comment 9 Ingvar Hagelund 2010-11-19 15:08:25 UTC
New Package SCM Request
=======================
Package Name: jemalloc
Short Description: General-purpose scalable concurrent malloc implementation
Owners: ingvar
Branches: f13 f14 el5 el6
InitialCC:

Comment 10 Jason Tibbitts 2010-11-22 14:00:05 UTC
Git done (by process-git-requests).

Comment 11 Fedora Update System 2010-11-24 11:19:26 UTC
jemalloc-2.0.1-2.fc14 has been submitted as an update for Fedora 14.
https://admin.fedoraproject.org/updates/jemalloc-2.0.1-2.fc14

Comment 12 Fedora Update System 2010-11-24 11:20:25 UTC
jemalloc-2.0.1-2.fc13 has been submitted as an update for Fedora 13.
https://admin.fedoraproject.org/updates/jemalloc-2.0.1-2.fc13

Comment 13 Fedora Update System 2010-11-24 11:21:44 UTC
jemalloc-2.0.1-2.el5 has been submitted as an update for Fedora EPEL 5.
https://admin.fedoraproject.org/updates/jemalloc-2.0.1-2.el5

Comment 14 Fedora Update System 2010-11-24 16:58:55 UTC
jemalloc-2.0.1-2.el5 has been pushed to the Fedora EPEL 5 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 jemalloc'.  You can provide feedback for this update here: https://admin.fedoraproject.org/updates/jemalloc-2.0.1-2.el5

Comment 15 Fedora Update System 2010-12-10 17:29:15 UTC
jemalloc-2.0.1-2.el5 has been pushed to the Fedora EPEL 5 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 16 Fedora Update System 2010-12-10 20:26:37 UTC
jemalloc-2.0.1-2.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 17 Fedora Update System 2010-12-10 20:33:09 UTC
jemalloc-2.0.1-2.fc13 has been pushed to the Fedora 13 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.