Bug 1826270

Summary: Review Request: perl-B-COW - Additional B helpers to check Copy On Write status
Product: [Fedora] Fedora Reporter: Paul Howarth <paul>
Component: Package ReviewAssignee: Petr Pisar <ppisar>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: mmckinst, package-review, ppisar
Target Milestone: ---Flags: ppisar: fedora-review+
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: perl-B-COW-0.004-2.fc33 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-05-03 04:54:02 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1796214    

Description Paul Howarth 2020-04-21 10:55:47 UTC
Spec URL: http://subversion.city-fan.org/repos/cfo-repo/perl-B-COW/branches/fedora/perl-B-COW.spec

SRPM URL: http://www.city-fan.org/~paul/extras/perl-B-COW/perl-B-COW-0.003-2.fc33.src.rpm

Description:
B::COW provides some naïve additional B helpers to check the Copy On Write
(COW) status of one SvPV (a Perl string variable).

A COWed SvPV is sharing its string (the PV) with other SvPVs. It's a (kind of)
Read Only C string, which would be Copied On Write (COW). More than one SV can
share the same PV, but when one PV needs to alter it, it would perform a copy
of it, decreasing the COWREFCNT counter. One SV can then drop the COW flag when
it's the only one holding a pointer to the PV. The COWREFCNT is stored at the
end of the PV, after the null byte terminating the string. That value is
limited to 255: when we reach 255, a new PV would be created.

Fedora Account System Username: pghmcfc

This package is needed for the test suite of perl-Clone 0.44.

Comment 1 Petr Pisar 2020-04-21 11:53:23 UTC
The standalone spec file seems to be newer. I will use that for the review.

Url and Source0 addresses are usable. Ok.
A Source0 archive (SHA-256: 9c7de86542871bc0ac8e6b4f7363bba4f6c5cc07e06fadc51d3a78832fcfca89) is original. Ok.
Summary verifed from lib/B/COW.pm. Ok.
Description verified from lib/B/COW.pm. Ok.
License verified from lib/B/COW.pm, Makefile.PL, LICENSE, COW.xs, and README. Ok.

TODO: Use %{make_build} and %{make_install} macros.

All tests pass. Ok.

$ rpmlint perl-B-COW.spec ../SRPMS/perl-B-COW-0.003-2.fc33.src.rpm ../RPMS/x86_64/perl-B-COW-*
sh: /usr/bin/python2: No such file or directory
perl-B-COW.src: W: spelling-error %description -l en_US naïve -> nave, naive
perl-B-COW.x86_64: W: spelling-error %description -l en_US naïve -> nave, naive
perl-B-COW.x86_64: E: library-not-linked-against-libc /usr/lib64/perl5/vendor_perl/auto/B/COW/COW.so
4 packages and 1 specfiles checked; 1 errors, 2 warnings.
rpmlint is Ok.
The link error is because of a weak __cxa_finalize symbol. Weak symbols do not need to be fulfilled.

