Bug 1826621

Summary: Review Request: rmd - Resource Manager Deamon
Product: [Fedora] Fedora Reporter: ArunPrabhu Vijayan <arunprabhu.vijayan>
Component: Package ReviewAssignee: Neil Horman <nhorman>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rawhideCC: krishnan.raghuram, nhorman, package-review
Target Milestone: ---Flags: nhorman: fedora-review+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-06-24 00:59:24 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1531160, 1744531    

Description ArunPrabhu Vijayan 2020-04-22 06:57:03 UTC
Spec URL: https://github.com/arunprabhu123/rmd/blob/master/rmd.spec
SRPM URL: https://github.com/arunprabhu123/rmd/blob/master/rmd-1.0-1.fc30.src.rpm

Description of problem:
Resource Management Daemon (RMD) is a system daemon running on generic Linux platforms. The purpose of this daemon is to provide a central uniform interface portal for hardware resource management tasks on x86 platforms.

Fedora Account System Username: avijayan

RMD is open sourced at https://github.com/intel/rmd

Comment 1 Neil Horman 2020-04-22 12:20:49 UTC
*** Bug 1536230 has been marked as a duplicate of this bug. ***

Comment 2 Neil Horman 2020-04-22 12:24:22 UTC
I'll start this review today.  Just FYI, when we are done, and the package is integrated, I'll add you as a co-maintainer, but I expect that you will be the responsible party for ongoing maintenence and updates, correct?

Comment 4 Neil Horman 2020-04-22 13:43:31 UTC
This srpm isn't properly constructed in how it builds the application

The Makefile makes several targets (specifically deps and build) which calls the included scripts/deps.sh and scripts/build.sh file

Those script files run several go get commands to pull in go libraries from their upstream sources which violates the Fedora golang packaging guidelines:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Golang/#_dependencies

The deps script needs to not be run. instead of pulling in those golang libraries, they should be added as dependencies in the spec file:
go get github.com/Masterminds/glide   =>  BuildRequires: golang-github-masterminds-glide-devel
go get github.com/mh-cbon/go-bin-deb => shouldn't be required for Fedora
go get github.com/mh-cbon/go-bin-rpm => Shouldn't be required for Fedora since we're already running rpmbuild

You also need to include BuildRequires: go-rpm-macros
That will autogenerate requirements for you in the completed rpm

Note also that your build.sh script uses git to determine the version/revision/branch/go_version variables.  When building an SRPM, you won't be working from within a git repo, but from a source tarball.  As such those commands will all fail. It may not be fatal, but the resultant binary will not have proper version information built in.

Comment 5 Neil Horman 2020-04-22 14:24:53 UTC
Assuming the above are corrected, this is the result of the review:


This is a review *template*. Besides handling the [ ]-marked tests you are
also supposed to fix the template before pasting into bugzilla:
- Add issues you find to the list of issues on top. If there isn't such
  a list, create one.
- Add your own remarks to the template checks.
- Add new lines marked [!] or [?] when you discover new things not
  listed by fedora-review.
- Change or remove any text in the template which is plain wrong. In this
  case you could also file a bug against fedora-review
- Remove the "[ ] Manual check required", you will not have any such lines
  in what you paste.
- Remove attachments which you deem not really useful (the rpmlint
  ones are mandatory, though)
- Remove this text



Package Review
==============

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed


Issues:
=======
- If your application is a C or C++ application you must list a
  BuildRequires against gcc, gcc-c++ or clang.
  Note: No gcc, gcc-c++ or clang found in BuildRequires
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/


===== MUST items =====

