https://bugzilla.redhat.com/show_bug.cgi?id=2087143
Bug ID: 2087143 Summary: Review Request: python-robotframework - Generic automation framework for acceptance testing and RPA Product: Fedora Version: rawhide Hardware: All OS: Linux Status: NEW Component: Package Review Severity: medium Assignee: nobody@fedoraproject.org Reporter: fede@evolware.org QA Contact: extras-qa@fedoraproject.org CC: package-review@lists.fedoraproject.org Target Milestone: --- Classification: Fedora
Spec URL: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt... SRPM URL: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt... Description: Robot Framework is a generic open source automation framework for acceptance testing, acceptance test driven development (ATDD), and robotic process automation (RPA). It has simple plain text syntax and it can be extended easily with libraries implemented using Python or Java.}
Fedora Account System Username: fedepell
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
fedepell fede@evolware.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Comment|0 |updated
--- Comment #0 has been edited ---
Spec URL: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt... SRPM URL: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt... Description: Robot Framework is a generic open source automation framework for acceptance testing, acceptance test driven development (ATDD), and robotic process automation (RPA). It has simple plain text syntax and it can be extended easily with libraries implemented using Python or Java.}
Fedora Account System Username: fedepell
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #1 from fedepell fede@evolware.org --- Just a minor update: with Rawhide unit tests were broken due to Python 3.11 changes. Applied a fix (from upstream) to fix this in 5.0.1-3.
Spec URL stays the same: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt... SRPM URL for FC35: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt...
Latest COPR run for all current versions: https://copr.fedorainfracloud.org/coprs/fedepell/Miscrpms/build/4704373/
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
Jakub Kadlčík jkadlcik@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Doc Type|--- |If docs needed, set a value CC| |jkadlcik@redhat.com
--- Comment #2 from Jakub Kadlčík jkadlcik@redhat.com --- Hello fedepell, thank you for the package.
Overall it looks very good.
Spec URL stays the same: ... SRPM URL for FC35: ...
The links need to point directly to the raw file or file download. In the case of the spec, you want to go to the link you posted, click the "Raw" button, and use that URL. For the SRPM, you want to "Copy link address" for the "Download" button and use that.
There are tools that we use for the review, that download those files, so they need direct links.
Patch0: 0001-Patch_tests_with_Python_3_11.patch
Is there any upstream pull request with this patch? If yes, can you please add a link here as a comment above the patch? Otherwise, can you please submit the PR?
Then we will easily know when we can drop the patch from the package.
%global _description %{expand:
According to the packaging guidelines https://docs.fedoraproject.org/en-US/packaging-guidelines/#_summary_and_desc... the description lines should be no longer than 80 characters. Can you please re-wrap them?
%{_bindir}/*
Can you please be more specific, instead of using wildcard here?
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
Jakub Kadlčík jkadlcik@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags| |fedora-review? Assignee|nobody@fedoraproject.org |jkadlcik@redhat.com
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #3 from fedepell fede@evolware.org ---
Hello Jakub, Many thanks for reviewing the proposed package!
(In reply to Jakub Kadlčík from comment #2)
Spec URL stays the same: ... SRPM URL for FC35: ...
The links need to point directly to the raw file or file download. In the case of the spec, you want to go to the link you posted, click the "Raw" button, and use that URL. For the SRPM, you want to "Copy link address" for the "Download" button and use that.
Ok, clear!
Updated links (after applying the proposed changes):
Spec file URL: https://raw.githubusercontent.com/fedepell/rpms-specs/master/python/robotfra... SRPM URL for FC36: https://github.com/fedepell/rpms-specs/raw/master/python/robotframework/pyth...
Patch0: 0001-Patch_tests_with_Python_3_11.patch
Is there any upstream pull request with this patch? If yes, can you please add a link here as a comment above the patch? Otherwise, can you please submit the PR?
Yes, correct it is a patch from upstream. I've added this information inside the patch itself (so short description and link). Most likely indeed (noted also in the patch) it can be removed with next upstream release.
%global _description %{expand:
According to the packaging guidelines https://docs.fedoraproject.org/en-US/packaging-guidelines/ #_summary_and_description the description lines should be no longer than 80 characters. Can you please re-wrap them?
Done!
%{_bindir}/*
Can you please be more specific, instead of using wildcard here?
Done, adding explicitly the three needed files.
Hope it looks in better shape now! :)
I've also rerun it via copr: https://copr.fedorainfracloud.org/coprs/fedepell/Miscrpms/build/4876539/
Thanks again for the review! Federico
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #4 from Jakub Kadlčík jkadlcik@redhat.com --- Thank you for the changes,
I've added this information inside the patch itself (so short description and link).
I downloaded and extracted the new SRPM and I can't see any link in the patch. Maybe you somehow built the new SRPM using the old patch?
Anyhow, I think it is a better idea to put the link into the spec file itself. Simply, like this:
# https://github.com/robotframework/robotframework/pull/123456 Patch0: 0001-Patch_tests_with_Python_3_11.patch
python3-robotframework.noarch: W: no-manual-page-for-binary libdoc python3-robotframework.noarch: W: no-manual-page-for-binary rebot python3-robotframework.noarch: W: no-manual-page-for-binary robot
It would be nice to have manpages for these programs but I won't block the package review because of it. Just keep in mind, that you can ask the upstream, and eventually add them in the future.
%{_bindir}/{robot,rebot,libdoc}
I think we don't need to install the libdoc script? From what I understand, it is for generating documentation. Or is it used by the end users?
*No copyright* MIT License
robotframework-5.0.1/src/robot/htmldata/rebot/log.css
MIT License
robotframework-5.0.1/src/robot/htmldata/lib/jquery.highlight.min.js robotframework-5.0.1/src/robot/htmldata/lib/jquery.tmpl.min.js robotframework-5.0.1/utest/webcontent/jasmine-1.0.2/MIT.LICENSE
Except for ASL 2.0, I also found these two licenses. I am not familiar with the upstream project, so it's up to you - Do we even want these files installed? Are they for the program itself or just some kind of documentation? If we want them, I think we need to update the License field, to ASL 2.0 AND MIT. Also, since jquery is bundled library, I think we need to add something like this (replace 123 with the actual jquery version that is found in the code).
Provides: bundled(jquery) = 123
And it will need to be done for all the libraries in htmldata/lib/ directory. Please see bundling guidelines https://docs.fedoraproject.org/en-US/packaging-guidelines/#bundling
python3-robotframework.noarch: W: invalid-license ASL 2.0
I think that it is now required to use the SPDX license names. So instead of ASL 2.0 it would be Apache-2.0
When you go to the allowed licenses list https://docs.fedoraproject.org/en-US/legal/allowed-licenses/ you can search for ASL 2.0 and the row contains the SPDX name.
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
Jakub Kadlčík jkadlcik@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #5 from fedepell fede@evolware.org ---
Hello Jakub, Thanks again for the review!
(In reply to Jakub Kadlčík from comment #4)
I downloaded and extracted the new SRPM and I can't see any link in the patch. Maybe you somehow built the new SRPM using the old patch?
Anyhow, I think it is a better idea to put the link into the spec file itself. Simply, like this:
# https://github.com/robotframework/robotframework/pull/123456 Patch0: 0001-Patch_tests_with_Python_3_11.patch
Apologies, that was my stupid mistake where I was testing the RPM. The patch file is now fixed, but added also in the spec the reference to the issue to make it easier!
python3-robotframework.noarch: W: no-manual-page-for-binary libdoc python3-robotframework.noarch: W: no-manual-page-for-binary rebot python3-robotframework.noarch: W: no-manual-page-for-binary robot
It would be nice to have manpages for these programs but I won't block the package review because of it. Just keep in mind, that you can ask the upstream, and eventually add them in the future.
I double checked if I forgot them, but indeed there are not there. Indeed man pages would be handy, but my impression is that it's not often the norm to have them with Python programs/packages (ie. I've given a brief look to a bunch of well known Python packages which have as well a program invocation, but most of them lack a man page indeed (just to give some names: pytest, spyder, shiboken2, pylint). I can try to give a look and see what could they think upstream :)
%{_bindir}/{robot,rebot,libdoc}
I think we don't need to install the libdoc script? From what I understand, it is for generating documentation. Or is it used by the end users?
I would say it is useful to give, since if the end user writes a Robot Framework library or resource file (which may very likely is the case if the user is preparing a slightly complicated test suite), then the user can use libdoc then to convert to HTML or other output to "document" the written test suite. Likely could be viewed as a useful add-on, but maybe not worth to have it split from remainder of Robot Framework?
MIT License
robotframework-5.0.1/src/robot/htmldata/lib/jquery.highlight.min.js robotframework-5.0.1/src/robot/htmldata/lib/jquery.tmpl.min.js robotframework-5.0.1/utest/webcontent/jasmine-1.0.2/MIT.LICENSE
Except for ASL 2.0, I also found these two licenses. I am not familiar with the upstream project, so it's up to you - Do we even want these files installed? Are they for the program itself or just some kind of documentation? If we want them, I think we need to update
I've checked in detail, and those are in the source file just if the HTML Documentation is done (the first two, as then the generated documentation uses jquery) and for unit testing (last one). These are then not delivered in the RPM, the documentation is right now delivered only as RST (which for some parts just references the HTML on the package web site). If we keep it like this (so doc delivered just as RST, leaving the whole "manual" for online usage) my understanding is that therefore we wouldn't need to change the licensing and take care of the bundling. Does this sound correct? Or even if it is just part of the original source package (in which case indeed I have to add MIT)?
Of course the question may be: should we better deliver also the full HTML docs? I've given a look at a series of other Python packages (like the ones mentioned before) and saw a mixed usage: some just with RST, some HTML converted (which usually bring jquery or the like). Most of them are in the first category.
What do you think?
python3-robotframework.noarch: W: invalid-license ASL 2.0
I think that it is now required to use the SPDX license names. So instead of ASL 2.0 it would be Apache-2.0
Fixed that, thanks!
New links: Spec file as before: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt... SRPM: https://github.com/fedepell/rpms-specs/raw/master/python/robotframework/pyth...
Many thanks again! Federico
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #6 from Jakub Kadlčík jkadlcik@redhat.com ---
I would say it is useful to give
Let's keep it then :-)
Likely could be viewed as a useful add-on, but maybe not worth to
have it split from remainder of Robot Framework?
I think it is not necessary. Let's keep it within the main package. In the future, if there is a need for separating it into a subpackage, it can be done then.
These are then not delivered in the RPM
This IMHO isn't true. Check this out:
[root@14bd960974e7 /]# rpm -ql python3-robotframework |grep htmldata/lib/
/usr/lib/python3.10/site-packages/robot/htmldata/lib/jquery.highlight.min.js /usr/lib/python3.10/site-packages/robot/htmldata/lib/jquery.min.js
/usr/lib/python3.10/site-packages/robot/htmldata/lib/jquery.tablesorter.min.js /usr/lib/python3.10/site-packages/robot/htmldata/lib/jquery.tmpl.min.js /usr/lib/python3.10/site-packages/robot/htmldata/lib/jsxcompressor.min.js
Of course the question may be: should we better deliver also the full HTML docs?
Whatever option you prefer, you will be the one maintaining it :-) Personally, I don't ship HTML docs for my packages.
If you decide to ship the HTML documentation, it should IMHO go into a subpackage. https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/#_documenta...
Spec file as before: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt...
The raw file ... ;-)
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #7 from fedepell fede@evolware.org ---
Hello Jakub! Once more: thanks again for your great help and time spent on the review! :)
(In reply to Jakub Kadlčík from comment #6)
These are then not delivered in the RPM
This IMHO isn't true. Check this out: /usr/lib/python3.10/site-packages/robot/htmldata/lib/jquery.highlight.min.js
You are of course right :) I was confusing two things: robot HTML documentation, which the package is not delivering (and would keep not to as per other comments), and the minimal libraries it delivers to display the generated HTML reports (when HTML reports are generated). This jquery is indeed in the second one as well!
I therefore added now licensing + bundled as suggested before! Hope it looks fine! I'm a bit unsure, although I've tried to reread a couple of times the bundling naming indications, if the naming I choose sound reasonable, as there seem to be some freedom left for those.
Spec file as before: https://github.com/fedepell/rpms-specs/blob/master/python/robotframework/pyt...
The raw file ... ;-)
Hope I can get it right this time! :D (sorry!)
Spec: https://raw.githubusercontent.com/fedepell/rpms-specs/master/python/robotfra... SRPM: https://github.com/fedepell/rpms-specs/raw/master/python/robotframework/pyth...
Cheers, Federico
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #8 from Jakub Kadlčík jkadlcik@redhat.com ---
Hope it looks fine! I'm a bit unsure, although I've tried to reread a couple of times the bundling naming indications, if the naming I choose sound reasonable, as there seem to be some freedom left for those.
I know what you mean, I have the same issue :-) But the lines you added to the spec look good to me.
Hope I can get it right this time! :D (sorry!)
Perfect! :-)
Package Review ==============
Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed
===== MUST items =====
Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Unknown or generated", "Apache License 2.0", "*No copyright* Apache License 2.0", "*No copyright* Apache License", "*No copyright* Creative Commons Attribution 3.0", "Public domain", "MIT License", "*No copyright* MIT License", "MIT License Apache License 2.0". 1954 files have unknown license. Detailed output of licensecheck in /home/jkadlcik/2087143-python-robotframework/licensecheck.txt [x]: If the package is under multiple licenses, the licensing breakdown must be documented in the spec. [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. [-]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package is named according to the Package Naming Guidelines. [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. [-]: If the package is a rename of another package, proper Obsoletes and Provides are present. [x]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [x]: Package is not known to require an ExcludeArch tag. [-]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 51200 bytes in 4 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]: Dist tag is present. [x]: Package does not contain duplicates in %files. [x]: Permissions on files are set properly. [x]: Package must not depend on deprecated() packages. [x]: Package use %makeinstall only when make install DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [x]: Package does not use a name that already exists. [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: File names are valid UTF-8. [x]: Packages must not store files under /srv, /opt or /usr/local
Python: [x]: Python eggs must not download any dependencies during the build process. [x]: A package which is used by another package via an egg interface should provide egg info. [x]: Package meets the Packaging Guidelines::Python [x]: Package contains BR: python2-devel or python3-devel [x]: Packages MUST NOT have dependencies (either build-time or runtime) on packages named with the unversioned python- prefix unless no properly versioned package exists. Dependencies on Python packages instead MUST use names beginning with python2- or python3- as appropriate. [x]: Python packages must not contain %{pythonX_site(lib|arch)}/* in %files [x]: Binary eggs must be removed in %prep
===== 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]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. [?]: Sources are verified with gpgverify first in %prep if upstream publishes signatures. Note: gpgverify is not used. [?]: Package should compile and build into binary rpms on all supported architectures. [x]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [x]: Reviewer should test that the package builds in mock. [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified.
===== EXTRA items =====
Generic: [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). [x]: Spec file according to URL is the same as in SRPM.
Rpmlint ------- Cannot parse rpmlint output:
Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ rpmlint: 2.2.0 configuration: /usr/lib/python3.11/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/licenses.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 32, packages: 1
python3-robotframework.noarch: E: non-executable-script /usr/lib/python3.11/site-packages/robot/__main__.py 644 /usr/bin/env python python3-robotframework.noarch: E: non-executable-script /usr/lib/python3.11/site-packages/robot/libdoc.py 644 /usr/bin/env python python3-robotframework.noarch: E: non-executable-script /usr/lib/python3.11/site-packages/robot/rebot.py 644 /usr/bin/env python python3-robotframework.noarch: E: non-executable-script /usr/lib/python3.11/site-packages/robot/run.py 644 /usr/bin/env python python3-robotframework.noarch: E: non-executable-script /usr/lib/python3.11/site-packages/robot/testdoc.py 644 /usr/bin/env python python3-robotframework.noarch: W: no-manual-page-for-binary libdoc python3-robotframework.noarch: W: no-manual-page-for-binary rebot python3-robotframework.noarch: W: no-manual-page-for-binary robot 1 packages and 0 specfiles checked; 5 errors, 3 warnings, 5 badness; has taken 0.1 s
Source checksums ---------------- https://github.com/robotframework/robotframework/archive/refs/tags/v5.0.1.ta... : CHECKSUM(SHA256) this package : 93a9a7504738d7493994c3a7f4f13b4591beb746a26cb141afdb0435909b9c81 CHECKSUM(SHA256) upstream package : 93a9a7504738d7493994c3a7f4f13b4591beb746a26cb141afdb0435909b9c81
Requires -------- python3-robotframework (rpmlib, GLIBC filtered): /usr/bin/python3 python(abi)
Provides -------- python3-robotframework: bundled(jquery) bundled(jquery-highlight) bundled(jquery-tablesorter) bundled(jquery-templates) bundled(jsxcompressor) python-robotframework python3-robotframework python3.11-robotframework python3.11dist(robotframework) python3dist(robotframework)
Generated by fedora-review 0.9.0 (6761b6c) last change: 2022-08-23 Command line :/usr/bin/fedora-review -b 2087143 Buildroot used: fedora-rawhide-x86_64 Active plugins: Python, Shell-api, Generic Disabled plugins: C/C++, fonts, Haskell, Ocaml, SugarActivity, PHP, Perl, Java, R Disabled flags: EPEL6, EPEL7, DISTTAG, BATCH, EXARCH
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #9 from Jakub Kadlčík jkadlcik@redhat.com --- Since this would be your first Fedora package, you will need to get sponsored into the `packager' group before this package can be accepted.
I would like to sponsor you.
That would make it my responsibility to guide you through the processes that you will do, and the tools that you will need as a package maintainer. I would also be there to answer your packaging-related questions, or to help you find somebody who knows the answers.
Your responsibilities as a package maintainer are explained here https://docs.fedoraproject.org/en-US/fesco/Package_maintainer_responsibiliti...
To make sure a person is able to fulfill the package maintainer responsibilities, we usually stick to this process https://docs.fedoraproject.org/en-US/fesco/Packager_sponsor_policy/#requirem...
I am sending you an email with some follow-up information and my contact information. But for the sake of full transparency, there are also other packager sponsors and you can reach out to them if you prefer to do so. They might be busy though. https://docs.pagure.org/fedora-sponsors/active
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
Jakub Kadlčík jkadlcik@redhat.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Flags|fedora-review? |fedora-review+
https://bugzilla.redhat.com/show_bug.cgi?id=2087143
--- Comment #10 from Gwyn Ciesla gwync@protonmail.com --- (fedscm-admin): The Pagure repository was created at https://src.fedoraproject.org/rpms/python-robotframework
package-review@lists.fedoraproject.org