Bug 1110386 - Review Request: codec2 - Next-Generation Digital Voice for Two-Way Radio
Summary: Review Request: codec2 - Next-Generation Digital Voice for Two-Way Radio
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Gwyn Ciesla
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2014-06-17 14:23 UTC by Richard Shaw
Modified: 2015-04-02 17:52 UTC (History)
3 users (show)

Fixed In Version: codec2-0.3-5.20150317svn2080.el7
Clone Of:
Environment:
Last Closed: 2015-03-29 04:24:08 UTC
Type: ---
Embargoed:
gwync: fedora-review+
gwync: fedora-cvs+


Attachments (Terms of Use)

Description Richard Shaw 2014-06-17 14:23:12 UTC
Spec URL: http://hobbes1069.fedorapeople.org//codec2.spec
SRPM URL: http://hobbes1069.fedorapeople.org//codec2-0.3-1.svn1657.fc20.src.rpm

Description:
Codec 2 is an open source (LGPL licensed) speech codec for 2400 bit/s
and below. This is the runtime library package

Comment 1 Richard Shaw 2014-06-17 14:23:15 UTC
This package built on koji:  http://koji.fedoraproject.org/koji/taskinfo?taskID=7051311

Comment 2 František Dvořák 2014-07-27 09:33:19 UTC
Taking the review...


1) License: the license is rather LGPLv2; but there is one (only) GPL-ed file - /usr/share/codec2/scripts/menu.sh

Maybe it is not needed to instal it, or alternativelly you can use GPLv2 license for the -example subpackage? In eihter way, you can ask upstream about licensing: they are intended to use LPGL for codec2 project and maybe they would rather relicense the menu.sh file under the same licesne?


2) Comment in the source section:

  * It seems SourceForge changed repository URLs, in this case to https://svn.code.sf.net/p/freetel/code/

  * Is the step of taking the codec2-dev proper? There are some differences from the tarball in .src.rpm and codec2-dev (missing codec2/voicing, addidional dependency on speex, no pre-built binaries in win32)


3) Pre-built binaries in win32 should be removed in %prep [http://fedoraproject.org/wiki/Packaging:Guidelines#No_inclusion_of_pre-built_binaries_or_libraries]


4) The checkout information in release version should have the form of YYYDDMMsvnREV [http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages]

For example (release field): 1.20140616svn1657


5) pkgconfig is not needed in Requires, it is generated automatically in both Fedora and EPEL 6 (as /usr/bin/pkg-config)


6) Is the build inside build_linux needed? (I guess you use it because it is mentioned in READMEs?)

There is no formal or technical problem with that, only the build steps could be slightly simpler without it. :-)


7) It is recommended to track major version of the libraries in %files, like:

%{_libdir}/libcodec2.so.0
%{_libdir}/libcodec2.so.0.*


8) ChangeLog, NEW, AUTHORS are empty files, they're not needed to install


9) README.cmake is only about build instrutions and it is not needed


10) codec2-examples should have dependency on "%{name} = %{version}-%{release}", not the -devel. Was there any reason for that?


