Bug 1065490 - Review Request: perl-BSSolv - A new approach to package dependency solving
Summary: Review Request: perl-BSSolv - A new approach to package dependency solving
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Christopher Meng
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-02-14 18:50 UTC by Josef Stribny
Modified: 2016-01-04 05:52 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-05-05 10:13:36 UTC
Type: ---
Embargoed:
i: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Josef Stribny 2014-02-14 18:50:21 UTC
Spec URL: http://data-strzibny.rhcloud.com/perl-BSSolv.spec
SRPM URL: http://data-strzibny.rhcloud.com/perl-BSSolv-0.01-1.git1e18c32.fc20.src.rpm
Description: Using a Satisfyability Solver to compute package dependencies.
Fedora Account System Username: jstribny

Note: This is a dependency of OBS which I will try to package for Fedora. See former closed review[1].

[1] https://bugzilla.redhat.com/show_bug.cgi?id=985915

Comment 1 Christopher Meng 2014-02-15 03:52:02 UTC
(I hate OBS)

Anyway, please use tarball instead of source tag to build the package.

Please cleanup the %changelog, because the version has been changed.

Please remove the header of SUSE GmbH (can you write this from scratch on your own?)

Please remove this line:

find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \;

Comment 2 Josef Stribny 2014-02-19 15:00:41 UTC
Hi Christopher,

thanks for the suggestions,

SPEC: http://data-strzibny.rhcloud.com/perl-BSSolv.spec
SRPM: http://data-strzibny.rhcloud.com/perl-BSSolv-0.01-2.git1e18c32.fc20.src.rpm

Comment 3 Christopher Meng 2014-03-13 08:47:35 UTC
One question, which branch will you push of this package? rawhide only?

Comment 4 Josef Stribny 2014-03-13 12:37:01 UTC
Hi,

I am thinking f20 as well.

Comment 5 Christopher Meng 2014-03-28 10:05:42 UTC
Package Review
==============

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




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

