Bug 1948651 - Review Request: perl-YAML-LibYAML-API - Wrapper around the C libyaml library
Summary: Review Request: perl-YAML-LibYAML-API - Wrapper around the C libyaml library
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Petr Pisar
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: 1948661
TreeView+ depends on / blocked
 
Reported: 2021-04-12 17:06 UTC by Jitka Plesnikova
Modified: 2021-04-16 20:42 UTC (History)
2 users (show)

Fixed In Version: perl-YAML-LibYAML-API-0.012-1.fc35
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2021-04-16 20:42:08 UTC
Type: ---
Embargoed:
ppisar: fedora-review+


Attachments (Terms of Use)

Description Jitka Plesnikova 2021-04-12 17:06:37 UTC
Spec URL: https://jplesnik.fedorapeople.org/perl-YAML-LibYAML-API/perl-YAML-LibYAML-API.spec
SRPM URL: https://jplesnik.fedorapeople.org/perl-YAML-LibYAML-API/perl-YAML-LibYAML-API-0.012-1.fc35.src.rpm
Description:
This module provides a thin wrapper around the C libyaml API.

Fedora Account System Username: jplesnik

Comment 1 Petr Pisar 2021-04-16 09:21:49 UTC
A standalone spec file differs from the packaged one. I will use packaged one for this review.

URL and Source0 addresses are usable. Ok.
TODO: Remove a trailing slash for the URL value.

Source0 archive (SHA-512: 
e072d836d2af63200617025e21895c235ea0a81e5e1a719baa114184450a9e09eccf2642ddfb9ea4ad062c6f995aedc1aca5f467b684d173683573f3d0fab340) is original. Ok.
Summary verified from lib/YAML/LibYAML/API.pm. Ok.
Description verified from lib/YAML/LibYAML/API.pm. Ok.
The packages contains an XS code, the package is full-arch. Ok.
License verified from lib/YAML/LibYAML/API.pm, LibYAML/ppport.h, Makefile.PL, LICENSE, README. Ok.
TODO: Document in the spec file a license of the bundled ./LibYAML files. It's a MIT license.

FIX: Do not build-require 'libyaml'. The packages only uses libyaml-devel.

FIX: Do not build-require 'perl(YAML::PP)'. It's used nowhere.
TODO: Constrain 'perl(YAML::PP::Common)' build-dependency with '>= 0.024' (Makefile.PL:32). Upstream probably mistaken the two modules.
TODO: Constrain 'perl(Test::More)' with '>= 0.98' (META.json:38).

TODO: I recommend unsetting AUTHOR_TESTING environment variable in the %check section (t/00.compile.t:37).

All tests pass. Ok.

$ rpmlint perl-YAML-LibYAML-API.spec ../SRPMS/perl-YAML-LibYAML-API-0.012-1.fc35.src.rpm ../RPMS/x86_64/perl-YAML-LibYAML-API-*
4 packages and 1 specfiles checked; 0 errors, 0 warnings.

