Bug 706565 - Review Request: sheepdog - The Sheepdog Distributed Storage System for KVM/QEMU
Summary: Review Request: sheepdog - The Sheepdog Distributed Storage System for KVM/QEMU
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Steven Dake
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-05-21 02:12 UTC by David Nalley
Modified: 2016-04-26 15:26 UTC (History)
3 users (show)

Fixed In Version: sheepdog-0.2.3-2.el6
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-06-02 18:57:44 UTC
Type: ---
Embargoed:
sdake: fedora-review+
j: fedora-cvs+


Attachments (Terms of Use)

Description David Nalley 2011-05-21 02:12:12 UTC
Spec URL: http://ke4qqq.fedorapeople.org/sheepdog.spec
SRPM URL: http://ke4qqq.fedorapeople.org/sheepdog-0.2.2-2.fc14.src.rpm
Description: 
This package contains the Sheepdog server, and command line tool which offer
a distributed object storage system for KVM.

Comment 1 David Nalley 2011-05-21 21:22:50 UTC
Updated SPEC: http://ke4qqq.fedorapeople.org/sheepdog.spec
Updated SRPM: http://ke4qqq.fedorapeople.org/sheepdog-0.2.3-1.fc14.src.rpm

Upstream just updated to 0.2.3

Comment 2 Steven Dake 2011-05-22 15:41:12 UTC
I will review this package - setting fedora-review ?.

Comment 3 Steven Dake 2011-05-22 16:12:43 UTC
MUSTS first:

MUST (1 warning): rpmlint must be run on the source rpm and all binary rpms the build produces. The output should be posted in the review.[1] 

[sdake@beast Downloads]$ rpmlint -v sheepdog-0.2.3-1.fc14.src.rpm
sheepdog.src: I: checking
sheepdog.src: W: name-repeated-in-summary C Sheepdog
sheepdog.src: I: checking-url http://www.osrg.net/sheepdog (timeout 10 seconds)
sheepdog.src: I: checking-url http://downloads.sourceforge.net/project/sheepdog/sheepdog/0.2.3/sheepdog-0.2.3.tar.gz (timeout 10 seconds)
1 packages and 0 specfiles checked; 0 errors, 1 warnings.

+ cd sheepdog-0.2.3
+ rm -rf /home/sdake/rpmbuild/BUILDROOT/sheepdog-0.2.3-1.fc14.x86_64
+ exit 0
[sdake@beast SPECS]$ rpmlint -v /home/sdake/rpmbiuld/BUILDROOT/sheepdog-0.2.3-1.fc14.x86_64
(none): E: no installed packages by name /home/sdake/rpmbiuld/BUILDROOT/sheepdog-0.2.3-1.fc14.x86_64
0 packages and 0 specfiles checked; 0 errors, 0 warnings.


MUST (PASSES): The package must be named according to the Package Naming Guidelines .

package passes naming guidelines.

MUST (PASSES): The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption. [2] . 

{name}.spec == package %{name}

MUST: The package must meet the Packaging Guidelines .
MUST (PASSES): The package must be licensed with a Fedora approved license and meet the Licensing Guidelines .

GPL are approved licenses

MUST(FAIL): The License field in the package spec file must match the actual license. [3]

The package license is GPLv2, not GPLv2+.  Looking through the source files, I don't see any references to GPLv3 - if you can point me at them, I'll make sure they get fixed upstream.

