Bug 618480 - Review Request: EmfEngine - Library enabling Qt based applications to export graphics to the EMF format
Summary: Review Request: EmfEngine - Library enabling Qt based applications to export ...
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Pavel Alexeev
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-07-27 02:19 UTC by Chen Lei
Modified: 2010-09-19 19:23 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-09-14 02:22:52 UTC
Type: ---
Embargoed:
pahan: fedora-review+


Attachments (Terms of Use)

Description Chen Lei 2010-07-27 02:19:31 UTC
Description:
The  Enhanced MetaFile format (EMF) is the native vector graphics file format
on Windows. Qt is a cross-platform application development framework, widely 
used for the development of GUI programs. Although it provides tools for almost
every aspect of software development, Qt doesn't include a straightforward 
solution for the export of 2D graphics to the EMF format. EmfEngine covers this
lack and enables Qt based applications to easily export graphics created using
the QPainter class to the Enhanced Metafile format. It is built on top of the 
QPaintEngine class, which provides an abstract definition of how QPainter draws
to a given device on a given platform. 

Links:
http://dl.dropbox.com/u/1338197/1/EmfEngine-0.8-1.fc13.src.rpm
http://dl.dropbox.com/u/1338197/1/EmfEngine.spec

koji build:
F14 http://koji.fedoraproject.org/koji/taskinfo?taskID=2353138
F12 http://koji.fedoraproject.org/koji/taskinfo?taskID=2353133


This package is a new dependency for the latest qtiplot.

Comment 1 Pavel Alexeev 2010-08-27 08:40:30 UTC
I'll review it shortly.

Comment 2 Pavel Alexeev 2010-08-27 11:26:00 UTC
Legend:
+ - Ok.
- - Error.
+/- - It item acceptable, but I strongly recommend enhancement.
= - N/A.

MUST Items
[-] MUST: rpmlint must be run on every package. The output should be posted in the review.

$ rpmlint *.rpm *.spec
EmfEngine.src: W: no-cleaning-of-buildroot %install
EmfEngine.src: W: no-buildroot-tag
EmfEngine.spec: W: no-cleaning-of-buildroot %install
EmfEngine.spec: W: no-buildroot-tag
4 packages and 1 specfiles checked; 0 errors, 4 warnings.

no-buildroot-tag may be sefaley ignored if you are not planning maintain it for EPEL 4-5.

[-] MUST: The package must be named according to the Package Naming Guidelines.
As it only library it should start from "lib" prefix.

[+] MUST: The spec file name must match the base package %{name}, in the format %{name}.spec unless your package has an exemption.
[-] MUST: The package must meet the Packaging Guidelines.
Patch without link to upstream bugtracker - http://fedoraproject.org/wiki/Packaging/Guidelines#All_patches_should_have_an_upstream_bug_link_or_comment

[+] MUST: The package must be licensed with a Fedora approved license and meet the Licensing Guidelines.
[-] MUST: The License field in the package spec file must match the actual license.

License tag should be GPLv3+ according to comments in sources.

[+] 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 must be included in %doc.
[+] MUST: The spec file must be written in American English.
[+] MUST: The spec file for the package MUST be legible.
[+] MUST: 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.

$ md5sum EmfEngine-0.8-opensource.zip EmfEngine-0.8-opensource.zip_RPM
5eb31470e1e0e4d95289f76aec5c1b98  EmfEngine-0.8-opensource.zip
5eb31470e1e0e4d95289f76aec5c1b98  EmfEngine-0.8-opensource.zip_RPM

[+] MUST: The package MUST successfully compile and build into binary rpms on at least one primary architecture.
http://koji.fedoraproject.org/koji/taskinfo?taskID=2430814