11) rpmlint: E: non-executable-script /usr/share/codec2/script/*.sh


12) rpmlint: W: mixed-use-of-spaces-and-tabs (spaces: line 20, tab: line 7)


13) Description should end with dot. :-)


Enhancements:


14) Is possible to use something in %check?

There is a testsuite, but if I understand corretly, it is not intended for automatic testing. (it is more for codec developers?) It could be commented in the .spec file that the testsuite exists, but it can't be used.

And maybe it could be used something like this instead?:
  src/c2enc 3200 raw/mmt1.raw test.c2
  src/c2dec 3200 test.c2 test.raw
  test -s test.c2 -a -s test.raw

It is not real codec testing, it will just check it doesn't crash (on the all platforms).


15) man-pages: there is recommended (but not required) man-page for each binary in /usr/bin [http://fedoraproject.org/wiki/Packaging:Guidelines#Man_pages]

Comment 3 Richard Shaw 2014-07-27 12:06:31 UTC
(In reply to František Dvořák from comment #2)
> 1) License: the license is rather LGPLv2; but there is one (only) GPL-ed
> file - /usr/share/codec2/scripts/menu.sh

That file isn't required so it could be removed.

 
> Maybe it is not needed to instal it, or alternativelly you can use GPLv2
> license for the -example subpackage? In eihter way, you can ask upstream
> about licensing: they are intended to use LPGL for codec2 project and maybe
> they would rather relicense the menu.sh file under the same licesne?

I'll ask but I may just change it. While I am not specifically a programmer, I am a contributor and have commit access to upstream as I wrote and now maintain their cmake build system.

 
> 2) Comment in the source section:
> 
>   * It seems SourceForge changed repository URLs, in this case to
> https://svn.code.sf.net/p/freetel/code/

Yes, forgot that happened after I submitted the package.

 
>   * Is the step of taking the codec2-dev proper? There are some differences
> from the tarball in .src.rpm and codec2-dev (missing codec2/voicing,
> addidional dependency on speex, no pre-built binaries in win32)

The orginal codec2 branch was stagnant and codec2-dev was the "working" branch. It's a very small upstream team and not terribly disciplined :) I have since moved a known good copy of codec2 while codec2-dev continues to be developed. I just need to update the spec file.

 
> 3) Pre-built binaries in win32 should be removed in %prep
> [http://fedoraproject.org/wiki/Packaging:Guidelines#No_inclusion_of_pre-
> built_binaries_or_libraries]

Will do.


> 4) The checkout information in release version should have the form of
> YYYDDMMsvnREV
> [http://fedoraproject.org/wiki/Packaging:NamingGuidelines#Snapshot_packages]
> 
> For example (release field): 1.20140616svn1657

The is more or less 0.3 official (as it gets) we don't yet do formal release archives. The irony of the guidelines is that svn1657 tells you exactly what svn revision it is, but it's not required, but the date of the checkout is required. I disagree with the guidelines here but the rules are the rules so I'll fix it.


> 5) pkgconfig is not needed in Requires, it is generated automatically in
> both Fedora and EPEL 6 (as /usr/bin/pkg-config)

Ahh. Didn't know that.

 
> 6) Is the build inside build_linux needed? (I guess you use it because it is
> mentioned in READMEs?)

Both cmake and I prefer out of source builds. It's in the readme because I wrote it. :)

 
> 7) It is recommended to track major version of the libraries in %files, like:
> 
> %{_libdir}/libcodec2.so.0
> %{_libdir}/libcodec2.so.0.*

I can change it if you feel strongly about it but I actually manage the soversion so I'm not too worried.

 
> 8) ChangeLog, NEW, AUTHORS are empty files, they're not needed to install

I usually include them even if they are empty because they may not always be empty and who actually checks for that during the update process?

 
> 9) README.cmake is only about build instrutions and it is not needed

I should have caught that since I wrote it :)

 
> 10) codec2-examples should have dependency on "%{name} =
> %{version}-%{release}", not the -devel. Was there any reason for that?

Maybe I should rename the package to codec2-devel-examples? It's not needed for the main package at all.

 
> 11) rpmlint: E: non-executable-script /usr/share/codec2/script/*.sh

I'll fix these in svn rather than work around it in the package.

 
> 12) rpmlint: W: mixed-use-of-spaces-and-tabs (spaces: line 20, tab: line 7)

How did that sneak in there? I always use rpmdev-newspec to generate specfile templates...

 
> 13) Description should end with dot. :-)

Will fix.

 
> Enhancements:
> 
> 
> 14) Is possible to use something in %check?
> 
> There is a testsuite, but if I understand corretly, it is not intended for
> automatic testing. (it is more for codec developers?) It could be commented
> in the .spec file that the testsuite exists, but it can't be used.

It's not designed to be automated yet. My plan is to add automatic testing via ctest but the current developer is more interested in codec2-dev than codec2 so I'm not sure if it will happen anytime soon.

In fact, I'm moving the binaries to the devel package as they are not terribly useful except for development (and testing) purposes. 


> 15) man-pages: there is recommended (but not required) man-page for each
> binary in /usr/bin

I would like them to have one as well but I doubt I can get upstream to write them.

I'll try to get a new SRPM and SPEC posted today if I have time.

Comment 4 František Dvořák 2014-07-27 14:09:45 UTC
(In reply to Richard Shaw from comment #3)
>  
> > Maybe it is not needed to instal it, or alternativelly you can use GPLv2
> > license for the -example subpackage? In eihter way, you can ask upstream
> > about licensing: they are intended to use LPGL for codec2 project and maybe
> > they would rather relicense the menu.sh file under the same licesne?
> 
> I'll ask but I may just change it. While I am not specifically a programmer,
> I am a contributor and have commit access to upstream as I wrote and now
> maintain their cmake build system.
> 

OK. Maybe there can be needed the original author to confirm? But it is only a small script anyway contribued to LGPL project...

> > 
> > For example (release field): 1.20140616svn1657
> 
> The is more or less 0.3 official (as it gets) we don't yet do formal release
> archives. The irony of the guidelines is that svn1657 tells you exactly what
> svn revision it is, but it's not required, but the date of the checkout is
> required. I disagree with the guidelines here but the rules are the rules so
> I'll fix it.
> 

OK, thanks.

>  
> > 6) Is the build inside build_linux needed? (I guess you use it because it is
> > mentioned in READMEs?)
> 
> Both cmake and I prefer out of source builds. It's in the readme because I
> wrote it. :)
> 

OK, I understand. :-) Plus cmake is not able to do distclean, right?

>  
> > 7) It is recommended to track major version of the libraries in %files, like:
> > 
> > %{_libdir}/libcodec2.so.0
> > %{_libdir}/libcodec2.so.0.*
> 
> I can change it if you feel strongly about it but I actually manage the
> soversion so I'm not too worried.
> 

OK. You know about it already, it's up to you what to prefer. :-)

>  
> > 8) ChangeLog, NEW, AUTHORS are empty files, they're not needed to install
> 
> I usually include them even if they are empty because they may not always be
> empty and who actually checks for that during the update process?
> 

Rpmlint cries loudly about it. But if you have it in other packages too, I'm not for breaking uniformity.

>  
> > 9) README.cmake is only about build instrutions and it is not needed
> 
> I should have caught that since I wrote it :)
> 

:-)

>  
> > 10) codec2-examples should have dependency on "%{name} =
> > %{version}-%{release}", not the -devel. Was there any reason for that?
> 
> Maybe I should rename the package to codec2-devel-examples? It's not needed
> for the main package at all.
> 

It's not needed IMHO. I think users will understand codec2-examples is not needed for functionality of the codec.

It is only the Require, I think there should be "%{name} = %{version}-%{release}" instead of "%{name}-devel = %{version}-%{release}"...

>  
> > Enhancements:
> > 
> > 
> > 14) Is possible to use something in %check?
> > 
> > There is a testsuite, but if I understand corretly, it is not intended for
> > automatic testing. (it is more for codec developers?) It could be commented
> > in the .spec file that the testsuite exists, but it can't be used.
> 
> It's not designed to be automated yet. My plan is to add automatic testing
> via ctest but the current developer is more interested in codec2-dev than
> codec2 so I'm not sure if it will happen anytime soon.
> 
> In fact, I'm moving the binaries to the devel package as they are not
> terribly useful except for development (and testing) purposes. 
> 

Maybe examples could be better place? codec2-devel subpackage could be for developers using the codec2, or BR for other packages.

> 
> > 15) man-pages: there is recommended (but not required) man-page for each
> > binary in /usr/bin
> 
> I would like them to have one as well but I doubt I can get upstream to
> write them.
> 

That's not so strong excuse since you're upstream co-maintainer. ;-) But it's OK. :-)

> I'll try to get a new SRPM and SPEC posted today if I have time.

Comment 5 Richard Shaw 2014-07-27 14:24:08 UTC
(In reply to František Dvořák from comment #4)
> (In reply to Richard Shaw from comment #3)
> >  
> > > Maybe it is not needed to instal it, or alternativelly you can use GPLv2
> > > license for the -example subpackage? In eihter way, you can ask upstream
> > > about licensing: they are intended to use LPGL for codec2 project and maybe
> > > they would rather relicense the menu.sh file under the same licesne?
> > 
> > I'll ask but I may just change it. While I am not specifically a programmer,
> > I am a contributor and have commit access to upstream as I wrote and now
> > maintain their cmake build system.
> > 
> 
> OK. Maybe there can be needed the original author to confirm? But it is only
> a small script anyway contribued to LGPL project...

I can change the license of the subpackage, might be the path of least resistance for now.


> > > 6) Is the build inside build_linux needed? (I guess you use it because it is
> > > mentioned in READMEs?)
> > 
> > Both cmake and I prefer out of source builds. It's in the readme because I
> > wrote it. :)
> > 
> 
> OK, I understand. :-) Plus cmake is not able to do distclean, right?

It can handle in source builds but it's not preferred. Also, if a package has both autotool and cmake then when cmake is executed it will overwrite some makefiles, doing an out of source build solves this issue.

 
> > > 10) codec2-examples should have dependency on "%{name} =
> > > %{version}-%{release}", not the -devel. Was there any reason for that?
> > 
> > Maybe I should rename the package to codec2-devel-examples? It's not needed
> > for the main package at all.
> > 
> 
> It's not needed IMHO. I think users will understand codec2-examples is not
> needed for functionality of the codec.
> 
> It is only the Require, I think there should be "%{name} =
> %{version}-%{release}" instead of "%{name}-devel = %{version}-%{release}"...

The examples also include files useful to the binaries I moved into -devel. This way if you install the example package, it pulls in the -devel package, which pulls in the library. I don't think the example package without the -devel package would be very useful.


> >  
> > > Enhancements:
> > > 
> > > 
> > > 14) Is possible to use something in %check?
> > > 
> > > There is a testsuite, but if I understand corretly, it is not intended for
> > > automatic testing. (it is more for codec developers?) It could be commented
> > > in the .spec file that the testsuite exists, but it can't be used.
> > 
> > It's not designed to be automated yet. My plan is to add automatic testing
> > via ctest but the current developer is more interested in codec2-dev than
> > codec2 so I'm not sure if it will happen anytime soon.
> > 
> > In fact, I'm moving the binaries to the devel package as they are not
> > terribly useful except for development (and testing) purposes. 
> > 
> 
> Maybe examples could be better place? codec2-devel subpackage could be for
> developers using the codec2, or BR for other packages.

I renamed the example package to codec2-devel-examples, I think this best conveys it's use.

SPEC: https://hobbes1069.fedorapeople.org/codec2.spec
SRPM: https://hobbes1069.fedorapeople.org/codec2-0.3-2.20140727svn1771.fc20.src.rpm

Comment 6 František Dvořák 2014-07-30 12:05:01 UTC
> > 
> > OK. Maybe there can be needed the original author to confirm? But it is only
> > a small script anyway contribued to LGPL project...
> 
> I can change the license of the subpackage, might be the path of least
> resistance for now.
> 

OK. You probably forgot the License field in the *-examples subpackage yet?

Also the main license fields should be rather "LGPLv2", there is no "and above" text in the license/copyrights.

> > > > 10) codec2-examples should have dependency on "%{name} =
> > > > %{version}-%{release}", not the -devel. Was there any reason for that?
> > > 
> > > Maybe I should rename the package to codec2-devel-examples? It's not needed
> > > for the main package at all.
> > > 
> > 
> > It's not needed IMHO. I think users will understand codec2-examples is not
> > needed for functionality of the codec.
> > 
> > It is only the Require, I think there should be "%{name} =
> > %{version}-%{release}" instead of "%{name}-devel = %{version}-%{release}"...
> 
> The examples also include files useful to the binaries I moved into -devel.
> This way if you install the example package, it pulls in the -devel package,
> which pulls in the library. I don't think the example package without the
> -devel package would be very useful.
> 

I see, you want the examples subpackage as sort of metapackage for codec2 developers. I just wanted to say the C heades are not strictly necessary for sample files and the octave code. 

But it's up to you, if to keep codec2-devel dependency there...


About the binaries in *-devel:

I think the example binaries would be better placed in the main codec2 package or rather in the examples subpackage.

There would be no problem combining codec2 internal things (samples) with examples potentially useful for end users. I would vote for keeping the name codec2-examples and just enhance the description, that it covers both areas.

Comment 7 Richard Shaw 2015-03-09 19:48:35 UTC
Updated spec and srpm since the current ones are so old.

SPEC: https://hobbes1069.fedorapeople.org/codec2.spec
SRPM: https://hobbes1069.fedorapeople.org/codec2-0.3-3.20141108svn1914.fc21.src.rpm

Comment 8 Gwyn Ciesla 2015-03-16 17:20:54 UTC
Good:

- rpmlint checks return:

codec2.spec:91: W: macro-in-comment %{_libdir}
There is a unescaped macro after a shell style comment in the specfile. Macros
are expanded everywhere, so check if it can cause a problem in this case and
escape the macro with another leading % if appropriate.

codec2.spec:91: W: macro-in-comment %{name}
There is a unescaped macro after a shell style comment in the specfile. Macros
are expanded everywhere, so check if it can cause a problem in this case and
escape the macro with another leading % if appropriate.

codec2.spec: W: invalid-url Source0: codec2-0.3.svn1914.tar.xz
The value should be a valid, public HTTP, HTTPS, or FTP URL.

codec2.src: W: spelling-error %description -l en_US Codec -> Codex, Code, Codes
The value of this tag appears to be misspelled. Please double-check.

codec2.src: W: spelling-error %description -l en_US codec -> codex, code, codes
The value of this tag appears to be misspelled. Please double-check.

codec2.src: W: spelling-error %description -l en_US runtime -> run time, run-time, rudiment
The value of this tag appears to be misspelled. Please double-check.

codec2-devel-examples.noarch: E: devel-dependency codec2-devel
Your package has a dependency on a devel package but it's not a devel package
itself.

codec2-devel-examples.noarch: W: no-documentation
The package contains no documentation (README, doc, etc). You have to include
documentation files.

odec2.x86_64: W: incoherent-version-in-changelog 0.3-2.svn1771 ['0.3-3.20141108svn1914.fc21', '0.3-3.20141108svn1914']
The latest entry in %changelog contains a version identifier that is not
coherent with the epoch:version-release tuple of the package.

codec2.x86_64: E: zero-length /usr/share/doc/codec2/AUTHORS
codec2.x86_64: E: zero-length /usr/share/doc/codec2/ChangeLog
codec2.x86_64: E: zero-length /usr/share/doc/codec2/NEWS

codec2-devel.x86_64: W: no-documentation
The package contains no documentation (README, doc, etc). You have to include
documentation files.

codec2-devel.x86_64: W: no-manual-page-for-binary c2demo
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary fec_dec
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary c2sim
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary insert_errors
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary c2dec
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary fdmdv_mod
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary c2enc
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary fdmdv_put_test_bits
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary fdmdv_interleave
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary fec_enc
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary fdmdv_get_test_bits
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: no-manual-page-for-binary fdmdv_demod
Each executable in standard binary directories should have a man page.

codec2-devel.x86_64: W: only-non-binary-in-usr-lib
There are only non binary files in /usr/lib so they should be in /usr/share.

Fix the macros, spelling errors are fine, URL error is OK, man pages are a nice-to-have, drop the zero-length docs.  I'm not sure why it's complaining about the pkgconfig file in lib.

- package meets naming guidelines
- package meets packaging guidelines
! license, spec says LGPLv2+, src/codec2.c says LGPLv2
- spec file legible, in am. english
- source matches upstream
- package compiles on devel (x86_64)
- no missing BR
- no unnecessary BR
- no locales
- not relocatable
- owns all directories that it creates
- no duplicate files
- permissions ok
- %clean ok
- macro use consistent
- code, not content
- no need for -docs
- nothing in %doc affects runtime
- no need for .desktop file
- devel package ok
- no .la files
- post/postun ldconfig ok
- devel requires base package n-v-r 

All in all looks good, just the license verification and rpmlint bits.

Comment 9 Richard Shaw 2015-03-16 21:29:45 UTC
SPEC: https://hobbes1069.fedorapeople.org/codec2.spec
SRPM: https://hobbes1069.fedorapeople.org/codec2-0.3-4.20141108svn1914.fc21.src.rpm

Ok, this should address everything! I'll query upstream about the license but I've changed it for now. I'm actually technically part of upstream but I only wrote the cmake build system, not the code.

Comment 10 Gwyn Ciesla 2015-03-17 13:35:37 UTC
Looks good!

APPROVED.

Comment 11 Richard Shaw 2015-03-17 13:50:14 UTC
New Package SCM Request
=======================
Package Name: codec2
Short Description: Next-Generation Digital Voice for Two-Way Radio
Upstream URL: http://rowetel.com/codec2.html
Owners: hobbes1069
Branches: f20 f21 f22 epel7
InitialCC:

Comment 12 Gwyn Ciesla 2015-03-17 14:37:46 UTC
Git done (by process-git-requests).

Comment 13 Fedora Update System 2015-03-17 15:47:48 UTC
codec2-0.3-5.20150317svn2080.el7 has been submitted as an update for Fedora EPEL 7.
https://admin.fedoraproject.org/updates/codec2-0.3-5.20150317svn2080.el7

Comment 14 Fedora Update System 2015-03-17 15:47:53 UTC
codec2-0.3-5.20150317svn2080.fc20 has been submitted as an update for Fedora 20.
https://admin.fedoraproject.org/updates/codec2-0.3-5.20150317svn2080.fc20

Comment 15 Fedora Update System 2015-03-17 15:48:00 UTC
codec2-0.3-5.20150317svn2080.fc21 has been submitted as an update for Fedora 21.
https://admin.fedoraproject.org/updates/codec2-0.3-5.20150317svn2080.fc21

Comment 16 Fedora Update System 2015-03-17 15:48:06 UTC
codec2-0.3-5.20150317svn2080.fc22 has been submitted as an update for Fedora 22.
https://admin.fedoraproject.org/updates/codec2-0.3-5.20150317svn2080.fc22

Comment 17 Fedora Update System 2015-03-18 10:24:48 UTC
codec2-0.3-5.20150317svn2080.fc21 has been pushed to the Fedora 21 testing repository.

Comment 18 Fedora Update System 2015-03-29 04:24:08 UTC
codec2-0.3-5.20150317svn2080.fc22 has been pushed to the Fedora 22 stable repository.

Comment 19 Fedora Update System 2015-03-29 04:27:44 UTC
codec2-0.3-5.20150317svn2080.fc21 has been pushed to the Fedora 21 stable repository.

Comment 20 Fedora Update System 2015-03-29 04:45:29 UTC
codec2-0.3-5.20150317svn2080.fc20 has been pushed to the Fedora 20 stable repository.

Comment 21 Fedora Update System 2015-04-02 17:52:25 UTC
codec2-0.3-5.20150317svn2080.el7 has been pushed to the Fedora EPEL 7 stable repository.


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