Bug 561286 - Review Request: libdmtx - Library for working with Data Matrix 2D barcodes
Summary: Review Request: libdmtx - Library for working with Data Matrix 2D barcodes
Keywords:
Status: CLOSED NEXTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Jason Tibbitts
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-02-03 09:38 UTC by Dan Horák
Modified: 2010-11-18 17:10 UTC (History)
5 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-11-18 17:10:15 UTC
Type: ---
Embargoed:
j: fedora-review+
j: fedora-cvs+


Attachments (Terms of Use)

Description Dan Horák 2010-02-03 09:38:40 UTC
Spec URL: http://fedora.danny.cz/reviews/libdmtx.spec
SRPM URL: http://fedora.danny.cz/reviews/libdmtx-0.7.2-1.fc13.src.rpm

Description:
libdmtx is open source software for reading and writing Data Matrix 2D barcodes
on Linux, Unix, OS X, Windows, and mobile devices. At its core libdmtx is
a shared library, allowing C/C++ programs to use its capabilities without
restrictions or overhead.

The included utility programs, dmtxread and dmtxwrite, provide the official
interface to libdmtx from the command line, and also serve as a good reference
for programmers who wish to write their own programs that interact with
libdmtx. All of the software in the libdmtx package is distributed under
the LGPLv2 and can be used freely under these terms.

Notes:
- if my understanding of http://en.wikipedia.org/wiki/Data_Matrix#Patent_issues is correct then there is no patent issue that could affect including this package in Fedora.
- bindings for Python/PHP/Java/... exist in the upstream sources, but are not built yet as QLandKarteGT needs only the library, but they can be packaged in some next version

Comment 1 Thomas Moschny 2010-02-03 10:51:41 UTC
In the 'wrapper' subdirectory, there are bindings for various languages. Your package doesn't contain any of those. For example I would be interested in the python wrapper, and I'm pretty sure other people would like to see other wrappers.

Please consider including some if not all of those.

Comment 2 Dan Horák 2010-02-03 11:35:26 UTC
I will wait for Spot's legal OK before spending time with adding the bindings to the packages.

Comment 3 Thomas Moschny 2010-02-03 11:55:00 UTC
Ok. Seems I didn't read the 'Notes' section carefully enough, sorry.

Comment 4 Tom "spot" Callaway 2010-02-18 15:44:32 UTC
I am unaware of any valid patents which would prevent this package from being included in Fedora. Lifting FE-Legal.

Comment 5 Dan Horák 2010-05-30 08:42:19 UTC
Updated Spec URL: http://fedora.danny.cz/reviews/libdmtx.spec
Updated SRPM URL: http://fedora.danny.cz/reviews/libdmtx-0.7.2-2.fc14.src.rpm

ChangeLog:
- added subpackages with php/python/ruby bindings

Comment 6 Jason Tibbitts 2010-11-17 14:37:22 UTC
I'm still looking over old review tickets.  This one builds fine; rpmlint says:

  libdmtx.x86_64: W: shared-lib-calls-exit
   /usr/lib64/libdmtx.so.0.0.0 exit.5
Libraries shouldn't do this, but there's not much you can do about it.

  php-libdmtx.x86_64: W: private-shared-object-provides
   /usr/lib64/php/modules/dmtx.so dmtx.so()(64bit)
  python-libdmtx.x86_64: W: private-shared-object-provides
   /usr/lib64/python2.7/site-packages/_pydmtx.so _pydmtx.so()(64bit)
This is one of the packages where you cannot use the filtering macros since it installs both public libraries and binary executables.  So there's not much you can do about rpmlint's complaints.

Am I wrong or is wrapper/php/dmtx_write.c not GPLv2+ instead of LGPLv2+?  It appears that this code is linked intothe php dmtx.so module, which would make that code GPLv2+, wouldn't it?  And if so, you'll have to include COPYING somewhere, not just COPYING.LESSER.

What does the test suite actually do?  I see that it gets built, but I don't see where the built tests actually get run.  I'm not even sure if the can be run automatically.


* source files match upstream.  sha256sum:
  73af17374cf45478fdcb4184c2321d3b923291780430dec4908d9ea686143646
   libdmtx-0.7.2.tar.bz2