$ rpm -q -lv -p ../RPMS/x86_64/perl-B-COW-0.003-2.fc33.x86_64.rpm 
drwxr-xr-x    2 root     root                        0 Apr 21 13:40 /usr/lib/.build-id
drwxr-xr-x    2 root     root                        0 Apr 21 13:40 /usr/lib/.build-id/c9
lrwxrwxrwx    1 root     root                       57 Apr 21 13:40 /usr/lib/.build-id/c9/5e1f2c8a5362612b167e996167a8bab86a0327 -> ../../../../usr/lib64/perl5/vendor_perl/auto/B/COW/COW.so
drwxr-xr-x    2 root     root                        0 Apr 21 13:40 /usr/lib64/perl5/vendor_perl/B
-rw-r--r--    1 root     root                     3150 Apr 20 17:59 /usr/lib64/perl5/vendor_perl/B/COW.pm
drwxr-xr-x    2 root     root                        0 Apr 21 13:40 /usr/lib64/perl5/vendor_perl/auto/B
drwxr-xr-x    2 root     root                        0 Apr 21 13:40 /usr/lib64/perl5/vendor_perl/auto/B/COW
-rwxr-xr-x    1 root     root                    15768 Apr 21 13:40 /usr/lib64/perl5/vendor_perl/auto/B/COW/COW.so
drwxr-xr-x    2 root     root                        0 Apr 21 13:40 /usr/share/doc/perl-B-COW
-rw-r--r--    1 root     root                      336 Apr 20 17:59 /usr/share/doc/perl-B-COW/Changes
-rw-r--r--    1 root     root                      371 Apr 20 17:59 /usr/share/doc/perl-B-COW/README
drwxr-xr-x    2 root     root                        0 Apr 20 17:59 /usr/share/doc/perl-B-COW/examples
-rw-r--r--    1 root     root                      805 Apr 20 17:59 /usr/share/doc/perl-B-COW/examples/synopsis.pl
drwxr-xr-x    2 root     root                        0 Apr 21 13:40 /usr/share/licenses/perl-B-COW
-rw-r--r--    1 root     root                    18340 Apr 20 17:59 /usr/share/licenses/perl-B-COW/LICENSE
-rw-r--r--    1 root     root                     2246 Apr 21 13:40 /usr/share/man/man3/B::COW.3pm.gz
A file layout and the permissions are Ok.

$ rpm -q --requires -p ../RPMS/x86_64/perl-B-COW-0.003-2.fc33.x86_64.rpm | sort -f | uniq -c
      1 libperl.so.5.30()(64bit)
      1 libpthread.so.0()(64bit)
      1 libpthread.so.0(GLIBC_2.2.5)(64bit)
      1 perl(:MODULE_COMPAT_5.30.2)
      1 perl(base)
      1 perl(Exporter)
      1 perl(strict)
      1 perl(warnings)
      1 perl(XSLoader)
      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.

$ rpm -q --provides -p ../RPMS/x86_64/perl-B-COW-0.003-2.fc33.x86_64.rpm | sort -f | uniq -c
      1 perl(B::COW) = 0.003
      1 perl-B-COW = 0.003-2.fc33
      1 perl-B-COW(x86-64) = 0.003-2.fc33
Binary provides are Ok.

$ resolvedeps rawhide ../RPMS/x86_64/perl-B-COW-0.003-2.fc33.x86_64.rpm 
Binary dependencies are resolvable. Ok.