C/C++:
[x]: Package does not contain kernel modules.
[-]: Package contains no static executables.
[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: "Unknown or generated", "*No copyright* Apache License (v2.0)",
     "Apache License (v2.0)", "BSD 2-clause "Simplified" License". 159
     files have unknown license. Detailed output of licensecheck in
     /home/nhorman/review/review-rmd/licensecheck.txt
[x]: License file installed when any subpackage combination is installed.
[-]: %build honors applicable compiler flags or justifies otherwise.
[!]: Package contains no bundled libraries without FPC exception. <= Can't bundle golang libraries with go get
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[!]: %config files are marked noreplace or the reason is justified.
     Note: No (noreplace) in %config(missingok) /usr/bin/scripts
     %config(missingok) /usr/bin/etc
[-]: Package contains desktop file if it is a GUI application.
[-]: 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.
[!]: Package obeys FHS, except libexecdir and /usr/target. <= /etc in /usr/bin (see warnings/errors below)
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[!]: Requires correct, justified where necessary. (missing BuildRequires for build/run : see above)
[x]: Spec file is legible and written in American English.
[!]: Package contains systemd file(s) if in need.  <= you probably want to add a systemd unit to start rmd
[x]: Useful -debuginfo package or justification otherwise.
[!]: Package is not known to require an ExcludeArch tag. <= Not sure why this isn't buildable on non-x86 arches
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 20480 bytes in 1 files.
[!]: Package complies to the Packaging Guidelines <= golang bundling issues
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[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 must own all directories that it creates.
[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]: 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 must not depend on deprecated() packages.
[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:
[!]: Sources can be downloaded from URI in Source: tag
     Note: Could not download Source0:
     https://www.example.com/rmd/releases/rmd-1.0.tar.gz
     See: https://docs.fedoraproject.org/en-US/packaging-
     guidelines/SourceURL/
[-]: 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).
[!]: Package functions as described. <= description in spec file needs to be more verbose
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[!]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments <= example.com is not where this package comes from
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[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]: Fully versioned dependency in subpackages if applicable.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Uses parallel make %{?_smp_mflags} macro.
[x]: SourceX is a working URL.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: Spec use %global instead of %define unless justified.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[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  <= Note, all of these warnings/errors need to be fixed
-------
Checking: rmd-1.0-1.fc33.x86_64.rpm
          rmd-debuginfo-1.0-1.fc33.x86_64.rpm
          rmd-debugsource-1.0-1.fc33.x86_64.rpm
          rmd-1.0-1.fc33.src.rpm
rmd.x86_64: W: description-shorter-than-summary
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/url/model.conf
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/url/model.conf
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/url/policy.csv
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/url/policy.csv
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/key.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/key.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/user-key.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/user-key.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/server/rmd-key.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/server/rmd-key.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cpu_map.toml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cpu_map.toml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/pam/rmd
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/pam/rmd
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/pam/test/rmd
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/pam/test/rmd
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/policy.toml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/policy.toml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/policy.yaml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/policy.yaml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/rmd.toml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/rmd.toml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/build-opts-get
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/build-opts-get
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/build.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/build.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/deps.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/deps.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/go-env
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/go-env
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/hacking.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/hacking.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/install.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/install.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/test.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/test.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/admin
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/roles/admin/cert.pem 644
rmd.x86_64: W: pem-certificate /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/user
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/roles/user/user-cert.pem 644
rmd.x86_64: W: pem-certificate /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/url
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/url/model.conf
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/url/model.conf 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/acl/url/model.conf
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/url/policy.csv
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/url/policy.csv 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/acl/url/policy.csv
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/ca.pem 644
rmd.x86_64: W: pem-certificate /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/cert.pem 644
rmd.x86_64: W: pem-certificate /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/key.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/key.pem 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/client/key.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/user-cert.pem 644
rmd.x86_64: W: pem-certificate /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/user-key.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/user-key.pem 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/client/user-key.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/server/ca.pem 644
rmd.x86_64: W: pem-certificate /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/server/rmd-cert.pem 644
rmd.x86_64: W: pem-certificate /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server/rmd-key.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/server/rmd-key.pem 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cert/server/rmd-key.pem
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cpu_map.toml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cpu_map.toml 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/cpu_map.toml
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam/rmd
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/pam/rmd 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/pam/rmd
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam/test
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam/test/rmd
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/pam/test/rmd 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/pam/test/rmd
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/policy.toml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/policy.toml 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/policy.toml
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/policy.yaml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/policy.yaml 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/policy.yaml
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/rmd.toml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/rmd.toml 644
rmd.x86_64: E: script-without-shebang /usr/bin/etc/rmd/rmd.toml
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/build-opts-get
rmd.x86_64: W: non-executable-in-bin /usr/bin/scripts/build-opts-get 644
rmd.x86_64: E: script-without-shebang /usr/bin/scripts/build-opts-get
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/build.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/build.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/deps.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/deps.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/go-env
rmd.x86_64: W: non-executable-in-bin /usr/bin/scripts/go-env 644
rmd.x86_64: E: script-without-shebang /usr/bin/scripts/go-env
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/hacking.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/hacking.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/install.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/install.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/test.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/test.sh
rmd.x86_64: W: no-manual-page-for-binary gen_conf
rmd.x86_64: W: no-manual-page-for-binary rmd
rmd.x86_64: W: dangerous-command-in-%post rm
rmd.x86_64: W: dangerous-command-in-%preun rm
rmd.src: W: description-shorter-than-summary
rmd.src: W: invalid-url Source0: https://www.example.com/rmd/releases/rmd-1.0.tar.gz HTTP Error 404: Not Found
4 packages and 0 specfiles checked; 67 errors, 90 warnings.




Rpmlint (debuginfo)
-------------------
Checking: rmd-debuginfo-1.0-1.fc33.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.





Rpmlint (installed packages)
----------------------------
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = "C.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LC_CTYPE = "C.UTF-8",
	LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
rmd-debuginfo.x86_64: W: invalid-url URL: https://github.com/intel/rmd <urlopen error [Errno -2] Name or service not known>
rmd-debugsource.x86_64: W: invalid-url URL: https://github.com/intel/rmd <urlopen error [Errno -2] Name or service not known>
rmd.x86_64: W: description-shorter-than-summary
rmd.x86_64: W: invalid-url URL: https://github.com/intel/rmd <urlopen error [Errno -2] Name or service not known>
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/url/model.conf
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/url/model.conf
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/acl/url/policy.csv
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/acl/url/policy.csv
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/key.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/key.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/client/user-key.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/client/user-key.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cert/server/rmd-key.pem
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cert/server/rmd-key.pem
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/cpu_map.toml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/cpu_map.toml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/pam/rmd
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/pam/rmd
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/pam/test/rmd
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/pam/test/rmd
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/policy.toml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/policy.toml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/policy.yaml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/policy.yaml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/etc/rmd/rmd.toml
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/etc/rmd/rmd.toml
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/build-opts-get
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/build-opts-get
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/build.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/build.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/deps.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/deps.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/go-env
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/go-env
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/hacking.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/hacking.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/install.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/install.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: W: non-etc-or-var-file-marked-as-conffile /usr/bin/scripts/test.sh
rmd.x86_64: W: conffile-without-noreplace-flag /usr/bin/scripts/test.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/admin
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/admin/cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/roles/admin/cert.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/acl/roles/admin/cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/acl/roles/admin/cert.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/acl/roles/admin/cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/acl/roles/admin/cert.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/user
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/roles/user/user-cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/roles/user/user-cert.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/acl/roles/user/user-cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/acl/roles/user/user-cert.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/acl/roles/user/user-cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/acl/roles/user/user-cert.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/url
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/url/model.conf
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/url/model.conf 644
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/acl/url/policy.csv
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/acl/url/policy.csv 644
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/ca.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/ca.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/ca.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/ca.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/ca.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/ca.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/cert.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/cert.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/cert.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/key.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/key.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/key.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/key.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/key.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/key.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/user-cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/user-cert.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/user-cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/user-cert.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/user-cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/user-cert.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/client/user-key.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/client/user-key.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/user-key.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/user-key.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/client/user-key.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/client/user-key.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server/ca.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/server/ca.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/server/ca.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/server/ca.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/server/ca.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/server/ca.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server/rmd-cert.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/server/rmd-cert.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/server/rmd-cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/server/rmd-cert.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/server/rmd-cert.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/server/rmd-cert.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cert/server/rmd-key.pem
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cert/server/rmd-key.pem 644
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/server/rmd-key.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/server/rmd-key.pem'
rmd.x86_64: W: read-error /usr/bin/etc/rmd/cert/server/rmd-key.pem [Errno 2] No such file or directory: '/usr/bin/etc/rmd/cert/server/rmd-key.pem'
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/cpu_map.toml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/cpu_map.toml 644
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam/rmd
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/pam/rmd 644
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam/test
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/pam/test/rmd
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/pam/test/rmd 644
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/policy.toml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/policy.toml 644
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/policy.yaml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/policy.yaml 644
rmd.x86_64: E: subdir-in-bin /usr/bin/etc/rmd/rmd.toml
rmd.x86_64: W: non-executable-in-bin /usr/bin/etc/rmd/rmd.toml 644
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/build-opts-get
rmd.x86_64: W: non-executable-in-bin /usr/bin/scripts/build-opts-get 644
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/build.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/build.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/deps.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/deps.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/go-env
rmd.x86_64: W: non-executable-in-bin /usr/bin/scripts/go-env 644
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/hacking.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/hacking.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/hacking_v2.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/install.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/install.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/setup_pam_files.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/setup_rmd_users.sh
rmd.x86_64: E: subdir-in-bin /usr/bin/scripts/test.sh
rmd.x86_64: E: executable-marked-as-config-file /usr/bin/scripts/test.sh
rmd.x86_64: W: no-manual-page-for-binary gen_conf
rmd.x86_64: W: no-manual-page-for-binary rmd
rmd.x86_64: W: dangerous-command-in-%post rm
rmd.x86_64: W: dangerous-command-in-%preun rm
3 packages and 0 specfiles checked; 47 errors, 104 warnings.



Requires
--------
rmd (rpmlib, GLIBC filtered):
    /bin/sh
    /usr/bin/bash
    config(rmd)
    libc.so.6()(64bit)
    libdl.so.2()(64bit)
    libpam.so.0()(64bit)
    libpam.so.0(LIBPAM_1.0)(64bit)
    libpthread.so.0()(64bit)
    rtld(GNU_HASH)

rmd-debuginfo (rpmlib, GLIBC filtered):

rmd-debugsource (rpmlib, GLIBC filtered):



Provides
--------
rmd:
    config(rmd)
    rmd
    rmd(x86-64)

rmd-debuginfo:
    debuginfo(build-id)
    rmd-debuginfo
    rmd-debuginfo(x86-64)

rmd-debugsource:
    rmd-debugsource
    rmd-debugsource(x86-64)



Generated by fedora-review 0.7.5 (5fa5b7e) last change: 2020-02-16
Command line :/usr/bin/fedora-review -n rmd --mock-options --no-cleanup-after --no-clean --enable-network
Buildroot used: fedora-rawhide-x86_64
Active plugins: C/C++, Shell-api, Generic
Disabled plugins: fonts, Java, Perl, Python, Haskell, R, PHP, Ocaml, SugarActivity
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 6 ArunPrabhu Vijayan 2020-04-23 07:25:02 UTC
Thanks Neil. We will fix and update soon.

Comment 7 ArunPrabhu Vijayan 2020-05-08 14:04:33 UTC
Spec URL: https://github.com/arunprabhu123/rmd/blob/master/rmd.spec
SRPM URL: https://github.com/arunprabhu123/rmd/blob/master/rmd-1.0-1.fc30.src.rpm

Note:
All RPM lint warnings/errors fixed except 

1.rmd.x86_64: W: pem-certificate /usr/local/etc/rmd/acl/roles/admin/cert.pem
This is not fixed as these files are only used for testing.

2. Below error is not fixed as our SW needs to copy config files to /usr/local/etc/
 rmd.x86_64: E: dir-or-file-in-usr-local /usr/local/etc/rmd/policy.toml
A file in the package is located in /usr/local. It's not permitted for
packages to install files in this directory.
Added exception in rpmlint --> addFilter("E: dir-or-file-in-usr-local") in /etc/rpmlint/config


All build related Git dependencies are also fixed. 

Please review and kindly let us know if any errors. We will correct them.

Thanks in advance.

Comment 8 Neil Horman 2020-05-08 17:19:32 UTC
Note, the spec file URL you are providing is not actually to the spec file, but rather to the github html-ified version of the spec file, please use the link https://raw.githubusercontent.com/arunprabhu123/rmd/master/rmd.spec instead.  ditto for the srpm, use 
https://github.com/arunprabhu123/rmd/raw/master/rmd-1.0-1.fc30.src.rpm instead.

I'll review this shortly

Comment 9 Neil Horman 2020-05-08 18:25:30 UTC
Its closer, but the package still has some problems:

It doesn't build, as your build script still attempts to fetch upstream sources (via the go build command).  you need to add git-core as a build requirement to get past that.

The package still tries to pull in many packages from upstream as well, instead of depending on them from the corresponding fedora packages.  Based on this:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Golang/#_bundled_or_unbundled

You need to justify why you need to pull those packages in from upstream instead of just using the Fedora packages.  By my read, currently of all the package dependencies listed in your go.mod file, the following packages:
go-spew
monotime
go-querystring
go-interpol
httpmock
go-isatty
go-colorable
http2curl
gi-buffruneio
to-toml
go-difflib
gostub
go-diff
fasthttp

are not yet packaged by fedora, and so would be allowable as bundled exceptions.  Every other package in go.mod will need a justification here (or preferably, just drop the dependency in go.mod, and add the requisite buildrequires to the spec file instead

regarding the errors you mentioned above:


>1.rmd.x86_64: W: pem-certificate /usr/local/etc/rmd/acl/roles/admin/cert.pem
>This is not fixed as these files are only used for testing.
I'm not sure I follow here.  What testing are you referring to?  I don't see any %check script in your spec file, so I'm not sure what testing you are doing.  As such, why not just not package the pem certificates at all?


>2. Below error is not fixed as our SW needs to copy config files to /usr/local/etc/
> rmd.x86_64: E: dir-or-file-in-usr-local /usr/local/etc/rmd/policy.toml
>A file in the package is located in /usr/local. It's not permitted for
>packages to install files in this directory.
>Added exception in rpmlint --> addFilter("E: dir-or-file-in-usr-local") in /etc/rpmlint/config
Why?  It looks to me like the rmd utility allows you to specify the location of a config file on the command line, so I don't understand why the config files can't be placed in the appropriate directory (%_sysconfdir}/etc) here.  Note also that, if you add a systemd unit file as noted in comment 5, you can set the config directory there without having to modify the source defaults.


The review of the package itself looks ok, though you didn't address the following items from comment 5:
[!]: %config files are marked noreplace or the reason is justified.
     Note: No (noreplace) in %config(missingok) /usr/bin/scripts
     %config(missingok) /usr/bin/etc

[!]: Package contains systemd file(s) if in need.  <= you probably want to add a systemd unit to start rmd


[!]: Package is not known to require an ExcludeArch tag. <= It should be buildable on non-x86 platforms, you either need to allow that, or document the fact that rmd only operates on data found in x86 systems


[!]: Package functions as described. <= description in spec file needs to be more verbose

Comment 10 ArunPrabhu Vijayan 2020-05-13 06:15:02 UTC
Hi Neil,

Thanks for the detailed review. We will get back soon.

Regards
Arun

Comment 11 ArunPrabhu Vijayan 2020-05-13 11:40:16 UTC
Please find our understanding with regards to your review under [Arun] below. Kindly correct if we are wrong in the understanding. We will correct accordingly.

Thanks in advance.


(In reply to Neil Horman from comment #9)
> Its closer, but the package still has some problems:
> 
> It doesn't build, as your build script still attempts to fetch upstream
> sources (via the go build command).  you need to add git-core as a build
> requirement to get past that.
> 
> The package still tries to pull in many packages from upstream as well,
> instead of depending on them from the corresponding fedora packages.  Based
> on this:
> https://docs.fedoraproject.org/en-US/packaging-guidelines/Golang/
> #_bundled_or_unbundled
> 
> You need to justify why you need to pull those packages in from upstream
> instead of just using the Fedora packages.  By my read, currently of all the
> package dependencies listed in your go.mod file, the following packages:
> go-spew
> monotime
> go-querystring
> go-interpol
> httpmock
> go-isatty
> go-colorable
> http2curl
> gi-buffruneio
> to-toml
> go-difflib
> gostub
> go-diff
> fasthttp
> 
> are not yet packaged by fedora, and so would be allowable as bundled
> exceptions.  Every other package in go.mod will need a justification here
> (or preferably, just drop the dependency in go.mod, and add the requisite
> buildrequires to the spec file instead
> 
> regarding the errors you mentioned above:

[Arun] 
1. Sure. We will add all packages present in fedora as BuildRequires and drop from go.mod file & other packages as bundled exception in go.mod file.
2. We will also add BuildRequires : git-core & BuildRequires : go-rpm-macros. 

Note: In my fedora machine,am getting this error if I add go-rpm-macros. Can you please let me why I'm getting this error?

[root]# dnf install go-rpm-macros
Last metadata expiration check: 3:07:12 ago on Wed 13 May 2020 00:52:11 IST.
No match for argument: go-rpm-macros
Error: Unable to find a match: go-rpm-macros

> >1.rmd.x86_64: W: pem-certificate /usr/local/etc/rmd/acl/roles/admin/cert.pem
> >This is not fixed as these files are only used for testing.
> I'm not sure I follow here.  What testing are you referring to?  I don't see
> any %check script in your spec file, so I'm not sure what testing you are
> doing.  As such, why not just not package the pem certificates at all?

[Arun] PEM certificates can be used as reference by System Admin to configure. So, it is more like reference files or fast and easy check of functionality.. Sorry for mentioning it as used for testing purposes.
https://github.com/intel/rmd/blob/master/etc/rmd/rmd.toml  has reference usage in [default] section. Please refer to it.


> >2. Below error is not fixed as our SW needs to copy config files to /usr/local/etc/
> > rmd.x86_64: E: dir-or-file-in-usr-local /usr/local/etc/rmd/policy.toml
> >A file in the package is located in /usr/local. It's not permitted for
> >packages to install files in this directory.
> >Added exception in rpmlint --> addFilter("E: dir-or-file-in-usr-local") in /etc/rpmlint/config
> Why?  It looks to me like the rmd utility allows you to specify the location
> of a config file on the command line, so I don't understand why the config
> files can't be placed in the appropriate directory (%_sysconfdir}/etc) here.
> Note also that, if you add a systemd unit file as noted in comment 5, you
> can set the config directory there without having to modify the source
> defaults.

[Arun] If all config files need to be moved to /etc/, we will move them from /usr/local/etc/ folder. We also have some install related scripts which needs to be moved from /usr/local/etc/rmd to /etc/rmd. Please let us know if it is OK?

> The review of the package itself looks ok, though you didn't address the
> following items from comment 5:
> [!]: %config files are marked noreplace or the reason is justified.
>      Note: No (noreplace) in %config(missingok) /usr/bin/scripts
>      %config(missingok) /usr/bin/etc

[Arun] This was removed from the latest spec file as we corrected in the spec file by installing directly from the SPEC file in the correct path instead of running script from /usr/bin directory which will copy these files to /usr/local/etc/. 
 
> [!]: Package contains systemd file(s) if in need.  <= you probably want to
> add a systemd unit to start rmd

[Arun] We will discuss internally and get back if its needed to keep the systemd file for this release.

 
> [!]: Package is not known to require an ExcludeArch tag. <= It should be
> buildable on non-x86 platforms, you either need to allow that, or document
> the fact that rmd only operates on data found in x86 systems
> 
[Arun] RMD addresses Resource Management for Intel X86 architectures. HW support is documented in https://github.com/intel/rmd/blob/master/docs/Prerequisite.md file. Please let us know if this Ok or needs further documentation.

> [!]: Package functions as described. <= description in spec file needs to be
> more verbose

[Arun] We added description in the SPEC file in the last version. It has the details, kindly let us know if something more needs to be added. I saw the Lint warning disappear after addition in the description.

Comment 12 Neil Horman 2020-05-13 21:45:05 UTC
Thank you for your quick reply. In response:

>[Arun] 
>1. Sure. We will add all packages present in fedora as BuildRequires and drop from go.mod file & other packages as bundled exception in go.mod file.
Perfect, thank you!
>2. We will also add BuildRequires : git-core & BuildRequires : go-rpm-macros. 
Excellent

>Note: In my fedora machine,am getting this error if I add go-rpm-macros. Can you please let me why I'm getting this error?
>
>[root]# dnf install go-rpm-macros
>Last metadata expiration check: 3:07:12 ago on Wed 13 May 2020 00:52:11 IST.
>No match for argument: go-rpm-macros
>Error: Unable to find a match: go-rpm-macros
Hmm...odd, what Fedora release are you running on?  I managed to install it on my F32 system just fine.  I wonder if you're using an older fedora release that doesn't have those macros packaged yet?

>> >1.rmd.x86_64: W: pem-certificate /usr/local/etc/rmd/acl/roles/admin/cert.pem
>> >This is not fixed as these files are only used for testing.
>> I'm not sure I follow here.  What testing are you referring to?  I don't see
>> any %check script in your spec file, so I'm not sure what testing you are
>> doing.  As such, why not just not package the pem certificates at all?

>[Arun] PEM certificates can be used as reference by System Admin to configure. So, it is more like reference files or fast and easy check of functionality.. Sorry for mentioning it as used for testing >purposes.
>https://github.com/intel/rmd/blob/master/etc/rmd/rmd.toml  has reference usage in [default] section. Please refer to it.
Hmm, ok, I see the need, but I'll need to check a little bit on what the policy is here.  I would hate to have people use this with a default certificate in your name.  I expect we can mark those in the file manafest with a %conf, and make a note in the documentation and the config file that production systems should generate their own cert, but I'll check and confirm.

>> >2. Below error is not fixed as our SW needs to copy config files to /usr/local/etc/
>> > rmd.x86_64: E: dir-or-file-in-usr-local /usr/local/etc/rmd/policy.toml
>> >A file in the package is located in /usr/local. It's not permitted for
>> >packages to install files in this directory.
>> >Added exception in rpmlint --> addFilter("E: dir-or-file-in-usr-local") in /etc/rpmlint/config
>> Why?  It looks to me like the rmd utility allows you to specify the location
>> of a config file on the command line, so I don't understand why the config
>> files can't be placed in the appropriate directory (%_sysconfdir}/etc) here.
>> Note also that, if you add a systemd unit file as noted in comment 5, you
>> can set the config directory there without having to modify the source
>> defaults.

>[Arun] If all config files need to be moved to /etc/, we will move them from /usr/local/etc/ folder. We also have some install related scripts which needs to be moved from /usr/local/etc/rmd to /etc/rmd. >Please let us know if it is OK?
Yes, that is exactly correct.  You are completely permitted to create subdirectories under /etc to store your config files in, it just all needs to be rooted in /etc (or more specifically %{_sysconfdir}, which currently expands to /etc)

>> The review of the package itself looks ok, though you didn't address the
>> following items from comment 5:
>> [!]: %config files are marked noreplace or the reason is justified.
>>      Note: No (noreplace) in %config(missingok) /usr/bin/scripts
>>      %config(missingok) /usr/bin/etc>
>
>[Arun] This was removed from the latest spec file as we corrected in the spec file by installing directly from the SPEC file in the correct path instead of running script from /usr/bin directory which will >copy these files to /usr/local/etc/. 
Understood, thank you!

>> [!]: Package contains systemd file(s) if in need.  <= you probably want to
>> add a systemd unit to start rmd
>
>[Arun] We will discuss internally and get back if its needed to keep the systemd file for this release.
I'm sorry, I'm not sure I understand.  I didn't see a systemd unit file previously (hence the error).  I presume you want to run rmd as a daemon, correct?  If so, I would strongly recommend that you add one, so you have a good user experience when the package is installed.

 
>> [!]: Package is not known to require an ExcludeArch tag. <= It should be
>> buildable on non-x86 platforms, you either need to allow that, or document
>> the fact that rmd only operates on data found in x86 systems
>> 
>[Arun] RMD addresses Resource Management for Intel X86 architectures. HW support is documented in https://github.com/intel/rmd/blob/master/docs/Prerequisite.md file. Please let us know if this Ok or needs >further documentation.
Yes, the documentation is fine, if you could just add a comment in the spec file above the ExclusiveArch tag pointing to that URL, that would be great

>> [!]: Package functions as described. <= description in spec file needs to be
>> more verbose

>[Arun] We added description in the SPEC file in the last version. It has the details, kindly let us know if something more needs to be added. I saw the Lint warning disappear after addition in the >description.
This is the description that was in the latest spec file that you submitted:
%description
Resource Management Daemon (RMD) is a system daemon running on Linux platforms

I'm asking that you provide a little more description around what RMD actually does (i.e. why people might want to run it).

Comment 13 ArunPrabhu Vijayan 2020-05-14 07:55:54 UTC
Thanks for the quick response.

My Fedora version is FC30. Is it a good idea to upgrade to FC32? 


I managed to add systemd file for RMD & it worked. However, when I added a preuninstallation script to stop RMD service, I was getting a lint error.

%preun -p %{_prefix}/local/etc/scripts/prerm.sh
---------------------------
if [ -f "/lib/systemd/system/rmd.service" ]; then
    systemctl stop rmd.service
    systemctl disable rmd.service
fi
--------------------------


rmd.x86_64: E: invalid-dependency /usr/local/etc/scripts/prerm.sh
An invalid dependency has been detected. It usually means that the build of
the package was buggy.

Could you please let me know how to stop the service during un installation?

Comment 14 ArunPrabhu Vijayan 2020-05-14 08:19:49 UTC
I got over this issue by adding below in %preun.

/usr/bin/systemctl stop %{name}.service
/usr/bin/systemctl --no-reload disable %{name}.service

Is it Ok?

Comment 15 Neil Horman 2020-05-14 11:04:11 UTC
Hello again, in response:

1) go-rpm-macros - Yes, I checked, and F30 did not yet, package the go-rpm-macros.  You can either:
  a) Upgrade to Fedora 32
  b) install the go-rpm-macro package directly from this url on your F30 box:
      https://dl.fedoraproject.org/pub/fedora/linux/releases/32/Everything/x86_64/os/Packages/g/go-rpm-macros-3.0.8-5.fc32.x86_64.rpm
      Note: There may be some other dependency (functional or explicit), so this may not work, but its probably worth trying
  c) Follow the new packager process, in particular this step:
     https://fedoraproject.org/wiki/Join_the_package_collection_maintainers#Install_the_developer_client_tools
     which will allow you to submit builds to the koji build service that the fedora project maintains

I would suggest that you do either (a) or (b) AND (c).  I say that because, as we go through this process, you will become the rmd co-maintainer along with me, and as such you will want to be able to do builds as part of your maintenance responsibilities anyway.

2) Its functional, but not the proscribed method for doing this.  According to:
https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/
you should just add a BuildRequries: systemd-rpm-macros
and for your scriptlets add:
%post
%systemd_post rmd.service