[=] MUST: 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.
[+] MUST: 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.
[=] MUST: The spec file MUST handle locales properly. This is done by using the %find_lang macro. Using %{_datadir}/locale/* is strictly forbidden.
[+] MUST: 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.
[+] MUST: Packages must NOT bundle copies of system libraries.
[=] MUST: 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.
[=] MUST: 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.
[=] MUST: A Fedora package must not list a file more than once in the spec file's %files listings.
[+] MUST: Permissions on files must be set properly. Executables should be set with executable permissions, for example. Every %files section must include a %defattr(...) line.
[-] MUST: At the beginning of %install, each package MUST run rm -rf %{buildroot} (or $RPM_BUILD_ROOT).
About it also complain rpmlint, please fix.

[+] MUST: Each package must have a %clean section, which contains rm -rf %{buildroot} (or $RPM_BUILD_ROOT).
[+] MUST: Each package must consistently use macros.
[+] MUST: The package must contain code, or permissable content.
[=] MUST: 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).
[+] MUST: 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.
[+] MUST: Header files must be in a -devel package.
[=] MUST: Static libraries must be in a -static package.
[=] MUST: Packages containing pkgconfig(.pc) files must 'Requires: pkgconfig' (for directory ownership and usability).
[+] MUST: 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.
[+/-] MUST: In the vast majority of cases, devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release}

See note 2 below.

[+] MUST: Packages must NOT contain any .la libtool archives, these must be removed in the spec if they are built.
[=] MUST: 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.
[=] MUST: 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.
[+] MUST: All filenames in rpm packages must be valid UTF-8.

SHOULD Items:
[=] 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.
[=] SHOULD: The description and summary sections in the package spec file should contain translations for supported Non-English languages, if available.
[=] SHOULD: The reviewer should test that the package functions as described. A package should not segfault instead of running, for example.
[+] SHOULD: If scriptlets are used, those scriptlets must be sane. This is vague, and left up to the reviewers judgement to determine sanity.
[=] SHOULD: Usually, subpackages other than devel should require the base package using a fully versioned dependency.
[=] SHOULD: 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.
[=] SHOULD: 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.

Some note:
1) Just for polish. May be have worth dos2unix all files in one command:
find -name '*.h' -or -name '*.hh' -or -name '*.hpp' -or -name '*.c' -or -name '*.cc' -or -name '*.cpp' -exec dos2unix -k {} \;
Furtermore, as we pack in -devel only headers, converting of sources (*.c, *.cc, *.cpp) seems unnecessary.
If we go even forward - in one command it can be done without separate commands for the *.txt and examples.
2) I'm do not understand for what you add %{?_isa} in requires and buildrequires of -devel sub-package? Are headers different or arch dependent?

Comment 3 Chen Lei 2010-08-27 11:50:45 UTC
(In reply to comment #2)
> [-] MUST: The package must be named according to the Package Naming Guidelines.
> As it only library it should start from "lib" prefix.
We should not add lib to the pkgname, see
http://fedoraproject.org/wiki/PackageNamingGuidelines#General_Naming

> [-] MUST: The package must meet the Packaging Guidelines.
This is an installation patch and irrelevant to upstream.

> [-] MUST: The License field in the package spec file must match the actual
> license.
> License tag should be GPLv3+ according to comments in sources.
Several months ago, I confirm this issue when submitting QTeXEngine to fedora.
See http://soft.proindependent.com/emf/licensing.html


> [-] MUST: At the beginning of %install, each package MUST run rm -rf
> %{buildroot} (or $RPM_BUILD_ROOT).
> About it also complain rpmlint, please fix.
Buildroot is no longer needer for fedora.
See http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag

> [+/-] MUST: In the vast majority of cases, devel packages must require the base
> package using a fully versioned dependency: Requires: %{name} =
> %{version}-%{release}
> See note 2 below.

> Some note:
> 1) Just for polish. May be have worth dos2unix all files in one command:
> find -name '*.h' -or -name '*.hh' -or -name '*.hpp' -or -name '*.c' -or -name
> '*.cc' -or -name '*.cpp' -exec dos2unix -k {} \;
> Furtermore, as we pack in -devel only headers, converting of sources (*.c,
> *.cc, *.cpp) seems unnecessary.
*.cpp file will be included in -debuginfo subpackage, so we should convert all source files to unix line ending.

> 2) I'm do not understand for what you add %{?_isa} in requires and
> buildrequires of -devel sub-package? Are headers different or arch dependent?

See http://fedoraproject.org/wiki/PackagingDrafts/ArchSpecificRequires

Comment 4 Pavel Alexeev 2010-08-27 12:17:51 UTC
(In reply to comment #3)
> (In reply to comment #2)
> > [-] MUST: The package must be named according to the Package Naming Guidelines.
> > As it only library it should start from "lib" prefix.
> We should not add lib to the pkgname, see
> http://fedoraproject.org/wiki/PackageNamingGuidelines#General_Naming

It is doubtfull, but ok, it is not stop issue.

> This is an installation patch and irrelevant to upstream.
Ok, then add comment in spec about it.

> 
> > [-] MUST: The License field in the package spec file must match the actual
> > license.
> > License tag should be GPLv3+ according to comments in sources.
> Several months ago, I confirm this issue when submitting QTeXEngine to fedora.
> See http://soft.proindependent.com/emf/licensing.html
Did you contact upstream author to clarify this? Sources say it GPLv3+.
How you confirm it in the past for the QTeXEngine?

> > [-] MUST: At the beginning of %install, each package MUST run rm -rf
> > %{buildroot} (or $RPM_BUILD_ROOT).
> > About it also complain rpmlint, please fix.
> Buildroot is no longer needer for fedora.
> See http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag

Error absolutely irrelevant BuildRoot tag specification. and yes, if you do not plan maintain it for EPEL 4-5 it may be omitted.

This error say you must add
rm -rf %{buildroot}
at beggining of %install section.

> > Some note:
> > 1) Just for polish. May be have worth dos2unix all files in one command:
> > find -name '*.h' -or -name '*.hh' -or -name '*.hpp' -or -name '*.c' -or -name
> > '*.cc' -or -name '*.cpp' -exec dos2unix -k {} \;
> > Furtermore, as we pack in -devel only headers, converting of sources (*.c,
> > *.cc, *.cpp) seems unnecessary.
> *.cpp file will be included in -debuginfo subpackage, so we should convert all
> source files to unix line ending.

Ok, let it be.
As there only text files, in this case you can simple do it for all files like:
find -type f -exec dos2unix -k {} \;

> > 2) I'm do not understand for what you add %{?_isa} in requires and
> > buildrequires of -devel sub-package? Are headers different or arch dependent?
> 
> See http://fedoraproject.org/wiki/PackagingDrafts/ArchSpecificRequires
Firstly it is the draft only. Secondly, main question was: is really for this package content of
EmfEngine-devel-0.8-1.fc13.i686.rpm
and
EmfEngine-devel-0.8-1.fc13.x86_64.rpm
different??
If no, it is not relevant how architecture of -devel sub-package will be installed to satisfy -devel dependency.

Comment 5 Chen Lei 2010-08-27 12:32:04 UTC
(In reply to comment #4)
> (In reply to comment #3)
> > We should not add lib to the pkgname, see
> > http://fedoraproject.org/wiki/PackageNamingGuidelines#General_Naming
> It is doubtfull, but ok, it is not stop issue.
I'm sure we should not add lib to the name(e.g. glibc/qt/gtk).

> > 
> > > [-] MUST: The License field in the package spec file must match the actual
> > > license.
> > > License tag should be GPLv3+ according to comments in sources.
> > Several months ago, I confirm this issue when submitting QTeXEngine to fedora.
> > See http://soft.proindependent.com/emf/licensing.html
> Did you contact upstream author to clarify this? Sources say it GPLv3+.
> How you confirm it in the past for the QTeXEngine?
All qtiplot specfic libs are under GPLv3, though the license header may be GPLv2+/GPLv3+.
See http://soft.proindependent.com/serv/projects.html for a whole list


> > > [-] MUST: At the beginning of %install, each package MUST run rm -rf
> > > %{buildroot} (or $RPM_BUILD_ROOT).
> > > About it also complain rpmlint, please fix.
> > Buildroot is no longer needer for fedora.
> > See http://fedoraproject.org/wiki/Packaging/Guidelines#BuildRoot_tag
> This error say you must add
> rm -rf %{buildroot}
> at beggining of %install section.
From guideline:
Fedora (as of F-10) does not require the presence of the BuildRoot tag in the spec and if one is defined it will be ignored. The provided buildroot will automatically be cleaned before commands in %install are called. 

So rm -rf %{buildroot} is not needed for %install.



> > > Some note:
> > > 1) Just for polish. May be have worth dos2unix all files in one command:
> > > find -name '*.h' -or -name '*.hh' -or -name '*.hpp' -or -name '*.c' -or -name
> > > '*.cc' -or -name '*.cpp' -exec dos2unix -k {} \;
> > > Furtermore, as we pack in -devel only headers, converting of sources (*.c,
> > > *.cc, *.cpp) seems unnecessary.
> > *.cpp file will be included in -debuginfo subpackage, so we should convert all
> > source files to unix line ending.
> Ok, let it be.
> As there only text files, in this case you can simple do it for all files like:
> find -type f -exec dos2unix -k {} \;
I'll apply this change to the spec since it's simpler.

> > > 2) I'm do not understand for what you add %{?_isa} in requires and
> > > buildrequires of -devel sub-package? Are headers different or arch dependent?
> > 
> > See http://fedoraproject.org/wiki/PackagingDrafts/ArchSpecificRequires
> Firstly it is the draft only. Secondly, main question was: is really for this
> package content of
> EmfEngine-devel-0.8-1.fc13.i686.rpm
> and
> EmfEngine-devel-0.8-1.fc13.x86_64.rpm
> different??

I think most -devel subpackage are arch-specfic because the location of development libs(/usr/lib vs /usr/lib64).

Comment 6 Pavel Alexeev 2010-08-27 12:59:18 UTC
(In reply to comment #5)
> (In reply to comment #4)
> > (In reply to comment #3)
> > > We should not add lib to the pkgname, see
> > > http://fedoraproject.org/wiki/PackageNamingGuidelines#General_Naming
> > It is doubtfull, but ok, it is not stop issue.
> I'm sure we should not add lib to the name(e.g. glibc/qt/gtk).
There are also many opposite examples: libsilc, libselinux-utils, http://www.silcnet.org/ and many others (rpm -qa 'lib*').

But I repeat, I do not insist on renaming if you argue.

> All qtiplot specfic libs are under GPLv3, though the license header may be
> GPLv2+/GPLv3+.
> See http://soft.proindependent.com/serv/projects.html for a whole list
Page contain only list of libraries it nothing say about licensing.

> From guideline:
> Fedora (as of F-10) does not require the presence of the BuildRoot tag in the
> spec and if one is defined it will be ignored. The provided buildroot will
> automatically be cleaned before commands in %install are called. 
> 
> So rm -rf %{buildroot} is not needed for %install.
Ok, thank you. I'll try remember it.

> I think most -devel subpackage are arch-specfic because the location of
> development libs(/usr/lib vs /usr/lib64).

Hm, you are speak about unversioned *.so file(s)? May be... How it works till this time?
Really, I'm not familiar in this question. Do you known when planning discuss about acceptance this draft?

Comment 7 Chen Lei 2010-08-27 13:19:21 UTC
(In reply to comment #6)
> (In reply to comment #5)
> > (In reply to comment #4)
> > > (In reply to comment #3)
> > > > We should not add lib to the pkgname, see
> > > > http://fedoraproject.org/wiki/PackageNamingGuidelines#General_Naming
> > > It is doubtfull, but ok, it is not stop issue.
> > I'm sure we should not add lib to the name(e.g. glibc/qt/gtk).
> There are also many opposite examples: libsilc, libselinux-utils,
> http://www.silcnet.org/ and many others (rpm -qa 'lib*').
The tarballs for most lib* packages are also have lib prefix. Whether using lib or not should depend on the tarball name or the upstream name.

> > All qtiplot specfic libs are under GPLv3, though the license header may be
> > GPLv2+/GPLv3+.
> > See http://soft.proindependent.com/serv/projects.html for a whole list
> Page contain only list of libraries it nothing say about licensing.
http://soft.proindependent.com/libqti/
http://soft.proindependent.com/qtexengine/licensing.html
http://soft.proindependent.com/liborigin2/

> > I think most -devel subpackage are arch-specfic because the location of
> > development libs(/usr/lib vs /usr/lib64).
> Hm, you are speak about unversioned *.so file(s)? May be... How it works till
> this time?
> Really, I'm not familiar in this question. Do you known when planning discuss
> about acceptance this draft?

%{?_isa} is only useful for broken repo, using arch specfic requires for lib package should be prefered because of the existence of multilib.

See
rpm --eval %_isa

Comment 8 Pavel Alexeev 2010-08-27 13:55:37 UTC
(In reply to comment #7)
I had send question about license to upstream author (you in copy).

> > > I think most -devel subpackage are arch-specfic because the location of
> > > development libs(/usr/lib vs /usr/lib64).
> > Hm, you are speak about unversioned *.so file(s)? May be... How it works till
> > this time?
> > Really, I'm not familiar in this question. Do you known when planning discuss
> > about acceptance this draft?
> 
> %{?_isa} is only useful for broken repo, using arch specfic requires for lib
> package should be prefered because of the existence of multilib.

You are not answered - do you known date when it planning to accept it draft by FESCO?

Another question can it package correctly functional without %_isa macros, or this strongly required?

Comment 9 Chen Lei 2010-08-27 14:05:03 UTC
(In reply to comment #8)
> > %{?_isa} is only useful for broken repo, using arch specfic requires for lib
> > package should be prefered because of the existence of multilib.
> You are not answered - do you known date when it planning to accept it draft by
> FESCO?
> Another question can it package correctly functional without %_isa macros, or
> this strongly required?
FPC already have a ticket about this, you may need to ask FPC member for the exact date.
See https://fedorahosted.org/fpc/ticket/2

Currently, %{?_isa} is optional. A lot of qt/kde packages already started to use this macro.

Comment 10 Chen Lei 2010-09-04 01:24:42 UTC
Is there any blocker for approving this package? Currently, there are no actually different between GPLv3 and GPLv3+.

Comment 11 Pavel Alexeev 2010-09-06 14:05:53 UTC
You are right it is not.

Blocker is usage of %{?_isa}.

Comment 12 Chen Lei 2010-09-06 14:50:35 UTC
(In reply to comment #11).
> Blocker is usage of %{?_isa}.

%{?_isa} is used in most core kde packages.

See 
http://pkgs.fedoraproject.org/gitweb/?p=qt.git
http://pkgs.fedoraproject.org/gitweb/?p=kdelibs.git

Comment 13 Pavel Alexeev 2010-09-07 07:54:44 UTC
Many current packages have also errors (see f.e. httpd with a lot of patches without comments), it is not a reason to make more.
Again - I do not insist it is error, but it still don't accepted as Guidelines and I really don't known what do with it. May be it have worth to ask in maillist?

Comment 14 Chen Lei 2010-09-07 10:19:07 UTC
No guideline forbid to use %{isa} macro, if the packaging draft is approved by FPC, then all packages should use this macro. Currently, this macro is optional.

More docs:
http://www.rpm.org/wiki/PackagerDocs/ArchDependencies

Comment 15 Pavel Alexeev 2010-09-10 10:42:09 UTC
Ok. I still doubt, but if you are sure - good luck!

Package APPROVED.

Comment 16 Chen Lei 2010-09-10 16:30:02 UTC
Thanks for the review, I'll apply changes in comment#5 when I'm importing this package to git repo.

(In reply to comment #15)
> Ok. I still doubt, but if you are sure - good luck!
> Package APPROVED.

There's several discussion about arch dependent requires in fedora-packaging list, you may be able to find them in mail archives.

Comment 17 Chen Lei 2010-09-10 16:36:28 UTC
New Package SCM Request
=======================
Package Name: EmfEngine
Short Description: Library enabling Qt based applications to export graphics to the EMF format 
Owners: supercyper
Branches: f12 f13 f14
InitialCC:

Comment 18 Kevin Fenzi 2010-09-10 18:48:18 UTC
Git done (by process-git-requests).

Comment 19 Chen Lei 2010-09-19 05:16:48 UTC
New Package CVS Request
=======================
Package Name: EmfEngine
Owners: supercyper
New Branches: el6

Comment 20 Kevin Fenzi 2010-09-19 19:23:49 UTC
Please use a "Package Change Request" for a change to an existing package?

http://fedoraproject.org/wiki/Package_SCM_admin_requests


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