Bug 1331175 - (yadm) Review Request: yadm - Yet Another Dotfiles Manager
Review Request: yadm - Yet Another Dotfiles Manager
Status: NEW
Product: Fedora
Classification: Fedora
Component: Package Review (Show other bugs)
noarch Linux
unspecified Severity medium
: ---
: ---
Assigned To: Nobody's working on this, feel free to take it
Fedora Extras Quality Assurance
Depends On:
  Show dependency treegraph
Reported: 2016-04-27 17:25 EDT by Tim Byrne
Modified: 2016-07-10 11:29 EDT (History)
3 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed:
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Tim Byrne 2016-04-27 17:25:45 EDT
Spec URL: https://raw.githubusercontent.com/TheLocehiliosan/yadm-rpm/master/yadm.spec
SRPM URL: https://raw.githubusercontent.com/TheLocehiliosan/yadm-rpm/master/yadm-1.04-1.src.rpm

yadm is a dotfile management tool with 3 main features: Manages files across
systems using a single Git repository. Provides a way to use alternate files on
a specific OS or host. Supplies a method of encrypting confidential data so it
can safely be stored in your repository.

Fedora Account System Username: thelocehiliosan
Comment 1 Tim Byrne 2016-04-27 17:28:16 EDT

Although I've constructed many RPMs professionally this is my first fedora package, and I require sponsorship.

I am the upstream author/maintainer of this software, yadm.

Koji build example:

rpmlint (I do not agree with the spelling warning):
  yadm.src: W: spelling-error %description -l en_US dotfile -> dot file, dot-file, docile
  1 packages and 0 specfiles checked; 0 errors, 1 warnings.
Comment 2 philip.worrall 2016-05-16 10:36:59 EDT

This is an INFORMAL review as I am NOT an official fedora packager.

* The licence is included in the source tarball but not in the files section of the spec file.
* It's not necessary to use %defattr in the files section anymore
* If the source code of the package provides a test suite, it should be executed in the %check 
section, whenever it is practical to do so.

* Do you need to list bats as a build dependency for the testsuite?
* Do you need to list gnupg2 as a dependency?
* You should add the dist tag to your release version i.e. 1%{?dist}
* In the changelog you MAY want to indicate that this is the initial fedora packaged version

* Is Yadm only for managing dot files or is it for any type of file? 

* In your man page the description is..

Yadm is a tool for managing a collection of files across multiple computers
using a shared Git repository. In addition, yadm provides a feature to select 
alternate versions of files based on the operation system or host name.
Lastly, yadm supplies the ability to manage a subset of secure files, 
which are encrypted before they are included in the repository.

I think this is better than the description listed in the spec file. Try to make it clear 
to the user why they would *need* this package i.e. what problem can it solve.

* The Group tag is deprecated. RPM since Fedora 18 does not require the presence 
of the Group tag in the spec file. If the tag is defined, it will be ignored.

Package Review

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

- Dist tag is present.

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

[X]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
[!]: 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]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "GPL (v3)", "Unknown or generated". 6 files have unknown
     license. Detailed output of licensecheck in /home/worralph/fedora-
[-]: Package contains no bundled libraries without FPC exception.
[X]: Changelog in prescribed format.
[X]: Sources contain only permissible code or content.
[-]: Each %files section contains %defattr if rpm < 4.4
     Note: %defattr present but not needed
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[-]: Package uses nothing in %doc for runtime.
[X]: Package consistently uses macros (instead of hard-coded directory
[X]: Package is named according to the Package Naming Guidelines.
[ ]: Package does not generate any conflict.
[X]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[ ]: Requires correct, justified where necessary.
[X]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[X]: Package is not known to require an ExcludeArch tag.
[ ]: Package complies to the Packaging Guidelines
[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]: 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]: All build dependencies are listed in BuildRequires, except for any
     that are listed in the exceptions section of Packaging Guidelines.
