Bug 2163447 - Review Request: mustach - Tiny Mustach processor
Summary: Review Request: mustach - Tiny Mustach processor
Keywords:
Status: ASSIGNED
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Ben Beasley
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: FE-NEEDSPONSOR
TreeView+ depends on / blocked
 
Reported: 2023-01-23 14:17 UTC by hardt
Modified: 2023-06-29 16:07 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: ---
Embargoed:
code: fedora-review+


Attachments (Terms of Use)

Description hardt 2023-01-23 14:17:17 UTC
Spec URL: https://gitlab.com/Yestheone/mustach/-/raw/rpm-packaging/packaging/rpm/mustach.spec
SRPM URL: http://repo.data.kit.edu/files/mustach-1.2.4-1.fc37.src.rpm
Description: Tiny tool for processing JSON files with Mustache templates.
Fedora Account System Username: marcvs

Comment 1 Ben Beasley 2023-01-23 14:31:54 UTC
Title corrected.

Comment 2 hardt 2023-01-23 14:39:51 UTC
I tried building it in koji, but that failed. The copr builds (where dependencies are available) worked: https://copr.fedorainfracloud.org/coprs/marcvs/mustach/build/5211198/

Comment 3 Ben Beasley 2023-02-16 14:30:42 UTC
Package Review
==============

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


Issues:
=======
- Package installs properly.
  Note: Installation errors (see attachment)
  See: https://docs.fedoraproject.org/en-US/packaging-guidelines/

  One of the unnecessary manual Requires is unsatisfied. See the next point
  below to fix this.

- There are automatic requirements generators for C/C++ dynamic linking. Remove
  all of the unnecessary manual Requires. See:
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_explicit_requires

    %package lib-json-c
    […]
    Requires:       pkgconfig(json-c)

    %package lib-cjson
    […]
    Requires:       pkgconfig(cjson)

    %package lib-jansson
    […]
    Requires:       pkgconfig(jansson)

- The appropriate pkgconfig(…) Provides are automatically genereated when you
  install .pc files. Remove all of the manual pkgconfig(…) Provides:

    %package lib-json-c
    […]
    Provides:       pkgconfig(libmustach-json-c)

    %package lib-json-c-devel
    […]
    Provides:       pkgconfig(libmustach-json-c)

    %package lib-cjson
    […]
    Provides:       pkgconfig(libmustach-cjson)

    %package lib-cjson-devel
    […]
    Provides:       pkgconfig(libmustach-cjson)

    %package lib-jansson
    […]
    Provides:       pkgconfig(libmustach-jansson)

    %package lib-jansson-devel
    […]
    Provides:       pkgconfig(libmustach-jansson)

- ldconfig not called in %post and %postun for Fedora 28 and later.
  Note: /sbin/ldconfig called in mustach-lib-core, mustach-lib-json-c,
  mustach-lib-cjson, mustach-lib-jansson
  See: https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets

  See also:
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_shared_libraries

  Remove all of the %post and %postun scriptlets. These would only be needed in
  EPEL7, and the correct form there would be e.g. “%ldconfig_scriptlets lib-core”

- Dist tag is present.

  OK: fedora-review still does not understand rpmautospec.

- It’s correct to have a manual dependency from the -devel subpackages on the
  -lib subpackages, but it must be fully versioned and archful:

  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_requiring_base_package

  Change:

    %package lib-json-c-devel
    […]
    Requires:       %{name}-lib-json-c = %{version}

  to

    %package lib-json-c-devel
    […]
    Requires:       %{name}-lib-json-c%{?_isa} = %{version}-%{release}

  Some people would even recommend this, in case you add an Epoch in the
  future:

    %package lib-json-c-devel
    […]
    Requires:       %{name}-lib-json-c%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}

