Bug 2381594 - Review Request: perl-File-ShouldUpdate - check for the need to rebuild using makefile-like syntax
Summary: Review Request: perl-File-ShouldUpdate - check for the need to rebuild using ...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Xavier Bachelot
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2025-07-17 06:49 UTC by Shlomi Fish
Modified: 2025-08-01 11:43 UTC (History)
2 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2025-08-01 11:43:40 UTC
Type: ---
Embargoed:
xavier: fedora-review+


Attachments (Terms of Use)

Description Shlomi Fish 2025-07-17 06:49:15 UTC
Spec URL: https://www.shlomifish.org/Files/files/code/perl-File-ShouldUpdate.spec
SRPM URL: https://www.shlomifish.org/Files/files/arcs/perl-File-ShouldUpdate-0.2.1-1.fc42.src.rpm
Description: This is [my] dep of App::Docmake [which is also mine], which it seems I'll need for transitioning fortune-mod's fedora build process to ninja [so Yak Shaving]. It is small, regular, and should be easy to maintain.
Fedora Account System Username: shlomif

Comment 1 Xavier Bachelot 2025-07-24 13:31:09 UTC
Hi Shlomi,

Some notes after taking a first look: 

- It's is usually preferred to reference the tarball by module rather than by author.
  Source0 could be changed to use https://cpan.metacpan.org/modules/by-module/File/File-ShouldUpdate-%{version}.tar.gz

- Add BR: coreutils for _fixperms macro which uses chmod

- Femove weaver.ini from %%doc

- Files section could use less wildcards:
  %{perl_vendorlib}/File/
  %{_mandir}/man3/File::ShouldUpdate.3pm*

Regards,
Xavier

Comment 2 Shlomi Fish 2025-07-25 04:16:00 UTC
(In reply to Xavier Bachelot from comment #1)
> Hi Shlomi,
> 
> Some notes after taking a first look: 
> 
> - It's is usually preferred to reference the tarball by module rather than
> by author.
>   Source0 could be changed to use
> https://cpan.metacpan.org/modules/by-module/File/File-ShouldUpdate-
> %{version}.tar.gz
> 
> - Add BR: coreutils for _fixperms macro which uses chmod
> 
> - Femove weaver.ini from %%doc
> 
> - Files section could use less wildcards:
>   %{perl_vendorlib}/File/
>   %{_mandir}/man3/File::ShouldUpdate.3pm*
> 
> Regards,
> Xavier

Thanks, Xavier. Should be fixed now. I don't seem to recall most of these guidelines in the Fedora Perl packaging guidelines

Comment 3 Xavier Bachelot 2025-07-25 08:54:06 UTC
- Source0 change is to bring more stability to the url, which could otherwise change with a new maintainer.
- BR: coreutils is to make sure chmod is available in the buildroot.
- weaver.ini does not bring any valuable information to the user.
- Files section change are to avoid too wide globing, which is mentioned in the guidelines at
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_permissions
  Combining with the perl guidelines to own the directories gives what I suggested.

Formal review follows in a few.

Comment 4 Xavier Bachelot 2025-07-25 08:55:23 UTC
Link above should be https://docs.fedoraproject.org/en-US/packaging-guidelines/#_explicit_lists
Bad cut and paste, sorry

Comment 5 Xavier Bachelot 2025-07-25 08:57:48 UTC
Oh and btw, fedora-review is not happy with downloading files from your host:
ERROR: 'Error HTTP Error 406: Not Acceptable downloading https://www.shlomifish.org/Files/files/arcs/perl-File-ShouldUpdate-0.2.1-1.fc42.src.rpm'

Comment 6 Xavier Bachelot 2025-07-25 09:06:58 UTC
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.
[x]: License field in the package spec file matches the actual license.
     Note: Checking patched sources after %prep for licenses. Licenses
     found: "Unknown or generated", "MIT License", "*No copyright* MIT
     License". 16 files have unknown license. Detailed output of
     licensecheck in /tmp/perl-File-ShouldUpdate/licensecheck.txt
[x]: Package does not own files or directories owned by other packages.
     Note: Dirs in package are owned also by:
     /usr/share/perl5/vendor_perl/File(perl-File-Comments, perl-File-Spec-
     Native, perl-File-Find-Object, perl-File-ConfigDir, perl-File-KeePass,
     perl-File-DesktopEntry, perl-File-Copy-Recursive-Reduced, perl-File-
     HomeDir, perl-File-Path-Tiny, perl-File-Remove, perl-File-chmod, perl-
     File-Edit-Portable, perl-File-Copy-Recursive, perl-File-NCopy, perl-
     File-Tail, perl-File-Find-Rule-Perl, perl-File-Read, perl-File-Temp,
     perl-File-Rsync, perl-File-Touch, perl-File-BOM, perl-File-pushd,
     perl-File-ShareDir-Install, perl-File-Flat, perl-File-FindLib, perl-
     File-Slurp-Tiny, perl-File-UserDirs, perl-File-Type-WebImages, perl-
     File-TreeCreate, perl-File-Unpack2, perl-File-Find-Iterator, perl-
     File-MMagic, perl-File-NFSLock, perl-File-Find-utf8, perl-File-Find-
     Object-Rule, perl-File-Listing, perl-File-Fetch, perl-File-Path, perl-
     File-Tee, perl-File-Tempdir, perl-File-PathList, perl-File-Slurper,
     perl-File-ShareDir-ProjectDistDir, perl-File-KDBX, perl-File-Find-
     Rule-PPI, perl-File-Pid, perl-File-ShareDir, perl-File-Next, perl-
     File-Find-Rule, perl-File-SearchPath, perl-File-MimeInfo, perl-File-
     CheckTree, perl-File-Zglob, perl-Image-ExifTool, perl-File-XDG, perl-
     File-DirList, perl-File-Flock, perl-File-DirCompare, perl-File-Slurp,
     perl-File-Which, perl-File-chdir, perl-File-Type, perl-File-
     ReadBackwards, perl-File-Share, perl-File-Find-Rule-VCS, perl-File-
     LoadLines, perl-File-Modified, perl-File-BaseDir, perl-File-
     ChangeNotify)
[-]: 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.
[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: There are rpmlint messages (see attachment).
[x]: 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.
[x]: The License field must be a valid SPDX expression.
[x]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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]: 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 must not depend on deprecated() packages.
[x]: Package use %makeinstall only when make install DESTDIR=... doesn't
     work.
[x]: Package is named using only allowed ASCII characters.
[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]: Large documentation must go in a -doc subpackage. Large could be size
     (~1MB) or number of files.
     Note: Documentation size is 524 bytes in 2 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

Perl:
[x]: Package contains the mandatory BuildRequires and Requires:.
[x]: CPAN urls should be non-versioned.

===== 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.
[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]: 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.
[x]: Spec use %global instead of %define unless justified.

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

Generic:
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).