%preun
%systemd_preun rmd.service

Those scriptlets will take care of the appropriate actions for systemd units (including stopping the service prior to removal and such).  Theres no need to write your own script for it.

Comment 16 ArunPrabhu Vijayan 2020-05-19 11:36:54 UTC
Spec URL: https://raw.githubusercontent.com/arunprabhu123/rmd/master/rmd.spec
SRPM URL: https://github.com/arunprabhu123/rmd/raw/master/rmd-1.0-1.fc32.src.rpm

Note:
    Fixed review comments,
    1. Added go packages to SPEC file.Remaining packages will be as used bundled exception in go.mod file.
    2. RMD now runs as a Demeon. systemd file support added to RMD.
    3. Fixed additional comments as given in review



Please review and kindly let us know if any errors. We will correct them.

Thanks in advance.

Comment 17 ArunPrabhu Vijayan 2020-05-19 15:24:41 UTC
Hi,

I was trying to Setup Koji Build system. I'm getting this error with kinit.

kinit avijayan
kinit: Cannot contact any KDC for realm 'FEDORAPROJECT.ORG' while getting initial credentials

Can you please tell me what is this error and how to solve it?

Comment 18 Neil Horman 2020-05-19 17:47:58 UTC
In regards to your koji issue, the build system uses kerberos to authenticate, and you need to configure the FEDORAPROJECT.ORG realm. You should get the realm configuration file installed with the fedora-packager package.  just run: 
dnf install fedora-packager