FATAL: The package does not build in Fedora 33 (https://koji.fedoraproject.org/koji/taskinfo?taskID=43596524) on big-endian machines (https://github.com/atoomic/B-COW/issues/1).

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

Comment 2 Paul Howarth 2020-04-24 08:50:35 UTC
Issue with shared hash key references resolved upstream in version 0.004:

Spec URL: http://subversion.city-fan.org/repos/cfo-repo/perl-B-COW/branches/fedora/perl-B-COW.spec

SRPM URL: http://www.city-fan.org/~paul/extras/perl-B-COW/perl-B-COW-0.004-1.fc33.src.rpm

I'll update to use %{make_build} and %{make_install} macros post-import so I can branch for EPEL-7 more easily.

Comment 3 Paul Howarth 2020-04-24 08:51:08 UTC
Scratch build:
http://koji.fedoraproject.org/koji/taskinfo?taskID=43717368

Comment 4 Petr Pisar 2020-04-24 10:10:09 UTC
This is a rebase. Reviewing again.

Url and Source0 addresses are usable. Ok.
Source0 archive (SHA-256: fcafb775ed84a45bc2c06c5ffd71342cb3c06fb0bdcd5c1b51b0c12f8b585f51) is original. Ok.
The summary is Ok.
Description verified from lib/B/COW.pm. Ok.
License verified from lib/B/COW.pm, LICENSE, COW.xs, and README. Ok.

All tests pass. Ok.

$ rpmlint perl-B-COW.spec ../SRPMS/perl-B-COW-0.004-1.fc33.src.rpm ../RPMS/x86_64/perl-B-COW-*
sh: /usr/bin/python2: No such file or directory
perl-B-COW.src: W: spelling-error %description -l en_US naïve -> nave, naive
perl-B-COW.x86_64: W: spelling-error %description -l en_US naïve -> nave, naive
perl-B-COW.x86_64: E: library-not-linked-against-libc /usr/lib64/perl5/vendor_perl/auto/B/COW/COW.so
4 packages and 1 specfiles checked; 1 errors, 2 warnings.
rpmlint is Ok.

$ rpm -q -lv -p ../RPMS/x86_64/perl-B-COW-0.004-1.fc33.x86_64.rpm 
drwxr-xr-x    2 root     root                        0 Apr 24 11:48 /usr/lib/.build-id
drwxr-xr-x    2 root     root                        0 Apr 24 11:48 /usr/lib/.build-id/c4
lrwxrwxrwx    1 root     root                       57 Apr 24 11:48 /usr/lib/.build-id/c4/3a0a258846d4434c0ee0e0e6cd7c9083d2a822 -> ../../../../usr/lib64/perl5/vendor_perl/auto/B/COW/COW.so
drwxr-xr-x    2 root     root                        0 Apr 24 11:48 /usr/lib64/perl5/vendor_perl/B
-rw-r--r--    1 root     root                     3150 Apr 23 22:41 /usr/lib64/perl5/vendor_perl/B/COW.pm
drwxr-xr-x    2 root     root                        0 Apr 24 11:48 /usr/lib64/perl5/vendor_perl/auto/B
drwxr-xr-x    2 root     root                        0 Apr 24 11:48 /usr/lib64/perl5/vendor_perl/auto/B/COW
-rwxr-xr-x    1 root     root                    15768 Apr 24 11:48 /usr/lib64/perl5/vendor_perl/auto/B/COW/COW.so
drwxr-xr-x    2 root     root                        0 Apr 24 11:48 /usr/share/doc/perl-B-COW
-rw-r--r--    1 root     root                      424 Apr 23 22:41 /usr/share/doc/perl-B-COW/Changes
-rw-r--r--    1 root     root                      371 Apr 23 22:41 /usr/share/doc/perl-B-COW/README
drwxr-xr-x    2 root     root                        0 Apr 23 22:41 /usr/share/doc/perl-B-COW/examples
-rw-r--r--    1 root     root                      805 Apr 23 22:41 /usr/share/doc/perl-B-COW/examples/synopsis.pl
drwxr-xr-x    2 root     root                        0 Apr 24 11:48 /usr/share/licenses/perl-B-COW
-rw-r--r--    1 root     root                    18340 Apr 23 22:41 /usr/share/licenses/perl-B-COW/LICENSE
-rw-r--r--    1 root     root                     2247 Apr 24 11:48 /usr/share/man/man3/B::COW.3pm.gz
File layout and permissions are Ok.

$ rpm -q --requires -p ../RPMS/x86_64/perl-B-COW-0.004-1.fc33.x86_64.rpm | sort -f | uniq -c
      1 libperl.so.5.30()(64bit)
      1 libpthread.so.0()(64bit)
      1 libpthread.so.0(GLIBC_2.2.5)(64bit)
      1 perl(:MODULE_COMPAT_5.30.2)
      1 perl(base)
      1 perl(Exporter)
      1 perl(strict)
      1 perl(warnings)
      1 perl(XSLoader)
      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.

$ rpm -q --provides -p ../RPMS/x86_64/perl-B-COW-0.004-1.fc33.x86_64.rpm | sort -f | uniq -c
      1 perl(B::COW) = 0.004
      1 perl-B-COW = 0.004-1.fc33
      1 perl-B-COW(x86-64) = 0.004-1.fc33
Binary provides are Ok.

$ resolvedeps rawhide ../RPMS/x86_64/perl-B-COW-0.004-1.fc33.x86_64.rpm 
Binary dependencies are resolvable. Ok.

The package builds in Fedora 33 (https://koji.fedoraproject.org/koji/taskinfo?taskID=43721380). Ok.

The package is in line with Fedora and Perl packaging guidelines.
Resolution: Package APPROVED.

Comment 5 Paul Howarth 2020-04-24 10:23:04 UTC
Thanks Petr.

$ fedpkg request-repo perl-B-COW 1826270
https://pagure.io/releng/fedora-scm-requests/issue/24494
$ fedpkg request-branch --repo perl-B-COW f32
https://pagure.io/releng/fedora-scm-requests/issue/24500
$ fedpkg request-branch --repo perl-B-COW f31
https://pagure.io/releng/fedora-scm-requests/issue/24501
$ fedpkg request-branch --repo perl-B-COW epel8
https://pagure.io/releng/fedora-scm-requests/issue/24502
https://pagure.io/releng/fedora-scm-requests/issue/24503
$ fedpkg request-branch --repo perl-B-COW epel7
https://pagure.io/releng/fedora-scm-requests/issue/24504

Comment 6 Gwyn Ciesla 2020-04-24 13:38:27 UTC
(fedscm-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/perl-B-COW

Comment 7 Fedora Update System 2020-04-24 14:41:09 UTC
FEDORA-2020-d31ca621ea has been submitted as an update to Fedora 31. https://bodhi.fedoraproject.org/updates/FEDORA-2020-d31ca621ea

Comment 8 Fedora Update System 2020-04-24 14:41:10 UTC
FEDORA-2020-b40431c7f0 has been submitted as an update to Fedora 32. https://bodhi.fedoraproject.org/updates/FEDORA-2020-b40431c7f0

Comment 9 Fedora Update System 2020-04-24 14:54:09 UTC
FEDORA-EPEL-2020-095ec3b8bf has been submitted as an update to Fedora EPEL 7. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2020-095ec3b8bf

Comment 10 Fedora Update System 2020-04-24 14:54:10 UTC
FEDORA-EPEL-2020-eecc5afcda has been submitted as an update to Fedora EPEL 8. https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2020-eecc5afcda

Comment 11 Paul Howarth 2020-04-24 16:56:06 UTC
B::COW is now available in the Rawhide buildroot.

Comment 12 Fedora Update System 2020-04-25 03:05:28 UTC
FEDORA-EPEL-2020-eecc5afcda has been pushed to the Fedora EPEL 8 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2020-eecc5afcda

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 13 Fedora Update System 2020-04-25 03:19:49 UTC
FEDORA-EPEL-2020-095ec3b8bf has been pushed to the Fedora EPEL 7 testing repository.

You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2020-095ec3b8bf

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 14 Fedora Update System 2020-04-25 04:19:07 UTC
FEDORA-2020-d31ca621ea has been pushed to the Fedora 31 testing repository.
In short time you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2020-d31ca621ea \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-d31ca621ea

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 15 Fedora Update System 2020-04-25 12:21:09 UTC
FEDORA-2020-b40431c7f0 has been pushed to the Fedora 32 testing repository.
In short time you'll be able to install the update with the following command:
`sudo dnf install --enablerepo=updates-testing --advisory=FEDORA-2020-b40431c7f0 \*`
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2020-b40431c7f0

See also https://fedoraproject.org/wiki/QA:Updates_Testing for more information on how to test updates.

Comment 16 Fedora Update System 2020-05-03 04:54:02 UTC
FEDORA-2020-d31ca621ea has been pushed to the Fedora 31 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 17 Fedora Update System 2020-05-03 05:29:48 UTC
FEDORA-2020-b40431c7f0 has been pushed to the Fedora 32 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 18 Fedora Update System 2020-05-10 00:36:37 UTC
FEDORA-EPEL-2020-eecc5afcda has been pushed to the Fedora EPEL 8 stable repository.
If problem still persists, please make note of it in this bug report.

Comment 19 Fedora Update System 2020-05-10 00:59:20 UTC
FEDORA-EPEL-2020-095ec3b8bf has been pushed to the Fedora EPEL 7 stable repository.
If problem still persists, please make note of it in this bug report.