* package meets naming and versioning guidelines.
* specfile is properly named, is cleanly written and uses macros consistently.
* summary is OK.
* description is OK.
* dist tag is present.
X license field matches the actual license.
* license is open source-compatible.
X license text not included in package.
* latest version is being packaged.
* BuildRequires are proper.
* compiler flags are appropriate.
* package builds in mock (f14, x86_64).
* package installs properly.
* debuginfo package looks complete.
* rpmlint has acceptable complaints.
* final provides and requires are sane:
  libdmtx-0.7.2-2.fc14.x86_64.rpm
   libdmtx.so.0()(64bit)  
   libdmtx = 0.7.2-2.fc14
   libdmtx(x86-64) = 0.7.2-2.fc14
  =
   /sbin/ldconfig  
   libdmtx.so.0()(64bit)  

  libdmtx-devel-0.7.2-2.fc14.x86_64.rpm
   pkgconfig(libdmtx) = 0.7.2
   libdmtx-devel = 0.7.2-2.fc14
   libdmtx-devel(x86-64) = 0.7.2-2.fc14
  =
   /usr/bin/pkg-config  
   libdmtx = 0.7.2-2.fc14
   libdmtx.so.0()(64bit)  

  libdmtx-utils-0.7.2-2.fc14.x86_64.rpm
   libdmtx-utils = 0.7.2-2.fc14
   libdmtx-utils(x86-64) = 0.7.2-2.fc14
  =
   libMagickCore.so.4()(64bit)  
   libMagickWand.so.4()(64bit)  
   libdmtx = 0.7.2-2.fc14
   libdmtx.so.0()(64bit)  
   libgomp.so.1()(64bit)  

  php-libdmtx-0.7.2-2.fc14.x86_64.rpm
   dmtx.so()(64bit)  
   php-libdmtx = 0.7.2-2.fc14
   php-libdmtx(x86-64) = 0.7.2-2.fc14
  =
   libdmtx = 0.7.2-2.fc14
   libdmtx.so.0()(64bit)  
   php-common  

  python-libdmtx-0.7.2-2.fc14.x86_64.rpm
   _pydmtx.so()(64bit)  
   python-libdmtx = 0.7.2-2.fc14
   python-libdmtx(x86-64) = 0.7.2-2.fc14
  =
   libdmtx = 0.7.2-2.fc14
   libdmtx.so.0()(64bit)  
   libpython2.7.so.1.0()(64bit)  
   python(abi) = 2.7

  ruby-libdmtx-0.7.2-2.fc14.x86_64.rpm
   Rdmtx.so()(64bit)  
   ruby(libdmtx) = 0.7.2
   ruby-libdmtx = 0.7.2-2.fc14
   ruby-libdmtx(x86-64) = 0.7.2-2.fc14
  =
   libdmtx = 0.7.2-2.fc14
   libdmtx.so.0()(64bit)  
   libruby.so.1.8()(64bit)  

? %check is present, but tests are not run.  Can they be run?
* shared libraries present; ldconfig called properly.  Unversioned .so link
   is in the -devel subpackage.
* owns the directories it creates.
* doesn't own any directories it shouldn't.
* no duplicates in %files.
* file permissions are appropriate.
* no generically named files
* scriptlets are OK (ldconfig).
* code, not content.
* documentation is small, so no -doc subpackage is necessary.
* %docs are not necessary for the proper functioning of the package.
* headers are in the -devel package.
* pkgconfig files are in the -devel package.
* no static libraries.
* no libtool .la files.

