Spec URL: https://samcday.fedorapeople.org/phrog.spec SRPM URL: https://kojipkgs.fedoraproject.org//work/tasks/8334/140758334/phrog-0.50.0-1.fc44.src.rpm Description: Phrog uses Phosh and greetd to provide a graphical login manager. Fedora Account System Username: samcday Scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=140758329 Note that this package *must* be built with vendoring: Phosh is still based on gtk3, and the gtk3-rs crates have been forcibly retired from Fedora (https://fedoraproject.org/wiki/Changes/Retire_gtk3-rs,_gtk-rs-core_v0.18,_and_gtk4-rs_v0.7)
Copr build: https://copr.fedorainfracloud.org/coprs/build/9974862 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2427087-phrog/fedora-rawhide-x86_64/09974862-phrog/fedora-review/review.txt Found issues: - No gcc, gcc-c++ or clang found in BuildRequires Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/ - Systemd user unit service file(s) in phrog Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units Please know that there can be false-positives. --- This comment was created by the fedora-review-service https://github.com/FrostyX/fedora-review-service If you want to trigger a new Copr build, add a comment containing new Spec and SRPM URLs or [fedora-review-service-build] string.
Initial review pass: 1. Weird rpm macros? > %bcond_without check > %global cargo_install_lib 0 > %global _cargo_generate_buildrequires 0 Not sure why / how you added these. The first one should be either `%bcond check 1` or dropped. The second one can be dropped if you replace `%cargo_install` with one manual `install` command. The third one looks very strange. see also https://docs.fedoraproject.org/en-US/packaging-guidelines/Rust/#_non_crate_rust_project 2. The License tag is incomplete. It currently only refers to "phrog" itself. You also need to take into account statically linked Rust dependencies (the summary is printed by `%cargo_license_summary` during the build, you should find it in the "build.log" file after a build (between "START LICENSE SUMMARY" and "END LICENSE SUMMARY"). 3. Do not use double-underscore-prefixed RPM macros. These are implementation details and should not be used in spec files. In this case, just use plain "install" instead of "%{__install}". 4. I would recommend to use "install ... target/rpm/phrog -t ..." instead of %cargo_install. In a simple case like this one, the latest version of the Packaging Guidelines recommend against using `%cargo_install` in favor of just installing the built executables yourself. see https://docs.fedoraproject.org/en-US/packaging-guidelines/Rust/#_non_crate_rust_project 5. Create files / folder structure necessary for tests in %check. Setting up the test environment should happen in %check. This way it cannot influence the built package, since the files are collected *before* %check is run. 6. Missing verification of the .desktop files. ".desktop" files MUST be validated with "desktop-file-validate" (from desktop-file-utils). see https://docs.fedoraproject.org/en-US/packaging-guidelines/#_desktop_file_install_usage 7. Differentiate between folders and files in the %files list, and make sure all "intermediate" folders are accounted for. Right now ownership of folders / files is not entirely clear, and incomplete. For example, the /etc/phrog directory is "unowned" in the current setup. Looks like (taking "%{_sysconfdir}/phrog/autostart" as an example) you would need to do something like: %dir %{_sysconfdir}/phrog %dir %{_sysconfdir}/phrog/autostart (assuming /etc/phrog/autostart is currently an empty directory) If it has contents (why does the package install default config files in /etc instead of /usr?), then you'd need to add one more line: %config(noreplace) %{_sysconfdir}/phrog/autostart/* 8. Missing systemd scriptlets for the user session service. Both system and user session service units need scriptlets.
oh, and 9.: Please "version" the vendor tarball. Otherwise you will have tooling issues when updating to a new version (they don't really like "re"uploading new sources with the same file name but different contents).
Thanks for the fab review, Fab! > 1. Weird rpm macros? ... Not sure why / how you added these. Hehe okay so the _cargo_generate_buildrequires one is certainly odd. I can't remember where I found that (an LLM hallucination, most likely). I disagree on the other two macros being "weird", though: https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/+bcond_without&patternType=regexp&sm=0 https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/+cargo_install_lib&patternType=regexp&sm=0 Anyway, I've changed the preamble to suit your preference and dropped the _cargo_generate_buildrequires thingie. > 2. The License tag is incomplete. Fixed. Is there any tooling that will detect if this falls out of sync, though? Presumably this needs to be checked every time there's a new release with changed deps. > 3. Do not use double-underscore-prefixed RPM macros. Out of interest, are there guidelines somewhere expressly forbidding this? I see a lot of prior art making use of this macro: https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject.org/+__install&patternType=regexp&sm=0 To expedite the review I've made the requested change anyways. > 4. I would recommend to use "install ... target/rpm/phrog -t ..." instead of %cargo_install. Done. > 5. Create files / folder structure necessary for tests in %check. I assume you just meant the `XDG_RUNTIME_DIR` creation? I don't see how creating something in `/tmp` will affect anything in `%{_buildroot}`, but I've made the requested change anyway as it's harmless (and more coherent I suppose) > 6. Missing verification of the .desktop files. This is still not yet possible as desktop-file-validate doesn't have a tagged release with Phosh support: https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/merge_requests/24 > (why does the package install default config files in /etc instead of /usr?) I assume you're referring to greetd-config.toml? That file is the default config that users are expected/welcome to modify (hence `%config(noreplace)`) if users choose to use `phrog.service` (rather than manually wiring up `greetd.service` themselves). > 8. Missing systemd scriptlets for the user session service. Oops apologies, LLM *and* f-r-s review already warned me of that and I forgot to fix it (╯°□°)╯︵ ┻━┻ > 9.: Please "version" the vendor tarball. Done. --- Spec URL: https://samcday.fedorapeople.org/phrog.spec SRPM URL: https://kojipkgs.fedoraproject.org//work/tasks/5945/140805945/phrog-0.50.0-1.fc44.src.rpm
> This is still not yet possible as desktop-file-validate doesn't have a tagged release with ... Er actually, I forgot that I already backported this in Fedora xD https://src.fedoraproject.org/rpms/desktop-file-utils/blob/rawhide/f/0001-validate-Add-Phosh-to-list-of-valid-OnlyShowIn-envir.patch ... And this desktop file wouldn't trip up the lack of support for Phosh anyway. I've just added the `desktop-file-validate` invocation to `%check` in my local tree. Since I just queued a build here I won't submit that change just yet. If there's no more changes requested I'll ensure it ends up in dist-git, or in the next round of the specfile otherwise.
Created attachment 2121322 [details] The .spec file difference from Copr build 9974862 to 9979964
Copr build: https://copr.fedorainfracloud.org/coprs/build/9979964 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2427087-phrog/fedora-rawhide-x86_64/09979964-phrog/fedora-review/review.txt Found issues: - No gcc, gcc-c++ or clang found in BuildRequires Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/ - Systemd user unit service file(s) in phrog Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units Please know that there can be false-positives. --- This comment was created by the fedora-review-service https://github.com/FrostyX/fedora-review-service If you want to trigger a new Copr build, add a comment containing new Spec and SRPM URLs or [fedora-review-service-build] string.
I wrote about forgetting to add the user-level systemd macro invocations. And then forgot to add them. Sigh. But actually, it turns out we don't want to (and kinda can't) add these: ``` >>> Finished %preun scriptlet: phrog-0:0.50.0-2.fc44.x86_64 >>> Scriptlet output: >>> Failed to stop mobi.phosh.Phrog.service: Operation refused, unit mobi.phosh.Phrog.service may be requested by dependency only (it is >>> See user logs and 'systemctl --user status mobi.phosh.Phrog.service' for details. >>> Failed to stop mobi.phosh.Phrog.service: Operation refused, unit mobi.phosh.Phrog.service may be requested by dependency only (it is >>> See user logs and 'systemctl --user status mobi.phosh.Phrog.service' for details. ```
(In reply to Sam Day from comment #4) > Thanks for the fab review, Fab! Ha. :) Thanks for the update - will take another look. ================================================================================ ad 1: "weird" was probably the wrong word here, sorry. The only one that "weird" applied to was the hallucinated one, the others are just outdated, not weird. As for the other two: I would recommend to use `%bcond check 1` instead of `%bcond_without check`. They mean the same thing, but the former is the "modern" one and is usually considered less confusing (yes, "%bcond_without check" means "with checks by default" ...). The other one ("%global cargo_install_lib 0") was dropped from the Rust Packaging Guidelines for packages like this one, and is unused if you don't use `%cargo_install` (which is also in line with the latest Rust guidelines). -> https://docs.fedoraproject.org/en-US/packaging-guidelines/Rust/#_non_crate_rust_project ================================================================================ ad 2) > Fixed. Is there any tooling that will detect if this falls out of sync, > though? Presumably this needs to be checked every time there's a new release > with changed deps. No, there is no tooling for this currently. Verifying that the License tag is correct at build-time would cause a random amount of spurious build failures over time whenever the dependency tree of a project (even through transitive dependencies) changes in any way. The "new" Go packaging tooling *can* do this because there, dependencies are *always* vendored, so there is no dependency drift. For Rust packages, usually the license tag is checked and updated when doing package updates and / or other packaging changes. ================================================================================ ad 3) Do not use double-underscore-prefixed RPM macros. > > Out of interest, are there guidelines somewhere expressly forbidding this? I > see a lot of prior art making use of this macro: Actually, yes. I couldn't find the reference myself, but after asking for help, we found it: ``` Macros with names beginning with underscores are generally considered to be implementation details internal to RPM and its associated macro packages and SHOULD NOT be referenced in specfiles except to set their values in order to influence RPM behavior. This implies that macro forms of system executables SHOULD NOT be used. For example, rm should be used in preference to %{__rm}. ``` -> https://docs.fedoraproject.org/en-US/packaging-guidelines/#_macros So you *can* use them if you really need to, but you shouldn't if you don't. > https://sourcegraph.com/search?q=context:global+repo:%5Esrc.fedoraproject. > org/+__install&patternType=regexp&sm=0 Yes, this is / was a common pattern in really old packages. ;) > To expedite the review I've made the requested change anyways. Thanks! ================================================================================ > > 4. I would recommend to use "install ... target/rpm/phrog -t ..." instead of %cargo_install. > > Done. 👍 (see also point 1. / Rust package template for packages like this) ================================================================================ > > 5. Create files / folder structure necessary for tests in %check. > > I assume you just meant the `XDG_RUNTIME_DIR` creation? I don't see how > creating something in `/tmp` will affect anything in `%{_buildroot}`, but > I've made the requested change anyway as it's harmless (and more coherent I > suppose) Yes, that's what I meant. In this case it *shouldn't* make a difference, but in general, this is the safe way to set up a test environment that *cannot* influence the package output. ================================================================================ > > 6. Missing verification of the .desktop files. > > This is still not yet possible as desktop-file-validate doesn't have a > tagged release with Phosh support: > https://gitlab.freedesktop.org/xdg/desktop-file-utils/-/merge_requests/24 -> "I've just added the `desktop-file-validate` invocation to `%check` in my local tree." This is fine. 👍 > > (why does the package install default config files in /etc instead of /usr?) > > I assume you're referring to greetd-config.toml? That file is the default > config that users are expected/welcome to modify (hence > `%config(noreplace)`) if users choose to use `phrog.service` (rather than > manually wiring up `greetd.service` themselves). Yes, that's what I was referring to. It's not the most "modern" ("systemd style") way to handle config files, but it should be fine. ================================================================================ > > 8. Missing systemd scriptlets for the user session service. > > Oops apologies, LLM *and* f-r-s review already warned me of that and I > forgot to fix it (╯°□°)╯︵ ┻━┻ -> But actually, it turns out we don't want to (and kinda can't) add these Right - I forgot about the case where the .service files aren't actually enable-able by systemd. Thank you for filing a PR to clarify the packaging guidelines for this case, this should be fine the way it is then. ================================================================================ > > 9.: Please "version" the vendor tarball. > > Done. 👍 ================================================================================ Will do a full review pass ASAP.
Package looks pretty good now. Only some very small things left: I. It would be great if you could a) use the "SourceLicense" tag to specify which license "phrog" itself is distributed under (right now the "License" tag only applies to the built package) and / or add a short comment to say "phrog license is FOO, licenses of statically linked Rust dependencies are thus: ...". II. The License tag looks correct, though it is not "minimal". In this case, the difference is negligible, so you could just leave it as-is (but in theory, you could drop the "(MIT OR Apache-2.0)" line because that's already covered by "(Apache-2.0 OR MIT)" - but I think this is even the only one that's "duplicated" here, you it wouldn't gain you much in terms of readability, and you would lose out on being able to mostly copy-paste from the %cargo_license_summary output). So I would say whether you want to "minimize" the License tag in this way is entirely up to you in this case. III. The .desktop file validation is missing from the latest version (expected - should be fixed either in the next version or before importing the package). IV. You're generating the "vendor manifest", but that file is not actually used anywhere. You'll need to add `%license cargo-vendor.txt` as a file to the %files list. The RPM generator for `bundled(crate(...))` generator is triggered by the presence (and contents) of this file.
Latest (final? :D) revision: Spec URL: https://samcday.fedorapeople.org/phrog.spec SRPM URL: https://kojipkgs.fedoraproject.org//work/tasks/3007/141093007/phrog-0.50.0-1.fc44.src.rpm --- > I. It would be great if you could a) use the "SourceLicense" tag to specify which license "phrog" itself is distributed under (right now the "License" tag only applies to the built package) and / or add a short comment to say "phrog license is FOO, licenses of statically linked Rust dependencies are thus: ...". Cool, makes sense - I've done that in latest revision. > II. The License tag looks correct, though it is not "minimal". In this case, the difference is negligible, so you could just leave it as-is (but in theory, you could drop the "(MIT OR Apache-2.0)" line because that's already covered by "(Apache-2.0 OR MIT)" - but I think this is even the only one that's "duplicated" here, you it wouldn't gain you much in terms of readability, and you would lose out on being able to mostly copy-paste from the %cargo_license_summary output). So I would say whether you want to "minimize" the License tag in this way is entirely up to you in this case. If this was the only remaining feedback I'd have just said "naw all good, let's ideally have `%cargo_license_summary` output handle alphabetize + de-dupe someday" :D. But, the simplification is in this latest revision instead. > III. The .desktop file validation is missing from the latest version (expected - should be fixed either in the next version or before importing the package). It's in this one. > IV. You're generating the "vendor manifest", but that file is not actually used anywhere. You'll need to add `%license cargo-vendor.txt` as a file to the %files list. The RPM generator for `bundled(crate(...))` generator is triggered by the presence (and contents) of this file. Ah, fixed. I confirm that `rpm -q --provides` on the latest rpm has all the `bundled(crate(...))` bits.
Spec URL: https://samcday.fedorapeople.org/phrog.spec SRPM URL: https://kojipkgs.fedoraproject.org//work/tasks/3007/141093007/phrog-0.50.0-1.fc44.src.rpm
Copr build: https://copr.fedorainfracloud.org/coprs/build/10010597 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2427087-phrog/fedora-rawhide-x86_64/10010597-phrog/fedora-review/review.txt Found issues: - No gcc, gcc-c++ or clang found in BuildRequires Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/ - Systemd user unit service file(s) in phrog Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units Please know that there can be false-positives. --- This comment was created by the fedora-review-service https://github.com/FrostyX/fedora-review-service If you want to trigger a new Copr build, add a comment containing new Spec and SRPM URLs or [fedora-review-service-build] string.
Copr build: https://copr.fedorainfracloud.org/coprs/build/10010611 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2427087-phrog/fedora-rawhide-x86_64/10010611-phrog/fedora-review/review.txt Found issues: - No gcc, gcc-c++ or clang found in BuildRequires Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/ - Systemd user unit service file(s) in phrog Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Scriptlets/#_user_units Please know that there can be false-positives. --- This comment was created by the fedora-review-service https://github.com/FrostyX/fedora-review-service If you want to trigger a new Copr build, add a comment containing new Spec and SRPM URLs or [fedora-review-service-build] string.
Spec URL: https://samcday.fedorapeople.org/phrog.spec SRPM URL: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2427087-phrog/fedora-rawhide-x86_64/10010597-phrog/phrog-0.50.0-1.fc44.src.rpm
The latest version looks good to me, with three caveats: a) The "%{_userunitdir}/gnome-session.d/" directory is unowned. Fixing this should be easy, just add an "%%{_userunitdir}/gnome-session.d/" entry to the %files list directly above the corresponding ../session.conf files entry. b) One very minor issue that you can fix before importing: It looks like some files (tests/fixtures/*.png) are covered by a CC-BY-SA-4.0 license. This probably should be documented in the spec file (even if they don't contribute to the License tag, because they don't get installed), they technically *do* affect the SourceLicense tag. c) One last thing you could consider changing, which isn't *wrong* per se, so I'll leave it up to you if you want to do this: Running the tests is covered by the "if check" condition, but the dependencies that are only necessary for those tests are not. You could wrap the dbus-daemon, desktop-file-utils, xorg-x11-server-Xvfb, and foot BuildRequires in "%if %{with check}" too. Full review included below. ============== Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - If your application is a C or C++ application you must list a BuildRequires against gcc, gcc-c++ or clang. Note: No gcc, gcc-c++ or clang found in BuildRequires See: https://docs.fedoraproject.org/en-US/packaging-guidelines/C_and_C++/ This is a false positive: This is not a C/C++ project. - systemd_user_post is invoked in %post and systemd_user_preun in %preun for Systemd user units service files. Note: Systemd user unit service file(s) in phrog See: https://docs.fedoraproject.org/en-US/packaging- guidelines/Scriptlets/#_user_units This is a false positive: The user session units are not activatable, so the systemd scriptlets cannot (and should not) be used for them. ===== MUST items ===== C/C++: [x]: Package does not contain kernel modules. [x]: Package does not contain any libtool archives (.la) [x]: Package contains no static executables. [x]: Rpath absent or only used for internal libs. 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. [!]: Package requires other packages for directories it uses. Note: No known owner of /usr/lib/systemd/user/gnome-session.d [!]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib/systemd/user/gnome-session.d [x]: %build honors applicable compiler flags or justifies otherwise. [x]: Package contains no bundled libraries or specifies bundled libraries with Provides: bundled(<libname>) if unbundling is not possible. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [-]: 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. [x]: Package contains systemd file(s) if in need. [x]: Useful -debuginfo package or justification otherwise. [-]: 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. [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 does not own files or directories owned by other packages. [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: %config files are marked noreplace or the reason is justified. [x]: Macros in Summary, %description expandable at SRPM build time. [x]: Package contains desktop file if it is a GUI application. [x]: Package installs a %{name}.desktop using desktop-file-install or desktop-file-validate if there is such a file. [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]: No %config files under /usr. [x]: Package does not use a name that already exists. [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: systemd_post is invoked in %post, systemd_preun in %preun, and systemd_postun in %postun for Systemd service files. Note: Systemd service file(s) in phrog [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 2432 bytes in 1 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. [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. [x]: SourceX tarball generation or download is documented. [-]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. [-]: 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: [!]: Spec file according to URL is the same as in SRPM. This is an expected issue when using SRPM files that have already been processed by rpmautospec. [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. Rpmlint ------- Checking: phrog-0.50.0-1.fc44.x86_64.rpm phrog-0.50.0-1.fc44.src.rpm ============================ rpmlint session starts ============================ phrog.src: E: spelling-error ('greetd', 'Summary(en_US) greetd -> greets, greet, greed') phrog.src: E: spelling-error ('greetd', '%description -l en_US greetd -> greets, greet, greed') phrog.x86_64: E: spelling-error ('greetd', 'Summary(en_US) greetd -> greets, greet, greed') phrog.x86_64: E: spelling-error ('greetd', '%description -l en_US greetd -> greets, greet, greed') phrog.x86_64: W: no-manual-page-for-binary phrog phrog.spec: W: invalid-url Source1: vendor-0.50.0.tar.gz 2 packages and 0 specfiles checked; 4 errors, 2 warnings, 7 filtered, 4 badness; has taken 0.7 s These are all harmless. Rpmlint (debuginfo) ------------------- Checking: phrog-debuginfo-0.50.0-1.fc44.x86_64.rpm ============================ rpmlint session starts ============================ 1 packages and 0 specfiles checked; 0 errors, 0 warnings, 5 filtered, 0 badness; has taken 1.2 s Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ phrog.x86_64: W: unused-direct-shlib-dependency /usr/bin/phrog /lib64/libcairo-gobject.so.2 phrog.x86_64: W: unused-direct-shlib-dependency /usr/bin/phrog /lib64/libpango-1.0.so.0 phrog.x86_64: W: unused-direct-shlib-dependency /usr/bin/phrog /lib64/libcairo.so.2 phrog.x86_64: E: spelling-error ('greetd', 'Summary(en_US) greetd -> greets, greet, greed') phrog.x86_64: E: spelling-error ('greetd', '%description -l en_US greetd -> greets, greet, greed') phrog.x86_64: W: no-manual-page-for-binary phrog 2 packages and 0 specfiles checked; 2 errors, 4 warnings, 9 filtered, 2 badness; has taken 0.3 s These are all harmless. Source checksums ---------------- https://github.com/samcday/phrog/archive/0.50.0/phrog-0.50.0.tar.gz : CHECKSUM(SHA256) this package : b1dfff122fa0faf74e1fdb9ef9d417a9a9d0745e2913287ce2c0a6c0027a946c CHECKSUM(SHA256) upstream package : b1dfff122fa0faf74e1fdb9ef9d417a9a9d0745e2913287ce2c0a6c0027a946c Requires -------- phrog (rpmlib, GLIBC filtered): /bin/sh /usr/bin/bash accountsservice config(phrog) gnome-session greetd ld-linux-x86-64.so.2()(64bit) libc.so.6()(64bit) libcairo-gobject.so.2()(64bit) libcairo.so.2()(64bit) libgcc_s.so.1()(64bit) libgcc_s.so.1(GCC_3.0)(64bit) libgcc_s.so.1(GCC_3.3)(64bit) libgcc_s.so.1(GCC_4.2.0)(64bit) libgdk-3.so.0()(64bit) libgdk_pixbuf-2.0.so.0()(64bit) libgio-2.0.so.0()(64bit) libglib-2.0.so.0()(64bit) libgobject-2.0.so.0()(64bit) libgtk-3.so.0()(64bit) libhandy-1.so.0()(64bit) libhandy-1.so.0(LIBHANDY_1_0)(64bit) libpango-1.0.so.0()(64bit) libphosh-0.45.so.0()(64bit) libphosh-0.45.so.0(LIBPHOSH_0_45_0)(64bit) phoc phosh-osk rtld(GNU_HASH) Provides -------- phrog: application() application(mobi.phosh.Phrog.desktop) bundled(crate(anstream)) bundled(crate(anstyle)) bundled(crate(anstyle-parse)) bundled(crate(anstyle-query)) bundled(crate(anstyle-wincon)) bundled(crate(anyhow)) bundled(crate(async-broadcast)) bundled(crate(async-channel)) bundled(crate(async-executor)) bundled(crate(async-global-executor)) bundled(crate(async-io)) bundled(crate(async-lock)) bundled(crate(async-process)) bundled(crate(async-recursion)) bundled(crate(async-signal)) bundled(crate(async-task)) bundled(crate(async-trait)) bundled(crate(atk)) bundled(crate(atk-sys)) bundled(crate(atomic-waker)) bundled(crate(autocfg)) bundled(crate(bitflags)) bundled(crate(blocking)) bundled(crate(cairo-rs)) bundled(crate(cairo-sys-rs)) bundled(crate(cc)) bundled(crate(cfg-expr)) bundled(crate(cfg-if)) bundled(crate(cfg_aliases)) bundled(crate(clap)) bundled(crate(clap_builder)) bundled(crate(clap_derive)) bundled(crate(clap_lex)) bundled(crate(colorchoice)) bundled(crate(concurrent-queue)) bundled(crate(crossbeam-utils)) bundled(crate(downcast-rs)) bundled(crate(endi)) bundled(crate(enumflags2)) bundled(crate(enumflags2_derive)) bundled(crate(equivalent)) bundled(crate(errno)) bundled(crate(event-listener)) bundled(crate(event-listener-strategy)) bundled(crate(fastrand)) bundled(crate(field-offset)) bundled(crate(find-msvc-tools)) bundled(crate(futures-channel)) bundled(crate(futures-core)) bundled(crate(futures-executor)) bundled(crate(futures-io)) bundled(crate(futures-lite)) bundled(crate(futures-macro)) bundled(crate(futures-task)) bundled(crate(futures-util)) bundled(crate(gdk)) bundled(crate(gdk-pixbuf)) bundled(crate(gdk-pixbuf-sys)) bundled(crate(gdk-sys)) bundled(crate(getrandom)) bundled(crate(gio)) bundled(crate(gio-sys)) bundled(crate(glib)) bundled(crate(glib-build-tools)) bundled(crate(glib-macros)) bundled(crate(glib-sys)) bundled(crate(glob)) bundled(crate(gobject-sys)) bundled(crate(greetd_ipc)) bundled(crate(gtk)) bundled(crate(gtk-sys)) bundled(crate(gtk3-macros)) bundled(crate(hashbrown)) bundled(crate(heck)) bundled(crate(hermit-abi)) bundled(crate(hex)) bundled(crate(indexmap)) bundled(crate(input-event-codes)) bundled(crate(is_terminal_polyfill)) bundled(crate(itoa)) bundled(crate(libc)) bundled(crate(libhandy)) bundled(crate(libhandy-sys)) bundled(crate(libphosh)) bundled(crate(libphosh-sys)) bundled(crate(linux-raw-sys)) bundled(crate(log)) bundled(crate(memchr)) bundled(crate(memoffset)) bundled(crate(nix)) bundled(crate(once_cell)) bundled(crate(once_cell_polyfill)) bundled(crate(ordered-stream)) bundled(crate(pango)) bundled(crate(pango-sys)) bundled(crate(parking)) bundled(crate(pin-project-lite)) bundled(crate(pin-utils)) bundled(crate(piper)) bundled(crate(pkg-config)) bundled(crate(polling)) bundled(crate(proc-macro-crate)) bundled(crate(proc-macro-error)) bundled(crate(proc-macro-error-attr)) bundled(crate(proc-macro2)) bundled(crate(quick-xml)) bundled(crate(quote)) bundled(crate(r-efi)) bundled(crate(rustc_version)) bundled(crate(rustix)) bundled(crate(ryu)) bundled(crate(semver)) bundled(crate(serde)) bundled(crate(serde_core)) bundled(crate(serde_derive)) bundled(crate(serde_json)) bundled(crate(serde_repr)) bundled(crate(serde_spanned)) bundled(crate(shlex)) bundled(crate(signal-hook-registry)) bundled(crate(slab)) bundled(crate(smallvec)) bundled(crate(static_assertions)) bundled(crate(strsim)) bundled(crate(syn)) bundled(crate(system-deps)) bundled(crate(target-lexicon)) bundled(crate(tempfile)) bundled(crate(thiserror)) bundled(crate(thiserror-impl)) bundled(crate(toml)) bundled(crate(toml_datetime)) bundled(crate(toml_edit)) bundled(crate(toml_parser)) bundled(crate(tracing)) bundled(crate(tracing-attributes)) bundled(crate(tracing-core)) bundled(crate(uds_windows)) bundled(crate(unicode-ident)) bundled(crate(utf8parse)) bundled(crate(uuid)) bundled(crate(version-compare)) bundled(crate(version_check)) bundled(crate(wasip2)) bundled(crate(wayland-backend)) bundled(crate(wayland-client)) bundled(crate(wayland-protocols)) bundled(crate(wayland-protocols-misc)) bundled(crate(wayland-protocols-wlr)) bundled(crate(wayland-scanner)) bundled(crate(wayland-sys)) bundled(crate(winapi)) bundled(crate(winapi-i686-pc-windows-gnu)) bundled(crate(winapi-x86_64-pc-windows-gnu)) bundled(crate(windows-link)) bundled(crate(windows-sys)) bundled(crate(winnow)) bundled(crate(wit-bindgen)) bundled(crate(zbus)) bundled(crate(zbus_macros)) bundled(crate(zbus_names)) bundled(crate(zvariant)) bundled(crate(zvariant_derive)) bundled(crate(zvariant_utils)) config(phrog) phrog phrog(x86-64) Diff spec file in url and in SRPM --------------------------------- --- /home/deca/Workspace/package-reviews/2427087-phrog/srpm/phrog.spec 2026-01-16 22:21:59.675734833 +0100 +++ /home/deca/Workspace/package-reviews/2427087-phrog/srpm-unpacked/phrog.spec 2026-01-14 01:00:00.000000000 +0100 @@ -1,2 +1,12 @@ +## START: Set by rpmautospec +## (rpmautospec version 0.8.3) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 1; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec + %bcond check 1 @@ -126,3 +136,6 @@ %changelog -%autochangelog +## START: Generated by rpmautospec +* Wed Jan 14 2026 Sam Day <me> - 0.50.0-1 +- initial commit - 0.50.0 +## END: Generated by rpmautospec ================================================================================ Package APPROVED. Please address point a) and b) before importing.
The Pagure repository was created at https://src.fedoraproject.org/rpms/phrog
FEDORA-2026-c37d0f5140 (phrog-0.50.0-2.fc44) has been submitted as an update to Fedora 44. https://bodhi.fedoraproject.org/updates/FEDORA-2026-c37d0f5140
Thanks for the swift and thorough review Fabio. I've imported into dist-git along with the last round of suggested fixes/changes.
FEDORA-2026-c37d0f5140 (phrog-0.50.0-2.fc44) has been pushed to the Fedora 44 stable repository. If problem still persists, please make note of it in this bug report.