Bug 1150566 - Review Request: wcm - Wal Commander
Summary: Review Request: wcm - Wal Commander
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: William Moreno
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: Trivial
Depends On:
Blocks: DuplicSysLibsTracker
TreeView+ depends on / blocked
 
Reported: 2014-10-08 12:39 UTC by Eugene A. Pivnev
Modified: 2016-02-18 17:26 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2016-02-18 17:26:01 UTC
Type: ---
Embargoed:
williamjmorenor: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Comment 1 Vladimir Stackov 2014-12-15 13:57:19 UTC
Greetings,

You should use %license for LICENSE instead of %doc.

There is no man file. You should probably need to work with upstream to write it. It could be written in markdown and you could always convert it to man while packaging, e.g.

%build
pandoc -s -f markdown_github -t man -V title=%{name} -V section=1 -V date="$(LANG=C date -d @$(stat -c'%Z' README.md) +'%B %d, %Y')" README.md -o %{name}.1

Remove any comments from SPEC that you don't need.

Replace spaces to tabs (line 25).

You might want your SPEC to produce hardened binaries (http://fedoraproject.org/wiki/Packaging:Guidelines#PIE).

Please note that this is informal review.

Comment 2 Vladimir Stackov 2014-12-15 14:13:50 UTC
Ah, I also need to mention that description must not be over 80 columns per line so you should split it into multiple lines.

Comment 3 Eugene A. Pivnev 2014-12-15 18:28:41 UTC
(In reply to amigo.elite from comment #1)

> You should use %license for LICENSE instead of %doc.

Fixed

> There is no man file. You should probably need to work with upstream to
> write it. It could be written in markdown and you could always convert it to
> man while packaging, e.g.
> 
> %build
> pandoc -s -f markdown_github -t man -V title=%{name} -V section=1 -V
> date="$(LANG=C date -d @$(stat -c'%Z' README.md) +'%B %d, %Y')" README.md -o
> %{name}.1

It is not CLI application and has no any CLI option.
Seems man is not required.

> Remove any comments from SPEC that you don't need.

Fixed.

> Replace spaces to tabs (line 25).

Fixed.
(Note: qterminal ^c-^v bag :-)

> You might want your SPEC to produce hardened binaries
> (http://fedoraproject.org/wiki/Packaging:Guidelines#PIE).

Done.

> Ah, I also need to mention that description must not be over 80 columns per line so you should split it into multiple lines.

Fixed (removed "multi-platform open source").

> Please note that this is informal review.

Ok

Comment 4 Eugene A. Pivnev 2014-12-15 18:31:15 UTC
(In reply to amigo.elite from comment #2)
> Ah, I also need to mention that description must not be over 80 columns per
> line so you should split it into multiple lines.

Oops, forgot results:

Spec: https://tieugene.fedorapeople.org/rpms/wcm/wcm.spec
SRPM: https://tieugene.fedorapeople.org/rpms/wcm/wcm-0.18.0-1.fc20.src.rpm
Koji: http://koji.fedoraproject.org/koji/taskinfo?taskID=8388372

Comment 5 Sergey Kosarevsky 2014-12-22 12:39:24 UTC
FYI, 0.18.1 released today.

Comment 6 Andrea 2015-04-29 15:50:07 UTC
Hi, 
in the process of becoming a packager i would like to do first some informal reviews, and i would like to start with this package.
I will put in copy my sponsor that will do the formal review then.
Just one thing.. i have seen that there are new versions available on github of this package. Still interested to push version 0.18.0 or you would like to try with more recent versions?
thanks
Andrea

Comment 7 William Moreno 2015-08-10 04:25:29 UTC
Hi 

Do you want to continue with this review?

Comment 8 Eugene A. Pivnev 2015-08-11 10:22:47 UTC
(In reply to William Moreno from comment #7)
> Hi 
> 
> Do you want to continue with this review?

Yes, of course.
Waiting for reviewer.

Fresh build:
SPEC: https://tieugene.fedorapeople.org/rpms/wcm/wcm.spec
SRPM: https://tieugene.fedorapeople.org/rpms/wcm/wcm-0.20.0-1.fc21.src.rpm
Koji: https://koji.fedoraproject.org/koji/taskinfo?taskID=10670315

Comment 9 William Moreno 2015-08-11 16:18:15 UTC
You must add a appdata.xml file to your package, this way users will be hable to find your package in Gnome Software, please see:
https://fedoraproject.org/wiki/Packaging:AppData

Also add:
BuildRequires:  libappstream-glib

You can find a example here:
https://github.com/williamjmorenor/fedora-specs/blob/master/retext.appdata.xml

I will recomend than you include the icon in the icons directory,  this can work:

BuildRequires:  libpng-devel
BuildRequires:  ImageMagick
Requires:       hicolor-icon-theme

%install
[...]
mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/{16x16,22x22,24x24,32x32,48x48,64x64,72x72,96x96,128x128,scalable}/apps
for s in 16x16 22x22 24x24 32x32 48x48 64x64 72x72 96x96 128x128
do
    convert ./wcm.png -resize $s %{buildroot}/%{_datadir}/icons/hicolor/$s/apps/wcm.png;
done

This spec can be a example:
https://github.com/williamjmorenor/fedora-specs/blob/master/retext.spec

Please update the spec and I will run the review

Comment 11 William Moreno 2015-08-12 16:40:08 UTC
Looks like there are some bundled libraries upstream

utf8proc
https://github.com/corporateshark/WCMCommander/tree/master/src/utf8proc

This looks like a bundled of:
https://admin.fedoraproject.org/pkgdb/package/utf8proc/

urlparser
https://github.com/corporateshark/WCMCommander/tree/master/src/urlparser

Looks like a bundled or (not packaged):
https://github.com/corporateshark/LUrlParser

The urlparser looks like a easy packaging library, Fedora Packaging Guidelines do not allow bundled libraries without the OK of FPC, try to package urlparser to test is wmc work with this library also please try to add Requires: utf8proc and remove the bundled lib to test if the package work with the system library.

Comment 12 Eugene A. Pivnev 2015-08-13 10:14:38 UTC
(In reply to William Moreno from comment #11)
> Looks like there are some bundled libraries upstream
> 
> utf8proc

Fixed.

> urlparser
> https://github.com/corporateshark/WCMCommander/tree/master/src/urlparser
> 
> Looks like a bundled or (not packaged):
> https://github.com/corporateshark/LUrlParser

1. They are not identical and seems have different API.
2. git version has no any release yet.
So, I deside live bundled version as part of wcm sources.

SPEC: https://tieugene.fedorapeople.org/rpms/wcm/wcm.spec
SRPM: https://tieugene.fedorapeople.org/rpms/wcm/wcm-0.20.0-3.fc21.src.rpm
Koji:
EL7: https://koji.fedoraproject.org/koji/taskinfo?taskID=10688357
F21: https://koji.fedoraproject.org/koji/taskinfo?taskID=10688371
F22: https://koji.fedoraproject.org/koji/taskinfo?taskID=10688391
F23: https://koji.fedoraproject.org/koji/taskinfo?taskID=10688450

Comment 13 William Moreno 2015-08-14 16:52:34 UTC
Package Review
==============

Need Work:
==========

Fail: Package requires other packages for directories it uses.
Fail: Package must own all directories that it creates.
      Orphan dir: /usr/share/icons/hicolor/*/apps
      Add Requires: hicolors-icon-theme

Fail: gtk-update-icon-cache is invoked in %postun and %posttrans.
      See: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets#Icon_Cache

Fail: Sources can be downloaded from URI in Source: tag
Fail: SourceX tarball generation or download is documented.
      W: invalid-url Source0: 
      https://github.com/corporateshark/WalCommander/archive/WCMCommander-release-0.20.0.tar.gz 
      HTTP Error 404: Not Found
      The link: https://github.com/corporateshark/WCMCommander/archive/release-0.20.0.tar.gz 
      Work for me, please check if work for you and update it in the spec

Fail: Package contains BR: python2-devel or python3-devel
      There is some Python code in the tarball, please verify I will recomend include
      BuildRequires: python3-devel

Fail: Permissions on files are set properly.
      E: non-executable-script /usr/share/wcm/styles/solarize.sh 644 /bin/bash
      E: non-executable-script /usr/share/wcm/styles/solarized-gen.py 644 /usr/bin/python
      This files do not look to need execusion permissions, try removing the shebang or set then to 755

Fail: Patches link to upstream bugs/comments/lists or are otherwise
      justified.
      If you can propose some patches upstream please do it, 
      if patches are Fedora specific please add a comment about it in the spec.

Note: W: name-repeated-in-summary C WCM
      Drop the mane of the package in summary

Note: W: no-manual-page-for-binary wcm
      This is a easy fix, yua can use the package manedit to create a Unix manapage
      and include it, even a minimal man page can improve the user experience
      please propose the man page upstrea,

Note: W: file-not-utf8 /usr/share/doc/wcm/CHANGELOG.txt
      See: https://fedoraproject.org/wiki/Packaging_tricks#Convert_encoding_to_UTF-8

Please fix these issues to check:

?:    Package complies to the Packaging Guidelines

===== MUST items =====
C/C++:
Pass: Package does not contain kernel modules.
Pass: Package contains no static executables.
Pass: Package does not contain any libtool archives (.la)
Pass: Rpath absent or only used for internal libs.

Generic:
Pass: Package is licensed with an open-source compatible license and meets
      other legal requirements as defined in the legal section of Packaging
      Guidelines.
Pass: License field in the package spec file matches the actual license.
Pass: %build honors applicable compiler flags or justifies otherwise.
Pass: Package contains no bundled libraries without FPC exception.
Pass: Changelog in prescribed format.
Pass: Sources contain only permissible code or content.
NA  : Development files must be in a -devel package
Pass: Package uses nothing in %doc for runtime.
Pass: Package consistently uses macros (instead of hard-coded directory
      names).
Pass: Package is named according to the Package Naming Guidelines.
Pass: Package does not generate any conflict.
Pass: Package obeys FHS, except libexecdir and /usr/target.
NA  : If the package is a rename of another package, proper Obsoletes and
      Provides are present.
Pass: Requires correct, justified where necessary.
Pass: Spec file is legible and written in American English.
NA  : Package contains systemd file(s) if in need.
Pass: Useful -debuginfo package or justification otherwise.
Pass: Package is not known to require an ExcludeArch tag.
      ARM: http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=3122269
      s390: http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=1936707
      ppc: http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=2705219
Pass: Large documentation must go in a -doc subpackage. 
Pass: Package successfully compiles and builds into binary rpms on at least
      one supported primary architecture.
Pass: Package installs properly.
Pass: Rpmlint is run on all rpms the build produces.
Pass: 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.
Pass: Package does not own files or directories owned by other packages.
Pass: All build dependencies are listed in BuildRequires, except for any
      that are listed in the exceptions section of Packaging Guidelines.
Pass: Package uses either %{buildroot} or $RPM_BUILD_ROOT
Pass:  Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
      beginning of %install.
Pass: Macros in Summary, %description expandable at SRPM build time.
Pass: Package contains desktop file if it is a GUI application.
Pass: Package installs a %{name}.desktop using desktop-file-install or
      desktop-file-validate if there is such a file.
Pass: Dist tag is present.
Pass: Package does not contain duplicates in %files.
Pass: Package use %makeinstall only when make install DESTDIR=... doesn't
      work.
Pass: Package is named using only allowed ASCII characters.
Pass: Package does not use a name that already exists.
Pass: Package is not relocatable.
Pass: Sources used to build the package match the upstream source, as
      provided in the spec URL.
      83fc7d79f3a17623674adb7e0d7c9fb9  release-0.20.0.tar.gz
      83fc7d79f3a17623674adb7e0d7c9fb9  WCMCommander-release-0.20.0.tar.gz
Pass: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
Pass: File names are valid UTF-8.
Pass: Packages must not store files under /srv, /opt or /usr/local

===== SHOULD items =====
Generic:
NA:   If the source package does not include license text(s) as a separate
      file from upstream, the packager SHOULD query upstream to include it.
Pass: Final provides and requires are sane (see attachments).
Pass: Package functions as described.
Pass: Latest version is packaged.
Pass: Package does not include license text files separate from upstream.
NA:   Description and summary sections in the package spec file contains
      translations for supported Non-English languages, if available.
Pass: Package should compile and build into binary rpms on all supported
      architectures.
NA:   %check is present and all tests pass.
Pass: Packages should try to preserve timestamps of original installed
     files.
Pass: Packager, Vendor, PreReq, Copyright tags should not be in spec file
Pass: Reviewer should test that the package builds in mock.
Pass: Buildroot is not present
Pass: Package has no %clean section with rm -rf %{buildroot} (or
      $RPM_BUILD_ROOT)
Pass: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
Pass: Uses parallel make %{?_smp_mflags} macro.
Pass: SourceX is a working URL.
Pass: Spec use %global instead of %define unless justified.

===== EXTRA items =====
Generic:
Pass: Rpmlint is run on debuginfo package(s).
Pass: Rpmlint is run on all installed packages.
Pass: Large data in /usr/share should live in a noarch subpackage if package
      is arched.
Pass: Spec file according to URL is the same as in SRPM.

Rpmlint
-------
Checking: wcm-0.20.0-3.fc21.x86_64.rpm
          wcm-0.20.0-3.fc21.src.rpm
wcm.x86_64: W: name-repeated-in-summary C WCM
wcm.x86_64: W: file-not-utf8 /usr/share/doc/wcm/CHANGELOG.txt
wcm.x86_64: E: non-executable-script /usr/share/wcm/styles/solarize.sh 644 /bin/bash
wcm.x86_64: E: non-executable-script /usr/share/wcm/styles/solarized-gen.py 644 /usr/bin/python
wcm.x86_64: W: no-manual-page-for-binary wcm
wcm.src: W: name-repeated-in-summary C WCM
wcm.src: W: invalid-url Source0: https://github.com/corporateshark/WalCommander/archive/WCMCommander-release-0.20.0.tar.gz HTTP Error 404: Not Found
2 packages and 0 specfiles checked; 2 errors, 5 warnings.

Rpmlint (debuginfo)
-------------------
Checking: wcm-debuginfo-0.20.0-3.fc21.x86_64.rpm
1 packages and 0 specfiles checked; 0 errors, 0 warnings.

Rpmlint (installed packages)
----------------------------
wcm.x86_64: W: name-repeated-in-summary C WCM
wcm.x86_64: W: file-not-utf8 /usr/share/doc/wcm/CHANGELOG.txt
wcm.x86_64: E: non-executable-script /usr/share/wcm/styles/solarize.sh 644 /bin/bash
wcm.x86_64: E: non-executable-script /usr/share/wcm/styles/solarized-gen.py 644 /usr/bin/python
wcm.x86_64: W: no-manual-page-for-binary wcm
2 packages and 0 specfiles checked; 2 errors, 3 warnings.

Requires
--------
wcm (rpmlib, GLIBC filtered):
    /bin/sh
    libX11.so.6()(64bit)
    libc.so.6()(64bit)
    libfreetype.so.6()(64bit)
    libgcc_s.so.1()(64bit)
    libgcc_s.so.1(GCC_3.0)(64bit)
    libm.so.6()(64bit)
    libpthread.so.0()(64bit)
    libsmbclient.so.0()(64bit)
    libsmbclient.so.0(SMBCLIENT_0.1.0)(64bit)
    libssh2.so.1()(64bit)
    libstdc++.so.6()(64bit)
    libstdc++.so.6(CXXABI_1.3)(64bit)
    libstdc++.so.6(CXXABI_1.3.5)(64bit)
    libstdc++.so.6(CXXABI_1.3.8)(64bit)
    libutf8proc.so.0.1()(64bit)
    rtld(GNU_HASH)

Provides
--------
wcm:
    appdata()
    appdata(wcm.appdata.xml)
    application()
    application(wcm.desktop)
    wcm
    wcm(x86-64)

Comment 14 Eugene A. Pivnev 2015-08-17 14:21:08 UTC
(In reply to William Moreno from comment #13)
>       Orphan dir: /usr/share/icons/hicolor/*/apps
>       Add Requires: hicolors-icon-theme

Fixed

> Fail: gtk-update-icon-cache is invoked in %postun and %posttrans.

Fixed

> Fail: Sources can be downloaded from URI in Source: tag

Fixed

> Fail: Package contains BR: python2-devel or python3-devel

Fixed (python scripts removed from installation - these are devel tools)

> Fail: Permissions on files are set properly.
>       E: non-executable-script /usr/share/wcm/styles/solarize.sh 644
> /bin/bash
>       E: non-executable-script /usr/share/wcm/styles/solarized-gen.py 644
> /usr/bin/python

Fixed (devel tools)

> Fail: Patches link to upstream bugs/comments/lists

Fixed

> Note: W: name-repeated-in-summary C WCM
>       Drop the mane of the package in summary

?
"WCM Commander" is original application name.
But developers recomended to use "wcm" as short name.

> Note: W: no-manual-page-for-binary wcm

Fixed

> Note: W: file-not-utf8 /usr/share/doc/wcm/CHANGELOG.txt

Fixed

So:

SPEC: https://tieugene.fedorapeople.org/rpms/wcm/wcm.spec
SRPM: https://tieugene.fedorapeople.org/rpms/wcm/wcm-0.20.0-4.fc21.src.rpm
Koji:
EL7: https://koji.fedoraproject.org/koji/taskinfo?taskID=10731456
F23: https://koji.fedoraproject.org/koji/taskinfo?taskID=10731472

Comment 15 William Moreno 2015-08-17 14:40:19 UTC
Just a minor comment:

Do not use a compresed manpage
https://fedoraproject.org/wiki/Packaging:Guidelines#Manpages

I will check the spec, do not update the spec now, I will not block the review for the compresed manpage so it is a trivial fix.

Comment 16 William Moreno 2015-08-19 02:34:46 UTC
PACKAGE APROVED
===============

Remember to use the man page uncompresed

Comment 17 Eugene A. Pivnev 2015-08-19 06:28:24 UTC
New Package SCM Request
=======================
Package Name: wcm
Short Description: WCM Commander
Upstream URL: https://github.com/corporateshark/WCMCommanderOwners: tieugene
Branches: f21 f22 f23 epel7
InitialCC:

Comment 18 William Moreno 2015-08-19 14:10:35 UTC
New Package SCM Request
=======================
Package Name: wcm
Short Description: WCM Commander
Upstream URL: https://github.com/corporateshark/WCMCommander
Owners: tieugene
Branches: f21 f22 f23 epel7
InitialCC:

Comment 19 Gwyn Ciesla 2015-08-20 13:29:18 UTC
Git done (by process-git-requests).

Comment 20 Adam Williamson 2015-09-11 04:48:57 UTC
drive-by note: lurlparser now has a release - https://github.com/corporateshark/LUrlParser/releases - and wcm is now using the exact same code - https://github.com/corporateshark/WCMCommander/commit/a5fd6281083398e31b857df5aff99caacf0837e5 . according to policy it should therefore now be unbundled.

https://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#When_a_Bundled_Library_is_Discovered_Post-Review

Comment 21 Christopher Meng 2015-09-11 05:29:59 UTC
(In reply to awilliam from comment #20)
> drive-by note: lurlparser now has a release -
> https://github.com/corporateshark/LUrlParser/releases - and wcm is now using
> the exact same code -
> https://github.com/corporateshark/WCMCommander/commit/
> a5fd6281083398e31b857df5aff99caacf0837e5 . according to policy it should
> therefore now be unbundled.
> 
> https://fedoraproject.org/wiki/Packaging:
> No_Bundled_Libraries#When_a_Bundled_Library_is_Discovered_Post-Review

lurlparser and wcm are from the same upstream.

BUT, this package should be named as wcmcommander.

Comment 22 Adam Williamson 2015-09-11 05:33:29 UTC
they're from the same upstream vendor, but not the same upstream repository. strictly they ought to be packaged separately I believe. lurlparser is clearly intended to potentially be of use outside of wcmcommander, or it wouldn't be its own repository with its own release.

Comment 23 Christopher Meng 2015-09-11 08:22:17 UTC
(In reply to awilliam from comment #22)
> they're from the same upstream vendor, but not the same upstream repository.
> strictly they ought to be packaged separately I believe. lurlparser is
> clearly intended to potentially be of use outside of wcmcommander, or it
> wouldn't be its own repository with its own release.

IMO No, another similar case is redis, it contains linenoise, which is written by redis upstream and blindly favored/stared by lots of people. I personally think it's pretty general and not good, unlike how redis has been favored. But upstream still uses it.

Some upstreams intend to seperate everything they have, in order to show the distinct usage of various subprojects, however then bundle subprojects into another subprojects to make them work together. I'd observe this, most of upstreams know their code better than downstream packagers, if upstream can't even handle problems correct, downstream can't handle them as well.

What I'm going to do is to open a PR and use git submodule functionality to force upstream to keep the code up to date, and motivate them to check the compatibilities before each new release of wcm.

Comment 24 Adam Williamson 2015-09-11 15:00:05 UTC
Everyone's entitled to an opinion, but the wording of the policy and precedent here is pretty clear. I don't see any way FPC would *not* consider this a bundled library, based on literally hundreds of previous evaluations; you can look at the FPC ticket history if you like.

Comment 25 William Moreno 2015-09-11 15:10:14 UTC
If the library it is now packaged the maintainer should always prefer the use of the system library, even if they come for the same upstream, so it is very posible than the bundled library it is the same, do not look like a big deal to use a linked library it is the same upstream for booth.

Comment 26 Eugene A. Pivnev 2016-01-19 08:14:32 UTC
(In reply to William Moreno from comment #25)
> If the library it is now packaged the maintainer should always prefer the
> use of the system library, even if they come for the same upstream, so it is
> very posible than the bundled library it is the same, do not look like a big
> deal to use a linked library it is the same upstream for booth.

Now lurlparser is not packaged in Fedora.
And as about upstream - it is not library in common sense. It is simply 2 files - *.c and *.h. Without makefile etc.


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