[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]: 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
[x]: Package is named using only allowed ASCII characters.
[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
[x]: File names are valid UTF-8.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====

[-]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.
[ ]: Final provides and requires are sane (see attachments).
[ ]: Package functions as described.
[X]: Latest version is packaged.
[X]: Package does not include license text files separate from upstream.
[ ]: 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
[!]: %check is present and all tests pass.
[ ]: Packages should try to preserve timestamps of original installed
[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
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).

Checking: yadm-1.04-1.noarch.rpm
yadm.noarch: W: spelling-error %description -l en_US dotfile -> dot file, dot-file, docile
yadm.noarch: W: manual-page-warning /usr/share/man/man1/yadm.1.gz 1: warning: macro `"' not defined
yadm.src: W: spelling-error %description -l en_US dotfile -> dot file, dot-file, docile
2 packages and 0 specfiles checked; 0 errors, 3 warnings.

Rpmlint (installed packages)
yadm.noarch: W: spelling-error %description -l en_US dotfile -> dot file, dot-file, docile
yadm.noarch: W: manual-page-warning /usr/share/man/man1/yadm.1.gz 1: warning: macro `"' not defined
1 packages and 0 specfiles checked; 0 errors, 2 warnings.

yadm (rpmlib, GLIBC filtered):


Source checksums
https://github.com/TheLocehiliosan/yadm/archive/1.04.tar.gz#/yadm-1.04.tar.gz :
  CHECKSUM(SHA256) this package     : a73aa51245866ce67aeb4322a62995ebbb13f29dc35508f486819dceb534968a
  CHECKSUM(SHA256) upstream package : a73aa51245866ce67aeb4322a62995ebbb13f29dc35508f486819dceb534968a

Generated by fedora-review 0.6.1 (f03e4e7) last change: 2016-05-02
Command line :/usr/bin/fedora-review -rn yadm-1.04-1.src.rpm
Buildroot used: fedora-22-x86_64
Active plugins: Generic, Shell-api
Disabled plugins: Java, C/C++, Python, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP

rpmls ~/rpmbuild/SRPMS/yadm-1.04-1.src.rpm 
-rw-r--r--  yadm-1.04.tar.gz
-rw-r--r--  yadm.spec

rpmls ~/rpmbuild/RPMS/noarch/yadm-1.04-1.noarch.rpm 
-rwxr-xr-x  /usr/bin/yadm
-rw-r--r--  /usr/share/man/man1/yadm.1.gz
Comment 3 Tim Byrne 2016-05-17 18:09:26 EDT
Thanks for the feedback. I've made an effort to resolve all discrepancies noted.

Updated Spec URL: https://raw.githubusercontent.com/TheLocehiliosan/yadm-rpm/master/yadm.spec
Updated SRPM URL: https://raw.githubusercontent.com/TheLocehiliosan/yadm-rpm/master/yadm-1.04-2.fc23.src.rpm

* License and docs are properly included
* `%defattr` has been removed
* `%check` has been implemented
* `%{?dist}` macro has been added to the `Release`
* All new build dependencies have been added
* Updated changelog to indicate this as the initial fedora package
* Made RPM description and man page description match.
* Removed `Group` tag
* `gnupg` is *not* currently listed as a dependency. yadm gracefully limits it's functionality if `gnupg` is not installed. It isn't required.

Updated Koji build example:

Updated rpmlint:
  1 packages and 1 specfiles checked; 0 errors, 0 warnings.


Comment 4 philip.worrall 2016-05-17 20:40:57 EDT
Looks better.

* You dont need to set permissions on the doc or licence section.
* When you make changes add a new entry to you changelog and document what is different about the new version. This helps us understand what has changed.
* There is some additional documentation in the source tarball, for example README.md, CONTRIBUTORS file, that you might want to include

Can you paste the output of rpmls on your *.rpm files
Comment 5 Tim Byrne 2016-05-17 23:57:59 EDT
Thanks for your continued feedback.

Updated Spec URL: https://raw.githubusercontent.com/TheLocehiliosan/yadm-rpm/master/yadm.spec
Updated SRPM URL: https://raw.githubusercontent.com/TheLocehiliosan/yadm-rpm/master/yadm-1.04-3.fc23.src.rpm

- Add missing docs
- Fix changelog format
- Remove file attribute for docs and license

rpmls yadm-1.04-3.fc23.src.rpm:
-rw-rw-r--  yadm-1.04.tar.gz
-rw-r--r--  yadm.spec

rpmls yadm-1.04-3.fc23.noarch.rpm
-rwxr-xr-x  /usr/bin/yadm
drwxr-xr-x  /usr/share/doc/yadm
-rw-r--r--  /usr/share/doc/yadm/CHANGES
-rw-r--r--  /usr/share/doc/yadm/CONTRIBUTORS
-rw-r--r--  /usr/share/doc/yadm/README.md
drwxr-xr-x  /usr/share/licenses/yadm
-rw-r--r--  /usr/share/licenses/yadm/LICENSE
-rw-r--r--  /usr/share/man/man1/yadm.1.gz

Updated Koji build example:

Updated rpmlint:
  1 packages and 1 specfiles checked; 0 errors, 0 warnings.
Comment 6 philip.worrall 2016-05-18 08:31:24 EDT
Looks like its almost there and ready for a formal review for inclusion in fedora.

I suggest you follow the tips listed on https://fedoraproject.org/wiki/Package_Review_Process to find a sponsor for your package. A good place to start is by asking on IRC #fedora-devel or by posting a message to fedora-devel.
Comment 7 Igor Gnatenko 2016-07-10 11:29:15 EDT
> install -m 755 yadm   ${RPM_BUILD_ROOT}%{_bindir}
> install -m 644 yadm.1 ${RPM_BUILD_ROOT}%{_mandir}/man1
add "-p" to "install" execution to preserve timestamps.

> %attr(755,root,root) %{_bindir}/yadm
> %attr(644,root,root) %{_mandir}/man1/*
drop %attr from here as you already install file with such attributes

Note You need to log in before you can comment on or make changes to this bug.