Bug 1797362 - Review Request: chordpro - Typesetting ChordPro songbooks (lyrics + chords)
Summary: Review Request: chordpro - Typesetting ChordPro songbooks (lyrics + chords)
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Robert-André Mauchin 🐧
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 1797363 1797364 1797365 1797367 1797368
Blocks:
TreeView+ depends on / blocked
 
Reported: 2020-02-02 21:20 UTC by Johan Vromans
Modified: 2020-08-03 00:28 UTC (History)
3 users (show)

Fixed In Version: chordpro-0.974.1-5.fc33
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-08-03 00:28:18 UTC
Type: ---
Embargoed:
zebob.m: fedora-review+


Attachments (Terms of Use)

Description Johan Vromans 2020-02-02 21:20:46 UTC
Spec URL: https://www.chordpro.org/fedora/chordpro.spec
SRPM URL: https://www.chordpro.org/fedora/chordpro-0.974-1.fc29.src.rpm

Description: 

For many years I have been maintainer and Fedora package manager for 'chordii', a tool to format songbooks (lyrics + chords) by processing simple text data (chordpro format, ASCII) and generating PostScript for printing.

This tool is very old (its first version dates from 1992!) and outdated.

The chordpro file format is, however, popular as never before, so I decided to perform a total rewrite. The result is a new program called 'chordpro' that employs up to date technology and practices. For example, it handles UTF-8 input data and generates native PDF documents. Chordpro is upward compatible with chordii wrt. input data and command line options/

I herewith request a review of this package for inclusion into Fedora.

Note that the chordpro package requires some packages that are not yet part of Fedora:

perl-App-Packager
perl-File-LoadLines
perl-String-Interpolate-Named
perl-Text-Layout
perl-HarfBuzz-Shaper

I will make separate review requests for each of them.

Thanks for you attention.

Fedora Account System Username: sciurius

Comment 4 Robert-André Mauchin 🐧 2020-03-20 21:14:22 UTC
 - Source is 404 Source: 

https://cpan.metacpan.org/authors/id/J/JV/JV/%{FullName}-%{version}.tar.gz

Seems the latest version published is Version: 0.974

 - Group: is not used in Fedora

 - Don't use macro starting with __, they are for private rpm use only

%{__mkdir_p} → mkdir -p

 - Separate your changelog entries with a new line

 - Don't mix $RPM_BUILD_ROOT and %{buildroot}, use only one

 - Provide a LICENSE file if you're upstream

Comment 5 Johan Vromans 2020-03-22 20:07:34 UTC
Thanks for your feedback. Your comments have been addressed.

Spec URL: https://www.chordpro.org/fedora/chordpro.spec
SRPM URL: https://www.chordpro.org/fedora/chordpro-0.974.1-4.fc31.src.rpm

Comment 6 Robert-André Mauchin 🐧 2020-03-22 23:51:30 UTC
 - According to the README, the license is Artistic License 2.0;

License: Artistic 2.0

Still ask upstream for a separate LICENSE file.

 - Several tests fail:


+ make test
PERL_DL_NONLAZY=1 "/usr/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# Using PDF::API2 for PDF generation
t/01_prereq.t ............. ok
# Testing App::Music::ChordPro 0.974.1, Perl 5.030002, /usr/bin/perl
t/02_load.t ............... ok
t/100_basic.t ............. ok
t/101_empty.t ............. ok
t/102_new_song.t .......... ok
t/103_title.t ............. ok
t/104_subtitles.t ......... ok
#   Failed test 'got config'
#   at t/105_chords.t line 50.
# Looks like you failed 1 test of 321.
t/105_chords.t ............ 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/321 subtests 
#   Failed test 'got config'
#   at t/107_chords_latin.t line 102.
# Looks like you failed 1 test of 321.
t/107_chords_latin.t ...... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/321 subtests 
#   Failed test 'got config'
#   at t/108_chords_solfege.t line 102.
# Looks like you failed 1 test of 321.
t/108_chords_solfege.t .... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/321 subtests 
t/109_chords_nashville.t .. ok
t/110_chords_roman.t ...... ok
t/112_comment.t ........... ok
t/113_comment.t ........... ok
t/114_songline.t .......... ok
t/115_songline.t .......... ok
t/116_chorus.t ............ ok
t/117_rechorus.t .......... ok
t/118_tab.t ............... ok
t/119_verse.t ............. ok
t/120_meta.t .............. ok
t/122_memorize.t .......... ok
t/130_image.t ............. ok
t/131_image.t ............. ok
t/140_chords.t ............ ok
t/141_chords.t ............ ok
t/142_chords.t ............ ok
t/150_fonts.t ............. ok
t/151_fonts.t ............. ok
t/15_subst.t .............. ok
t/160_diagrams.t .......... ok
t/161_titles.t ............ ok
t/162_newpage.t ........... ok
t/163_columns.t ........... ok
t/164_pagesize.t .......... ok
t/169_custom.t ............ ok
t/170_transpose.t ......... ok
t/171_transpose.t ......... ok
t/172_transpose.t ......... ok
t/173_transpose.t ......... ok
Can't locate Hash/Util.pm in @INC (you may need to install the Hash::Util module) (@INC contains: /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/arch /usr/local/lib64/perl5/5.30 /usr/local/share/perl5/5.30 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Config.pm line 604.
Compilation failed in require at t/174_transpose.t line 12.
t/174_transpose.t ......... 
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 
t/175_transpose.t ......... ok
#   Failed test 'got config'
#   at t/177_transcode.t line 25.
Use of uninitialized value $t in substitution (s///) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 1090.
Use of uninitialized value $t in substitution (s///) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 1091.
Use of uninitialized value $t in substitution (s///) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 1092.
Use of uninitialized value $t in substitution (s///) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 1093.
Use of uninitialized value $t in substitution (s///) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 1094.
Use of uninitialized value $t in substitution (s///) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 1095.
Use of uninitialized value in concatenation (.) or string at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 1100.
Use of uninitialized value $diagrams in pattern match (m//) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 234.
Use of uninitialized value $diagrams in pattern match (m//) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Songbook.pm line 242.
#   Failed test 'Song contents'
#   at t/177_transcode.t line 80.
#     Structures begin differing at:
#          $got->{chords} = Does not exist
#     $expected->{chords} = HASH(0x55ea19dc1610)
# Looks like you failed 2 tests of 4.
t/177_transcode.t ......... 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/4 subtests 
t/180_grids.t ............. ok
Can't locate Hash/Util.pm in @INC (you may need to install the Hash::Util module) (@INC contains: /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/arch /usr/local/lib64/perl5/5.30 /usr/local/share/perl5/5.30 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Config.pm line 604.
Compilation failed in require at t/20_basic01_crd.t line 12.
t/20_basic01_crd.t ........ 
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 
Can't locate Hash/Util.pm in @INC (you may need to install the Hash::Util module) (@INC contains: /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/arch /usr/local/lib64/perl5/5.30 /usr/local/share/perl5/5.30 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Config.pm line 604.
Compilation failed in require at t/21_basic02_crd.t line 12.
t/21_basic02_crd.t ........ 
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 
Can't locate Hash/Util.pm in @INC (you may need to install the Hash::Util module) (@INC contains: /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/arch /usr/local/lib64/perl5/5.30 /usr/local/share/perl5/5.30 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Config.pm line 604.
Compilation failed in require at t/30_basic01_cho.t line 12.
t/30_basic01_cho.t ........ 
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 
Can't locate Hash/Util.pm in @INC (you may need to install the Hash::Util module) (@INC contains: /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/arch /usr/local/lib64/perl5/5.30 /usr/local/share/perl5/5.30 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /builddir/build/BUILD/App-Music-ChordPro-0.974.1/blib/lib/App/Music/ChordPro/Config.pm line 604.
Compilation failed in require at t/31_basic02_cho.t line 12.
t/31_basic02_cho.t ........ 
Dubious, test returned 2 (wstat 512, 0x200)
No subtests run 
t/50_encodings.t .......... ok
Test Summary Report
-------------------
t/105_chords.t          (Wstat: 256 Tests: 321 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/107_chords_latin.t    (Wstat: 256 Tests: 321 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/108_chords_solfege.t  (Wstat: 256 Tests: 321 Failed: 1)
  Failed test:  1
  Non-zero exit status: 1
t/174_transpose.t       (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/177_transcode.t       (Wstat: 512 Tests: 4 Failed: 2)
  Failed tests:  1, 4
  Non-zero exit status: 2
t/20_basic01_crd.t      (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/21_basic02_crd.t      (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/30_basic01_cho.t      (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
t/31_basic02_cho.t      (Wstat: 512 Tests: 0 Failed: 0)
  Non-zero exit status: 2
  Parse errors: No plan found in TAP output
Files=49, Tests=2214,  8 wallclock secs ( 0.34 usr  0.07 sys +  7.43 cusr  0.64 csys =  8.48 CPU)
Result: FAIL
Failed 9/49 test programs. 5/2214 subtests failed.
make: *** [Makefile:843: test_dynamic] Error 255

 - Add:

BuildRequires: perl(Hash::Util)




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

Legend:
[x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated
[ ] = Manual review needed



===== MUST items =====

Generic:
[x]: Package is licensed with an open-source compatible license and meets
     other legal requirements as defined in the legal section of Packaging
     Guidelines.
[-]: 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 %license.
[!]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "*No copyright* Artistic License
     (v2.0)", "Artistic License (v2.0)". 124 files have unknown license.
     Detailed output of licensecheck in
     /home/bob/packaging/review/chordpro/review-chordpro/licensecheck.txt
[x]: If the package is under multiple licenses, the licensing breakdown
     must be documented in the spec.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.
[x]: Sources contain only permissible code or content.
[-]: Package contains desktop file if it is a GUI application.
[-]: Development files must be in a -devel package
[x]: Package uses nothing in %doc for runtime.
[x]: Package consistently uses macros (instead of hard-coded directory
     names).
[x]: Package is named according to the Package Naming Guidelines.
[x]: Package does not generate any conflict.
[x]: Package obeys FHS, except libexecdir and /usr/target.
[-]: If the package is a rename of another package, proper Obsoletes and
     Provides are present.
[x]: Requires correct, justified where necessary.
[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Package is not known to require an ExcludeArch tag.
[-]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 30720 bytes in 2 files.
[x]: Package complies to the Packaging Guidelines
[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Package installs properly.
[x]: Rpmlint is run on all rpms the build produces.
     Note: No rpmlint messages.
[x]: Package requires other packages for directories it uses.
[x]: Package does not own files or directories owned by other packages.
[x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT
[x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the
     beginning of %install.
[x]: %config files are marked noreplace or the reason is justified.
[x]: Macros in Summary, %description expandable at SRPM build time.
[x]: Dist tag is present.
[x]: Package does not contain duplicates in %files.
[x]: Permissions on files are set properly.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[x]: No %config files under /usr.
[x]: Package does not use a name that already exists.
[x]: Package is not relocatable.
[x]: Sources used to build the package match the upstream source, as
     provided in the spec URL.
[x]: Spec file name must match the spec package %{name}, in the format
     %{name}.spec.
[x]: File names are valid UTF-8.
[x]: Packages must not store files under /srv, /opt or /usr/local

Perl:
[x]: Package contains the mandatory BuildRequires and Requires:.

===== SHOULD items =====

Generic:
[!]: 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]: Final provides and requires are sane (see attachments).
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[-]: Sources are verified with gpgverify first in %prep if upstream
     publishes signatures.
     Note: gpgverify is not used.
[-]: Description and summary sections in the package spec file contains
     translations for supported Non-English languages, if available.
[x]: Package should compile and build into binary rpms on all supported
     architectures.
[x]: %check is present and all tests pass.
[x]: Packages should try to preserve timestamps of original installed
     files.
[x]: Spec use %global instead of %define unless justified.
     Note: %define requiring justification: %define FullName App-Music-
     ChordPro
[x]: Reviewer should test that the package builds in mock.
[x]: Buildroot is not present
[x]: Package has no %clean section with rm -rf %{buildroot} (or
     $RPM_BUILD_ROOT)
[x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin.
[x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file
[x]: Sources can be downloaded from URI in Source: tag
[x]: SourceX is a working URL.

===== EXTRA items =====

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: chordpro-0.974.1-4.fc33.noarch.rpm
          chordpro-0.974.1-4.fc33.src.rpm
2 packages and 0 specfiles checked; 0 errors, 0 warnings.

Comment 7 Johan Vromans 2020-03-23 07:42:29 UTC
Thanks for your feedback.

I've added perl(Hash::Util) to the build dependencies. The testing problems did not show up on my f31 system.

Other issues:

[!]: License field in the package spec file matches the actual license.

=> License changed to Artistic 2.0 to match the README.

[!]: If the source package does not include license text(s) as a separate
     file from upstream, the packager SHOULD query upstream to include it.

=> I've asked upstream to license under GPL + Artistic and provide a LICENSE file.

New files:

Spec URL: https://www.chordpro.org/fedora/chordpro.spec
SRPM URL: https://www.chordpro.org/fedora/chordpro-0.974.1-5.fc33.src.rpm

Comment 8 Robert-André Mauchin 🐧 2020-03-24 16:29:29 UTC
Package approved.

Comment 9 Gwyn Ciesla 2020-03-24 18:46:04 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/chordpro

Comment 10 Johan Vromans 2020-03-25 07:20:30 UTC
Thanks for the approval.

I still have a question about this package being successor to the chordii package. I am also maintainer of the chordii program and package and I want to deprecate it. Should I just add Obsoletes:chordii to the chordpro spec file? Should I add Provides:chordii even though it is not a plug compatible replacement? It is a full functional replacement.

AFAICS this would be consistent with the discussion https://pagure.io/packaging-committee/issue/645 and the packaging guidelines.

Apologies if this is not the right place to ask.

Comment 11 Robert-André Mauchin 🐧 2020-03-25 16:58:23 UTC
If it has the same functionalities, I think you can Obsoletes/Provides it.

Comment 12 Elliott Sales de Andrade 2020-08-03 00:28:18 UTC
Please close your Review Requests when they are complete.


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