Bug 693798

Summary: Review Request: octave-image - Image processing for Octave
Product: [Fedora] Fedora Reporter: Orion Poplawski <orion>
Component: Package ReviewAssignee: José Matos <jamatos>
Status: CLOSED NEXTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: fedora-package-review, jamatos, maurizio.antillon, notting
Target Milestone: ---Flags: jamatos: fedora-review+
j: 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: 2011-04-19 19:46:58 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 Orion Poplawski 2011-04-05 15:47:37 UTC
Spec URL: http://www.cora.nwra.com/~orion/fedora/octave-image.spec
SRPM URL: http://www.cora.nwra.com/~orion/fedora/octave-image-1.0.13-1.fc14.src.rpm
Description:
The Octave-forge Image package provides functions for processing images.
The package also provides functions for feature extraction, image
statistics, spatial and geometric transformations, morphological
operations, linear filtering, and much more.

Comment 1 José Matos 2011-04-08 11:35:27 UTC
I started the evaluation of this packages and my comments are at the end.

As soon as this is fixed we can pass to the other package it is probably easier to fix this first.

Package Review
==============

Key:
- = N/A
x = Check
! = Problem
? = Not evaluated

[x] : MUST - Package successfully compiles and builds into binary rpms on at least one supported architecture.
[x] : MUST - Each %files section contains %defattr
[x] : MUST - Spec file lacks Packager, Vendor, PreReq tags.
[x] : MUST - Package does not contain any libtool archives (.la)
[x] : MUST - Package use %makeinstall only when make install DESTDIR=... doesn't work.
[x] : MUST - Package is named according to the Package Naming Guidelines.
[x] : MUST - Spec file name must match the spec package %{name}, in the format %{name}.spec.
[-] : MUST - %config files are marked noreplace or the reason is justified.
[-] : MUST - Package contains a properly installed %{name}.desktop using desktop-file-install file if it is a GUI application.
[-] : MUST - Fully versioned dependency in subpackages, if present.
[-] : MUST - Header files in -devel subpackage, if present.
[-] : MUST - ldconfig called in %post and %postun if required.
[-] : MUST - License file installed when any subpackage combination is installed.
[-] : MUST - The spec file handles locales properly.
[-] : MUST - No %config files under /usr.
[-] : MUST - Development .so files in -devel subpackage, if present.
[-] : MUST - Static libraries in -static subpackage, if present.
[!] : MUST - Rpmlint output is silent.
        
        rpmlint octave-image-debuginfo-1.0.13-1.fc16.i686.rpm
        ================================================================================
        octave-image-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/image-1.0.13/src/edtfunc.c
        1 packages and 0 specfiles checked; 0 errors, 1 warnings.
        ================================================================================
        
        rpmlint octave-image-1.0.13-1.fc16.i686.rpm
        ================================================================================
        octave-image.i686: W: obsolete-not-provided octave-forge
        octave-image.i686: W: hidden-file-or-dir /usr/share/octave/packages/image-1.0.13/packinfo/.autoload
        octave-image.i686: E: zero-length /usr/share/octave/packages/image-1.0.13/packinfo/.autoload
        octave-image.i686: W: dangerous-command-in-%preun rm
        1 packages and 0 specfiles checked; 1 errors, 3 warnings.
        ================================================================================
        
        rpmlint octave-image-1.0.13-1.fc16.src.rpm
        ================================================================================
        1 packages and 0 specfiles checked; 0 errors, 0 warnings.
        ================================================================================
        
[x] : MUST - Sources used to build the package matches the upstream source, as provided in the spec URL.
        MD5SUM upstream package : b2948a6d90cbd55f7b0a12fdf5da3b23