and you should be good to go.  

I'll review the package shortly

Comment 19 Neil Horman 2020-05-19 19:50:26 UTC
New review looks good!  Theres only two things left to handle:

1) I checked on the pem certificates, and I can't find any explicit rule about inclusion of pem certificates, so I think we're good, and as its marked as a conf file it should be replaceable without getting flagged as an rpm change post install, so I'm good there

2) The bundling of extra packages.  I didn't fully comprehend how fedora implemented that.  I was under the impression that bundled packages in golang could have an exception to download from the internet, but I was mistaken.  The build system unilaterally disallows network access during builds, so its guaranteed to not be able to do that.  When the docs say bundled, they mean included in the source rpm.  Fortunately thats an easy fix.  To correct that we need to:

   a) Take a snapshot of the packages that you need from the gopath after a clean install, and tar it up (I've taken the liberty of doing so for you here:
       https://people.redhat.com/nhorman/rpms/rmd-extra.pkgs.tbz2
      Note that this is just a quick and dirty tarballing, and its about 400MB, you might be better off trying to pair that down a little if you can (I'm not sure if go allows you to trim out commit history to 
      save space, but you can use it if need be.

   b) Modify the spec file as follows:
    
[nhorman@hmswarspite SPECS]$ diff -u ~/1826621-rmd/srpm/rmd.spec ./rmd.spec 
--- /home/nhorman/1826621-rmd/srpm/rmd.spec	2020-05-19 13:51:10.014546923 -0400
+++ ./rmd.spec	2020-05-19 15:13:43.579637705 -0400
@@ -5,6 +5,7 @@
 License:        ASL 2.0
 URL:            https://github.com/intel/rmd
 Source0:        https://github.com/arunprabhu123/rmd/blob/master/rmd-1.0.tar.gz
+Source1:	rmd-extra-pkgs.tbz2
 
 BuildRequires:  go
 BuildRequires:  make
@@ -61,8 +62,13 @@
 
 %prep
 %setup -q
-
+mkdir app 
+ 
 %build
+mkdir _pkg
+tar -C _pkg -x -v -f %{SOURCE1}
+find _pkg -type d -exec chmod 755 {} \;
+export GOPATH=$PWD/_pkg:/usr/lib/golang
 make %{?_smp_mflags}
 
 %install

This will place the extra packages you need in a subdir (the _pkg directory is created so go build ignores the path when running go build).  We then explode the extra packages into that subdir, and ammend our GOPATH to point to it, so that can reference them without having to download them from the internet.

Once thats done you should be good to go.

I'm approving this review request, since you'll need to fix this before the package will build in koji.

When you are ready please continue the fedora packaging process by requesting a repo be created for this package using the fedpkg request-repo command (see https://fedoraproject.org/wiki/Package_Review_Process)

Comment 20 ArunPrabhu Vijayan 2020-05-20 07:18:42 UTC
(In reply to Neil Horman from comment #18)
> In regards to your koji issue, the build system uses kerberos to
> authenticate, and you need to configure the FEDORAPROJECT.ORG realm. You
> should get the realm configuration file installed with the fedora-packager
> package.  just run: 
> dnf install fedora-packager
> 
> and you should be good to go.  
> 
> I'll review the package shortly

Thanks for the review. We will take care of go packages as suggested. 
However, my Koji issue is still not solved. I tried uninstalling & reinstalling. Still getting same err


[root@silpixa00399467 avijayan]# dnf install fedora-packager
Last metadata expiration check: 0:57:08 ago on Tue 19 May 2020 23:01:19 IST.
Package fedora-packager-0.6.0.4-1.fc32.noarch is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@silpixa00399467 avijayan]# kinit avijayan
kinit: Cannot contact any KDC for realm 'FEDORAPROJECT.ORG' while getting initial credentials

Could you please help here?

I'm able to login to https://admin.fedoraproject.org/ using same username: avijayan.

Comment 21 Neil Horman 2020-05-20 10:49:32 UTC
sure, I'll take this offline though, so we don't confuse the review with troubleshooting this. I'll send you email shortly

Comment 22 ArunPrabhu Vijayan 2020-05-26 14:25:39 UTC
Spec URL: https://raw.githubusercontent.com/arunprabhu123/rmd/master/rmd.spec
SRPM URL: https://github.com/arunprabhu123/rmd/raw/master/rmd-src-rpm.tar.gz

Note:
Fixed SPEC file & added bundled extra GO packages. I will start Koji build next. Could you please let me know the next steps & which fedora release would this be targeted to?

Kindly excuse if its silly questions.

Comment 23 Igor Raits 2020-05-28 18:55:45 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/rmd

Comment 24 Neil Horman 2020-05-29 11:05:19 UTC
you still need to fix the items I emailed you about yesterday:

1) Document how to generate the rmd-extra-pkgs.tar.gz file
2) Remove the scripts subdirectory from /etc/rmd and replace the needed functionality by augmenting the %post and %preun scripts
3) Add -p to the install commands to preserve selinux context
4) Fix the man file inclusion to not specify .gz (use a * glob instead)

