Bug 990272

Summary: Review Request: libmbim - library to control MBIM-speaking WWAN modems
Product: [Fedora] Fedora Reporter: Dan Williams <dcbw>
Component: Package ReviewAssignee: Michael Schwendt <bugs.michael>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: alekcejk, i, notting
Target Milestone: ---Flags: bugs.michael: fedora-review+
gwync: fedora-cvs+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-09-12 18:16:35 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Dan Williams 2013-07-30 18:27:33 UTC
Spec URL: http://people.redhat.com/dcbw/libmbim.spec
SRPM URL: http://people.redhat.com/dcbw/libmbim-1.5.0-1.git20130730.fc20.src.rpm
Description: Support library for the Mobile Broadband Interface Model protocol
Fedora Account System Username: dcbw

Comment 1 Michael Schwendt 2013-08-05 16:35:30 UTC
Only skimmed over the spec:


> Name: libmbim
> Group: Development/Libraries

The group for run-time libs has been "System Environment/Libraries" for many years. Alternatively, drop the Group tag.


> Requires: glib2 >= %{glib2_version}

Add %{?_isa} here and also a comment giving the rationale why this minimum version is strictly needed.

https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires


> %package devel
> Requires: glib2-devel

Add %{?_isa} here, too.


> Requires: pkgconfig

There's an automatic dep on /usr/bin/pkgconfig already.


> %post   devel -p /sbin/ldconfig
> %postun	devel -p /sbin/ldconfig

Not needed, and we don't run ldconfig for -devel packages.