- We should simplify this a bit, using the standard macros
  (https://docs.fedoraproject.org/en-US/packaging-guidelines/#_parallel_make)
  and respecting the distro-wide compiler flags
  (https://docs.fedoraproject.org/en-US/packaging-guidelines/#_compiler_flags):

    %global mustach_conf tool=jsonc libs=split jsonc=yes cjson=yes jansson=yes
    
    %global mustach_env  PREFIX=%{_prefix} DESTDIR=%{buildroot} BINDIR=%{_bindir} LIBDIR=%{_libdir} INCLUDEDIR=%{_includedir} MANDIR=%{_mandir} PKGDIR=%{pkgdir}
    
    %global mustach_flags CFLAGS="-O2 -g"
    
    %global mustach_make  %{mustach_flags} %__make %{?_smp_mflags} %mustach_conf %mustach_env

    […]

    %build
    %mustach_make

    %install
    %mustach_make install

  Try this instead:

    %global mustach_conf tool=jsonc libs=split jsonc=yes cjson=yes jansson=yes

    […]

    %build
    %set_build_flags
    %make_build %{mustach_conf}

    %install
    %make_install %{mustach_conf} \
        PREFIX=%{_prefix} \
        BINDIR=%{_bindir} \
        LIBDIR=%{_libdir} \
        INCLUDEDIR=%{_includedir} \
        MANDIR=%{_mandir} \
        PKGDIR=%{pkgdir}

- This is unnecessary, and should be removed everywhere it appears:

    %defattr(-,root,root)

  See:
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_permissions

- If you are using %{autorelease}, it’s best to use %{autochangelog} too. See:
  https://docs.pagure.org/Fedora-Infra.rpmautospec/opting-in.html#opting-into-using-rpmautospec

  Do this instead of writing a manual changelog:

    %changelog
    %autochangelog

- To reduce unnecessary macro indirection, consider simplifying this:

    %global site    https://gitlab.com/jobol/mustach
    […]
    Url:            %{site}
    
    Source:         %{site}/-/archive/%{version}/%{name}-%{version}.tar.bz2

  to this:

    Url:            https://gitlab.com/jobol/mustach
    Source:         %{url}/-/archive/%{version}/%{name}-%{version}.tar.bz2

- This is a comment, so it has no effect, but since it’s an exotic tag that
  isn’t used in Fedora, I suggest just removing the comment to make it less
  confusing:

    #Hexsha: None

- There is no C++ code in mustach. Replace this:

    BuildRequires:  gcc-c++

  with this:

    BuildRequires:  gcc

- You must not assume the compression format for man pages. See:
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_manpages

  Change this:

    %{_mandir}/man1/mustach.1.gz

  To this:

    %{_mandir}/man1/mustach.1*

- You should not glob over the shared library / SONAME version when listing
  shared libraries. See:
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_listing_shared_library_files

  If you define:

    %global so_version 1

  (perhaps near the top of the spec file) then you can change

    %files lib-core
    %{_libdir}/libmustach-core.so.*

  to

    %files lib-core
    %{_libdir}/libmustach-core.so.%{so_version}{,.*}

  and so on for the other three -lib subpackages.

- Nothing owns %{_includedir}/mustach. See:
  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_file_and_directory_ownership

  In %files lib-core-devel, add:

    %dir %{_includedir}/mustach

- The three other -lib-*-devel subpackages all should depend on lib-core-devel
  (because the headers include mustach-wrap.h) and on the devel packages for
  their respective json libraries (because the headers include the json library
  headers).

  For lib-json-c, add:

    Requires:       %{name}-lib-core-devel%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
    Requires:       pkgconfig(json-c)

  or

    Requires:       %{name}-lib-core-devel%{?_isa} = %{version}-%{release}
    Requires:       pkgconfig(json-c)

  and so on for the other two subpackages.

- The -n option is unnecessary here:

    %setup -q -n %{name}-%{version}

  You can write:

    %setup -q

  or:

    %autosetup

- The descriptions for lib-cjson, lib-cjson-devel, lib-jansson, and
  lib-jansson-devel subpackages are copy-pasted from lib-json-c and
  lib-json-c-devel subpackages without replacing “json-c”; please fix them.

- You must include the license text file, properly packaged. See:
  https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_text

  Add

    %license LICENSE.txt

  to all of the following:

    %files
    %files lib-core
    %files lib-json-c
    %files lib-cjson
    %files lib-jansson

  You can omit it from:

    %files lib-core-devel
    %files lib-json-c-devel
    %files lib-cjson-devel
    %files lib-jansson-devel

  because each of these depends on at least one library package that includes
  the license file.

- You should package these somewhere:

    %doc AUTHORS
    %doc CHANGELOG.md
    %doc README.md

  Maybe the lib-core-devel subpackage would be a good place for them.

- You can and should build and run the basic tests.

    %check
    %make_build basic-tests %{mustach_conf}

  If you would like to run the spec tests too, you will need to change:

    Source:         %{url}/-/archive/%{version}/%{name}-%{version}.tar.bz2

  to

    Source0:        %{url}/-/archive/%{version}/%{name}-%{version}.tar.bz2
    # The Makefile does not clone a particular commit or tag for testing, so this
    # should be the latest commit:
    %global spec_commit 5d3b58ea35ae309c40d7a8111bfedc4c5bcd43a6
    Source1:        https://github.com/mustache/spec/archive/%{spec_commit}/spec-%{spec_commit}.tar.gz

  and then you will need something like

    %prep
    %autosetup
    # Put the mustache specs in the right place for the spec-tests, and patch the
    # Makefile to do nothing instead of trying to git-clone them.
    %setup -q -T -D -b 1 -n %{name}-%{version}
    mv ../spec-%{spec_commit} test-specs/spec
    sed -r -i 's/\bgit\b/:/' Makefile

  and then you can do

    %check
    %make_build test %{mustach_conf}

  …which is great. There’s no reason not to run as many tests as you can, in my
  opinion.

- The Makefile installs files without preserving their timestamps. See:

  https://docs.fedoraproject.org/en-US/packaging-guidelines/#_timestamps

  This could be fixed with a sed-patch in %prep, like:

    sed -r -i 's/\tinstall /&-p /' Makefile

  However, I’ve offered a PR upstream to make this easier:

    # Allow overriding the “install” command in Makefile
    # https://gitlab.com/jobol/mustach/-/merge_requests/29
    Patch:          https://gitlab.com/jobol/mustach/-/merge_requests/29.patch

  After adding the above patch and ensuring we have

    %autosetup -p1

  we can just do

    %make_install %{mustach_conf} \
        INSTALL='install -p' \
        PREFIX=%{_prefix} \
        BINDIR=%{_bindir} \
        LIBDIR=%{_libdir} \
        INCLUDEDIR=%{_includedir} \
        MANDIR=%{_mandir} \
        PKGDIR=%{pkgdir}

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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

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.
[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", "ISC License", "*No copyright* ISC
     License", "*No copyright* Apache License 2.0". 45 files have unknown
     license. Detailed output of licensecheck in
     /home/reviewer/2163447-mustach/licensecheck.txt

     While test6/test-custom-write.c is Apache-2.0, it does not contribute to
     the binary RPMs.

[!]: License file installed when any subpackage combination is installed.
[!]: Package requires other packages for directories it uses.
     Note: No known owner of /usr/include/mustach
[!]: Package must own all directories that it creates.
     Note: Directories without known owners: /usr/include/mustach
[!]: %build honors applicable compiler flags or justifies otherwise.
[x]: Package contains no bundled libraries without FPC exception.
[x]: Changelog in prescribed format.

     (but %autochangelog should normally be used with %autrelease)

[x]: Sources contain only permissible code or content.
[!]: Each %files section contains %defattr if rpm < 4.4
     Note: %defattr present but not needed
[-]: Package contains desktop file if it is a GUI application.
[x]: 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.
[!]: Requires correct, justified where necessary.

     Unnecessary and not-always-correct manual Requires are present.

[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[x]: Package is not known to require an ExcludeArch tag.
[!]: Package complies to the Packaging Guidelines

     See Issues section.

[x]: Package successfully compiles and builds into binary rpms on at least
     one supported primary architecture.
[x]: Rpmlint is run on all rpms the build produces.
     Note: There are rpmlint messages (see attachment).
[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]: Macros in Summary, %description expandable at SRPM build time.
[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 0 bytes in 0 files.
[x]: Packages must not store files under /srv, /opt or /usr/local

===== 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.
[!]: Final provides and requires are sane (see attachments).

     There are some issues, noted in Issues.

[!]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in mustach-
     lib-core , mustach-lib-core-devel , mustach-lib-json-c , mustach-lib-
     json-c-devel , mustach-lib-cjson , mustach-lib-cjson-devel , mustach-
     lib-jansson , mustach-lib-jansson-devel
[?]: Package functions as described.
[x]: Latest version is packaged.
[x]: Package does not include license text files separate from upstream.
[x]: Scriptlets must be sane, if used.

     Scriptlets are sane but obsolete.

[-]: 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.
[!]: %check is present and all tests pass.
[!]: 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]: The placement of pkgconfig(.pc) files are correct.
[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:
[!]: Rpmlint is run on all installed packages.
     Note: Mock build failed
     See: https://docs.fedoraproject.org/en-US/packaging-
     guidelines/#_use_rpmlint
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Installation errors
-------------------
INFO: mock.py version 3.5 starting (python version = 3.11.1, NVR = mock-3.5-1.fc37)...
Start(bootstrap): init plugins
INFO: selinux enabled
Finish(bootstrap): init plugins
Start: init plugins
INFO: selinux enabled
Finish: init plugins
INFO: Signal handler active
Start: run
Start(bootstrap): chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start(bootstrap): cleaning package manager metadata
Finish(bootstrap): cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.5
INFO: Mock Version: 3.5
Finish(bootstrap): chroot init
Start: chroot init
INFO: calling preinit hooks
INFO: enabled root cache
INFO: enabled package manager cache
Start: cleaning package manager metadata
Finish: cleaning package manager metadata
INFO: enabled HW Info plugin
Mock Version: 3.5
INFO: Mock Version: 3.5
Finish: chroot init
INFO: installing package(s): /builddir/mustach-lib-json-c-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-json-c-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-json-c-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-debugsource-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-devel-1.2.4-1.fc38.x86_64.rpm
ERROR: Command failed: 
 # /usr/bin/systemd-nspawn -q -M d3cf83e0343d431a8b20c0a7306a9ecd -D /var/lib/mock/fedora-rawhide-x86_64-bootstrap/root -a --capability=cap_ipc_lock --bind=/tmp/mock-resolv.a2gn4isy:/etc/resolv.conf --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/var/lib/mock/fedora-rawhide-x86_64/root/installation-homedir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin --setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007" --setenv=PS1=<mock-chroot> \s-\v\$  --setenv=LANG=C.UTF-8 --setenv=LC_MESSAGES=C.UTF-8 --resolv-conf=off /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 38 --setopt=deltarpm=False --allowerasing --disableplugin=local --disableplugin=spacewalk --disableplugin=versionlock install /builddir/mustach-lib-json-c-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-json-c-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-json-c-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-debugsource-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-devel-1.2.4-1.fc38.x86_64.rpm --setopt=tsflags=nocontexts



Rpmlint
-------
Checking: mustach-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-core-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-core-devel-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-json-c-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-json-c-devel-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-cjson-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-cjson-devel-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-jansson-1.2.4-1.fc38.x86_64.rpm
          mustach-lib-jansson-devel-1.2.4-1.fc38.x86_64.rpm
          mustach-debuginfo-1.2.4-1.fc38.x86_64.rpm
          mustach-debugsource-1.2.4-1.fc38.x86_64.rpm
          mustach-1.2.4-1.fc38.src.rpm
=============================================== rpmlint session starts ===============================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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/tmp24rkgrly')]
checks: 31, packages: 12

mustach-lib-cjson.x86_64: W: summary-not-capitalized cjson library of mustach
mustach-lib-cjson-devel.x86_64: W: summary-not-capitalized cjson library of mustach - Development files
mustach-lib-jansson.x86_64: W: summary-not-capitalized jansson library of mustach
mustach-lib-jansson-devel.x86_64: W: summary-not-capitalized jansson library of mustach - Development files
mustach-lib-json-c.x86_64: W: summary-not-capitalized json-c library of mustach
mustach-lib-json-c-devel.x86_64: W: summary-not-capitalized json-c library of mustach - Development files
mustach-lib-cjson.x86_64: W: one-line-command-in-%postun /sbin/ldconfig
mustach-lib-core.x86_64: W: one-line-command-in-%postun /sbin/ldconfig
mustach-lib-jansson.x86_64: W: one-line-command-in-%postun /sbin/ldconfig
mustach-lib-json-c.x86_64: W: one-line-command-in-%postun /sbin/ldconfig
mustach-lib-cjson.x86_64: W: one-line-command-in-%post /sbin/ldconfig
mustach-lib-core.x86_64: W: one-line-command-in-%post /sbin/ldconfig
mustach-lib-jansson.x86_64: W: one-line-command-in-%post /sbin/ldconfig
mustach-lib-json-c.x86_64: W: one-line-command-in-%post /sbin/ldconfig
mustach-lib-cjson.x86_64: W: no-documentation
mustach-lib-cjson-devel.x86_64: W: no-documentation
mustach-lib-core.x86_64: W: no-documentation
mustach-lib-core-devel.x86_64: W: no-documentation
mustach-lib-jansson.x86_64: W: no-documentation
mustach-lib-jansson-devel.x86_64: W: no-documentation
mustach-lib-json-c.x86_64: W: no-documentation
mustach-lib-json-c-devel.x86_64: W: no-documentation
mustach.src: W: name-repeated-in-summary Mustach
mustach.x86_64: W: name-repeated-in-summary Mustach
mustach.spec:8: W: mixed-use-of-spaces-and-tabs (spaces: line 4, tab: line 8)
mustach.x86_64: W: incoherent-version-in-changelog 1.2.4 ['1.2.4-1.fc38', '1.2.4-1']
mustach-lib-core-devel.x86_64: W: description-shorter-than-summary
=============== 12 packages and 0 specfiles checked; 0 errors, 27 warnings, 0 badness; has taken 0.4 s ===============




Source checksums
----------------
https://gitlab.com/jobol/mustach/-/archive/1.2.4/mustach-1.2.4.tar.bz2 :
  CHECKSUM(SHA256) this package     : 122c62ff39796d31fae2f735e006d91b3e5ab54552611f33f4f27d243b130518
  CHECKSUM(SHA256) upstream package : 122c62ff39796d31fae2f735e006d91b3e5ab54552611f33f4f27d243b130518


Requires
--------
mustach (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    rtld(GNU_HASH)

mustach-lib-core (rpmlib, GLIBC filtered):
    /bin/sh
    libc.so.6()(64bit)
    rtld(GNU_HASH)

mustach-lib-core-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-core.so.1()(64bit)
    mustach-lib-core

mustach-lib-json-c (rpmlib, GLIBC filtered):
    /bin/sh
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    pkgconfig(json-c)
    rtld(GNU_HASH)

mustach-lib-json-c-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-json-c.so.1()(64bit)
    mustach-lib-json-c

mustach-lib-cjson (rpmlib, GLIBC filtered):
    /bin/sh
    libc.so.6()(64bit)
    libcjson.so.1()(64bit)
    pkgconfig(cjson)
    rtld(GNU_HASH)

mustach-lib-cjson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson

mustach-lib-jansson (rpmlib, GLIBC filtered):
    /bin/sh
    libc.so.6()(64bit)
    libjansson.so.4()(64bit)
    pkgconfig(jansson)
    rtld(GNU_HASH)

mustach-lib-jansson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-jansson.so.1()(64bit)
    mustach-lib-jansson

mustach-debuginfo (rpmlib, GLIBC filtered):

mustach-debugsource (rpmlib, GLIBC filtered):



Provides
--------
mustach:
    mustach
    mustach(x86-64)

mustach-lib-core:
    libmustach-core.so.1()(64bit)
    mustach-lib-core
    mustach-lib-core(x86-64)

mustach-lib-core-devel:
    mustach-lib-core-devel
    mustach-lib-core-devel(x86-64)
    pkgconfig(libmustach-core)

mustach-lib-json-c:
    libmustach-json-c.so.1()(64bit)
    mustach-lib-json-c
    mustach-lib-json-c(x86-64)
    pkgconfig(libmustach-json-c)

mustach-lib-json-c-devel:
    mustach-lib-json-c-devel
    mustach-lib-json-c-devel(x86-64)
    pkgconfig(libmustach-json-c)

mustach-lib-cjson:
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson
    mustach-lib-cjson(x86-64)
    pkgconfig(libmustach-cjson)

mustach-lib-cjson-devel:
    mustach-lib-cjson-devel
    mustach-lib-cjson-devel(x86-64)
    pkgconfig(libmustach-cjson)

mustach-lib-jansson:
    libmustach-jansson.so.1()(64bit)
    mustach-lib-jansson
    mustach-lib-jansson(x86-64)
    pkgconfig(libmustach-jansson)

mustach-lib-jansson-devel:
    mustach-lib-jansson-devel
    mustach-lib-jansson-devel(x86-64)
    pkgconfig(libmustach-jansson)

mustach-debuginfo:
    debuginfo(build-id)
    mustach-debuginfo
    mustach-debuginfo(x86-64)

mustach-debugsource:
    mustach-debugsource
    mustach-debugsource(x86-64)



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -b 2163447
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, C/C++, Shell-api
Disabled plugins: PHP, fonts, Ocaml, R, Java, SugarActivity, Perl, Haskell, Python
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 4 Ben Beasley 2023-02-16 14:33:56 UTC
A couple of corrections/additions.

[!]: Changelog in prescribed format.

     Missing release numbers.

     mustach.x86_64: W: incoherent-version-in-changelog 1.2.4 ['1.2.4-1.fc38', '1.2.4-1']

     Using %autochangelog will fix this.

- mustach.spec:8: W: mixed-use-of-spaces-and-tabs (spaces: line 4, tab: line 8)

  You can do:

  vim mustach.spec
  :set et
  :retab
  :wq

  to convert any tabs to spaces.

Comment 5 hardt 2023-03-10 14:42:21 UTC
Many many thanks for this extensive review!
I will apply these points to my two other packages, once I get to them, and resubmit them.

I have followed all your recommendations, except:


[...]
>  Some people would even recommend this, in case you add an Epoch in the
>  future:
I didn't use the epoch version

[...]
> - If you are using %{autorelease}, it’s best to use %{autochangelog} too. See:
>   https://docs.pagure.org/Fedora-Infra.rpmautospec/opting-in.html#opting-into-using-rpmautospec
> 
>   Do this instead of writing a manual changelog:
> 
>     %changelog
>     %autochangelog
I'm a bit reluctant to push the full git history into the changelog. Here,
I've git committed for each change you suggested. That seems quite
exhaustive to me.

[...]
> - The Makefile installs files without preserving their timestamps. See:
>   However, I’ve offered a PR upstream to make this easier:
I'm now packaging v1.2.5 which includes your PR


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

Generic:
> [!]: 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.
Fixed.
 
> [!]: License file installed when any subpackage combination is installed.
Fixed.
 
> [!]: Package requires other packages for directories it uses.
>      Note: No known owner of /usr/include/mustach
Fixed.
 
> [!]: Package must own all directories that it creates.
>      Note: Directories without known owners: /usr/include/mustach
Fixed.
 
> [!]: %build honors applicable compiler flags or justifies otherwise.
Fixed.
 
> [!]: Each %files section contains %defattr if rpm < 4.4
>      Note: %defattr present but not needed
Fixed.
 
> [!]: Requires correct, justified where necessary.
>      Unnecessary and not-always-correct manual Requires are present.
Fixed.
 
> [!]: Package complies to the Packaging Guidelines
>      See Issues section.
Fixed.
 
> ===== SHOULD items =====
> 
> Generic:
> [!]: Final provides and requires are sane (see attachments).
>      There are some issues, noted in Issues.
I hope for the best
> 
> [!]: Fully versioned dependency in subpackages if applicable.
>      Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in mustach-
>      lib-core , mustach-lib-core-devel , mustach-lib-json-c , mustach-lib-
>      json-c-devel , mustach-lib-cjson , mustach-lib-cjson-devel , mustach-
>      lib-jansson , mustach-lib-jansson-devel
Fixed.

> [?]: Package functions as described.
The tests are included and run during packaging.

> [!]: %check is present and all tests pass.
Yup

> [!]: Packages should try to preserve timestamps of original installed
>      files.
Fixed by upstream PR #29

> ===== EXTRA items =====
> 
> Generic:
> [!]: Rpmlint is run on all installed packages.
>      Note: Mock build failed
>      See: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_use_rpmlint
Except:
- W: no-documentation, since this is only warned for sub-packages
- W: name-repeated-in-summary, since I think this is a bug in Rpmlint:
  the name is "mustach" the repeated name refers to the software
  "mustache" (i.e. with an additional 'e').

> Installation errors
> -------------------
[...]
> ERROR: Command failed: 
>  # /usr/bin/systemd-nspawn -q -M d3cf83e0343d431a8b20c0a7306a9ecd -D /var/lib/mock/fedora-rawhide-x86_64-bootstrap/root -a --capability=cap_ipc_lock --bind=/tmp/mock-resolv.a2gn4isy:/etc/resolv.conf --console=pipe --setenv=TERM=vt100 --setenv=SHELL=/bin/bash --setenv=HOME=/var/lib/mock/fedora-rawhide-x86_64/root/installation-homedir --setenv=HOSTNAME=mock --setenv=PATH=/usr/bin:/bin:/usr/sbin:/sbin --setenv=PROMPT_COMMAND=printf "\033]0;<mock-chroot>\007" --setenv=PS1=<mock-chroot> \s-\v\$  --setenv=LANG=C.UTF-8 --setenv=LC_MESSAGES=C.UTF-8 --resolv-conf=off /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 38 --setopt=deltarpm=False --allowerasing --disableplugin=local --disableplugin=spacewalk --disableplugin=versionlock install /builddir/mustach-lib-json-c-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-json-c-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-core-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-json-c-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-cjson-devel-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-debugsource-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-debuginfo-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-1.2.4-1.fc38.x86_64.rpm /builddir/mustach-lib-jansson-devel-1.2.4-1.fc38.x86_64.rpm --setopt=tsflags=nocontexts
I have no idea if / how to address this.

Comment 6 Ben Beasley 2023-03-10 15:34:09 UTC
Thanks! I’ll revisit this ASAP.

Comment 7 Ben Beasley 2023-03-12 15:15:30 UTC
For some reason, “fedora-review -b 2163447” now fails with “ERROR: 'No srpm found for mustach'”. I’m trying to figure out what is going wrong.

Comment 8 Ben Beasley 2023-03-12 15:27:58 UTC
The problem was that the linked spec file was updated, but without an updated SRPM.

I created a new SRPM using the spec file and the sources from its URLs:

Updated SRPM URL: https://music.fedorapeople.org/mustach-1.2.5-1.fc37.src.rpm

Comment 9 Ben Beasley 2023-03-12 15:55:01 UTC
Almost there!

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

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


Issues:
=======
- Dist tag is present.

  OK: fedora-review does not understand rpmautospec

- Package does not contain duplicates in %files.
  Note: warning: File listed twice: /usr/include/mustach
  See: https://docs.fedoraproject.org/en-US/packaging-
  guidelines/#_duplicate_files

  I think you want to remove this line:

    %{_includedir}/mustach

  …which means the directory /usr/bin/mustach plus all of its contents. In the
  following lines, you have correctly listed just the directory

    %dir %{_includedir}/mustach

  and listed individual headers in the various devel packages.

  The extra line also means that %{_includedir}/mustach/mustach-cjson.h and
  %{_includedir}/mustach/mustach-jansson.h are (co-)owned by
  mustach-lib-core-devel rather than only by the backend-specific -devel
  packages, which is unintended.

- The dependency on mustach-lib-core from mustach-lib-core-devel should be
  fully versioned and arched. Change:

    Requires:       %{name}-lib-core = %{version}

  to:

    Requires:       %{name}-lib-core%{?_isa} = %{version}-%{release}

  See:

    https://docs.fedoraproject.org/en-US/packaging-guidelines/#_requiring_base_package

  The other inter-subpackage dependencies are already correct.

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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: ldconfig not called in %post and %postun for Fedora 28 and later.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

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", "ISC License", "*No copyright* ISC
     License", "*No copyright* Apache License 2.0", "MIT License". 67 files
     have unknown license. Detailed output of licensecheck in
     /home/reviewer/mustach/review-mustach/licensecheck.txt

     While test6/test-custom-write.c is Apache-2.0, and the Mustache specs in
     Source1 are MIT, neither contributes to the binary RPMs.

[x]: License file installed when any subpackage combination is installed.
[x]: %build honors applicable compiler flags or justifies otherwise.
[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.
[x]: 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.
[ ]: Spec file is legible and written in American English.
[ ]: Package contains systemd file(s) if in need.
[ ]: Useful -debuginfo package or justification otherwise.
[ ]: 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 20480 bytes in 3 files.
[ ]: 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]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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]: Macros in Summary, %description expandable at SRPM build time.
[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]: Packages must not store files under /srv, /opt or /usr/local

===== 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).
[!]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in mustach-
     lib-core , mustach-lib-core-devel , mustach-lib-json-c , mustach-lib-
     json-c-devel , mustach-lib-cjson , mustach-lib-cjson-devel , mustach-
     lib-jansson , mustach-lib-jansson-devel

     See Issues.

[x]: Package functions as described.

     (tests pass)

[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]: The placement of pkgconfig(.pc) files are correct.
[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 debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: mustach-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-debugsource-1.2.5-1.fc39.x86_64.rpm
          mustach-1.2.5-1.fc39.src.rpm
=============================================== rpmlint session starts ===============================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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/tmp_t4wond3')]
checks: 31, packages: 12

mustach-lib-cjson.x86_64: W: no-documentation
mustach-lib-cjson-devel.x86_64: W: no-documentation
mustach-lib-core.x86_64: W: no-documentation
mustach-lib-jansson.x86_64: W: no-documentation
mustach-lib-jansson-devel.x86_64: W: no-documentation
mustach-lib-json-c.x86_64: W: no-documentation
mustach-lib-json-c-devel.x86_64: W: no-documentation
mustach.src: W: name-repeated-in-summary Mustach
mustach.x86_64: W: name-repeated-in-summary Mustach
=============== 12 packages and 0 specfiles checked; 0 errors, 9 warnings, 0 badness; has taken 1.1 s ================




Rpmlint (debuginfo)
-------------------
Checking: mustach-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-debuginfo-1.2.5-1.fc39.x86_64.rpm
=============================================== rpmlint session starts ===============================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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/tmpgf5r8zop')]
checks: 31, packages: 5

================ 5 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 badness; has taken 0.6 s ================





Rpmlint (installed packages)
----------------------------
============================ rpmlint session starts ============================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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
checks: 31, packages: 15

mustach-lib-jansson.x86_64: W: no-documentation
mustach-lib-jansson-devel.x86_64: W: no-documentation
mustach-lib-cjson-devel.x86_64: W: no-documentation
mustach-lib-json-c-devel.x86_64: W: no-documentation
mustach-lib-core.x86_64: W: no-documentation
mustach-lib-json-c.x86_64: W: no-documentation
mustach-lib-cjson.x86_64: W: no-documentation
mustach.x86_64: W: name-repeated-in-summary Mustach
 15 packages and 0 specfiles checked; 0 errors, 8 warnings, 0 badness; has taken 1.6 s 



Source checksums
----------------
https://github.com/mustache/spec/archive/refs/tags/v1.3.0.tar.gz :
  CHECKSUM(SHA256) this package     : 060da2de3135f6ec3682289fdc8a5f0abc275dad73a328f051c3d8c4ee4431f5
  CHECKSUM(SHA256) upstream package : 060da2de3135f6ec3682289fdc8a5f0abc275dad73a328f051c3d8c4ee4431f5
https://gitlab.com/jobol/mustach/-/archive/1.2.5/mustach-1.2.5.tar.bz2 :
  CHECKSUM(SHA256) this package     : da3605d4d72688ac6a4f26229561c021571117a02474bee7da3fd3d396c5826c
  CHECKSUM(SHA256) upstream package : da3605d4d72688ac6a4f26229561c021571117a02474bee7da3fd3d396c5826c


Requires
--------
mustach (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    rtld(GNU_HASH)

mustach-lib-core (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    rtld(GNU_HASH)

mustach-lib-core-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-core.so.1()(64bit)
    mustach-lib-core

mustach-lib-json-c (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    rtld(GNU_HASH)

mustach-lib-json-c-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-json-c.so.1()(64bit)
    mustach-lib-core-devel(x86-64)
    mustach-lib-json-c(x86-64)

mustach-lib-cjson (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libcjson.so.1()(64bit)
    rtld(GNU_HASH)

mustach-lib-cjson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson(x86-64)
    mustach-lib-core-devel(x86-64)

mustach-lib-jansson (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjansson.so.4()(64bit)
    rtld(GNU_HASH)

mustach-lib-jansson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-jansson.so.1()(64bit)
    mustach-lib-core-devel(x86-64)
    mustach-lib-jansson(x86-64)

mustach-debuginfo (rpmlib, GLIBC filtered):

mustach-debugsource (rpmlib, GLIBC filtered):



Provides
--------
mustach:
    mustach
    mustach(x86-64)

mustach-lib-core:
    libmustach-core.so.1()(64bit)
    mustach-lib-core
    mustach-lib-core(x86-64)

mustach-lib-core-devel:
    mustach-lib-core-devel
    mustach-lib-core-devel(x86-64)
    pkgconfig(libmustach-core)

mustach-lib-json-c:
    libmustach-json-c.so.1()(64bit)
    mustach-lib-json-c
    mustach-lib-json-c(x86-64)

mustach-lib-json-c-devel:
    mustach-lib-json-c-devel
    mustach-lib-json-c-devel(x86-64)
    pkgconfig(libmustach-json-c)

mustach-lib-cjson:
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson
    mustach-lib-cjson(x86-64)

mustach-lib-cjson-devel:
    mustach-lib-cjson-devel
    mustach-lib-cjson-devel(x86-64)
    pkgconfig(libmustach-cjson)

mustach-lib-jansson:
    libmustach-jansson.so.1()(64bit)
    mustach-lib-jansson
    mustach-lib-jansson(x86-64)

mustach-lib-jansson-devel:
    mustach-lib-jansson-devel
    mustach-lib-jansson-devel(x86-64)
    pkgconfig(libmustach-jansson)

mustach-debuginfo:
    debuginfo(build-id)
    mustach-debuginfo
    mustach-debuginfo(x86-64)

mustach-debugsource:
    mustach-debugsource
    mustach-debugsource(x86-64)



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -n mustach
Buildroot used: fedora-rawhide-x86_64
Active plugins: C/C++, Shell-api, Generic
Disabled plugins: SugarActivity, R, PHP, Java, Python, Perl, Ocaml, Haskell, fonts
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 10 Ben Beasley 2023-03-12 15:55:46 UTC
Sorry, missed a few:

[x]: Spec file is legible and written in American English.
[-]: Package contains systemd file(s) if in need.
[x]: Useful -debuginfo package or justification otherwise.
[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 20480 bytes in 3 files.
[x]: Package complies to the Packaging Guidelines
     (except as noted)

Comment 11 hardt 2023-03-14 12:37:15 UTC
> Issues:
> =======
> - Dist tag is present.
> 
>   OK: fedora-review does not understand rpmautospec
I'm not sure what to do here:
- I don't find any "dist" in the spec file, and according to 
  https://docs.fedoraproject.org/en-US/packaging-guidelines/DistTag/ it is
  not forbidden.

> - Package does not contain duplicates in %files.
>   Note: warning: File listed twice: /usr/include/mustach
>   See: https://docs.fedoraproject.org/en-US/packaging-
>   guidelines/#_duplicate_files
> 
>   I think you want to remove this line:
> 
>     %{_includedir}/mustach
> 
>   …which means the directory /usr/bin/mustach plus all of its contents. In the
>   following lines, you have correctly listed just the directory
> 
>     %dir %{_includedir}/mustach
> 
>   and listed individual headers in the various devel packages.
> 
>   The extra line also means that %{_includedir}/mustach/mustach-cjson.h and
>   %{_includedir}/mustach/mustach-jansson.h are (co-)owned by
>   mustach-lib-core-devel rather than only by the backend-specific -devel
>   packages, which is unintended.
Thanks! Fixed.

> - The dependency on mustach-lib-core from mustach-lib-core-devel should be
>   fully versioned and arched. Change:
Fixed.

[...]

> ===== MUST items =====
[...]
> ===== SHOULD items =====
> 
> Generic:
[...]
> [!]: Fully versioned dependency in subpackages if applicable.
>      Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in mustach-
>      lib-core , mustach-lib-core-devel , mustach-lib-json-c , mustach-lib-
>      json-c-devel , mustach-lib-cjson , mustach-lib-cjson-devel , mustach-
>      lib-jansson , mustach-lib-jansson-devel
should be fixed

[...]

Comment 12 Ben Beasley 2023-03-14 13:53:20 UTC
(In reply to hardt from comment #11)
> > Issues:
> > =======
> > - Dist tag is present.
> > 
> >   OK: fedora-review does not understand rpmautospec
> I'm not sure what to do here:
> - I don't find any "dist" in the spec file, and according to 
>   https://docs.fedoraproject.org/en-US/packaging-guidelines/DistTag/ it is
>   not forbidden.

The fedora-review tool confusingly reports “Dist tag is present” when it thinks the dist tag is *not* present. However, fedora-review still does not understand rpmautospec, which creates the dist tag when it substitutes %autorelease. The spec file is correct and it is fedora-review that is wrong. Thus I reported the fedora-review output but noted that it is “OK”; there is nothing to change here.

Comment 13 Ben Beasley 2023-03-16 12:17:42 UTC
$ diff -Naur mustach.spec 20230314/mustach.spec 
--- mustach.spec        2023-03-12 11:21:09.582015084 -0400
+++ 20230314/mustach.spec       2023-03-14 09:53:59.817462697 -0400
@@ -36,7 +36,7 @@
 %package lib-core-devel
 
 Summary:        Core library of mustach - Development files
-Requires:       %{name}-lib-core = %{version}
+Requires:       %{name}-lib-core%{?_isa} = %{version}
 
 %description lib-core-devel
 Core development files for mustach core library
@@ -143,7 +143,6 @@
 %files lib-core-devel
 %{_libdir}/libmustach-core.so
 %{pkgdir}/libmustach-core.pc
-%{_includedir}/mustach
 %{_includedir}/mustach/mustach.h
 %{_includedir}/mustach/mustach-wrap.h
 %dir %{_includedir}/mustach

-----

This looks reasonable. It’s still unnecessarily difficult to review the package when you don’t post an updated source RPM. I used the updated spec file to make my own source RPM, and I’ll finish re-reviewing shortly.

Comment 14 Ben Beasley 2023-03-16 13:00:47 UTC
That one inter-subpackage dependency still needs -%{release}. Otherwise this looks great.

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

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


Issues:
=======
- Dist tag is present.

  This is not an error; it is a deficiency in fedora-review, which cannot
  detect the dist tag when %autorelease is used.

- This still needs -%{release}:

    %package lib-core-devel
    
    Summary:        Core library of mustach - Development files
    Requires:       %{name}-lib-core%{?_isa} = %{version}

  Replace the last line with:
    
    Summary:        Core library of mustach - Development files
    Requires:       %{name}-lib-core%{?_isa} = %{version}-%{release}

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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: ldconfig not called in %post and %postun for Fedora 28 and later.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

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", "ISC License", "*No copyright* ISC
     License", "*No copyright* Apache License 2.0", "MIT License". 67 files
     have unknown license. Detailed output of licensecheck in
     /home/reviewer/2163447-mustach/x/review-mustach/licensecheck.txt

     While test6/test-custom-write.c is Apache-2.0, it does not contribute to
     the binary RPMs.

     The Mustache test specs in Source1, which are MIT, do not contribute to
     the binary RPMs.

[x]: License file installed when any subpackage combination is installed.
[x]: %build honors applicable compiler flags or justifies otherwise.
[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.
[x]: 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]: Useful -debuginfo package or justification otherwise.
[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 20480 bytes in 3 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: 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]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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]: Macros in Summary, %description expandable at SRPM build time.
[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]: Packages must not store files under /srv, /opt or /usr/local

===== 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).
[!]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in mustach-
     lib-core , mustach-lib-core-devel , mustach-lib-json-c , mustach-lib-
     json-c-devel , mustach-lib-cjson , mustach-lib-cjson-devel , mustach-
     lib-jansson , mustach-lib-jansson-devel
[x]: 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]: The placement of pkgconfig(.pc) files are correct.
[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 debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: mustach-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-debugsource-1.2.5-1.fc39.x86_64.rpm
          mustach-1.2.5-1.fc39.src.rpm
=============================================== rpmlint session starts ===============================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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/tmpfl__gi7_')]
checks: 31, packages: 12

mustach-lib-cjson.x86_64: W: no-documentation
mustach-lib-cjson-devel.x86_64: W: no-documentation
mustach-lib-core.x86_64: W: no-documentation
mustach-lib-jansson.x86_64: W: no-documentation
mustach-lib-jansson-devel.x86_64: W: no-documentation
mustach-lib-json-c.x86_64: W: no-documentation
mustach-lib-json-c-devel.x86_64: W: no-documentation
mustach.src: W: name-repeated-in-summary Mustach
mustach.x86_64: W: name-repeated-in-summary Mustach
=============== 12 packages and 0 specfiles checked; 0 errors, 9 warnings, 0 badness; has taken 1.1 s ================




Rpmlint (debuginfo)
-------------------
Checking: mustach-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-debuginfo-1.2.5-1.fc39.x86_64.rpm
=============================================== rpmlint session starts ===============================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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/tmpito1jvv6')]
checks: 31, packages: 5

================ 5 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 badness; has taken 0.6 s ================





Rpmlint (installed packages)
----------------------------
============================ rpmlint session starts ============================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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
checks: 31, packages: 15

mustach-lib-cjson.x86_64: W: no-documentation
mustach-lib-jansson.x86_64: W: no-documentation
mustach-lib-json-c.x86_64: W: no-documentation
mustach-lib-jansson-devel.x86_64: W: no-documentation
mustach-lib-core.x86_64: W: no-documentation
mustach-lib-json-c-devel.x86_64: W: no-documentation
mustach-lib-cjson-devel.x86_64: W: no-documentation
mustach.x86_64: W: name-repeated-in-summary Mustach
 15 packages and 0 specfiles checked; 0 errors, 8 warnings, 0 badness; has taken 1.7 s 



Source checksums
----------------
https://github.com/mustache/spec/archive/refs/tags/v1.3.0.tar.gz :
  CHECKSUM(SHA256) this package     : 060da2de3135f6ec3682289fdc8a5f0abc275dad73a328f051c3d8c4ee4431f5
  CHECKSUM(SHA256) upstream package : 060da2de3135f6ec3682289fdc8a5f0abc275dad73a328f051c3d8c4ee4431f5
https://gitlab.com/jobol/mustach/-/archive/1.2.5/mustach-1.2.5.tar.bz2 :
  CHECKSUM(SHA256) this package     : da3605d4d72688ac6a4f26229561c021571117a02474bee7da3fd3d396c5826c
  CHECKSUM(SHA256) upstream package : da3605d4d72688ac6a4f26229561c021571117a02474bee7da3fd3d396c5826c


Requires
--------
mustach (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    rtld(GNU_HASH)

mustach-lib-core (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    rtld(GNU_HASH)

mustach-lib-core-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-core.so.1()(64bit)
    mustach-lib-core(x86-64)

mustach-lib-json-c (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    rtld(GNU_HASH)

mustach-lib-json-c-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-json-c.so.1()(64bit)
    mustach-lib-core-devel(x86-64)
    mustach-lib-json-c(x86-64)

mustach-lib-cjson (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libcjson.so.1()(64bit)
    rtld(GNU_HASH)

mustach-lib-cjson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson(x86-64)
    mustach-lib-core-devel(x86-64)

mustach-lib-jansson (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjansson.so.4()(64bit)
    rtld(GNU_HASH)

mustach-lib-jansson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-jansson.so.1()(64bit)
    mustach-lib-core-devel(x86-64)
    mustach-lib-jansson(x86-64)

mustach-debuginfo (rpmlib, GLIBC filtered):

mustach-debugsource (rpmlib, GLIBC filtered):



Provides
--------
mustach:
    mustach
    mustach(x86-64)

mustach-lib-core:
    libmustach-core.so.1()(64bit)
    mustach-lib-core
    mustach-lib-core(x86-64)

mustach-lib-core-devel:
    mustach-lib-core-devel
    mustach-lib-core-devel(x86-64)
    pkgconfig(libmustach-core)

mustach-lib-json-c:
    libmustach-json-c.so.1()(64bit)
    mustach-lib-json-c
    mustach-lib-json-c(x86-64)

mustach-lib-json-c-devel:
    mustach-lib-json-c-devel
    mustach-lib-json-c-devel(x86-64)
    pkgconfig(libmustach-json-c)

mustach-lib-cjson:
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson
    mustach-lib-cjson(x86-64)

mustach-lib-cjson-devel:
    mustach-lib-cjson-devel
    mustach-lib-cjson-devel(x86-64)
    pkgconfig(libmustach-cjson)

mustach-lib-jansson:
    libmustach-jansson.so.1()(64bit)
    mustach-lib-jansson
    mustach-lib-jansson(x86-64)

mustach-lib-jansson-devel:
    mustach-lib-jansson-devel
    mustach-lib-jansson-devel(x86-64)
    pkgconfig(libmustach-jansson)

mustach-debuginfo:
    debuginfo(build-id)
    mustach-debuginfo
    mustach-debuginfo(x86-64)

mustach-debugsource:
    mustach-debugsource
    mustach-debugsource(x86-64)



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -n mustach
Buildroot used: fedora-rawhide-x86_64
Active plugins: Shell-api, C/C++, Generic
Disabled plugins: R, SugarActivity, Java, PHP, Ocaml, Python, Haskell, Perl, fonts
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 15 hardt 2023-04-18 14:18:28 UTC
Ok, I've updated the spec, and placed the SRPM to our repo server.
I'm constantly interrupted by other work, unfortunately.

Updated SRPM URL: http://repo.data.kit.edu/files/mustach-1.2.5-1.fc37.src.rpm

Comment 16 Ben Beasley 2023-05-07 15:08:17 UTC
This looks good to me! The package is APPROVED. Sorry it took me a while to get back to the review.

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

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


Issues:
=======
- Dist tag is present.

  The above message is from fedora-review, which does not understand
  rpmautospec. This is not an issue; there is nothing to fix.


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

C/C++:
[x]: Package does not contain kernel modules.
[x]: Package contains no static executables.
[x]: If your application is a C or C++ application you must list a
     BuildRequires against gcc, gcc-c++ or clang.
[x]: Header files in -devel subpackage, if present.
[x]: ldconfig not called in %post and %postun for Fedora 28 and later.
[x]: Package does not contain any libtool archives (.la)
[x]: Rpath absent or only used for internal libs.
[x]: Development (unversioned) .so files in -devel subpackage, if present.

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", "ISC License", "*No copyright* ISC
     License", "*No copyright* Apache License 2.0", "MIT License". 67 files
     have unknown license. Detailed output of licensecheck in
     /home/reviewer/2163447-mustach/licensecheck.txt

     Source license is ISC. While test6/test-custom-write.c is Apache-2.0, it
     is test code that does not contribute to the binary RPMs, so its license
     does not need to appear in the SPDX expression. Similarly, the contents of
     test-specs/ are MIT, but are only used for testing and are not installed.
     Therefore, “License: ISC” is correct. All source licenses are allowed in
     Fedora.

[x]: License file installed when any subpackage combination is installed.
[x]: %build honors applicable compiler flags or justifies otherwise.
[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.
[x]: 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]: Useful -debuginfo package or justification otherwise.
[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 20480 bytes in 3 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: 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]: Package requires other packages for directories it uses.
[x]: Package must own all directories that it creates.
[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]: Macros in Summary, %description expandable at SRPM build time.
[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]: Packages must not store files under /srv, /opt or /usr/local

===== 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).
[x]: Fully versioned dependency in subpackages if applicable.
     Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in mustach-
     lib-core , mustach-lib-core-devel , mustach-lib-json-c , mustach-lib-
     json-c-devel , mustach-lib-cjson , mustach-lib-cjson-devel , mustach-
     lib-jansson , mustach-lib-jansson-devel
[x]: Package functions as described.

     (upstream tests pass)

[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.

     https://koji.fedoraproject.org/koji/taskinfo?taskID=100855021

[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]: The placement of pkgconfig(.pc) files are correct.
[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 debuginfo package(s).
     Note: No rpmlint messages.
[x]: Rpmlint is run on all installed packages.
     Note: There are rpmlint messages (see attachment).
[x]: Large data in /usr/share should live in a noarch subpackage if package
     is arched.
[x]: Spec file according to URL is the same as in SRPM.


Rpmlint
-------
Checking: mustach-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-devel-1.2.5-1.fc39.x86_64.rpm
          mustach-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-debugsource-1.2.5-1.fc39.x86_64.rpm
          mustach-1.2.5-1.fc39.src.rpm
=========================================================================================================== rpmlint session starts ===========================================================================================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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/tmp49253tiu')]
checks: 31, packages: 12

mustach-lib-cjson.x86_64: W: no-documentation
mustach-lib-cjson-devel.x86_64: W: no-documentation
mustach-lib-core.x86_64: W: no-documentation
mustach-lib-jansson.x86_64: W: no-documentation
mustach-lib-jansson-devel.x86_64: W: no-documentation
mustach-lib-json-c.x86_64: W: no-documentation
mustach-lib-json-c-devel.x86_64: W: no-documentation
mustach.src: W: name-repeated-in-summary Mustach
mustach.x86_64: W: name-repeated-in-summary Mustach
=========================================================================== 12 packages and 0 specfiles checked; 0 errors, 9 warnings, 0 badness; has taken 0.6 s ============================================================================




Rpmlint (debuginfo)
-------------------
Checking: mustach-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-core-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-json-c-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-cjson-debuginfo-1.2.5-1.fc39.x86_64.rpm
          mustach-lib-jansson-debuginfo-1.2.5-1.fc39.x86_64.rpm
=========================================================================================================== rpmlint session starts ===========================================================================================================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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/tmppx8zime3')]
checks: 31, packages: 5

============================================================================ 5 packages and 0 specfiles checked; 0 errors, 0 warnings, 0 badness; has taken 0.4 s ============================================================================





Rpmlint (installed packages)
----------------------------
============================ rpmlint session starts ============================
rpmlint: 2.4.0
configuration:
    /usr/lib/python3.11/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
checks: 31, packages: 15

mustach-lib-core.x86_64: W: no-documentation
mustach-lib-json-c.x86_64: W: no-documentation
mustach-lib-json-c-devel.x86_64: W: no-documentation
mustach-lib-jansson-devel.x86_64: W: no-documentation
mustach-lib-cjson.x86_64: W: no-documentation
mustach-lib-jansson.x86_64: W: no-documentation
mustach-lib-cjson-devel.x86_64: W: no-documentation
mustach.x86_64: W: name-repeated-in-summary Mustach
 15 packages and 0 specfiles checked; 0 errors, 8 warnings, 0 badness; has taken 1.4 s 



Source checksums
----------------
https://github.com/mustache/spec/archive/refs/tags/v1.3.0.tar.gz :
  CHECKSUM(SHA256) this package     : 060da2de3135f6ec3682289fdc8a5f0abc275dad73a328f051c3d8c4ee4431f5
  CHECKSUM(SHA256) upstream package : 060da2de3135f6ec3682289fdc8a5f0abc275dad73a328f051c3d8c4ee4431f5
https://gitlab.com/jobol/mustach/-/archive/1.2.5/mustach-1.2.5.tar.bz2 :
  CHECKSUM(SHA256) this package     : da3605d4d72688ac6a4f26229561c021571117a02474bee7da3fd3d396c5826c
  CHECKSUM(SHA256) upstream package : da3605d4d72688ac6a4f26229561c021571117a02474bee7da3fd3d396c5826c


Requires
--------
mustach (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    rtld(GNU_HASH)

mustach-lib-core (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    rtld(GNU_HASH)

mustach-lib-core-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-core.so.1()(64bit)
    mustach-lib-core(x86-64)

mustach-lib-json-c (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjson-c.so.5()(64bit)
    libjson-c.so.5(JSONC_0.14)(64bit)
    rtld(GNU_HASH)

mustach-lib-json-c-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-json-c.so.1()(64bit)
    mustach-lib-core-devel(x86-64)
    mustach-lib-json-c(x86-64)

mustach-lib-cjson (rpmlib, GLIBC filtered):
    libc.so.6()(64bit)
    libcjson.so.1()(64bit)
    rtld(GNU_HASH)

mustach-lib-cjson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson(x86-64)
    mustach-lib-core-devel(x86-64)

mustach-lib-jansson (rpmlib, GLIBC filtered):
    glibc
    libc.so.6()(64bit)
    libjansson.so.4()(64bit)
    rtld(GNU_HASH)

mustach-lib-jansson-devel (rpmlib, GLIBC filtered):
    /usr/bin/pkg-config
    libmustach-jansson.so.1()(64bit)
    mustach-lib-core-devel(x86-64)
    mustach-lib-jansson(x86-64)

mustach-debuginfo (rpmlib, GLIBC filtered):

mustach-debugsource (rpmlib, GLIBC filtered):



Provides
--------
mustach:
    mustach
    mustach(x86-64)

mustach-lib-core:
    libmustach-core.so.1()(64bit)
    mustach-lib-core
    mustach-lib-core(x86-64)

mustach-lib-core-devel:
    mustach-lib-core-devel
    mustach-lib-core-devel(x86-64)
    pkgconfig(libmustach-core)

mustach-lib-json-c:
    libmustach-json-c.so.1()(64bit)
    mustach-lib-json-c
    mustach-lib-json-c(x86-64)

mustach-lib-json-c-devel:
    mustach-lib-json-c-devel
    mustach-lib-json-c-devel(x86-64)
    pkgconfig(libmustach-json-c)

mustach-lib-cjson:
    libmustach-cjson.so.1()(64bit)
    mustach-lib-cjson
    mustach-lib-cjson(x86-64)

mustach-lib-cjson-devel:
    mustach-lib-cjson-devel
    mustach-lib-cjson-devel(x86-64)
    pkgconfig(libmustach-cjson)

mustach-lib-jansson:
    libmustach-jansson.so.1()(64bit)
    mustach-lib-jansson
    mustach-lib-jansson(x86-64)

mustach-lib-jansson-devel:
    mustach-lib-jansson-devel
    mustach-lib-jansson-devel(x86-64)
    pkgconfig(libmustach-jansson)

mustach-debuginfo:
    debuginfo(build-id)
    mustach-debuginfo
    mustach-debuginfo(x86-64)

mustach-debugsource:
    mustach-debugsource
    mustach-debugsource(x86-64)



Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23
Command line :/usr/bin/fedora-review -b 2163447
Buildroot used: fedora-rawhide-x86_64
Active plugins: Generic, Shell-api, C/C++
Disabled plugins: Java, Python, Perl, fonts, R, Haskell, PHP, Ocaml, SugarActivity
Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH

Comment 17 Ben Beasley 2023-06-06 15:27:28 UTC
Note that if you don’t request the dist-git repository relatively promptly, the package will have to be re-approved. Let me know if you run into trouble.

Comment 18 hardt 2023-06-29 13:19:21 UTC
Ok; I was not able to respond promptly. I've tried to find what to do for dist-git, but didn't quite find useful links.

What's the next steps?    dist-git + reapprove?

Best,
Marcus.

Comment 19 Ben Beasley 2023-06-29 16:06:50 UTC
(In reply to hardt from comment #18)
> Ok; I was not able to respond promptly. I've tried to find what to do for
> dist-git, but didn't quite find useful links.
> 
> What's the next steps?    dist-git + reapprove?

I’m going to toggle the relevant flags to “refresh” the approval. Here’s the documentation for requesting a dist-git repository.

https://docs.fedoraproject.org/en-US/package-maintainers/New_Package_Process_for_New_Contributors/#add_package_to_source_code_management_scm_system_and_set_owner

-----

It looks like you also still needed to be sponsored into the packager group. Based on this package review, I’m willing to do that. That means I agree to the responsibilities listed here,

https://docs.fedoraproject.org/en-US/fesco/Packager_sponsor_policy/#responsibilities

and you should feel free to contact me with any questions you might have for as long as you contribute to Fedora.

You will need to log out of your Fedora account (https://accounts.fedoraproject.org/user/marcvs/) and back in to use your new privileges.

Once you get your first package set up, make sure you have a look at the Updates Policy so you understand how to handle any future API/ABI breaks. As always, I’m happy to answer questions.

https://docs.fedoraproject.org/en-US/fesco/Updates_Policy/

Comment 20 Fedora Review Service 2023-06-29 16:07:44 UTC
Hello @marcvs,
since this is your first Fedora package, you need to get sponsored by a package
sponsor before it can be accepted.

A sponsor is an experienced package maintainer who will guide you through
the processes that you will follow and the tools that you will use as a future
maintainer. A sponsor will also be there to answer your questions related to
packaging.

You can find all active sponsors here:
https://docs.pagure.org/fedora-sponsors/

I created a sponsorship request for you:
https://pagure.io/packager-sponsors/issue/577
Please take a look and make sure the information is correct.

Thank you, and best of luck on your packaging journey.

---
This comment was created by the fedora-review-service
https://github.com/FrostyX/fedora-review-service


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