[x] : MUST - Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines.
[x] : MUST - %build honors applicable compiler flags or justifies otherwise.
[x] : MUST - All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines.
[x] : MUST - Package contains no bundled libraries.
[x] : MUST - Changelog in prescribed format.
[x] : MUST - Sources contain only permissible code or content.
[x] : MUST - Macros in Summary, %description expandable at SRPM build time.
[-] : MUST - Package requires other packages for directories it uses.
[x] : MUST - Package uses nothing in %doc for runtime.
[x] : MUST - Package is not known to require ExcludeArch.
[x] : MUST - Permissions on files are set properly.
[x] : MUST - Package does not contain duplicates in %files.
[-] : MUST - Large documentation files are in a -doc subpackage, if required.
[x] : MUST - 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] : MUST - License field in the package spec file matches the actual license.
[x] : MUST - Package consistently uses macros. instead of hard-coded directory names.
[x] : MUST - Package meets the Packaging Guidelines.
[x] : MUST - Package does not generates any conflict.
[-] : MUST - Package does not contains kernel modules.
[x] : MUST - Package contains no static executables.
[x] : MUST - Package obeys FHS, except libexecdir and /usr/target.
[x] : MUST - Package must own all directories that it creates.
[x] : MUST - Package does not own files or directories owned by other packages.
[!] : MUST - Package installs properly.
[-] : MUST - Rpath absent or only used for internal libs.
[x] : MUST - Package is not relocatable.
[x] : MUST - Requires correct, justified where necessary.
[x] : MUST - Spec file is legible and written in American English.
[-] : MUST - Package contains a SysV-style init script if in need of one.
[x] : MUST - File names are valid UTF-8.
[x] : MUST - Useful -debuginfo package or justification otherwise.
[x] : SHOULD - Reviewer should test that the package builds in mock.
[x] : SHOULD - Dist tag is present.
[x] : SHOULD - SourceX / PatchY prefixed with %{name}.
[x] : SHOULD - SourceX is a working URL.
[x] : SHOULD - Spec use %global instead of %define.
[-] : SHOULD - Uses parallel make.
[-] : SHOULD - The placement of pkgconfig(.pc) files are correct.
[-] : SHOULD - 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] : SHOULD - No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[!] : SHOULD - Final provides and requires are sane (rpm -q --provides and rpm -q --requires).
[x] : SHOULD - Package functions as described.
[x] : SHOULD - Latest version is packaged.
[x] : SHOULD - Package does not include license text files separate from upstream.
[-] : SHOULD - Man pages included for all executables.
[-] : SHOULD - Patches link to upstream bugs/comments/lists or are otherwise justified.
[x] : SHOULD - Scriptlets must be sane, if used.
[-] : SHOULD - Description and summary sections in the package spec file contains translations for supported Non-English languages, if available.
[x] : SHOULD - Package should compile and build into binary rpms on all supported architectures.
[x] : SHOULD - %check is present and all tests pass.
[x] : SHOULD - Packages should try to preserve timestamps of original installed files.

Issues:
[!] : MUST - Rpmlint output is silent.
        
        rpmlint octave-image-debuginfo-1.0.13-1.fc16.i686.rpm
        ================================================================================
        octave-image-debuginfo.i686: W: spurious-executable-perm /usr/src/debug/image-1.0.13/src/edtfunc.c
        1 packages and 0 specfiles checked; 0 errors, 1 warnings.
        ================================================================================
        
        rpmlint octave-image-1.0.13-1.fc16.i686.rpm
        ================================================================================
        octave-image.i686: W: obsolete-not-provided octave-forge
        octave-image.i686: W: hidden-file-or-dir /usr/share/octave/packages/image-1.0.13/packinfo/.autoload
        octave-image.i686: E: zero-length /usr/share/octave/packages/image-1.0.13/packinfo/.autoload
        octave-image.i686: W: dangerous-command-in-%preun rm
        1 packages and 0 specfiles checked; 1 errors, 3 warnings.
        ================================================================================
        
        rpmlint octave-image-1.0.13-1.fc16.src.rpm
        ================================================================================
        1 packages and 0 specfiles checked; 0 errors, 0 warnings.
        ================================================================================
        
[!] : SHOULD - Final provides and requires are sane (rpm -q --provides and rpm -q --requires).
	Provides: octave(api) = api-v47+}

	Requires: (strange, are this used?)
	__bilateral__.oct()(64bit)  
	__bwdist.oct()(64bit)  
	bwfill.oct()(64bit)  
	bwlabel.oct()(64bit)  
	__custom_gaussian_smoothing__.oct()(64bit)  
	deriche.oct()(64bit)  
	graycomatrix.oct()(64bit)  
	hough_line.oct()(64bit)  
	__imboundary__.oct()(64bit)  
	nonmax_supress.oct()(64bit)  
	rotate_scale.oct()(64bit)  
	__spatial_filtering__.oct()(64bit)  

Regarding the rpmlint warnings:

Is the obsolete really necessary? (It is a genuine question and I accept your answer). It just seems strange to see this for a package that has almost two years.

With respect to the "dangerous-command-in-%preun" I think that this is a false positive so it can be ignored (unless I am missing something obvious).

The provides part seems to be a mistake in octave-devel, we should probably contact the octave maintainer for this issue. ;-)
If the value is correct then it is weird.

What should we do with the final provides? Probably we need to rework the provides filter for octave packages. What do you think?

Comment 2 Orion Poplawski 2011-04-08 16:09:33 UTC
(In reply to comment #1)
> Issues:
> [!] : MUST - Rpmlint output is silent.
> 
>         octave-image-debuginfo.i686: W: spurious-executable-perm
> /usr/src/debug/image-1.0.13/src/edtfunc.c

Fixed.


>         octave-image.i686: W: obsolete-not-provided octave-forge
>         octave-image.i686: W: hidden-file-or-dir
> /usr/share/octave/packages/image-1.0.13/packinfo/.autoload
>         octave-image.i686: E: zero-length
> /usr/share/octave/packages/image-1.0.13/packinfo/.autoload
>         octave-image.i686: W: dangerous-command-in-%preun rm


> [!] : SHOULD - Final provides and requires are sane (rpm -q --provides and rpm
> -q --requires).
>  Provides: octave(api) = api-v47+}

Ah, typo in the macros.  Will get a new octave package out asap.  Interestingly, rpm/yum appears to ignore the }..  I could install via yum just fine.