> %files devel
> %dir %{_includedir}/libmbim-glib
> %{_includedir}/libmbim-glib/*.h

A single line could replace those two above, too:

  %{_includedir}/libmbim-glib/

> %dir %{_datadir}/gtk-doc/html/libmbim-glib
> %{_datadir}/gtk-doc/html/libmbim-glib/*

If you don't let the package require "gtk-doc", own all directories:

  %dir %{_datadir}/gtk-doc
  %dir %{_datadir}/gtk-doc/html

https://fedoraproject.org/wiki/Packaging:Guidelines#The_directory_is_owned_by_a_package_which_is_not_required_for_your_package_to_function

Of course, you could include the entire tree with a single line:

  %{_datadir}/gtk-doc/

Comment 2 Dan Williams 2013-08-12 19:22:43 UTC
(In reply to Michael Schwendt from comment #1)
> Only skimmed over the spec:
> 
> 
> > Name: libmbim
> > Group: Development/Libraries
> 
> The group for run-time libs has been "System Environment/Libraries" for many
> years. Alternatively, drop the Group tag.

Dropped.

> 
> > Requires: glib2 >= %{glib2_version}
> 
> Add %{?_isa} here and also a comment giving the rationale why this minimum
> version is strictly needed.
> 
> https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

As F18+ and later meet the minimum requirement, I've removed the explicit version requirement and added {?_isa}.

> 
> > %package devel
> > Requires: glib2-devel
> 
> Add %{?_isa} here, too.

Done.

> > Requires: pkgconfig
> 
> There's an automatic dep on /usr/bin/pkgconfig already.

Removed.

> > %post   devel -p /sbin/ldconfig
> > %postun	devel -p /sbin/ldconfig
> 
> Not needed, and we don't run ldconfig for -devel packages.

Removed.

> > %files devel
> > %dir %{_includedir}/libmbim-glib
> > %{_includedir}/libmbim-glib/*.h
> 
> A single line could replace those two above, too:
> 
>   %{_includedir}/libmbim-glib/

Done.

> > %dir %{_datadir}/gtk-doc/html/libmbim-glib
> > %{_datadir}/gtk-doc/html/libmbim-glib/*
> 
> If you don't let the package require "gtk-doc", own all directories:
> 
>   %dir %{_datadir}/gtk-doc
>   %dir %{_datadir}/gtk-doc/html

Done.

> https://fedoraproject.org/wiki/Packaging:
> Guidelines#The_directory_is_owned_by_a_package_which_is_not_required_for_your
> _package_to_function
> 
> Of course, you could include the entire tree with a single line:
> 
>   %{_datadir}/gtk-doc/

gli2 also provides some gtk-doc, and while that's currently stored in glib2-doc it has switched around in the past between -devel (which is a BuildRequire) and -docs so I'm more comfortable explicitly owning the relevant dirs than all of them.

Specfile and SRPM updated in same location as comment 1.  Thanks!

Comment 3 Christopher Meng 2013-08-13 00:03:18 UTC
Why can't you bump the version? Is it too hard for you to do that?

One issue: You should avoid using %{__rm}.

Comment 4 Dan Williams 2013-08-13 20:31:42 UTC
(In reply to Christopher Meng from comment #3)
> Why can't you bump the version? Is it too hard for you to do that?

Bump which version?

> One issue: You should avoid using %{__rm}.

Do you mean that the specfile should use 'rm' directly instead?

Comment 5 Michael Schwendt 2013-08-14 07:59:34 UTC
"bump the version" likely refers to the "Release" tag:

https://fedoraproject.org/wiki/Packaging:FrequentlyMadeMistakes
| 
| Increase the "Release" tag every time you upload a new package
| to avoid confusion. The reviewer and other interested parties
| probably still have older versions of your SRPM lying around
| to check what has changed between the old and new packages;
| those get confused when the revision didn't change. 

It would be more helpful, if Christopher would give a rationale (or a link to the Wiki) when asking for spec file changes.

[...]

A close look at the package:


> %global snapshot .git20130730
> Release: 1%{snapshot}%{?dist}

If following the guidelines, the date would come before "git":
https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages

That's not really important for post-release snapshots and when strictly keeping the same package versioning scheme, but it helps avoiding surprises, such as comparing letters with numbers:

  $ rpmdev-vercmp 1.git20130830.fc19 1.20130730git.fc19
  1.git20130830.fc19 < 1.20130730git.fc19


A test-build:

> configure: WARNING: unrecognized options: --with-tests

?


> checking whether to build gtk-doc documentation... no
>    Documentation:           no

?


>    Maintainer mode:         yes

Indeed, it's one of the configure scripts that still enable AM_MAINTAINER_MODE. Not an immediate problem, just pointing it out.


> checking for LIBMBIM_GLIB... no
> configure: error: Package requirements (glib-2.0 >= 2.32
>                   gobject-2.0
>                   gio-2.0
>                   gudev-1.0 >= 147) were not met:
> No package 'gudev-1.0' found

It's missing:

  # libgudev1-devel
  BuildRequires: pkgconfig(gudev-1.0) >= 147


> Requires: glib2%{?_isa}

So, if there is _no_ minimum version requirement, the conclusion is that you should drop this explicit Requires completely in accordance with:
https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires

There is an automatic arch-specific dependency on the libglib-2.0.so.0 SONAME.


> make %{?_smp_mflags}

Two options for making the build output more verbose (so one could actually see what compiler flags are used or examine build logs with scripts). Either:

  V=1 make %{?_smp_mflags}
or
  %configure --disable-silent-rules ...


Relevant rpmlint output for the binary rpms:

> libmbim.x86_64: E: incorrect-fsf-address /usr/share/doc/libmbim-1.5.0/COPYING

https://fedoraproject.org/wiki/Common_Rpmlint_issues#incorrect-fsf-address


> libmbim.x86_64: E: zero-length /usr/share/doc/libmbim-1.5.0/README

Not a big issue. You could drop it, but decide yourself whether you would notice that a future upgrade would fill it with contents.


> libmbim-utils.x86_64: W: no-documentation
> libmbim-utils.x86_64: W: no-manual-page-for-binary mbimcli
> libmbim-utils.x86_64: W: no-manual-page-for-binary mbim-network

Just including these warnings to meet the review guidelines. ;)


> %package utils
> License: GPLv2+

GPLv2 and GPLv2+, since the mbim-network script contains a GPLv2 preamble with no "or later" clause.

Perhaps that's intentional, perhaps not:
https://fedoraproject.org/wiki/Packaging:LicensingGuidelines#License_Clarification


> glib2 also provides some gtk-doc, and while that's currently stored
> in glib2-doc it has switched around in the past between -devel (which
> is a BuildRequire) and -docs so I'm more comfortable explicitly
> owning the relevant dirs than all of them.

There is no reason to be concerned, because we install into an empty %{buildroot}, and that one won't include any docs from glib2 build requirements.

> %dir %{_datadir}/gtk-doc
> %dir %{_datadir}/gtk-doc/html
> %dir %{_datadir}/gtk-doc/html/libmbim-glib
> %{_datadir}/gtk-doc/html/libmbim-glib/*

  %{_datadir}/gtk-doc/

achieves exactly the same thing.

  $ rpmls -p libmbim-devel-1.5.0-1.git20130730.fc19.x86_64.rpm|grep ^d
  drwxr-xr-x  /usr/include/libmbim-glib
  drwxr-xr-x  /usr/share/gtk-doc
  drwxr-xr-x  /usr/share/gtk-doc/html
  drwxr-xr-x  /usr/share/gtk-doc/html/libmbim-glib

Comment 6 Dan Williams 2013-08-15 18:35:35 UTC
(In reply to Michael Schwendt from comment #5)
> "bump the version" likely refers to the "Release" tag:
> 
> https://fedoraproject.org/wiki/Packaging:FrequentlyMadeMistakes
> | 
> | Increase the "Release" tag every time you upload a new package
> | to avoid confusion. The reviewer and other interested parties
> | probably still have older versions of your SRPM lying around
> | to check what has changed between the old and new packages;
> | those get confused when the revision didn't change. 
> 
> It would be more helpful, if Christopher would give a rationale (or a link
> to the Wiki) when asking for spec file changes.
> 
> [...]
> 
> A close look at the package:
> 
> 
> > %global snapshot .git20130730
> > Release: 1%{snapshot}%{?dist}
> 
> If following the guidelines, the date would come before "git":
> https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages
> 
> That's not really important for post-release snapshots and when strictly
> keeping the same package versioning scheme, but it helps avoiding surprises,
> such as comparing letters with numbers:
> 
>   $ rpmdev-vercmp 1.git20130830.fc19 1.20130730git.fc19
>   1.git20130830.fc19 < 1.20130730git.fc19

Changed.

> A test-build:
> 
> > configure: WARNING: unrecognized options: --with-tests

Fixed.

> > checking whether to build gtk-doc documentation... no
> >    Documentation:           no

The documentation is pre-generated to ensure that multilib builds don't conflict.  So the documentation is pre-built, but won't be built during the package build.

> >    Maintainer mode:         yes
> 
> Indeed, it's one of the configure scripts that still enable
> AM_MAINTAINER_MODE. Not an immediate problem, just pointing it out.

I'll poke upstream on it.

> > checking for LIBMBIM_GLIB... no
> > configure: error: Package requirements (glib-2.0 >= 2.32
> >                   gobject-2.0
> >                   gio-2.0
> >                   gudev-1.0 >= 147) were not met:
> > No package 'gudev-1.0' found
> 
> It's missing:
> 
>   # libgudev1-devel
>   BuildRequires: pkgconfig(gudev-1.0) >= 147

Fixed.

> > Requires: glib2%{?_isa}
> 
> So, if there is _no_ minimum version requirement, the conclusion is that you
> should drop this explicit Requires completely in accordance with:
> https://fedoraproject.org/wiki/Packaging:Guidelines#Explicit_Requires
> 
> There is an automatic arch-specific dependency on the libglib-2.0.so.0
> SONAME.

Requires removed; relying on auto deps.

> > make %{?_smp_mflags}
> 
> Two options for making the build output more verbose (so one could actually
> see what compiler flags are used or examine build logs with scripts). Either:
> 
>   V=1 make %{?_smp_mflags}
> or
>   %configure --disable-silent-rules ...

Fixed to "V=1 make"

> Relevant rpmlint output for the binary rpms:
> 
> > libmbim.x86_64: E: incorrect-fsf-address /usr/share/doc/libmbim-1.5.0/COPYING
> 
> https://fedoraproject.org/wiki/Common_Rpmlint_issues#incorrect-fsf-address

Poked upstream, they fixed it, new tarball.

> > libmbim.x86_64: E: zero-length /usr/share/doc/libmbim-1.5.0/README
> 
> Not a big issue. You could drop it, but decide yourself whether you would
> notice that a future upgrade would fill it with contents.

Poked upstream, they fixed it, new tarball.

> > libmbim-utils.x86_64: W: no-documentation
> > libmbim-utils.x86_64: W: no-manual-page-for-binary mbimcli
> > libmbim-utils.x86_64: W: no-manual-page-for-binary mbim-network
> 
> Just including these warnings to meet the review guidelines. ;)

Upstream is discussing how to add the manpages.

> > %package utils
> > License: GPLv2+
> 
> GPLv2 and GPLv2+, since the mbim-network script contains a GPLv2 preamble
> with no "or later" clause.

It was unintentional.  Poked upstream, they fixed it, new tarball.

> > glib2 also provides some gtk-doc, and while that's currently stored
> > in glib2-doc it has switched around in the past between -devel (which
> > is a BuildRequire) and -docs so I'm more comfortable explicitly
> > owning the relevant dirs than all of them.
> 
> There is no reason to be concerned, because we install into an empty
> %{buildroot}, and that one won't include any docs from glib2 build
> requirements.
> 
> > %dir %{_datadir}/gtk-doc
> > %dir %{_datadir}/gtk-doc/html
> > %dir %{_datadir}/gtk-doc/html/libmbim-glib
> > %{_datadir}/gtk-doc/html/libmbim-glib/*
> 
>   %{_datadir}/gtk-doc/
> 
> achieves exactly the same thing.

Fixed.

spec and RPM in same location again.  Thanks!

Comment 7 Michael Schwendt 2013-08-16 17:02:32 UTC
Spec URL: http://people.redhat.com/dcbw/libmbim.spec
SRPM URL: http://people.redhat.com/dcbw/libmbim-1.5.0-1.20130815git.fc20.src.rpm

[...]

The diff against previous package looks almost good.

With the new snapshot, the license for the utils package is GPLv2+ now actually, not "GPLv2 and GPLv2+".


> The documentation is pre-generated ...

Oh! That should be explained in the spec file together with info on how to reproduce the git snapshot:

  https://fedoraproject.org/wiki/Packaging:SourceURL#Using_Revision_Control

The timestamps on the html doc files get refreshed during the %install step. Some packagers try to fight that using "install -p" with either

  make install INSTALL="install -p" DESTDIR=$RPM_BUILD_ROOT
or
  %make_install INSTALL="install -p"

but that doesn't affect many files in this case.


Just to be sure, with the latest stable release being 1.4.0, it seems the next official release following these 1.5.0 snapshots will be 1.6.0. Else the pre-release versioning scheme would be applicable:
https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Pre-Release_packages

[...]

That's no major issues that require another update for this review request. It's more convenient to apply remaining fixes/changes in Fedora package git.

APPROVED

Comment 8 Dan Williams 2013-09-11 22:47:18 UTC
New Package SCM Request
=======================
Package Name: libmbim
Short Description: Support library for the Mobile Broadband Interface Model protocol
Owners: dcbw
Branches: f20+
InitialCC:

Comment 9 Gwyn Ciesla 2013-09-12 12:17:16 UTC
Git done (by process-git-requests).

Comment 10 Dan Williams 2013-09-12 18:16:35 UTC
Imported and built, thanks everyone!