Spec URL: https://github.com/paflib/paflib/blob/packaging/paflib.spec SRPM URL: https://github.com/paflib/paflib/blob/packaging/paflib-.1-1.fc19.src.rpm Description: PAFLib is a IBM written library which exposes Power Architecture Facilities to user space via an API. Fedora Account System Username:rajalakshmi
Modifying the URL SRPM URL: https://github.com/paflib/paflib/blob/packaging/paflib-0.1-1.fc19.src.rpm
Test Build: http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2080630
SRPM URL: http://ppc.koji.fedoraproject.org/kojifiles/work/tasks/2613/2082613/paflib-0.1-1.fc21.src.rpm
Please make yourself familiar with Fedora's conventions on splitting a package into <main>, *-devel and static subpackages. cf. http://fedoraproject.org/wiki/Packaging:Guidelines#Devel_Packages ff.
some notes for the start: - the source archive is weird, it contains another copy of the paflib tree, please use github provided archive (https://github.com/paflib/paflib/archive/0.1-2.tar.gz) - would be great if upstream could switch to versioning without the dash, eg. 0.1-2.tar.gz will be 0.1.2.tar.gz - use %{configure} macro, no need to manually step into the build directory, rpmbuild does that on its own - drop outdated %defattr() definitions, rpmbuild adds the defaults itself - simplify %install section to just "make install ..." - as Ralf said, look into another package how the main/devel/static split should look like, but are the static libs necessary, Fedora discourages packaging them (https://fedoraproject.org/wiki/Packaging:Guidelines?rd=Packaging/Guidelines#Packaging_Static_Libraries)
Thanks for the comments. I removed static libraries and %defattr() definitions. The reason to step to a different directory in configure and install is: The object directoy has to be different from source directory for paflib considering the following advantages.(GLIBC is also designed like this). -> It keeps the files generated during the build from cluttering up your sources. -> It permits to remove the built files by simply removing the entire build directory. -> It permits to build from the same sources with several sets of configure options simultaneously.
Raji, please post new URLs for updated spec file and srpm. Also don't forget to increase Release in each iteration and update %changelog. The reasons for building outside of current dir are not relevant for builds in a buildsystem.
Updated with review comments. - Removed builddir. - Updated changelog. (used same 0.1-1 as this has not yet been built as per http://fedoraproject.org/wiki/Packaging:Guidelines#Changelogs ) SPEC URL : https://github.com/paflib/paflib/blob/packaging/paflib.spec SRPM URL: https://github.com/paflib/paflib/blob/packaging/paflib-0.1-1.fc19.src.rpm
* Please remove this line in %install: rm -rf $RPM_BUILD_ROOT It is superflous. rpm automatically cleans RPM_BUILD_ROOT * Please remove "--prefix=%{_prefix} --libdir=%{_libdir}" from the call to %configure. These options are automatically added by %configure. * Please increment Release each time you change something in your spec and reflect this to the %changelog. Besides this, based on visual inspection only (I haven't tried to build), the spec looks good.
Thanks Ralf for the comments.Updated. SPEC URL : https://github.com/paflib/paflib/blob/packaging/paflib.spec SRPM URL: https://github.com/paflib/paflib/blob/packaging/paflib-0.1-2.fc19.src.rpm Koji build: http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2096751
few more things: - %{_includedir}/paf directory is unowned, add "%dir %{_includedir}/paf" to %files for devel subpackage - why not make the version set to 0.1.3? you can the use "setup -q -n %{name}-0.1" - use fully specified dependency for devel subpackage (http://fedoraproject.org/wiki/Packaging:Guidelines#Requiring_Base_Package) - you might use %{power64} instead of ppc64 ppc64le, it would cover also pp64p7 subarch - use wildcards for man pages: %{_mandir}/man3/libpaf-dsc.3.gz => %{_mandir}/man3/libpaf-dsc.3* (it covers situations when the compression algorithm will change) - Summary should be shortened, to eg. "Library for accessing Power Architecture Facilities" - does upstream provide any API or ABI stability for the library?
Updated. SPEC URL : https://github.com/paflib/paflib/blob/packaging/paflib.spec SRPM URL: https://github.com/paflib/paflib/blob/packaging/paflib-0.1-3.fc19.src.rpm Koji build: http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2098121
- does upstream provide any API or ABI stability for the library? do you mean if it supports ABI ELF v1 and v2? Yes.
SPEC URL : https://github.com/paflib/paflib/blob/packaging/paflib.spec SRPM URL: https://github.com/paflib/paflib/blob/packaging/paflib-0.1.3-3.fc19.src.rpm Koji build: http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2098623 rpmlint output: (none): E: no installed packages by name ../SRPMS/paflib-0.1-1.fc19.src.rpm (none): E: no installed packages by name ../RPMS/ppc64/paflib-0.1-1.fc19.ppc64.rpm 0 packages and 1 specfiles checked; 0 errors, 0 warnings. The function which has exit() call is defined as attribute_noreturn. Hence this warning can be ignored.
> Name: paflib > Group: Development/Libraries The group for _runtime_ library packages has been "System Environment/Libraries" for a very long time. Alternatively, consider dropping the Group tag: https://fedoraproject.org/wiki/Packaging:Guidelines#Group_tag > %files > %{_mandir}/man3/libpaf-dsc.3* > %{_mandir}/man3/libpaf-ebb.3* Those section 3 manuals belong into the -devel subpackage.
Updated. SPEC URL : https://github.com/paflib/paflib/blob/packaging/paflib.spec SRPM URL: https://github.com/paflib/paflib/blob/packaging/paflib-0.1.3-4.fc19.src.rpm Koji build: http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2102387
formal review is here, see the notes explaining OK* and BAD statuses below: OK source files match upstream: dcfd088f0560087b8901b97154d44f693a0998e3 0.1.3.tar.gz OK package meets naming and versioning guidelines. OK specfile is properly named, is cleanly written and uses macros consistently. OK dist tag is present. OK license field matches the actual license. OK license is open source-compatible (MIT). License text included in package. OK latest version is being packaged. OK BuildRequires are proper. OK compiler flags are appropriate. OK package builds in mock (Rawhide/x86_64). OK debuginfo package looks complete. OK* rpmlint is silent. OK final provides and requires look sane. N/A %check is present and all tests pass. OK shared libraries are added to the regular linker search paths, with correct scriptlet OK owns the directories it creates. OK doesn't own any directories it shouldn't. OK no duplicates in %files. OK file permissions are appropriate. OK correct scriptlets present. OK code, not content. OK documentation is small, so no -docs subpackage is necessary. OK %docs are not necessary for the proper functioning of the package. OK headers in devel OK no pkgconfig files. OK no libtool .la droppings. OK not a GUI app. - rpmlint complains a bit, it's acceptable paflib.ppc64: W: shared-lib-calls-exit /usr/lib64/libpaf-ebb.so.0.0.1 exit paflib.ppc64: W: shared-lib-calls-exit /usr/lib64/libpaf-dsc.so.0.0.1 _exit -> advice from running "rpmlint -i paflib-0.1.3-4.fc21.ppc64.rpm" This library package calls exit() or _exit(), probably in a non-fork() context. Doing so from a library is strongly discouraged - when a library function calls exit(), it prevents the calling program from handling the error, reporting it to the user, closing files properly, and cleaning up any state that the program has. It is preferred for the library to return an actual error code and let the calling program decide how to handle the situation. paflib-devel.ppc64: W: only-non-binary-in-usr-lib -> only the devel symlinks are there, OK The package is APPROVED. Raji, please continue with step 8 in http://fedoraproject.org/wiki/Package_Review_Process (the SCM admin request).
New Package SCM Request ======================= Package Name: paflib Short Description: Library for accessing Power Architecture Facilities Upstream URL: https://github.com/paflib/paflib Owners: rajalakshmi Branches: f20 f21 el6 InitialCC:
Git done (by process-git-requests).
imported and built, closing