MUST (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 must be included in %doc.[4]

COPYING in %doc section

MUST (PASS): The spec file must be written in American English. [5]

spec file is in English.

MUST (PASS): The spec file for the package MUST be legible. [6]

spec file is legible.

MUST (PASS): The sources used to build the package must match the upstream source, as provided in the spec URL. Reviewers should use md5sum for this task. If no upstream URL can be specified for this package, please see the Source URL Guidelines for how to deal with this.
from upstream:

from upstream:
[sdake@beast Downloads]$ md5sum sheepdog-0.2.3.tar.gz
2348fd7121558e4efe9cab1fda4bf70a  sheepdog-0.2.3.tar.gz

from rpm:
[sdake@beast SOURCES]$ md5sum sheepdog-0.2.3.tar.gz
2348fd7121558e4efe9cab1fda4bf70a  sheepdog-0.2.3.tar.gz

MUST (PASS): The package MUST successfully compile and build into binary rpms on at least one primary architecture. [7]

verified builds on X86_64 architecture

MUST (NEEDHELP): If the package does not successfully compile, build or work on an architecture, then those architectures should be listed in the spec in ExcludeArch. Each architecture listed in ExcludeArch MUST have a bug filed in bugzilla, describing the reason that the package does not compile/build/work on that architecture. The bug number MUST be placed in a comment, next to the corresponding ExcludeArch line. [8]

I am not sure how to verify this.  Last I recall, we turned off builds of dependent packages on some architectures in fedora, which would make building this difficult.  I will get back to you on this point Monday.

MUST (PASS): All build dependencies must be listed in BuildRequires, except for any that are listed in the exceptions section of the Packaging Guidelines ; inclusion of those as BuildRequires is optional. Apply common sense.

Verified that the build deps of autotools and corosynclib-devel are sufficient to build from a minimal install + the default packages always located in the buildroot.

MUST (PASS): The spec file MUST handle locales properly. This is done by using the %find_lang macro. Using %{_datadir}/locale/* is strictly forbidden.[9]

no locales used.

MUST (PASS): Every binary RPM package (or subpackage) which stores shared library files (not just symlinks) in any of the dynamic linker's default paths, must call ldconfig in %post and %postun. [10]

no shared libraries in package.

MUST (PASS): Packages must NOT bundle copies of system libraries.[11]

there are no bundled system libraries.

MUST (PASS): If the package is designed to be relocatable, the packager must state this fact in the request for review, along with the rationalization for relocation of that specific package. Without this, use of Prefix: /usr is considered a blocker. [12]

Prefix: /usr is not used.  Review request not asked for relocateable feature.

MUST (PASS): A package must own all directories that it creates. If it does not create a directory that it uses, then it should require a package which does create that directory. [13]

There is only one directory that sheepdog init scripts use, and it is declared in the spec files section.

MUST (PASS): A Fedora package must not list a file more than once in the spec file's %files listings. (Notable exception: license texts in specific situations)[14]

No files are listed multiple times.

MUST (PASS): Permissions on files must be set properly. Executables should be set with executable permissions, for example. [15]

permissions are appropiately set.

MUST (PASS): Each package must consistently use macros. [16]

macro usage is consistent.

MUST (PASS): The package must contain code, or permissable content. [17]

The package contains only code, build scripts, license text, and documentation.

MUST (PASS): Large documentation files must go in a -doc subpackage. (The definition of large is left up to the packager's best judgement, but is not restricted to size. Large can refer to either size or quantity). [18]

The package contains only minimal readme documentation and man pages which are not significant in size and can reside in the main package.

MUST (PASS): If a package includes something as %doc, it must not affect the runtime of the application. To summarize: If it is in %doc, the program must run properly if it is not present. [18]

The %doc files do not impact the runtime of the software.

MUST (PASS): Header files must be in a -devel package. [19]

no header files are packaged.

MUST (PASS): Static libraries must be in a -static package. [20]

no static libraries are packaged.

MUST (PASS): If a package contains library files with a suffix (e.g. libfoo.so.1.1), then library files that end in .so (without suffix) must go in a -devel package. [19]

The package contains no shared objects.

MUST (PASS): In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name}%{?_isa} = %{version}-%{release} [21]

There is no devel package.

MUST (PASS): Packages must NOT contain any .la libtool archives, these must be removed in the spec if they are built.[20]

libtool is not used by this project.

MUST (PASS): Packages containing GUI applications must include a %{name}.desktop file, and that file must be properly installed with desktop-file-install in the %install section. If you feel that your packaged GUI application does not need a .desktop file, you must put a comment in the spec file with your explanation. [22]

This package has no GUI.

MUST (PASS): Packages must not own files or directories already owned by other packages. The rule of thumb here is that the first package to be installed should own the files or directories that other packages may rely upon. This means, for example, that no package in Fedora should ever share ownership with any of the files or directories owned by the filesystem or man package. If you feel that you have a good reason to own a file or directory that another package owns, then please present that at package review time. [23]

This package only owns one directory which is sheepdog specific.

MUST (PASS): All filenames in rpm packages must be valid UTF-8. [24]

All files are UTF-8.

Comment 4 Steven Dake 2011-05-22 16:16:08 UTC
Summary of issues needing correction in MUST requirements of package review:

not sure if this is a significant issue or not - I don't understand why rpmlint is complaining.

MUST (1 warning): rpmlint must be run on the source rpm and all binary rpms the
build produces. The output should be posted in the review.[1] 

[sdake@beast Downloads]$ rpmlint -v sheepdog-0.2.3-1.fc14.src.rpm
sheepdog.src: I: checking
sheepdog.src: W: name-repeated-in-summary C Sheepdog
sheepdog.src: I: checking-url http://www.osrg.net/sheepdog (timeout 10 seconds)
sheepdog.src: I: checking-url
http://downloads.sourceforge.net/project/sheepdog/sheepdog/0.2.3/sheepdog-0.2.3.tar.gz
(timeout 10 seconds)
1 packages and 0 specfiles checked; 0 errors, 1 warnings.

MUST(FAIL): The License field in the package spec file must match the actual
license. [3]

The package license is GPLv2, not GPLv2+.  Looking through the source files, I
don't see any references to GPLv3 - if you can point me at them, I'll make sure
they get fixed upstream.


MUST (NEEDHELP): If the package does not successfully compile, build or work on
an architecture, then those architectures should be listed in the spec in
ExcludeArch. Each architecture listed in ExcludeArch MUST have a bug filed in
bugzilla, describing the reason that the package does not compile/build/work on
that architecture. The bug number MUST be placed in a comment, next to the
corresponding ExcludeArch line. [8]

I am not sure how to verify this.  Last I recall, we turned off builds of
dependent packages (corosync) on some architectures in Fedora, which would make building this difficult on these arches :).  I will get back to you on this point Monday.

Comment 5 Steven Dake 2011-05-22 16:29:45 UTC
SHOULD (PASS): If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [25]

The license is contained in COPYING

SHOULD (DELAYED): The description and summary sections in the package spec file should contain translations for supported Non-English languages, if available. [26]
SHOULD (DELAYED): The reviewer should test that the package builds in mock. [27]

I will test this on a workday.

SHOULD (DELAYED): The package should compile and build into binary rpms on all supported architectures. [28]

I will test this on a workday.

SHOULD (delayed until May 25): The reviewer should test that the package functions as described. A package should not segfault instead of running, for example.

My test environment is under use until May 25.  May be able to find other hardware before then.

SHOULD (PASS): If scriptlets are used, those scriptlets must be sane. This is vague, and left up to the reviewers judgement to determine sanity. [29]

scriptlets are used sanely.
SHOULD (PASS): Usually, subpackages other than devel should require the base package using a fully versioned dependency. [21]

There are no subpackages.

SHOULD (PASS): The placement of pkgconfig(.pc) files depends on their usecase, and this is usually for development purposes, so should be placed in a -devel pkg. A reasonable exception is that the main pkg itself is a devel tool not installed in a user runtime, e.g. gcc or gdb. [30]

There are no pc files.

SHOULD (PASS): If the package has file dependencies outside of /etc, /bin, /sbin, /usr/bin, or /usr/sbin consider requiring the package which provides the file instead of the file itself. [31]

All dependencies are accounted for in a clean build environment.

SHOULD (PASS): your package should contain man pages for binaries/scripts. If it doesn't, work with upstream to add them where they make sense.[32]

There is no man page for the cli tool collie.  sdake will create man page and submit upstream to sheepdog project, but this is not a blocker.

Comment 6 Steven Dake 2011-05-22 16:33:17 UTC
Summary of SHOULD issues:
It is the weekend (May 22) and my test environment is currently under use likely until Wed-Thur.  This prevents 3 shoulds from being verified:

SHOULD (DELAYED): The reviewer should test that the package builds in mock.
[27]

I will test this on a workday.

SHOULD (DELAYED): The package should compile and build into binary rpms on all
supported architectures. [28]

I will test this on a workday.

SHOULD (delayed until May 25): The reviewer should test that the package
functions as described. A package should not segfault instead of running, for
example.

Also another item of work is as follows:
SHOULD (PASS): your package should contain man pages for binaries/scripts. If
it doesn't, work with upstream to add them where they make sense.[32]

There is no man page for the cli tool collie.  sdake will create man page and
submit upstream to sheepdog project, but this is not a blocker.

This last work item doesn't block the package review, but I will take on responsibility for adding this man page upstream.  Expect to see it in an updated tarball of sheepdog.

Comment 7 Steven Dake 2011-05-22 16:40:11 UTC
One last point needing work - once we settle on a final rpm spec file, that spec file needs to be merged upstream into the sheepdog.spec.in autotools generated spec file.  I will take on this task.

Comment 8 Steven Dake 2011-05-22 16:45:42 UTC
David,

If you would be so kind, after package review goes to + and is created in the repos, can you file two bugzillas against the sheepdog component and assign them to me.

They should be:

Create collie.8 man page and submit upstream
Merge updated spec file into sheepdog.spec.in and submit upstream
  (attach final spec file)

Comment 9 David Nalley 2011-05-22 17:46:14 UTC
(In reply to comment #4)

Inline reply: 


> Summary of issues needing correction in MUST requirements of package review:
> 
> not sure if this is a significant issue or not - I don't understand why rpmlint
> is complaining.
> 
> MUST (1 warning): rpmlint must be run on the source rpm and all binary rpms the
> build produces. The output should be posted in the review.[1] 
> 
> [sdake@beast Downloads]$ rpmlint -v sheepdog-0.2.3-1.fc14.src.rpm
> sheepdog.src: I: checking
> sheepdog.src: W: name-repeated-in-summary C Sheepdog
> sheepdog.src: I: checking-url http://www.osrg.net/sheepdog (timeout 10 seconds)
> sheepdog.src: I: checking-url
> http://downloads.sourceforge.net/project/sheepdog/sheepdog/0.2.3/sheepdog-0.2.3.tar.gz
> (timeout 10 seconds)
> 1 packages and 0 specfiles checked; 0 errors, 1 warnings.

I personally tend to ignore this particular warning, but I am happy to change it if you so desire, or if you just want rpmlint to be silent. 


> 
> MUST(FAIL): The License field in the package spec file must match the actual
> license. [3]
> 
> The package license is GPLv2, not GPLv2+.  Looking through the source files, I
> don't see any references to GPLv3 - if you can point me at them, I'll make sure
> they get fixed upstream.


So while the vast majority of the source files are indeed GPLv2, depcomps and missing have the 'or (at your option) any later version.' in their license text, which means GPLv2+ hence both GPLv2 and GPLv2+ 



> 
> 
> MUST (NEEDHELP): If the package does not successfully compile, build or work on
> an architecture, then those architectures should be listed in the spec in
> ExcludeArch. Each architecture listed in ExcludeArch MUST have a bug filed in
> bugzilla, describing the reason that the package does not compile/build/work on
> that architecture. The bug number MUST be placed in a comment, next to the
> corresponding ExcludeArch line. [8]
> 
> I am not sure how to verify this.  Last I recall, we turned off builds of
> dependent packages (corosync) on some architectures in Fedora, which would make
> building this difficult on these arches :).  I will get back to you on this
> point Monday.

Yeah, I didn't even think about looking at the ExcludeArches on corosync.

Comment 10 David Nalley 2011-05-22 18:06:45 UTC
(In reply to comment #6)
Inline reply: 

> Summary of SHOULD issues:
> It is the weekend (May 22) and my test environment is currently under use
> likely until Wed-Thur.  This prevents 3 shoulds from being verified:
> 
> SHOULD (DELAYED): The reviewer should test that the package builds in mock.
> [27]
> 
> I will test this on a workday.

Koji will do builds in mock or you, so hopefully to save you a bit of time: 

Here are two scratch builds for x86 and x86_64
http://koji.fedoraproject.org/koji/taskinfo?taskID=3086136
http://koji.fedoraproject.org/koji/taskinfo?taskID=3086139


> 
> SHOULD (DELAYED): The package should compile and build into binary rpms on all
> supported architectures. [28]
> 
> I will test this on a workday.
> 
> SHOULD (delayed until May 25): The reviewer should test that the package
> functions as described. A package should not segfault instead of running, for
> example.
> 
> Also another item of work is as follows:
> SHOULD (PASS): your package should contain man pages for binaries/scripts. If
> it doesn't, work with upstream to add them where they make sense.[32]
> 
> There is no man page for the cli tool collie.  sdake will create man page and
> submit upstream to sheepdog project, but this is not a blocker.
> 
> This last work item doesn't block the package review, but I will take on
> responsibility for adding this man page upstream.  Expect to see it in an
> updated tarball of sheepdog.

Thanks!

Comment 11 David Nalley 2011-05-22 18:07:15 UTC
BTW, Thanks for taking on the review!

Comment 12 David Nalley 2011-05-22 18:19:24 UTC
Just did scratch builds for ppc, ppc64, arm, s390, and s390x and all appear to have built successfully
All appeared to build successfully. I don't think we have Itanium builders anymore, so I think at least wrt Fedora that's it from a supported arch standpoint.

http://s390.koji.fedoraproject.org/koji/taskinfo?taskID=382308
http://arm.koji.fedoraproject.org/koji/taskinfo?taskID=94565
http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=220616

Comment 13 Steven Dake 2011-05-22 19:50:55 UTC
Agree with MUST assessments from Packager -
  All MUST requirements are met.

Will evaluate if a scratch build works as soon as my cluster is not under use by a different team - and then SHOULD requirements will be met.

Regards
-steve

Comment 14 Steven Dake 2011-05-23 17:21:00 UTC
I have verified that build functions as advertised.
  All SHALL requirements are met.

Comment 15 Steven Dake 2011-05-23 17:23:33 UTC
Based on Comment #13 and Comment #14, all MUST and SHALL requirements for packaging are MET.  There are outstanding upstream issues identified in Comment #8 which need bugzillas filed by the packager against the sheepdog component once it is added to Fedora.

Changing fedora-review to +.

Comment 16 Steven Dake 2011-05-23 17:25:29 UTC
In comment #14/#15, replace SHALL with SHOULD.

Comment 17 David Nalley 2011-05-24 12:54:11 UTC
Thanks for the review Steve!

New Package SCM Request
=======================
Package Name: sheepdog
Short Description: Distributed storage system for KVM/QEMU
Owners: ke4qqq
Branches: f15 el6
InitialCC:

Comment 18 Jason Tibbitts 2011-05-24 14:45:56 UTC
Git done (by process-git-requests).

Comment 19 Fedora Update System 2011-05-24 16:46:41 UTC
sheepdog-0.2.3-1.fc15 has been submitted as an update for Fedora 15.
https://admin.fedoraproject.org/updates/sheepdog-0.2.3-1.fc15

Comment 20 Fedora Update System 2011-05-25 02:29:08 UTC
sheepdog-0.2.3-1.fc15 has been pushed to the Fedora 15 testing repository.

Comment 21 Fedora Update System 2011-06-02 18:57:38 UTC
sheepdog-0.2.3-1.fc15 has been pushed to the Fedora 15 stable repository.

Comment 22 Fedora Update System 2011-06-05 03:19:59 UTC
sheepdog-0.2.3-2.el6 has been submitted as an update for Fedora EPEL 6.
https://admin.fedoraproject.org/updates/sheepdog-0.2.3-2.el6

Comment 23 Fedora Update System 2011-07-12 14:58:15 UTC
sheepdog-0.2.3-2.el6 has been pushed to the Fedora EPEL 6 stable repository.


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