$ rpm -q -lv -p ../RPMS/x86_64/perl-YAML-LibYAML-API-0.012-1.fc35.x86_64.rpm
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib/.build-id
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib/.build-id/ea
lrwxrwxrwx    1 root     root                       70 Apr 16 11:00 /usr/lib/.build-id/ea/751a0c94108058f8599a4705ba31c83968a01d -> ../../../../usr/lib64/perl5/vendor_perl/auto/YAML/LibYAML/API/XS/XS.so
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/YAML
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/YAML/LibYAML
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/YAML/LibYAML/API
-rw-r--r--    1 root     root                     5101 Sep  8  2020 /usr/lib64/perl5/vendor_perl/YAML/LibYAML/API.pm
-rw-r--r--    1 root     root                      312 Sep  8  2020 /usr/lib64/perl5/vendor_perl/YAML/LibYAML/API/XS.pm
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/auto/YAML
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/auto/YAML/LibYAML
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/auto/YAML/LibYAML/API
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/auto/YAML/LibYAML/API/XS
-rwxr-xr-x    1 root     root                    31768 Apr 16 11:00 /usr/lib64/perl5/vendor_perl/auto/YAML/LibYAML/API/XS/XS.so
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/share/doc/perl-YAML-LibYAML-API
-rw-r--r--    1 root     root                     1533 Sep  8  2020 /usr/share/doc/perl-YAML-LibYAML-API/Changes
-rw-r--r--    1 root     root                      374 Sep  8  2020 /usr/share/doc/perl-YAML-LibYAML-API/README
drwxr-xr-x    2 root     root                        0 Apr 16 11:00 /usr/share/licenses/perl-YAML-LibYAML-API
-rw-r--r--    1 root     root                    18349 Sep  8  2020 /usr/share/licenses/perl-YAML-LibYAML-API/LICENSE
-rw-r--r--    1 root     root                     1918 Apr 16 11:00 /usr/share/man/man3/YAML::LibYAML::API.3pm.gz
-rw-r--r--    1 root     root                     1128 Apr 16 11:00 /usr/share/man/man3/YAML::LibYAML::API::XS.3pm.gz
File layout and permissions are Ok.

$ rpm -q --requires -p ../RPMS/x86_64/perl-YAML-LibYAML-API-0.012-1.fc35.x86_64.rpm | sort -f | uniq -c
      1 libc.so.6()(64bit)
      1 libc.so.6(GLIBC_2.11)(64bit)
      1 libc.so.6(GLIBC_2.2.5)(64bit)
      1 libc.so.6(GLIBC_2.4)(64bit)
      1 libperl.so.5.32()(64bit)
      1 libpthread.so.0()(64bit)
      1 libpthread.so.0(GLIBC_2.2.5)(64bit)
      1 libyaml >= 0.2.5
      1 libyaml-0.so.2()(64bit)
      1 perl(:MODULE_COMPAT_5.32.1)
      1 perl(strict)
      1 perl(warnings)
      1 perl(XSLoader)
      1 perl(YAML::PP::Common)
      1 rpmlib(CompressedFileNames) <= 3.0.4-1
      1 rpmlib(FileDigests) <= 4.6.0-1
      1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
      1 rpmlib(PayloadIsZstd) <= 5.4.18-1
      1 rtld(GNU_HASH)
FIX: Do not run-require 'libyaml'. The dependency is automatically generated from a library SONAME (libyaml-0.so.2()(64bit)).
TODO: Constrain 'perl(YAML::PP::Common)' dependency with '>= 0.024' (Makefile.PL:32). Upstream probably mistaken the two modules.

$ rpm -q --provides -p ../RPMS/x86_64/perl-YAML-LibYAML-API-0.012-1.fc35.x86_64.rpm | sort -f | uniq -c
      1 perl(YAML::LibYAML::API) = 0.012
      1 perl(YAML::LibYAML::API::XS) = 0.012
      1 perl-YAML-LibYAML-API = 0.012-1.fc35
      1 perl-YAML-LibYAML-API(x86-64) = 0.012-1.fc35
Binary provides are Ok.

$ resolvedeps rawhide ../RPMS/x86_64/perl-YAML-LibYAML-API-0.012-1.fc35.x86_64.rpm
Binary dependencies are resolvable. Ok.