C/C++:
[-]: Development (unversioned) .so files in -devel subpackage, if present.
     Note: Unversioned so-files in private %_libdir subdirectory (see
     attachment). Verify they are not in ld path.

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]: 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 %doc.
[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". 2 files have unknown license. Detailed output of
     licensecheck:

Unknown or generated
--------------------
perl-BSSolv-0.01/BSSolv.pm
perl-BSSolv-0.01/BSSolv.xs

[x]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: 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.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[x]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 10240 bytes in 1 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least one
     supported primary architecture.
[x]: 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
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: Package do not use a name that already exist
[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

Perl:
[x]: Package contains the mandatory BuildRequires and Requires:.

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

Generic:
[!]: Uses parallel make %{?_smp_mflags} macro.
[x]: If the source package does not include license text(s) as a separate file
     from upstream, the packager SHOULD query upstream to include it.
[x]: Final provides and requires are sane (see attachments).
[x]: Package functions as described.
[!]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: SourceX tarball generation or download is documented.
     Note: Package contains tarball without URL, check comments
[x]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[-]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed files.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[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]: Dist tag is present (not strictly required in GL).
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: SourceX is a working URL.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package is
     arched.


Rpmlint
-------
Checking: perl-BSSolv-0.01-2.git1e18c32.fc21.i686.rpm
          perl-BSSolv-0.01-2.git1e18c32.fc21.src.rpm
perl-BSSolv.i686: E: explicit-lib-dependency libsolv
perl-BSSolv.src:7: W: macro-in-comment %{gitrev}
perl-BSSolv.src: W: invalid-url Source0: BSSolv-0.01-git1e18c32.tar.gz
2 packages and 0 specfiles checked; 1 errors, 2 warnings.




Rpmlint (installed packages)
----------------------------
# rpmlint perl-BSSolv
perl-BSSolv.i686: E: explicit-lib-dependency libsolv
1 packages and 0 specfiles checked; 1 errors, 0 warnings.
# echo 'rpmlint-done:'



Requires
--------
perl-BSSolv (rpmlib, GLIBC filtered):
    libc.so.6
    liblzma.so.5
    libperl.so.5.18
    libsolv
    libsolv.so.0
    libsolv.so.0(SOLV_1.0)
    libsolvext.so.0
    libsolvext.so.0(SOLV_1.0)
    libz.so.1
    perl(:MODULE_COMPAT_5.18.2)
    perl(Exporter)
    perl(XSLoader)
    perl(strict)
    rtld(GNU_HASH)



Provides
--------
perl-BSSolv:
    perl(BSSolv)
    perl(BSSolv::repo)
    perl-BSSolv
    perl-BSSolv(x86-32)



Unversioned so-files
--------------------
perl-BSSolv: /usr/lib/perl5/vendor_perl/auto/BSSolv/BSSolv.so

Generated by fedora-review 0.5.1 (bb9bf27) last change: 2013-12-13
Command line :/usr/bin/fedora-review -rvn perl-BSSolv-0.01-2.git1e18c32.fc20.src.rpm
Buildroot used: fedora-rawhide-i386
Active plugins: Generic, Shell-api, Perl
Disabled plugins: Java, C/C++, Python, fonts, SugarActivity, Ocaml, Haskell, R, PHP, Ruby
Disabled flags: EXARCH, EPEL5, BATCH, DISTTAG

Comment 6 Christopher Meng 2014-04-16 06:31:12 UTC
Hi,

Please:

- Use parallel make %{?_smp_mflags} macro.
- Remove explicit dependency libsolv

Others are fine.

Comment 8 Christopher Meng 2014-04-23 01:46:52 UTC
You can drop Group tag as it's not useful now.

However it's your choice.

PACKAGE APPROVED.

Comment 9 Ralf Corsepius 2014-04-23 03:33:19 UTC
This package is far from being clean and should never have been approved.

* MUSTFIX: Missing BRs:
perl(Exporter)
perl(XSLoader)
perl(strict)

* MUSTFIX: Wrong License
The spec file tells License: BSD
The README inside of the tarball tells "Same as Perl" == GPL or Artistic

* Superflous BR: cmake
The package does not seem to use cmake anywhere.

* Superflous BR: rpm-devel
I do not see any dependency on anything from rpm-devel

* MUSTFIX: Missing BR: libsolv-devel
The package links against libsolv.so and libsolvext.so

* MUSTFIX: Missing BR: perl-devel
The package links against libperl.so

Comment 10 Christopher Meng 2014-04-23 04:15:47 UTC
(In reply to Ralf Corsepius from comment #9)
> This package is far from being clean and should never have been approved.
> 
> * MUSTFIX: Missing BRs:
> perl(Exporter)
> perl(XSLoader)
> perl(strict)

Requires
--------
perl-BSSolv (rpmlib, GLIBC filtered):
    libc.so.6
    liblzma.so.5
    libperl.so.5.18
    libsolv.so.0
    libsolv.so.0(SOLV_1.0)
    libsolvext.so.0
    libsolvext.so.0(SOLV_1.0)
    libz.so.1
    perl(:MODULE_COMPAT_5.18.2)
    perl(Exporter)
    perl(XSLoader)
    perl(strict)
    rtld(GNU_HASH)

> * MUSTFIX: Wrong License
> The spec file tells License: BSD
> The README inside of the tarball tells "Same as Perl" == GPL or Artistic

My bad, looks like they haven't added any license header.

> * Superflous BR: cmake
> The package does not seem to use cmake anywhere.
> 
> * Superflous BR: rpm-devel
> I do not see any dependency on anything from rpm-devel

These 2 above are superflous, please remove.

> * MUSTFIX: Missing BR: libsolv-devel
> The package links against libsolv.so and libsolvext.so

I think it had been added.

> * MUSTFIX: Missing BR: perl-devel
> The package links against libperl.so

I can't see any regarding perl-devel, all except a note:

https://fedoraproject.org/wiki/Packaging:Perl#Perl_Requires_and_Provides

"Do not explicitly buildrequire "perl-devel"
Explicitly requiring perl-devel, even when wrapped in a conditional construct, is strongly discouraged, and is generally considered a blocker at review and a packaging bug. Instead, see the next section on requiring core modules -- making sure that these core modules are BR'ed when used will pull in the correct development perl packages."

I'd like to see some details here.

Comment 11 Ralf Corsepius 2014-04-23 05:14:19 UTC
(In reply to Christopher Meng from comment #10)
> (In reply to Ralf Corsepius from comment #9)
> > This package is far from being clean and should never have been approved.
> > 
> > * MUSTFIX: Missing BRs:
> > perl(Exporter)
> > perl(XSLoader)
> > perl(strict)
> 
> Requires
BuildRequires!!!

>     perl(Exporter)
>     perl(XSLoader)
>     perl(strict)
Right, that's the reason why they must also be BR'ed. The package would fail running during building (e.g. when running tests) if these are not present.

> > * MUSTFIX: Missing BR: libsolv-devel
> > The package links against libsolv.so and libsolvext.so
> 
> I think it had been added.
You are right, I missed it in this spec file's clutter.

And while we're at it - This also doesn't make sense:
BuildRequires:  libdb4-devel
...
%if 0%{?rhel_version} || 0%{?centos_version}
BuildRequires:  db4-devel
%endif
...
The second BuildRequires: db4-devel is redundant to the first one.
 
> > * MUSTFIX: Missing BR: perl-devel
> > The package links against libperl.so
> 
> I can't see any regarding perl-devel, all except a note:
...
> "Do not explicitly buildrequire "perl-devel"
That's what I consider a bug in the FPG and in perl's packaging.
But OK, then lets table this issue for now and stay with BR: perl

Comment 12 Josef Stribny 2014-04-23 08:54:31 UTC
Thanks for the valuable comments, I will go through them and fix the spec. It's my first Perl package so I want to make it right.

I have one question:

> * MUSTFIX: Missing BRs:
> perl(Exporter)
> perl(XSLoader)
> perl(strict)

There are no tests and the module is not run during build so I don't believe they are required.

Comment 13 Ralf Corsepius 2014-04-23 09:30:30 UTC
(In reply to Josef Stribny from comment #12)
> Thanks for the valuable comments, I will go through them and fix the spec.
> It's my first Perl package so I want to make it right.
> 
> I have one question:
> 
> > * MUSTFIX: Missing BRs:
> > perl(Exporter)
> > perl(XSLoader)
> > perl(strict)
> 
> There are no tests and the module is not run during build
... which is bad enough.

> so I don't believe
> they are required.
You have a point and I have to row back (half)

The point in duplicating R:'s to BRs is to detect future run-time-dependency breakages at build-time.

In this case, perl(Exporter) and perl(XSLoader) are indirect dependencies, which are indirectly being pulled by building *.xs->*.o compilation and indirectly provided through the *.xs->*.o compilation infrastructure.

I.e. if perl(Exporter)/perl(XSLoader) are missing at buildtime the package would fail running a test-suite, if these where removed from the run-time environment, installation would fail.

As this package doesn't run a test-suite, BR: perl(Exporter)/perl(XSLoader) can be ignored in this case.

perl(strict) is a bit different: It is a direct dependency of 
SSolv-0.01-git1e18c32/BSSolv.pm:3:use strict;

I.e. it is required to be BR:'ed.

Comment 14 Josef Stribny 2014-04-27 11:18:23 UTC
Thank you for the explanation. I fixed the issues (licence, redundant BRs, ..):

SPEC: http://data-strzibny.rhcloud.com/perl-BSSolv.spec
SRPM: http://data-strzibny.rhcloud.com/perl-BSSolv-0.01-4.git1e18c32.fc21.src.rpm

Comment 15 Josef Stribny 2014-04-29 10:50:38 UTC
New Package SCM Request
=======================
Package Name: perl-BSSolv
Short Description: A new approach to package dependency solving
Owners: jstribny
Branches: f20
InitialCC:

Comment 16 Gwyn Ciesla 2014-04-29 11:47:25 UTC
Git done (by process-git-requests).


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