Spec URL: https://alakatos.fedorapeople.org/trustee/rust-scientific-macro/rust-scientific-macro.spec SRPM URL: https://alakatos.fedorapeople.org/trustee/rust-scientific-macro/rust-scientific-macro-0.5.2-1.fc42.src.rpm Description: This is a Rust procedural macro crate that provides compile-time support for creating constant Scientific numbers with arbitrary precision. It's a helper crate for the main scientific library. Fedora Account System Username: alakatos
Copr build: https://copr.fedorainfracloud.org/coprs/build/9836609 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2417002-rust-scientific-macro/fedora-rawhide-x86_64/09836609-rust-scientific-macro/fedora-review/review.txt Found issues: - License file LICENSE is not marked as %license Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/#_license_text 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.
Originally, I added the License(+changelog, +readme) fields into the spec file. However, rpmbuild exited with the following warning: RPM build warnings: File listed twice: /usr/share/cargo/registry/scientific-macro-0.5.2/Changelog.md File listed twice: /usr/share/cargo/registry/scientific-macro-0.5.2/LICENSE File listed twice: /usr/share/cargo/registry/scientific-macro-0.5.2/README.md I will add back these files and trigger the build again.
[fedora-review-service-build]
Created attachment 2116186 [details] The .spec file difference from Copr build 9836609 to 9836669
Copr build: https://copr.fedorainfracloud.org/coprs/build/9836669 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2417002-rust-scientific-macro/fedora-rawhide-x86_64/09836669-rust-scientific-macro/fedora-review/review.txt Please take a look if any issues were found. --- 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.
Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated Issues: ======= - Harmless: Package contains duplicates in %files section. Note: Three files are listed twice in the rust-scientific-macro-devel %files section: - LICENSE (line 34 via %license and line 37 via directory) - Changelog.md (line 35 via %doc and line 37 via directory) - README.md (line 36 via %doc and line 37 via directory) RPM build warning shows: File listed twice: /usr/share/cargo/registry/scientific-macro-0.5.2/Changelog.md File listed twice: /usr/share/cargo/registry/scientific-macro-0.5.2/LICENSE File listed twice: /usr/share/cargo/registry/scientific-macro-0.5.2/README.md This is harmless and does not affect package functionality. RPM handles this correctly and includes each file only once in the final package. Optional cleanup for rust-scientific-macro.spec: The standard pattern for Rust -devel source packages is to use only the directory directive. Lines 34-36 could be removed, keeping only: %files devel %{crate_instdir}/ See: https://docs.fedoraproject.org/en-US/packaging-guidelines/#_duplicate_files ===== MUST items ===== Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. Note: MIT License verified in LICENSE file with proper copyright notice (Copyright (c) 2021 ALeX Kazik). [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Unknown or generated", "MIT License". The 7 files with "unknown license" are build/config files (Cargo.toml, .cargo_vcs_info.json, etc.) which is normal and expected for Rust crates. Source code files (lib.rs, parser.rs) are properly licensed under MIT. [x]: License file installed when any subpackage combination is installed. Note: LICENSE file is included in the package. [x]: %build honors applicable compiler flags or justifies otherwise. Note: Uses %cargo_build macro which properly handles compiler flags. [x]: Package contains no bundled libraries without FPC exception. Note: Standard Rust dependencies (proc-macro2, quote, syn) are properly declared as BuildRequires and not bundled. [x]: Changelog in prescribed format. Note: Uses %autochangelog macro which follows Fedora guidelines. [x]: Sources contain only permissible code or content. Note: Reviewed lib.rs and parser.rs - standard procedural macro code for scientific notation parsing. No security concerns or malware detected. [-]: Package contains desktop file if it is a GUI application. Note: Not a GUI application - this is a Rust procedural macro library. [x]: Development files must be in a -devel package Note: Properly structured with rust-scientific-macro-devel and rust-scientific-macro+default-devel subpackages. [x]: Package uses nothing in %doc for runtime. Note: Documentation files are not required for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). Note: Proper use of %{crate_instdir}, %{crate}, %autorelease, etc. [x]: Package is named according to the Package Naming Guidelines. Note: Follows Rust packaging guidelines (rust-<crate-name> format). [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. Note: Files installed to /usr/share/cargo/registry/ per Rust guidelines. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. Note: Not a renamed package. [x]: Requires correct, justified where necessary. Note: Dependencies on crate(proc-macro2/default) >= 1.0.60, crate(quote/default) >= 1.0.0, and crate(syn) >= 2.0.0 with appropriate version ranges are correct for a procedural macro crate. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. Note: Library package, no systemd files needed. [x]: Package is not known to require an ExcludeArch tag. [x]: Package complies to the Packaging Guidelines [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. Note: Built successfully in mock for fedora-rawhide-x86_64 and locally for fc42. [x]: Package installs properly. [x]: Rpmlint is run on all rpms the build produces. Note: No rpmlint errors or warnings (0 errors, 0 warnings). [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. Note: LICENSE file is included in the package. [x]: The License field must be a valid SPDX expression. Note: "MIT" is a valid SPDX identifier. [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]: Dist tag is present. Note: Uses %autorelease which includes dist tag. [x]: Package does not contain duplicates in %files. Note: While the spec lists some files twice (via explicit directives and directory inclusion), this is harmless. RPM handles this correctly and includes each file only once in the final package. [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. Note: Uses %cargo_install macro appropriately. [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. Note: SHA256 checksums match exactly: d2ee4885492bb655bfa05d039cd9163eb8fe9f79ddebf00ca23a1637510c2fd2 [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 minimal (README.md 150 bytes, Changelog.md 226 bytes). [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. Note: LICENSE file is included from upstream. [x]: Final provides and requires are sane (see attachments). Note: Provides crate(scientific-macro) and crate(scientific-macro/default). Requires standard proc-macro dependencies (proc-macro2, quote, syn). All appropriate and correctly versioned. [-]: Fully versioned dependency in subpackages if applicable. Note: For Rust packages, the crate() provides/requires system handles versioning. The %{name}%{?_isa} = %{version}-%{release} pattern is not applicable for noarch Rust -devel packages. [x]: Package functions as described. Note: Procedural macro for scientific notation parsing, companion to the scientific crate. Provides Scientific!() macro for creating compile-time constant arbitrary precision scientific numbers. [x]: Latest version is packaged. Note: Version 0.5.2 confirmed as latest on docs.rs and crates.io (released 2023-11-15). [x]: Package does not include license text files separate from upstream. Note: LICENSE file is from upstream tarball. [-]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. Note: Crates.io does not publish GPG signatures. Checksum verification via SHA256 is the standard verification method for Rust crates and is performed automatically by %cargo_prep. [x]: Package should compile and build into binary rpms on all supported architectures. Note: noarch package, builds on all architectures. [x]: %check is present and all tests pass. Note: Spec includes %bcond check 1 and %cargo_test in %check section. Tests include parser validation for scientific notation. [?]: Packages should try to preserve timestamps of original installed files. Note: Standard cargo macros handle file installation. [x]: Reviewer should test that the package builds in mock. Note: Successfully built locally in mock environment. [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 Note: Uses %{crates_source} macro pointing to crates.io. [x]: SourceX is a working URL. Note: https://crates.io/api/v1/crates/scientific-macro/0.5.2/download [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [x]: Rpmlint is run on all installed packages. Note: No rpmlint errors or warnings (0 errors, 0 warnings). [x]: Spec file according to URL is the same as in SRPM. Rpmlint ------- Checking: rust-scientific-macro-devel-0.5.2-1.fc42.noarch.rpm rust-scientific-macro+default-devel-0.5.2-1.fc42.noarch.rpm rust-scientific-macro-0.5.2-1.fc42.src.rpm 3 packages and 0 specfiles checked; 0 errors, 0 warnings, 13 filtered, 0 badness Source checksums ---------------- https://crates.io/api/v1/crates/scientific-macro/0.5.2/download#/scientific-macro-0.5.2.crate : CHECKSUM(SHA256) this package : d2ee4885492bb655bfa05d039cd9163eb8fe9f79ddebf00ca23a1637510c2fd2 CHECKSUM(SHA256) upstream package : d2ee4885492bb655bfa05d039cd9163eb8fe9f79ddebf00ca23a1637510c2fd2 Requires -------- rust-scientific-macro-devel (rpmlib, GLIBC filtered): (crate(proc-macro2/default) >= 1.0.60 with crate(proc-macro2/default) < 2.0.0~) (crate(quote/default) >= 1.0.0 with crate(quote/default) < 2.0.0~) (crate(syn) >= 2.0.0 with crate(syn) < 3.0.0~) (crate(syn/parsing) >= 2.0.0 with crate(syn/parsing) < 3.0.0~) (crate(syn/proc-macro) >= 2.0.0 with crate(syn/proc-macro) < 3.0.0~) cargo rust rust-scientific-macro+default-devel (rpmlib, GLIBC filtered): cargo crate(scientific-macro) Provides -------- rust-scientific-macro-devel: crate(scientific-macro) rust-scientific-macro-devel rust-scientific-macro+default-devel: crate(scientific-macro/default) rust-scientific-macro+default-devel Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24 Buildroot used: fedora-rawhide-x86_64 ===== APPROVAL ===== This package is APPROVED, thank you. The duplicate files listing in %files is harmless and does not affect functionality. All MUST items pass, and the package meets Fedora packaging guidelines.
The Pagure repository was created at https://src.fedoraproject.org/rpms/rust-scientific-macro
FEDORA-2025-7f55d6013e (rust-scientific-macro-0.5.2-1.fc44) has been submitted as an update to Fedora 44. https://bodhi.fedoraproject.org/updates/FEDORA-2025-7f55d6013e
FEDORA-2025-7f55d6013e (rust-scientific-macro-0.5.2-1.fc44) has been pushed to the Fedora 44 stable repository. If problem still persists, please make note of it in this bug report.
> Optional cleanup for rust-scientific-macro.spec: > The standard pattern for Rust -devel source packages is to use only the > directory directive. Lines 34-36 could be removed, keeping only: > > %files devel > %{crate_instdir}/ No, this isn't true. The way it is generated by rust2rpm is correct (i.e. also marking files as %license and %doc). So the spec file that was imported is correct (i.e. *with* lines 34-36).
(In reply to Fabio Valentini from comment #10) > > Optional cleanup for rust-scientific-macro.spec: > > The standard pattern for Rust -devel source packages is to use only the > > directory directive. Lines 34-36 could be removed, keeping only: > > > > %files devel > > %{crate_instdir}/ > > No, this isn't true. The way it is generated by rust2rpm is correct (i.e. > also marking files as %license and %doc). So the spec file that was imported > is correct (i.e. *with* lines 34-36). Thanks for the correction, I will have this in mind for the future.