Spec URL: http://fedorapeople.org/~rhl/hoard.spec SRPM URL: http://fedorapeople.org/~rhl/hoard-371-1.fc16.src.rpm Description: The Hoard memory allocator is a fast, scalable, and memory-efficient memory allocator for Linux, Solaris, Mac OS X, and Windows. Hoard is a drop-in replacement for malloc that can dramatically improve application performance, especially for multithreaded programs running on multiprocessors and multicore CPUs. No source code changes necessary: just link it in or set one environment variable succesful koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=3510888 Version 3.8 from there website does not build for me, so I built the version one older.
Hi, I modified the spec file a bit to stop rpmlint from complaining as much: Spec URL: http://fedorapeople.org/~rhl/hoard/hoard.spec SRPM URL: http://fedorapeople.org/~rhl/hoard/hoard-371-2.fc16.src.rpm another successful scratch build: http://koji.fedoraproject.org/koji/taskinfo?taskID=3511368 $ rpmlint -v hoard-371-2.fc16.src.rpm hoard.src: I: checking hoard.src: W: spelling-error %description -l en_US scalable -> salable, callable, calculable hoard.src: W: spelling-error %description -l en_US allocator -> allocate, locator, calculator hoard.src: W: spelling-error %description -l en_US malloc -> mallow hoard.src: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard.src: I: checking-url http://www.cs.umass.edu/~emery/hoard/hoard-3.7.1/hoard-371.tar.gz (timeout 10 seconds) 1 packages and 0 specfiles checked; 0 errors, 3 warnings. $ rpmlint -v hoard.spec hoard.spec: I: checking-url http://www.cs.umass.edu/~emery/hoard/hoard-3.7.1/hoard-371.tar.gz (timeout 10 seconds) 0 packages and 1 specfiles checked; 0 errors, 0 warnings.
I updated the spec to add documentation, which I forgot. $ rpmlint -v hoard.spec hoard.spec: I: checking-url http://www.cs.umass.edu/~emery/hoard/hoard-3.7.1/hoard-371.tar.gz (timeout 10 seconds) 0 packages and 1 specfiles checked; 0 errors, 0 warnings. $ rpmlint -v hoard-371-3.fc16.src.rpm hoard.src: I: checking hoard.src: W: spelling-error %description -l en_US scalable -> salable, callable, calculable hoard.src: W: spelling-error %description -l en_US allocator -> allocate, locator, calculator hoard.src: W: spelling-error %description -l en_US malloc -> mallow hoard.src: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard.src: I: checking-url http://www.cs.umass.edu/~emery/hoard/hoard-3.7.1/hoard-371.tar.gz (timeout 10 seconds) 1 packages and 0 specfiles checked; 0 errors, 3 warnings. $ rpmlint -v hoard* hoard.x86_64: I: checking hoard.x86_64: W: spelling-error %description -l en_US scalable -> salable, callable, calculable hoard.x86_64: W: spelling-error %description -l en_US allocator -> allocate, locator, calculator hoard.x86_64: W: spelling-error %description -l en_US malloc -> mallow hoard.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard.x86_64: W: no-soname /usr/lib64/libhoard.so hoard.x86_64: E: incorrect-fsf-address /usr/share/doc/hoard-371/COPYING hoard-debuginfo.x86_64: I: checking hoard-debuginfo.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard-debuginfo.x86_64: E: debuginfo-without-sources hoard-docs.x86_64: I: checking hoard-docs.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) 3 packages and 0 specfiles checked; 2 errors, 4 warnings. I will contact upstream to inform them about the incorrect-fsf-address, and I am not sure what the debuginfo-without-sources is complaining about.
I forgot the scratch builds again: http://koji.fedoraproject.org/koji/taskinfo?taskID=3603983
This is an informal review. Although I've built rpm's for many years, I'm new to Fedora's build process. So this isn't a formal review, but maybe it will make it easier for the next reviewer. -------------- Overall Notes: -------------- You have the version as 371, which corresponds with the tarball that from upstream. The problem is that upstream calls the version 3.7.1. I would suggest you go with having the dots in the version, and perhaps have a variable for the tarball numbering. If you don't, you are going to get bitten if any but the first number get's up to 10. Example: version 3.10.1 would then be 3101, which would be higher than version 4.1.1, 411. If it was me, I'd add a variable like tarversion at the top %define tar_version 371 Then change Version: 371 to Version: 3.7.1 and Source0: http://www.cs.umass.edu/~emery/hoard/hoard-3.7.1/%{name}-%{version}.tar.gz to Source0: http://www.cs.umass.edu/~emery/hoard/%{name}-%{version}/%{name}-%{tar_version}.tar.gz and %setup -q to %setup -q -n %{name}-%{tar_version} -------------- Review MUSTS: -------------- NOTE: These are on both the spec file for release 2 and release 3 except where noted. rpmlint output - Already done Package name - OK Spec file matches base package - OK License must be licensed with a Fedora approved license and meet the Licensing Guidelines - OK License in spec must match actual license - OK License file include in %doc (If a separate file) - Not in release 2, but I see you are putting it in release 3 Spec file written in American English - OK Spec file legible - OK Tar ball matches upstream - OK Package successfully builds binary RPMs - OK Build dependancies listed - OK If shared library files - ldconfig correctly called in %post and %postun - release 2 - NO, release 3 - Yes System libraries not bundled into rpm - OK No duplicate files - OK Permissions on files set correctly - OK Macro use must be consistant - OK Must contain code or permissible content - OK Large documentation files go in a -doc subpackage - Not in release 2, but I see you are putting it in release 3 Anything marked at %doc cannot affect runtime application - OK (for version 3) At the beginning of %install, each package MUST run rm -rf %{buildroot} - OK All filenames in rpm packages must be valid UTF-8 - OK -------------- Review MUSTS: -------------- NOTE: These are on both the spec file for release 2 and release 3 except where noted. Have license texts, if not, contact Upstream - in release 3 Test that the package builds in mock - tested on release 2 Should compile and build on all supported architectures - release 2 does, haven't tested on release 3. Package should function as described - Haven't tested Scriptlets must be sane - OK
Created attachment 564746 [details] Patch to make version 3.8 build If you want to package the latest version, here is a patch that not only solves the build failure, but also fixes some 32- versus 64-bit issues, and quiets a few other compiler warnings to boot. I have not sent this patch upstream.
Is this going to be in Fedora 17?
Here is an update for this package getting 3.8 to work, thanks to threebean for his help. http://fedorapeople.org/~rhl/hoard/hoard.spec http://fedorapeople.org/~rhl/hoard/hoard-3.8-2.src.rpm here is the rpmlint against all the rpms I'm not sure what it wants for the .so permissions, but 0751 seem to be the settings for all of my shared objects. $ rpmlint -v * hoard.x86_64: I: checking hoard.x86_64: W: spelling-error %description -l en_US scalable -> salable, callable, calculable hoard.x86_64: W: spelling-error %description -l en_US allocator -> allocate, locator, calculator hoard.x86_64: W: spelling-error %description -l en_US malloc -> mallow hoard.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard.x86_64: E: invalid-soname /usr/lib64/libhoard.so hoard hoard.x86_64: W: shared-lib-calls-exit /usr/lib64/libhoard.so exit.5 hoard.x86_64: E: incorrect-fsf-address /usr/share/doc/hoard-3.8/COPYING hoard-debuginfo.x86_64: I: checking hoard-debuginfo.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard-debuginfo.x86_64: E: debuginfo-without-sources hoard-docs.x86_64: I: checking hoard-docs.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) 3 packages and 0 specfiles checked; 3 errors, 4 warnings. I'm not sure how to handle the invalid-soname, shared-lib-calls-exit, or debuginfo-without-sources . Some advice/help here would be nice.
When you post links to updated versions of the spec and the SRPM, it helps to post them in the original format. I believe this helps the fedora-review tool pick them up. SPEC: http://fedorapeople.org/~rhl/hoard/hoard.spec SRPM: http://fedorapeople.org/~rhl/hoard/hoard-3.8-2.src.rpm
Package Review ============== Key: - = N/A x = Pass ! = Fail ? = Not evaluated ==== C/C++ ==== [x]: MUST Header files in -devel subpackage, if present. [x]: MUST Package does not contain any libtool archives (.la) [x]: MUST Package does not contain kernel modules. [x]: MUST Package contains no static executables. [x]: MUST Rpath absent or only used for internal libs. [x]: MUST Package is not relocatable. [!]: MUST Development (unversioned) .so files in -devel subpackage, if present. Note: hoard-3.8-2.fc18.i686.rpm : /usr/lib/libhoard.so ==== Generic ==== [x]: MUST Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: MUST Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: MUST %build honors applicable compiler flags or justifies otherwise. [x]: MUST All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [!]: MUST Buildroot is not present Note: Invalid buildroot found: %(mktemp -ud %{_tmppath}/%{name}-%{tar_version}-%{release}-XXXXXX) [x]: MUST Package contains no bundled libraries. [x]: MUST Changelog in prescribed format. [!]: MUST Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) Note: Clean is needed only if supporting EPEL [x]: MUST Sources contain only permissible code or content. [x]: MUST Each %files section contains %defattr if rpm < 4.4 Note: Note: defattr macros not found. They would be needed for EPEL5 [x]: MUST Macros in Summary, %description expandable at SRPM build time. [x]: MUST Package requires other packages for directories it uses. [x]: MUST Package uses nothing in %doc for runtime. [x]: MUST Package is not known to require ExcludeArch. [x]: MUST Permissions on files are set properly. [x]: MUST Package does not contain duplicates in %files. [x]: MUST Fully versioned dependency in subpackages, if present. [x]: MUST Spec file lacks Packager, Vendor, PreReq tags. [!]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. Note: rm -rf is only needed if supporting EPEL5 [x]: MUST Large documentation files are in a -doc subpackage, if required. [!]: 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 is included in %doc. [x]: MUST License field in the package spec file matches the actual license. [x]: MUST License file installed when any subpackage combination is installed. [!]: MUST Package consistently uses macros (instead of hard-coded directory names). Note: Using both %{buildroot} and $RPM_BUILD_ROOT [x]: MUST Package is named according to the Package Naming Guidelines. [x]: MUST Package does not generate any conflict. [x]: MUST Package obeys FHS, except libexecdir and /usr/target. [x]: MUST Package must own all directories that it creates. [x]: MUST Package does not own files or directories owned by other packages. [x]: MUST Package installs properly. [x]: MUST Requires correct, justified where necessary. [!]: MUST Rpmlint output is silent. [x]: MUST Sources used to build the package match the upstream source, as provided in the spec URL. /home/threebean/753517/753517/hoard-38.tar.gz : MD5SUM this package : f2d8ec3a13d4d9ba7b1c48c777707ef5 MD5SUM upstream package : f2d8ec3a13d4d9ba7b1c48c777707ef5 [x]: MUST Spec file is legible and written in American English. [x]: MUST Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: MUST Package contains a SysV-style init script if in need of one. [x]: MUST File names are valid UTF-8. [x]: MUST Useful -debuginfo package or justification otherwise. [x]: SHOULD Reviewer should test that the package builds in mock. [x]: SHOULD 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]: SHOULD Dist tag is present. [x]: SHOULD No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: SHOULD Final provides and requires are sane (rpm -q --provides and rpm -q --requires). [ ]: SHOULD Package functions as described. [x]: SHOULD Latest version is packaged. [x]: SHOULD Package does not include license text files separate from upstream. [!]: SHOULD Patches link to upstream bugs/comments/lists or are otherwise justified. [x]: SHOULD Scriptlets must be sane, if used. [!]: SHOULD SourceX / PatchY prefixed with %{name}. Note: Patch1: hoard-38-NOBUILD.patch (hoard-38-NOBUILD.patch) Patch2: hoard-38-ADDSONAME.patch (hoard-38-ADDSONAME.patch) [x]: SHOULD SourceX is a working URL. [x]: SHOULD Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [ ]: SHOULD Package should compile and build into binary rpms on all supported architectures. [ ]: SHOULD %check is present and all tests pass. [ ]: SHOULD Packages should try to preserve timestamps of original installed files. [!]: SHOULD Spec use %global instead of %define. Note: %define tar_version 38 Issues: [!]: MUST Buildroot is not present Note: Invalid buildroot found: %(mktemp -ud %{_tmppath}/%{name}-%{tar_version}-%{release}-XXXXXX) See: http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag [!]: MUST Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) Note: Clean is needed only if supporting EPEL See: http://fedoraproject.org/wiki/Packaging/Guidelines#.25clean [!]: MUST Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. Note: rm -rf is only needed if supporting EPEL5 See: None [!]: 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 is included in %doc. See: http://fedoraproject.org/wiki/Packaging/LicensingGuidelines#License_Text [!]: MUST Package consistently uses macros (instead of hard-coded directory names). Note: Using both %{buildroot} and $RPM_BUILD_ROOT See: http://fedoraproject.org/wiki/Packaging/Guidelines#macros [!]: MUST Rpmlint output is silent. rpmlint hoard-3.8-2.fc18.i686.rpm hoard.i686: W: no-soname /usr/lib/libhoard.so hoard.i686: E: shlib-with-non-pic-code /usr/lib/libhoard.so hoard.i686: W: shared-lib-calls-exit /usr/lib/libhoard.so exit hoard.i686: E: non-readable /usr/lib/libhoard.so 0751L hoard.i686: E: non-standard-executable-perm /usr/lib/libhoard.so 0751L 1 packages and 0 specfiles checked; 4 errors, 5 warnings. rpmlint hoard-debuginfo-3.8-2.fc18.i686.rpm hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/basehoardmanager.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/redirectfree.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/alignedmmap.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/processheap.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/threadpoolheap.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/tlab.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/addheaderheap.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/emptyhoardmanager.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/mmapalloc.h hoard-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/hoard-38/src/heaplayers/bins64k.h 1 packages and 0 specfiles checked; 13 errors, 10 warnings. See: http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint [!]: MUST Development (unversioned) .so files in -devel subpackage, if present. Note: hoard-3.8-2.fc18.i686.rpm : /usr/lib/libhoard.so See: http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages Generated by fedora-review 0.1.3 External plugins: -------- Comments -------- Ignorable ~~~~~~~~~ There was an incorrect fsf-address that Ryan has indicated is reported upstream already. Same goes for the patches applied in the specfile, they apparently come from upstream bug reports. The spelling complaints from rpmlint can be safely ignored in this case. The no-soname can be ignored, since Ryan has tried to fix it and verified that the package works as expected anyways. After reading http://fedoraproject.org/wiki/Packaging/Guidelines#DevelPackages, the unversioned .so file does not appear to have to reside in a -devel package, so this is fine. Must Fix ~~~~~~~~ The spurious-executable-perm warnings should be an easy fix. The COPYING file should be included in the -docs package The rpm build root stuff should be standardized. The %clean section should be removed as well. The upstream URL should be changed to http://www.hoard.org To fix the debuginfo-without-sources error, check out https://fedoraproject.org/wiki/Common_Rpmlint_issues#debuginfo-without-sources
Here is an updated spec and srpm which fixes the spurious-executable-perm COPYING file, standardizes the rpm_build_root tags, removes %clean, and fixed the debuginfo-without-sources errors. The upstream URL remains because it redirects to hoard.org and for some reason rpmlint times out on the hoard.org url (but not on the one that redirects to it, weird right?) I remove the so-name patch which was causing the warning about no-soname to become an error on an invalid so-name. I can put it back if need be. SPEC: http://fedorapeople.org/~rhl/hoard/hoard.spec SRPM: http://fedorapeople.org/~rhl/hoard/hoard-3.8-3.src.rpm
Oh, can you also update the Summary to something a little more verbose than just "MALLOC"?
Done. I didn't bump spec for this trivial change though. see the previous spec and SRPM links. Successful Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=4020658
Please tweak the Summary to deal with these rpmlint complaints: hoard.i686: W: summary-ended-with-dot C Hoard is a fast, scalable, and memory-efficient allocator. hoard.i686: W: name-repeated-in-summary C Hoard Also, I don't know how I missed it, but the shlib-with-non-pic-code error is problematic. I believe patching the Makefile to add the -fPIC option to the LINUX_GCC_x86_COMPILE_DEBUG target will solve it. Please do this.
Issues addressed, and also another spurious permissions error. SPEC: http://fedorapeople.org/~rhl/hoard/hoard.spec SRPM: http://fedorapeople.org/~rhl/hoard/hoard-3.8-4.fc16.src.rpm koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=4031901 $ rpmlint -v * hoard.x86_64: I: checking hoard.x86_64: W: spelling-error Summary(en_US) scalable -> salable, callable, calculable hoard.x86_64: W: spelling-error Summary(en_US) allocator -> allocate, locator, calculator hoard.x86_64: W: spelling-error %description -l en_US scalable -> salable, callable, calculable hoard.x86_64: W: spelling-error %description -l en_US allocator -> allocate, locator, calculator hoard.x86_64: W: spelling-error %description -l en_US malloc -> mallow hoard.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard.x86_64: W: no-soname /usr/lib64/libhoard.so hoard.x86_64: W: shared-lib-calls-exit /usr/lib64/libhoard.so exit.5 hoard-debuginfo.x86_64: I: checking hoard-debuginfo.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/libhoard.cpp hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/redirectfree.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/heaplayers/mmapwrapper.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/hoard.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/heaplayers/util/cpuinfo.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/heaplayers/wrapper.cpp hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/array.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/heaplayers/stlallocator.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/heaplayers/util/dllist.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/heaplayers/spinlock.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/heaplayers/lockedheap.h hoard-debuginfo.x86_64: E: incorrect-fsf-address /usr/src/debug/hoard-38/src/hoardmanager.h hoard-docs.x86_64: I: checking hoard-docs.x86_64: I: checking-url http://www.cs.umass.edu/~emery/hoard (timeout 10 seconds) hoard-docs.x86_64: E: incorrect-fsf-address /usr/share/doc/hoard-docs-3.8/COPYING 3 packages and 0 specfiles checked; 13 errors, 7 warnings.
Package Approved!
New Package SCM Request ======================= Package Name: hoard Short Description: A fast, scalable, and memory-efficient allocator Owners: rhl Branches: f15 f16 el6 f17 InitialCC: rbean
Git done (by process-git-requests). Removed rbean, not a valid FAS account. Add in pkgdb once this is resolved.
hoard-3.8-4.fc16 has been submitted as an update for Fedora 16. https://admin.fedoraproject.org/updates/hoard-3.8-4.fc16
hoard-3.8-4.fc15 has been submitted as an update for Fedora 15. https://admin.fedoraproject.org/updates/hoard-3.8-4.fc15
hoard-3.8-4.fc17 has been submitted as an update for Fedora 17. https://admin.fedoraproject.org/updates/hoard-3.8-4.fc17
hoard-3.8-4.fc17 has been pushed to the Fedora 17 testing repository.
I think there are few issues with this package - it doesn't honour the Fedora CFLAGS at all, builds with -O0 - treats all secondary arches as it would be x86 - the library contains function prefixed with hoard- so it can't serve as a "LD_PRELOAD" replacement for malloc and friends from glibc - it converts the files to Unix EOLs twice - and it exports also the internal C++ symbols in addition to only malloc and friends Not sure how serious all these issues are, but the first 2 issues block building on secondary arches and patches will follow.
Created attachment 584294 [details] update the generic-gcc target for use in Fedora
Created attachment 584296 [details] update spec
hoard-3.8-4.fc16 has been pushed to the Fedora 16 stable repository.
hoard-3.8-4.fc15 has been pushed to the Fedora 15 stable repository.
hoard-3.8-4.fc17 has been pushed to the Fedora 17 stable repository.