Rpmlint
-------
Checking: perl-File-ShouldUpdate-0.2.1-1.fc43.noarch.rpm
          perl-File-ShouldUpdate-0.2.1-1.fc43.src.rpm
============================ rpmlint session starts ============================
rpmlint: 2.7.0
configuration:
    /usr/lib/python3.13/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-legacy-licenses.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
rpmlintrc: [PosixPath('/tmp/tmpo1m0xcw8')]
checks: 32, packages: 2

perl-File-ShouldUpdate.noarch: E: spelling-error ('mtime', '%description -l en_US mtime -> mime, time, Mortimer')
perl-File-ShouldUpdate.noarch: E: spelling-error ('makefile', '%description -l en_US makefile -> make file, make-file, wakeful')
perl-File-ShouldUpdate.src: E: spelling-error ('mtime', '%description -l en_US mtime -> mime, time, Mortimer')
perl-File-ShouldUpdate.src: E: spelling-error ('makefile', '%description -l en_US makefile -> make file, make-file, wakeful')
 2 packages and 0 specfiles checked; 4 errors, 0 warnings, 7 filtered, 4 badness; has taken 0.1 s 




Rpmlint (installed packages)
----------------------------
============================ rpmlint session starts ============================
rpmlint: 2.7.0
configuration:
    /usr/lib/python3.14/site-packages/rpmlint/configdefaults.toml
    /etc/xdg/rpmlint/fedora-spdx-licenses.toml
    /etc/xdg/rpmlint/fedora.toml
    /etc/xdg/rpmlint/scoring.toml
    /etc/xdg/rpmlint/users-groups.toml
    /etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 1

perl-File-ShouldUpdate.noarch: E: spelling-error ('mtime', '%description -l en_US mtime -> mime, time, m time')
perl-File-ShouldUpdate.noarch: E: spelling-error ('makefile', '%description -l en_US makefile -> make file, make-file, filmmaker')
 1 packages and 0 specfiles checked; 2 errors, 0 warnings, 3 filtered, 2 badness; has taken 0.0 s 



Source checksums
----------------
https://cpan.metacpan.org/modules/by-module/File/File-ShouldUpdate-0.2.1.tar.gz :
  CHECKSUM(SHA256) this package     : af593598d06f1c21badd3ae741bf0b4506ce265ec89950c60a3f3e7106deb3e2
  CHECKSUM(SHA256) upstream package : af593598d06f1c21badd3ae741bf0b4506ce265ec89950c60a3f3e7106deb3e2


Requires
--------
perl-File-ShouldUpdate (rpmlib, GLIBC filtered):
    perl(Exporter)
    perl(Time::HiRes)
    perl(parent)
    perl(strict)
    perl(vars)
    perl(warnings)
    perl-libs



Provides
--------
perl-File-ShouldUpdate:
    perl(File::ShouldUpdate)
    perl-File-ShouldUpdate



Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24
Command line :/usr/bin/fedora-review -r -n ./perl-File-ShouldUpdate-0.2.1-1.fc42.src.rpm
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, Perl
Disabled plugins: SugarActivity, Haskell, C/C++, Python, R, Ocaml, fonts, PHP, Java
Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH

Comment 7 Xavier Bachelot 2025-07-25 09:07:21 UTC
Package is APPROVED.

Comment 8 Fedora Admin user for bugzilla script actions 2025-07-29 04:52:26 UTC
The Pagure repository was created at https://src.fedoraproject.org/rpms/perl-File-ShouldUpdate

Comment 9 Shlomi Fish 2025-07-29 04:55:16 UTC
Xavier: thanks for the thorough information, and the APPROVED.

Comment 10 Shlomi Fish 2025-07-30 12:13:46 UTC
The package is still not available in the rawhide repositories to provide docmake's “Requires:       perl(File::ShouldUpdate) >= 0.2.0” (and “BuildRequires") despite being available and built.

I think I covered https://docs.fedoraproject.org/en-US/package-maintainers/New_Package_Process_for_Existing_Contributors/ fully.

```
shlomif[rpms]:$fed_base/packages/perl-File-ShouldUpdate$ fedpkg --release rawhide build    
Could not execute build: Package perl-File-ShouldUpdate-0.2.1-1.fc43 has already been built
Note: You can skip this check with --skip-nvr-check. See help for more info.
```

I can close this ticket again.

Comment 11 Shlomi Fish 2025-08-01 11:43:40 UTC
The rawhide package is now on https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything/x86_64/os/Packages/p/ . I can build the docmake SRPM in rawhide-x86-64 now. RESOLVEDing this bug.


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