Currently, your target is rawhide (the master branch of the git tree).  We can target others if you like, but I don't see a need at the moment

Comment 25 ArunPrabhu Vijayan 2020-05-29 12:12:56 UTC
(In reply to Neil Horman from comment #24)
> you still need to fix the items I emailed you about yesterday:
> 
> 1) Document how to generate the rmd-extra-pkgs.tar.gz file
> 2) Remove the scripts subdirectory from /etc/rmd and replace the needed
> functionality by augmenting the %post and %preun scripts
> 3) Add -p to the install commands to preserve selinux context
> 4) Fix the man file inclusion to not specify .gz (use a * glob instead)
> 
> Currently, your target is rawhide (the master branch of the git tree).  We
> can target others if you like, but I don't see a need at the moment

All comments are fixed. Please find the SPEC file. 

https://raw.githubusercontent.com/arunprabhu123/rmd/master/rmd.spec

Note:
Am not able to upload the srpm to github as it is around 400MB. However, I updated rmd.spec to incorporate the comments.
Currently there is only one script file in /etc/rmd/ --> setup_rmd_user.sh. The need for the same is documented in userguide.md file(part of docs)

I'm getting new lint warnings due to these changes,
rmd.x86_64: W: dangerous-command-in-%post chown
rmd.x86_64: W: dangerous-command-in-%preun userdel

These commands are required for installation & un-installation. Kindly let me know if it is Ok.

Thanks in advance.

Comment 26 Fedora Update System 2020-06-15 04:39:18 UTC
FEDORA-2020-ea57a2e0f7 has been submitted as an update to Fedora 32. https://bodhi.fedoraproject.org/updates/FEDORA-2020-ea57a2e0f7

Comment 27 Fedora Update System 2020-06-16 01:28:53 UTC
rmd-0.2.1-1.fc32 has been pushed to the Fedora 32 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-2020-ea57a2e0f7

Comment 28 Fedora Update System 2020-06-24 00:59:24 UTC
FEDORA-2020-ea57a2e0f7 has been pushed to the Fedora 32 stable repository.
If problem still persists, please make note of it in this bug report.