>  Requires: (strange, are this used?)
>  __bilateral__.oct()(64bit)  
>  __bwdist.oct()(64bit)  
>  bwfill.oct()(64bit)  
>  bwlabel.oct()(64bit)  
>  __custom_gaussian_smoothing__.oct()(64bit)  
>  deriche.oct()(64bit)  
>  graycomatrix.oct()(64bit)  
>  hough_line.oct()(64bit)  
>  __imboundary__.oct()(64bit)  
>  nonmax_supress.oct()(64bit)  
>  rotate_scale.oct()(64bit)  
>  __spatial_filtering__.oct()(64bit)  

Well, these are the octave interfaces that are installed.  I think we can leave them.  They already have their own namespace of a sort (.oct).

> Regarding the rpmlint warnings:
> 
> Is the obsolete really necessary? (It is a genuine question and I accept your
> answer). It just seems strange to see this for a package that has almost two
> years.

yes, to provide an upgrade path from octave-forge in F14.

> With respect to the "dangerous-command-in-%preun" I think that this is a false
> positive so it can be ignored (unless I am missing something obvious).

Well, there is an rm in the %octave_pkg_preun macro:

%octave_pkg_preun \
rm %{octpkgdir}/packinfo/on_uninstall.m \
if [ -e %{octpkgdir}/packinfo/on_uninstall.m.orig ]; then \
  mv %{octpkgdir}/packinfo/on_uninstall.m.orig %{octpkgdir}/packinfo/on_uninstall.m \
  cd %{octpkgdir}/packinfo \
  %octave_cmd l=pkg('list');on_uninstall(l{cellfun(@(x)strcmp(x.name,'%{octpkg}'),l)}); \
fi \
%{nil}

Looking closer, I think I can replace the rm with a mv -f.  That seems to remove the rpmlint warning.

> What should we do with the final provides? Probably we need to rework the
> provides filter for octave packages. What do you think?

I think it is fine as is.  May actually help with octave package dependencies.  Filtering leads to other rpm issues too.

Comment 3 José Matos 2011-04-08 17:05:40 UTC
(In reply to comment #2)
> >  Provides: octave(api) = api-v47+}
> 
> Ah, typo in the macros.  Will get a new octave package out asap. 
> Interestingly, rpm/yum appears to ignore the }..  I could install via yum just
> fine.

As soon as you have a build in koji I will tests it.

> >  Requires: (strange, are this used?)
> >  __bilateral__.oct()(64bit)  
> >  __bwdist.oct()(64bit)  
> >  bwfill.oct()(64bit)  
> >  bwlabel.oct()(64bit)  
> >  __custom_gaussian_smoothing__.oct()(64bit)  
> >  deriche.oct()(64bit)  
> >  graycomatrix.oct()(64bit)  
> >  hough_line.oct()(64bit)  
> >  __imboundary__.oct()(64bit)  
> >  nonmax_supress.oct()(64bit)  
> >  rotate_scale.oct()(64bit)  
> >  __spatial_filtering__.oct()(64bit)  
> 
> Well, these are the octave interfaces that are installed.  I think we can leave
> them.  They already have their own namespace of a sort (.oct).

My question is how can we use this automatically. A notation such as
octave(rotate_scale)

seems easier to remember than
rotate_scale.oct()

In any case I agree that this is an improvement that can be accomplished later.

So not an issue for now.

> > Regarding the rpmlint warnings:
> > 
> > Is the obsolete really necessary? (It is a genuine question and I accept your
> > answer). It just seems strange to see this for a package that has almost two
> > years.
> 
> yes, to provide an upgrade path from octave-forge in F14.

OK.

> > What should we do with the final provides? Probably we need to rework the
> > provides filter for octave packages. What do you think?
> 
> I think it is fine as is.  May actually help with octave package dependencies. 
> Filtering leads to other rpm issues too.

I agree my point as described later is for us to be able to use an automatic octave filter such that as soon as you have an octave script rpms gets the right octave module to depend on. Clearly a nice to have but not a requirement now by any account. :-)

Comment 4 Orion Poplawski 2011-04-08 19:17:27 UTC
(In reply to comment #3)
> As soon as you have a build in koji I will tests it.
 
https://admin.fedoraproject.org/updates/octave-3.4.0-6.fc15

> > Well, these are the octave interfaces that are installed.  I think we can leave
> > them.  They already have their own namespace of a sort (.oct).
> 
> My question is how can we use this automatically. A notation such as
> octave(rotate_scale)
> 
> seems easier to remember than
> rotate_scale.oct()

Yeah, I guess the more I think about it, these Provides are useless.  But I don't see them causing a problem, and filtering provides can lead to rpm issues, so I'd like to avoid it if possible.

Comment 5 José Matos 2011-04-08 19:58:10 UTC
OK. With the issues fixed the package is approved.

Comment 6 Orion Poplawski 2011-04-11 15:20:55 UTC
New Package SCM Request
=======================
Package Name: octave-image
Short Description: Image processing for Octave
Owners: orion
Branches: f15 el6
InitialCC:

Comment 7 Jason Tibbitts 2011-04-11 17:38:41 UTC
Git done (by process-git-requests).

Comment 8 Orion Poplawski 2011-04-19 19:46:58 UTC
Thanks all.