Comment 7 Mike Laughton 2010-11-17 16:01:50 UTC
(In reply to comment #6)

Thanks for looking into this ticket. I'm the lead developer for libdmtx and would like to help on these issues if possible. This package has been developed primarily on Fedora since day one, so it would give me great satisfaction for it to find a home in the repositories. Please see my comments below:

> libdmtx.x86_64: W: shared-lib-calls-exit
>   /usr/lib64/libdmtx.so.0.0.0 exit.5
> Libraries shouldn't do this, but there's not much you can do about it.

Whoops - looks like I missed that one. I've added an item to my TODO list to clean up any remaining calls to exit().

> This is one of the packages where you cannot use the filtering macros since
> it installs both public libraries and binary executables.  So there's not
> much you can do about rpmlint's complaints.

Would it greatly simplify things if I split the package into a library-only package and a separate utilities/wrappers/other package? I have been tempted to do this for maintenance reasons anyway, but would appreciate any input from someone on the packager side of the fence.

> Am I wrong or is wrapper/php/dmtx_write.c not GPLv2+ instead of LGPLv2+?  It
> appears that this code is linked intothe php dmtx.so module, which would make
> that code GPLv2+, wouldn't it?  And if so, you'll have to include COPYING
> somewhere, not just COPYING.LESSER.

Everything was intended to be LGPLv2, so if you are seeing otherwise then it's probably due to a mistake somewhere. What are you seeing that suggests GPLv2+?

> What does the test suite actually do?  I see that it gets built, but I don't
> see where the built tests actually get run.  I'm not even sure if the can be
> run automatically.

There are a few different testing components representing a mixture of uses:

 * compare_test - Regression testing script (invoked manually)
 * multi_test - Visualization and experimental program for interactive testing
 * rotate_test - Visualization and experimental program for interactive testing 
 * simple_test - Basic round-trip test of library internals
 * unit_test - Intended to someday hold unit tests for automated testing

But to answer your question, nothing is set up to execute when you issue a 'make test' during the main build.

Going through your open issues list:

X license field matches the actual license.
X license text not included in package.
  [Mike] Please let me know what I can do to resolve this issue. I may still have the original email where that contributor agreed to LGPL if that helps.

? %check is present, but tests are not run.  Can they be run?
  [Mike] Is there an automated testing requirement for inclusion in Fedora? If so, please point me to a resource where I can get up to speed.

Thanks again for looking into this old ticket. I'd like to package libdmtx in a way that makes life easy for packagers, but unfortunately I'm not very familiar with that world.

Mike

Comment 8 Dan Horák 2010-11-17 16:21:50 UTC
(In reply to comment #7)
> (In reply to comment #6)
> > Am I wrong or is wrapper/php/dmtx_write.c not GPLv2+ instead of LGPLv2+?  It
> > appears that this code is linked intothe php dmtx.so module, which would make
> > that code GPLv2+, wouldn't it?  And if so, you'll have to include COPYING
> > somewhere, not just COPYING.LESSER.
> 
> Everything was intended to be LGPLv2, so if you are seeing otherwise then it's
> probably due to a mistake somewhere. What are you seeing that suggests GPLv2+?

it's the license header in the wrapper/php/dmtx_write.c source file, it contains

...
 * libdmtx-php is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
...

and it makes the php module GPLv2+ licensed (+ means the "or any later version")

Comment 9 Jason Tibbitts 2010-11-17 16:46:57 UTC
(In reply to comment #7)

> Would it greatly simplify things if I split the package into a library-only
> package and a separate utilities/wrappers/other package?

Not really.  This is just an rpmlint complaint; what it's complaining about is an issue but it isn't particularly problematic.  In order to truly fix it, the language bindings would need to be build separately, but I honestly don't tink it's worth it.  The restriction on using dependency filters are that they can't be used on any package that includes visible libraries (in /usr/lib(64)) or binary executables.  This means that as long as the package produces the utilities in /usr/bin, we can't use or filtering.

Dan answered the bit about the license.

Comment 10 Mike Laughton 2010-11-17 17:06:56 UTC
(In reply to comment #8 and comment #9)

> it's the license header in the wrapper/php/dmtx_write.c source file, it
> contains

Yes, it's obvious now that you pointed it out. :)

I went back and found the author's 2008 email stating that we can distribute it under LGPL, but I suppose that doesn't help since it's already "out there" with the unintentional GPL text in the header.

I will replace the header with LGPL content in my TRUNK after re-confirming with the author, however I wasn't planning to create a new release for at least a few more months. Is it possible for you to add the COPYING file until it's officially fixed upstream?

Thanks for finding this (and other) issues.

Comment 11 Dan Horák 2010-11-17 17:10:11 UTC
Updated Spec URL: http://fedora.danny.cz/reviews/libdmtx.spec
Updated SRPM URL: http://fedora.danny.cz/reviews/libdmtx-0.7.2-3.fc14.src.rpm

ChangeLog:
- updated license for the php subpackage
- run few tests - building and running them can't hurt

Comment 12 Jason Tibbitts 2010-11-17 21:50:33 UTC
Looks good to me; thanks.

APPROVED

Comment 13 Dan Horák 2010-11-18 09:30:46 UTC
Jason, thanks for the review.

New Package SCM Request
=======================
Package Name: libdmtx
Short Description: Library for working with Data Matrix 2D barcodes
Owners: sharkcz
Branches: el5 el6 f13 f14

Comment 14 Jason Tibbitts 2010-11-18 16:35:22 UTC
Git done (by process-git-requests).

Comment 15 Dan Horák 2010-11-18 17:10:15 UTC
imported and built


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