Spec URL: http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm.spec SRPM URL: http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm-1.2.0-1.fc25.src.rpm Description: The ibacm daemon helps reduce the load of managing path record lookups on large InfiniBand fabrics by providing a user space implementation of what is functionally similar to an ARP cache. The use of ibacm, when properly configured, can reduce the SA packet load of a large IB cluster from O(n^2) to O(n). The ibacm daemon is started and normally runs in the background, user applications need not know about this daemon as long as their app uses librdmacm to handle connection bring up/tear down. The librdmacm library knows how to talk directly to the ibacm daemon to retrieve data. Fedora Account System Username: honli Addinfo: I stolen ibacm from RHEL-7.2 for Intel opa-ff packaging. https://bugzilla.redhat.com/show_bug.cgi?id=1312131
koji build : https://koji.fedoraproject.org/koji/taskinfo?taskID=13500276
> %global _hardened_build 1 This is actually the default setting since Fedora 23: https://fedoraproject.org/wiki/Changes/Harden_All_Packages I see the Packaging Guidelines don't mention that fact, but anyway, it's certainly OK to keep it in the spec file as well. > # libibacmp.so is a plugin for the ibacm daemon, not a public library. > # Do not advertise it in RPM metadata: > %global _privatelibs libibacmp[.]so.* > %global __provides_exclude ^(%{_privatelibs})$ > %global __requires_exclude ^(%{_privatelibs})$ I see this matches the style described in "Filtering provides and requires after scanning" in https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering. I would just suggest moving these lines down, right before the %description, to satisfy the recommendation in "Location of macro invocation" on the page. > Name: ibacm > Version: 1.2.0 > Release: 1%{?dist} > Summary: InfiniBand Communication Manager Assistant > Group: System Environment/Daemons The Group: tag is unnecessary. > License: GPLv2 or BSD > Url: http://www.openfabrics.org/ > Source: http://downloads.openfabrics.org/downloads/rdmacm/%{name}-%{version}.tar.gz > Source1: ibacm.service It would be nice to have a systemd unit file in upstream. /me looks inside ibacm.service and src/acm.c ... I can see the daemonization is implemented carelessly. In such a case Type=forking does not buy us anything. We may as well use Type=simple and ExecStart=/usr/bin/ibacm -P WantedBy=network.target is unusual and likely wrong. I'll look into improving this later myself (will file a BZ to myself once we have the component created). This is not a problem for the review. > Patch0001: 0001-Coverity-and-compile-warning-fixes.patch It would be nice to get rid of the patch by getting the changes to upstream. I may as well do this when I'm sending the systemd-related changes. Not a problem for the review. > BuildRequires: libibverbs-devel >= 1.2.0 > BuildRequires: libibumad-devel >= 1.3.10.2 > BuildRequires: systemd Should also add "BuildRequires: gcc" according to https://fedoraproject.org/wiki/Packaging:C_and_C%2B%2B#BuildRequires_and_Requires > Requires(post): systemd > Requires(preun): systemd > Requires(postun): systemd These 3 lines can be expressed by: %{?systemd_requires} as suggested in https://fedoraproject.org/wiki/Packaging:Scriptlets#Systemd > [...] > %build > # ./autogen.sh > %configure CFLAGS="$CXXFLAGS -fno-strict-aliasing" LIBS=-lpthread Setting CFLAGS from CXXFLAGS is surely suspicious. A more customary way to add to CFLAGS is: CFLAGS="%{optflags} -fno-strict-aliasing" %configure I don't know why the setting of LIBS is needed. Maybe it really isn't?
(In reply to Michal Schmidt from comment #2) > > %global _hardened_build 1 > > This is actually the default setting since Fedora 23: > https://fedoraproject.org/wiki/Changes/Harden_All_Packages > I see the Packaging Guidelines don't mention that fact, but anyway, > it's certainly OK to keep it in the spec file as well. > Remove it. > > # libibacmp.so is a plugin for the ibacm daemon, not a public library. > > # Do not advertise it in RPM metadata: > > %global _privatelibs libibacmp[.]so.* > > %global __provides_exclude ^(%{_privatelibs})$ > > %global __requires_exclude ^(%{_privatelibs})$ > > I see this matches the style described in "Filtering provides and requires > after scanning" in > https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering. > I would just suggest moving these lines down, right before the %description, > to satisfy the recommendation in "Location of macro invocation" on the page. > Moved to just before '%description'. > > Name: ibacm > > Version: 1.2.0 > > Release: 1%{?dist} > > Summary: InfiniBand Communication Manager Assistant > > Group: System Environment/Daemons > > The Group: tag is unnecessary. Removed it. > > License: GPLv2 or BSD > > Url: http://www.openfabrics.org/ > > Source: http://downloads.openfabrics.org/downloads/rdmacm/%{name}-%{version}.tar.gz > > Source1: ibacm.service > > It would be nice to have a systemd unit file in upstream. > /me looks inside ibacm.service and src/acm.c ... I can see the daemonization > is implemented carelessly. In such a case Type=forking does not buy us > anything. We may as well use Type=simple and ExecStart=/usr/bin/ibacm -P > WantedBy=network.target is unusual and likely wrong. > I'll look into improving this later myself (will file a BZ to myself once we > have the component created). > This is not a problem for the review. > > > Patch0001: 0001-Coverity-and-compile-warning-fixes.patch > > It would be nice to get rid of the patch by getting the changes to upstream. > I may as well do this when I'm sending the systemd-related changes. > Not a problem for the review. > > > BuildRequires: libibverbs-devel >= 1.2.0 > > BuildRequires: libibumad-devel >= 1.3.10.2 > > BuildRequires: systemd > > Should also add "BuildRequires: gcc" according to > https://fedoraproject.org/wiki/Packaging: > C_and_C%2B%2B#BuildRequires_and_Requires > Added 'BuildRequires: gcc'. > > Requires(post): systemd > > Requires(preun): systemd > > Requires(postun): systemd > > These 3 lines can be expressed by: > %{?systemd_requires} > as suggested in https://fedoraproject.org/wiki/Packaging:Scriptlets#Systemd > Replaced it as required. > > [...] > > %build > > # ./autogen.sh > > %configure CFLAGS="$CXXFLAGS -fno-strict-aliasing" LIBS=-lpthread > Removed 'LIBS=-lpthread', and confirmed ibacm had been linked against pthread as expected. ldd usr/bin/ib_acme linux-vdso.so.1 (0x00007ffc2f907000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1f6017a000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f1f5ff76000) libibumad.so.3 => not found libibverbs.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007f1f5fba7000) /lib64/ld-linux-x86-64.so.2 (0x000055c674a7b000) ldd usr/sbin/ibacm linux-vdso.so.1 (0x00007ffc5d7f8000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f17dc092000) libdl.so.2 => /lib64/libdl.so.2 (0x00007f17dbe8e000) libibumad.so.3 => not found libibverbs.so.1 => not found libc.so.6 => /lib64/libc.so.6 (0x00007f17dbabf000) /lib64/ld-linux-x86-64.so.2 (0x0000556510936000) > Setting CFLAGS from CXXFLAGS is surely suspicious. > A more customary way to add to CFLAGS is: > > CFLAGS="%{optflags} -fno-strict-aliasing" > %configure > Replaced it. > I don't know why the setting of LIBS is needed. Maybe it really isn't? It is unnecessary. Removed it.
http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm.spec http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/review.txt http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm-1.2.0-2.fc25.src.rpm https://koji.fedoraproject.org/koji/taskinfo?taskID=13523549
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated Issues: ======= [!]: Package must own all directories that it creates. Note: Directories without known owners: /usr/include/infiniband, /etc/rdma [!]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm- devel ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package contains no static executables. [x]: Development (unversioned) .so files in -devel subpackage, if present. Note: Unversioned so-files in private %_libdir subdirectory (see attachment). Verify they are not in ld path. /usr/lib64/ibacm/libibacmp.so is an ibacm plugin, not in ld path => OK. [x]: Header files in -devel subpackage, if present. [x]: Package does not contain any libtool archives (.la) [x]: Rpath absent or only used for internal libs. Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "MIT/X11 (BSD like)", "BSD (2 clause)", "Unknown or generated". 22 files have unknown license. Detailed output of licensecheck in /home/michich/1322168-ibacm/licensecheck.txt It's the BSD license, only with unusual formatting that confused the review tool. The toplevel COPYING file says the recipient can choose BSD or GPLv2, but the notices in source files specify only the BSD license. I think it's no problem, because the BSD license is GPLv2-compatible anyway, but we should ask upstream to make the notices consistent, or to drop the explicit GPLv2 option (which, due to the inherent license compatibility does not matter much.). [x]: License file installed when any subpackage combination is installed. [x]: If the package is under multiple licenses, the licensing breakdown must be documented in the spec. [!]: Package must own all directories that it creates. Note: Directories without known owners: /usr/include/infiniband, /etc/rdma /usr/include/infiniband is already owned by multiple packages, so ibacm can just own it too. /etc/rdma is owned by the rdma package. ibacm should either co-own the directory or have "Requires: rdma". [x]: %build honors applicable compiler flags or justifies otherwise. [x]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [x]: Package contains desktop file if it is a GUI application. [x]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package is named according to the Package Naming Guidelines. [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. [x]: If the package is a rename of another package, proper Obsoletes and Provides are present. [x]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [x]: Package contains systemd file(s) if in need. [x]: Useful -debuginfo package or justification otherwise. [x]: Package is not known to require an ExcludeArch tag. [x]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 10240 bytes in 2 files. [x]: Package complies to the Packaging Guidelines [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: 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 %license. [x]: Package requires other packages for directories it uses. [x]: Package does not own files or directories owned by other packages. [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: %config files are marked noreplace or the reason is justified. [x]: Macros in Summary, %description expandable at SRPM build time. [x]: Dist tag is present. [x]: Package does not contain duplicates in %files. [x]: Permissions on files are set properly. [x]: Package use %makeinstall only when make install DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [x]: No %config files under /usr. [x]: Package does not use a name that already exists. [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: File names are valid UTF-8. [x]: Packages must not store files under /srv, /opt or /usr/local ===== SHOULD items ===== Generic: [x]: 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]: Final provides and requires are sane (see attachments). [!]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm- devel , ibacm-debuginfo ibacm-devel should use an arch-specific dependency (add %{?_isa}) [?]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. I will take care of 0001-Coverity-and-compile-warning-fixes.patch. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [x]: Package should compile and build into binary rpms on all supported architectures. [-]: %check is present and all tests pass. [!]: Packages should try to preserve timestamps of original installed files. Could call 'install' with '-p' in the spec to preserve the timestamp of ibacm.service. ibacm_opts.cfg is generated at build time. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: Reviewer should test that the package builds in mock. [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: Uses parallel make %{?_smp_mflags} macro. [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [x]: Rpmlint is run on all installed packages. Note: Mock build failed See: http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint No, it really didn't fail to build. [x]: Large data in /usr/share should live in a noarch subpackage if package is arched. [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: ibacm-1.2.0-2.fc25.x86_64.rpm ibacm-devel-1.2.0-2.fc25.x86_64.rpm ibacm-debuginfo-1.2.0-2.fc25.x86_64.rpm ibacm-1.2.0-2.fc25.src.rpm ibacm.x86_64: W: spelling-error %description -l en_US lookups -> lookup, lockups, hookups ibacm.x86_64: W: spelling-error %description -l en_US librdmacm -> Librium ibacm.x86_64: W: devel-file-in-non-devel-package /usr/lib64/ibacm/libibacmp.so ibacm-devel.x86_64: W: spelling-error %description -l en_US librdmacm -> Librium ibacm-devel.x86_64: W: no-documentation ibacm.src: W: spelling-error %description -l en_US lookups -> lookup, lockups, hookups ibacm.src: W: spelling-error %description -l en_US librdmacm -> Librium 4 packages and 0 specfiles checked; 0 errors, 7 warnings. Requires -------- ibacm-devel (rpmlib, GLIBC filtered): ibacm ibacm-debuginfo (rpmlib, GLIBC filtered): ibacm (rpmlib, GLIBC filtered): /bin/sh config(ibacm) ld-linux-x86-64.so.2()(64bit) libc.so.6()(64bit) libdl.so.2()(64bit) libibumad.so.3()(64bit) libibumad.so.3(IBUMAD_1.0)(64bit) libibverbs.so.1()(64bit) libibverbs.so.1(IBVERBS_1.0)(64bit) libibverbs.so.1(IBVERBS_1.1)(64bit) libpthread.so.0()(64bit) rtld(GNU_HASH) systemd Provides -------- ibacm-devel: ibacm-devel ibacm-devel(x86-64) ibacm-debuginfo: ibacm-debuginfo ibacm-debuginfo(x86-64) ibacm: config(ibacm) ibacm ibacm(x86-64) Unversioned so-files -------------------- ibacm: /usr/lib64/ibacm/libibacmp.so Source checksums ---------------- http://downloads.openfabrics.org/downloads/rdmacm/ibacm-1.2.0.tar.gz : CHECKSUM(SHA256) this package : 7b57952d33580d014d68e7029b81de300fcce790aca042fac7cc3f23d512f286 CHECKSUM(SHA256) upstream package : 7b57952d33580d014d68e7029b81de300fcce790aca042fac7cc3f23d512f286 Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20 Command line :/usr/bin/fedora-review -b 1322168 Buildroot used: fedora-rawhide-x86_64 Active plugins: Generic, Shell-api, C/C++ Disabled plugins: Java, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6
(In reply to Michal Schmidt from comment #5) > [!]: Package must own all directories that it creates. > Note: Directories without known owners: /usr/include/infiniband, > /etc/rdma Own all directories that it creates. > [!]: Fully versioned dependency in subpackages if applicable. > Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm- > devel > -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} > [!]: Package must own all directories that it creates. > Note: Directories without known owners: /usr/include/infiniband, > /etc/rdma > /usr/include/infiniband is already owned by multiple packages, > so ibacm can just own it too. > /etc/rdma is owned by the rdma package. ibacm should either co-own > the directory or have "Requires: rdma". ibacm dose not need te rdma package to be present to function properly, so co-owning directory "/etc/rdma". > [!]: Fully versioned dependency in subpackages if applicable. > Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in ibacm- > devel , ibacm-debuginfo > ibacm-devel should use an arch-specific dependency (add %{?_isa}) Fixed. > [!]: Packages should try to preserve timestamps of original installed > files. > Could call 'install' with '-p' in the spec to preserve the timestamp of > ibacm.service. ibacm_opts.cfg is generated at build time. -install -D -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg -install -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service +install -D -p -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg +install -D -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service
diff -u ibacm.spec.old ibacm.spec --- ibacm.spec.old 2016-04-05 03:38:44.606740117 -0400 +++ ibacm.spec 2016-04-05 03:49:53.128820748 -0400 @@ -1,6 +1,6 @@ Name: ibacm Version: 1.2.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: InfiniBand Communication Manager Assistant License: GPLv2 or BSD Url: http://www.openfabrics.org/ @@ -31,7 +31,7 @@ %package devel Summary: Headers file needed when building apps to talk directly to ibacm -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Most applications do not need to know how to talk directly to the ibacm @@ -64,8 +64,8 @@ make DESTDIR=%{buildroot} install rm -fr %{buildroot}%{_sysconfdir}/init.d find %{buildroot} -name '*.la' -delete -install -D -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg -install -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service +install -D -p -m 644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ibacm_opts.cfg +install -D -p -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/ibacm.service %post %systemd_post ibacm.service @@ -81,6 +81,7 @@ %license COPYING %{_bindir}/ib_acme %{_sbindir}/ibacm +%dir %{_sysconfdir}/rdma %config(noreplace)%{_sysconfdir}/rdma/ibacm_opts.cfg %{_mandir}/man1/* %{_mandir}/man7/* @@ -88,10 +89,16 @@ %{_libdir}/ibacm %files devel +%dir %{_includedir}/infiniband %{_includedir}/infiniband/acm.h %{_includedir}/infiniband/acm_prov.h %changelog +* Tue Apr 5 2016 Honggang Li <honli> - 1.2.0-3 +- Requiring arch-specific base package. +- Preserve the timestamp of bacm_opts.cfg and ibacm.service. +- Own all directories that it creates. + * Fri Apr 1 2016 Honggang Li <honli> - 1.2.0-2 - Improve the spec file based on Fedora review
http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm.spec http://people.redhat.com/honli/.4086432554aa23141c867df686b977fd/ibacm-1.2.0-3.fc25.src.rpm
> > ibacm_opts.cfg is generated at build time. By that remark I meant that it's not necessary to try to preserve the timestamp for this file. But it does no harm, so OK. The package is approved.
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/rpms/ibacm
ibacm-1.2.0-3.fc23/24/25 had been built. https://koji.fedoraproject.org/koji/buildinfo?buildID=751457 https://koji.fedoraproject.org/koji/buildinfo?buildID=751456 https://koji.fedoraproject.org/koji/buildinfo?buildID=751257
ibacm-1.2.0-3.fc23 has been submitted as an update to Fedora 23. https://bodhi.fedoraproject.org/updates/FEDORA-2016-256afff9e8
ibacm-1.2.0-3.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2016-a5f422b859
ibacm-1.2.0-3.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-a5f422b859
ibacm-1.2.0-3.fc23 has been pushed to the Fedora 23 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-256afff9e8
ibacm-1.2.0-3.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report.
ibacm-1.2.0-3.fc23 has been pushed to the Fedora 23 stable repository. If problems still persist, please make note of it in this bug report.