The package does not build in F35 (https://koji.fedoraproject.org/koji/taskinfo?taskID=66052232):

DEBUG package_manager.py:197:  ['/usr/bin/dnf', 'builddep', '--installroot', '/var/lib/mock/f35-build-26780150-3357443/root/', '--setopt=install_weak_deps=0', '--disableplugin=local', '--disableplugin=spacewalk', '/var/lib/mock/f35-build-26780150-3357443/root//builddir/build/SRPMS/perl-YAML-LibYAML-API-0.012-1.fc35.src.rpm']
DEBUG util.py:624:  child environment: None
DEBUG util.py:542:  Executing command: ['/usr/bin/dnf', 'builddep', '--installroot', '/var/lib/mock/f35-build-26780150-3357443/root/', '--setopt=install_weak_deps=0', '--disableplugin=local', '--disableplugin=spacewalk', '/var/lib/mock/f35-build-26780150-3357443/root//builddir/build/SRPMS/perl-YAML-LibYAML-API-0.012-1.fc35.src.rpm', '--setopt=tsflags=nocontexts'] with env {'TERM': 'vt100', 'SHELL': '/bin/bash', 'HOME': '/var/lib/mock/f35-build-26780150-3357443/root/installation-homedir', 'HOSTNAME': 'mock', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin', 'PROMPT_COMMAND': 'printf "\\033]0;<mock-chroot>\\007"', 'PS1': '<mock-chroot> \\s-\\v\\$ ', 'LANG': 'C.UTF-8', 'LC_MESSAGES': 'C.UTF-8', 'LD_PRELOAD': '/var/tmp/tmp.mock.f4hua02m/$LIB/nosync.so'} and shell False
DEBUG util.py:444:  No matches found for the following disable plugin patterns: local, spacewalk
DEBUG util.py:446:  Package coreutils-8.32-22.fc35.x86_64 is already installed.
DEBUG util.py:446:  Package findutils-1:4.8.0-2.fc34.x86_64 is already installed.
DEBUG util.py:444:  Error: 
DEBUG util.py:444:   Problem: package perl-devel-4:5.32.1-474.fc35.x86_64 requires redhat-rpm-config, but none of the providers can be installed
DEBUG util.py:444:    - package redhat-rpm-config-183-1.fc35.noarch requires (annobin if (gcc or clang)), but none of the providers can be installed
DEBUG util.py:444:    - conflicting requests

We need to wait until the build root is fixed.

Otherwise the package is in line with Fedora and Perl packaging guidelines.
Resolution: NOT approved.

Comment 2 Jitka Plesnikova 2021-04-16 10:04:34 UTC
Update files on the same place.

Comment 3 Petr Pisar 2021-04-16 10:21:42 UTC
Spec file changes:

--- perl-YAML-LibYAML-API.spec.old      2021-04-12 19:03:08.000000000 +0200
+++ perl-YAML-LibYAML-API.spec  2021-04-16 12:03:02.000000000 +0200
@@ -8,7 +8,6 @@
 BuildRequires:  coreutils
 BuildRequires:  findutils
 BuildRequires:  gcc
-BuildRequires:  libyaml >= 0.2.5
 BuildRequires:  libyaml-devel >= 0.2.5
 BuildRequires:  make
 BuildRequires:  perl-devel
@@ -22,8 +21,7 @@
 BuildRequires:  perl(warnings)
 # Run-time
 BuildRequires:  perl(XSLoader)
-BuildRequires:  perl(YAML::PP) >= 0.024
-BuildRequires:  perl(YAML::PP::Common)
+BuildRequires:  perl(YAML::PP::Common) >= 0.024
 # Tests
 BuildRequires:  perl(blib)
 BuildRequires:  perl(Encode)
@@ -31,9 +29,12 @@
 BuildRequires:  perl(FindBin)
 BuildRequires:  perl(IO::Handle)
 BuildRequires:  perl(IPC::Open3)
-BuildRequires:  perl(Test::More)
+BuildRequires:  perl(Test::More) >= 0.98
 Requires:       perl(:MODULE_COMPAT_%(eval "`perl -V:version`"; echo $version))
-Requires:       libyaml >= 0.2.5
+Requires:       perl(YAML::PP::Common) >= 0.024
+
+# Filter unversioned require
+%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(YAML::PP::Common\\)
 
 %description
 This module provides a thin wrapper around the C libyaml API.
@@ -59,6 +60,7 @@
 %{_fixperms} $RPM_BUILD_ROOT/*
 
 %check
+unset AUTHOR_TESTING
 export HARNESS_OPTIONS=j$(perl -e 'if ($ARGV[0] =~ /.*-j([0-9][0-9]*).*/) {print $1} else {print 1}' -- '%{?_smp_mflags}')
 make test


> TODO: Remove a trailing slash for the URL value.
Not addressed.

> TODO: Document in the spec file a license of the bundled ./LibYAML files. It's a MIT license.
Not addreseed.

> FIX: Do not build-require 'libyaml'. The packages only uses libyaml-devel.
Ok.

> FIX: Do not build-require 'perl(YAML::PP)'. It's used nowhere.
Ok.

> TODO: Constrain 'perl(YAML::PP::Common)' build-dependency with '>= 0.024' (Makefile.PL:32). Upstream probably mistaken the two modules.
Ok.

> TODO: Constrain 'perl(Test::More)' with '>= 0.98' (META.json:38).
Ok.

> TODO: I recommend unsetting AUTHOR_TESTING environment variable in the %check section (t/00.compile.t:37).
Ok.

$ rpmlint perl-YAML-LibYAML-API.spec ../SRPMS/perl-YAML-LibYAML-API-0.012-1.fc35.src.rpm ../RPMS/x86_64/perl-YAML-LibYAML-API-*
4 packages and 1 specfiles checked; 0 errors, 0 warnings.
rpmlint is Ok.

> FIX: Do not run-require 'libyaml'. The dependency is automatically generated from a library SONAME (libyaml-0.so.2()(64bit)).
> TODO: Constrain 'perl(YAML::PP::Common)' dependency with '>= 0.024' (Makefile.PL:32). Upstream probably mistaken the two modules.
$ rpm -q --requires -p ../RPMS/x86_64/perl-YAML-LibYAML-API-0.012-1.fc35.x86_64.rpm | sort -f | uniq -c
      1 libc.so.6()(64bit)
      1 libc.so.6(GLIBC_2.11)(64bit)
      1 libc.so.6(GLIBC_2.2.5)(64bit)
      1 libc.so.6(GLIBC_2.4)(64bit)
      1 libperl.so.5.32()(64bit)
      1 libpthread.so.0()(64bit)
      1 libpthread.so.0(GLIBC_2.2.5)(64bit)
      1 libyaml-0.so.2()(64bit)
      1 perl(:MODULE_COMPAT_5.32.1)
      1 perl(strict)
      1 perl(warnings)
      1 perl(XSLoader)
      1 perl(YAML::PP::Common) >= 0.024
      1 rpmlib(CompressedFileNames) <= 3.0.4-1
      1 rpmlib(FileDigests) <= 4.6.0-1
      1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
      1 rpmlib(PayloadIsZstd) <= 5.4.18-1
      1 rtld(GNU_HASH)
Binary requires are Ok.

$ resolvedeps rawhide ../RPMS/x86_64/perl-YAML-LibYAML-API-0.012-1.fc35.x86_64.rpm 
Binary dependencies are resolvable. Ok.

It still fails to build in F35 <https://koji.fedoraproject.org/koji/taskinfo?taskID=66054894>. The full error message as seen in my machine is:

 Problém: problem with installed package redhat-rpm-config-183-1.fc35.noarch
  - cannot install the best update candidate for package redhat-rpm-config-183-1.fc35.noarch
  - package redhat-rpm-config-183-1.fc35.noarch requires (annobin if (gcc or clang)), but none of the providers can be installed
  - cannot install the best update candidate for package annobin-9.65-2.fc35.x86_64
  - package annobin-docs-9.66-2.fc35.noarch obsoletes annobin < 9.66-2.fc35 provided by annobin-9.65-2.fc35.x86_64
  - problem with installed package gcc-11.0.1-0.4.fc35.x86_64
  - cannot install the best update candidate for package gcc-11.0.1-0.4.fc35.x86_64

This seems to be an annobin bug #1949570.

Resolution: Package APPROVED.

Comment 4 Jitka Plesnikova 2021-04-16 10:39:13 UTC
https://pagure.io/releng/fedora-scm-requests/issue/33571

Comment 5 Gwyn Ciesla 2021-04-16 13:31:37 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/perl-YAML-LibYAML-API

Comment 6 Jitka Plesnikova 2021-04-16 20:42:08 UTC
Thank you for review and repository.


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