Spec URL: https://src.fedoraproject.org/fork/allhailwesttexas/rpms/python-eventlet/raw/for-bugzilla/f/python-eventlet.spec SRPM URL: https://src.fedoraproject.org/fork/allhailwesttexas/rpms/python-eventlet/blob/for-bugzilla/f/python-eventlet-0.40.0-1.fc43.src.rpm Description: Eventlet is a networking library written in Python. It achieves high scalability by using non-blocking io while at the same time retaining high programmer usability by using coroutines to make the non-blocking io operations appear blocking at the source code level. Fedora Account System Username: allhailwesttexas
The ticket summary is not in the correct format. Expected: Review Request: <main package name here> - <short summary here> Found: Review request: python-eventlet - orphaned package As a consequence, the package name cannot be parsed and submitted to be automatically build. Please modify the ticket summary and trigger a build by typing [fedora-review-service-build]. --- 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.
[fedora-review-service-build]
Copr build: https://copr.fedorainfracloud.org/coprs/build/8801320 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2354054-python-eventlet/fedora-rawhide-x86_64/08801320-python-eventlet/fedora-review/review.txt Found issues: - A package with this name already exists. Please check https://src.fedoraproject.org/rpms/python-eventlet Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/#_conflicting_package_names 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 review notes: > # RHEL9 doesn't have nose, and it won't be added to EPEL9 because it's > # abandoned upstream (and deprecated in Fedora). > # https://bugzilla.redhat.com/show_bug.cgi?id=2041068 > %if %{undefined el9} > %bcond_without tests > %endif You should probably port this away from nose first. The tests *need* to work since eventlet is so sensitive.
(In reply to Neal Gompa from comment #4) > Spec review notes: > > > # RHEL9 doesn't have nose, and it won't be added to EPEL9 because it's > > # abandoned upstream (and deprecated in Fedora). > > # https://bugzilla.redhat.com/show_bug.cgi?id=2041068 > > %if %{undefined el9} > > %bcond_without tests > > %endif > > You should probably port this away from nose first. The tests *need* to work > since eventlet is so sensitive. This is an outdated clause, nose was already dropped as a test runner in 2023: https://github.com/eventlet/eventlet/commit/1c2fb7a202b25d119064976752696ed76f7562c3 - It seems harmless to leave, but I can remove this clause as part of the next release.
Note that the linke spec file is not the raw file, so it grabs html causing fedora-review to fail. Please fix the files and test using fedora-review -b 235054 mock build fails, see https://kojipkgs.fedoraproject.org//work/tasks/5945/131975945/build.log =================================== FAILURES =================================== ____________________________ SSLTest.test_ssl_close ____________________________ self = <tests.ssl_test.SSLTest testMethod=test_ssl_close> def test_ssl_close(self): def serve(listener): sock, addr = listener.accept() sock.recv(8192) try: self.assertEqual(b'', sock.recv(8192)) except greenio.SSL.ZeroReturnError: pass sock = listen_ssl_socket() server_coro = eventlet.spawn(serve, sock) raw_client = eventlet.connect(sock.getsockname()) client = ssl.wrap_socket(raw_client) client.sendall(b'X') greenio.shutdown_safe(client) client.close() > server_coro.wait() tests/ssl_test.py:95: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ eventlet/greenthread.py:232: in wait return self._exit_event.wait() eventlet/event.py:124: in wait result = hub.switch() eventlet/hubs/hub.py:310: in switch return self.greenlet.switch() eventlet/greenthread.py:272: in main result = function(*args, **kwargs) tests/ssl_test.py:82: in serve self.assertEqual(b'', sock.recv(8192)) eventlet/green/ssl.py:255: in recv return self._base_recv(buflen, flags, into=False) eventlet/green/ssl.py:282: in _base_recv read = self.read(nbytes) eventlet/green/ssl.py:196: in read return self._call_trampolining( eventlet/green/ssl.py:166: in _call_trampolining return func(*a, **kw) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <eventlet.green.ssl.GreenSSLSocket fd=23, family=2, type=1, proto=0, laddr=('127.0.0.1', 54805)> len = 8192, buffer = None def read(self, len=1024, buffer=None): """Read up to LEN bytes and return them. Return zero-length string on EOF.""" self._checkClosed() if self._sslobj is None: raise ValueError("Read on closed or unwrapped SSL socket.") try: if buffer is not None: return self._sslobj.read(len, buffer) else: > return self._sslobj.read(len) E BrokenPipeError: [Errno 32] Broken pipe /usr/lib64/python3.13/ssl.py:1140: BrokenPipeError ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File "/builddir/build/BUILD/python-eventlet-0.39.1-build/eventlet-0.39.1/eventlet/hubs/poll.py", line 111, in wait listener.cb(fileno) ~~~~~~~~~~~^^^^^^^^ File "/builddir/build/BUILD/python-eventlet-0.39.1-build/eventlet-0.39.1/eventlet/greenthread.py", line 272, in main result = function(*args, **kwargs) File "/builddir/build/BUILD/python-eventlet-0.39.1-build/eventlet-0.39.1/tests/ssl_test.py", line 82, in serve self.assertEqual(b'', sock.recv(8192)) ~~~~~~~~~^^^^^^ File "/builddir/build/BUILD/python-eventlet-0.39.1-build/eventlet-0.39.1/eventlet/green/ssl.py", line 255, in recv return self._base_recv(buflen, flags, into=False) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/python-eventlet-0.39.1-build/eventlet-0.39.1/eventlet/green/ssl.py", line 282, in _base_recv read = self.read(nbytes) File "/builddir/build/BUILD/python-eventlet-0.39.1-build/eventlet-0.39.1/eventlet/green/ssl.py", line 196, in read return self._call_trampolining( ~~~~~~~~~~~~~~~~~~~~~~~^ super().read, len, buffer) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/builddir/build/BUILD/python-eventlet-0.39.1-build/eventlet-0.39.1/eventlet/green/ssl.py", line 166, in _call_trampolining return func(*a, **kw) File "/usr/lib64/python3.13/ssl.py", line 1140, in read return self._sslobj.read(len) ~~~~~~~~~~~~~~~~~^^^^^ BrokenPipeError: [Errno 32] Broken pipe Removing descriptor: 23
It might be fixed by https://github.com/eventlet/eventlet/pull/1034
Created attachment 2089599 [details] The .spec file difference from Copr build 8801320 to 9026269
Copr build: https://copr.fedorainfracloud.org/coprs/build/9026269 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2354054-python-eventlet/fedora-rawhide-x86_64/09026269-python-eventlet/fedora-review/review.txt Found issues: - A package with this name already exists. Please check https://src.fedoraproject.org/rpms/python-eventlet Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/#_conflicting_package_names 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.
Some minor fixes needed, one is to package 0.40.0 and one is to fix the spec file / srpm spec file mismatch in %tox. This should not take much effort to make pass. Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - Latest version not packaged 0.40.0 just got released and fixes some things we had patches for :) - spec file in srpm was not the same as spec file at the url in rhbz There is a diff in the %tox line with the "and not test_send_timeout" argument - Package does not use a name that already exists. Note: A package with this name already exists. Please check https://src.fedoraproject.org/rpms/python-eventlet See: https://docs.fedoraproject.org/en-US/packaging- guidelines/Naming/#_conflicting_package_names Note1: This is expected as it is an "unretire" operation Note2: Probably migrating to autochangelog would be good on un-retirement ===== MUST items ===== Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Unknown or generated", "MIT License", "*No copyright* MIT License", "Apache License 2.0", "BSD 2-Clause License", "BSD 3-Clause License", "Python Software Foundation License 2.0". 284 files have unknown license. Detailed output of licensecheck in /home/paul/2354054-python-eventlet/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib/python3.13, /usr/lib/python3.13/site-packages [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 58168 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]: The License field must be a valid SPDX expression. [x]: Package requires other packages for directories it uses. [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 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: [-]: Python eggs must not download any dependencies during the build process. [-]: 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]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in python3-eventlet Note: not needed for noarch package. [x]: Package functions as described. [!]: Latest version is packaged. 0.40.0 just got released and fixes some things we had patches for. [x]: Package does not include license text files separate from upstream. [x]: Patches link to upstream bugs/comments/lists or are otherwise justified. Note: for 0.40.0, the patch can be removed. [-]: 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: [!]: Spec file according to URL is the same as in SRPM. Note: Spec file as given by url is not the same as in SRPM (see attached diff). See: (this test has no URL) [x]: Rpmlint is run on all installed packages. Note: There are rpmlint messages (see attachment). Rpmlint ------- Checking: python3-eventlet-0.39.1-1.fc43.noarch.rpm python3-eventlet-doc-0.39.1-1.fc43.noarch.rpm python-eventlet-0.39.1-1.fc43.src.rpm ============================ rpmlint session starts ============================ rpmlint: 2.7.0 configuration: /usr/lib/python3.13/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-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/tmplgbxdf7p')] checks: 32, packages: 3 python-eventlet.src: E: spelling-error ('coroutines', '%description -l en_US coroutines -> co routines, co-routines, croutons') python3-eventlet.noarch: E: spelling-error ('coroutines', '%description -l en_US coroutines -> co routines, co-routines, croutons') python3-eventlet-doc.noarch: W: python-sphinx-doctrees-leftover /usr/share/doc/python3-eventlet-doc/html/.doctrees python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.buildinfo python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.doctrees python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.doctrees 3 packages and 0 specfiles checked; 2 errors, 4 warnings, 13 filtered, 2 badness; has taken 1.5 s Rpmlint (installed packages) ---------------------------- ============================ rpmlint session starts ============================ rpmlint: 2.7.0 configuration: /usr/lib/python3.13/site-packages/rpmlint/configdefaults.toml /etc/xdg/rpmlint/fedora-spdx-licenses.toml /etc/xdg/rpmlint/fedora.toml /etc/xdg/rpmlint/scoring.toml /etc/xdg/rpmlint/users-groups.toml /etc/xdg/rpmlint/warn-on-functions.toml checks: 32, packages: 2 python3-eventlet.noarch: E: spelling-error ('coroutines', '%description -l en_US coroutines -> co routines, co-routines, routines') python3-eventlet-doc.noarch: W: python-sphinx-doctrees-leftover /usr/share/doc/python3-eventlet-doc/html/.doctrees python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.buildinfo python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.doctrees python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.doctrees 2 packages and 0 specfiles checked; 1 errors, 4 warnings, 8 filtered, 1 badness; has taken 0.4 s Source checksums ---------------- https://files.pythonhosted.org/packages/source/e/eventlet/eventlet-0.39.1.tar.gz : CHECKSUM(SHA256) this package : 4a8a6475282d4021edde06ba335228c230b911b8d014577ddb33114c2b0c0510 CHECKSUM(SHA256) upstream package : 4a8a6475282d4021edde06ba335228c230b911b8d014577ddb33114c2b0c0510 Requires -------- python3-eventlet (rpmlib, GLIBC filtered): python(abi) python3.13dist(dnspython) python3.13dist(greenlet) python3-eventlet-doc (rpmlib, GLIBC filtered): Provides -------- python3-eventlet: python-eventlet python3-eventlet python3.13-eventlet python3.13dist(eventlet) python3dist(eventlet) python3-eventlet-doc: python-eventlet-doc python3-eventlet-doc python3.13-eventlet-doc Diff spec file in url and in SRPM --------------------------------- --- /home/paul/2354054-python-eventlet/srpm/python-eventlet.spec 2025-05-15 13:12:32.445441530 -0400 +++ /home/paul/2354054-python-eventlet/srpm-unpacked/python-eventlet.spec 2025-03-20 20:00:00.000000000 -0400 @@ -62,5 +62,5 @@ # Disable setting up dns (we have no /etc/resolv.conf in mock export EVENTLET_NO_GREENDNS=yes -%tox -e %{default_toxenv} -- -- -k 'not test_clear and not test_noraise_dns_tcp and not test_raise_dns_tcp and not test_dns_methods_are_green and not test_fork_after_monkey_patch and not test_send_timeout' +%tox -e %{default_toxenv} -- -- -k 'not test_clear and not test_noraise_dns_tcp and not test_raise_dns_tcp and not test_dns_methods_are_green and not test_fork_after_monkey_patch' %else %pyproject_check_import -t Generated by fedora-review 0.10.0 (e79b66b) last change: 2023-07-24 Command line :/usr/bin/fedora-review -b 2354054 Buildroot used: fedora-rawhide-x86_64 Active plugins: Python, Shell-api, Generic Disabled plugins: C/C++, Haskell, R, PHP, Ocaml, fonts, Perl, SugarActivity, Java Disabled flags: EXARCH, EPEL6, EPEL7, DISTTAG, BATCH
Created attachment 2090148 [details] The .spec file difference from Copr build 9026269 to 9056221
Copr build: https://copr.fedorainfracloud.org/coprs/build/9056221 (succeeded) Review template: https://download.copr.fedorainfracloud.org/results/@fedora-review/fedora-review-2354054-python-eventlet/fedora-rawhide-x86_64/09056221-python-eventlet/fedora-review/review.txt Found issues: - A package with this name already exists. Please check https://src.fedoraproject.org/rpms/python-eventlet Read more: https://docs.fedoraproject.org/en-US/packaging-guidelines/Naming/#_conflicting_package_names 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.
thanks for the fixes. package is APPROVED small note: please fix these when doing the import: python-eventlet.src: E: spelling-error ('coroutines', '%description -l en_US coroutines -> co routines, co-routines, croutons') python3-eventlet.noarch: E: spelling-error ('coroutines', '%description -l en_US coroutines -> co routines, co-routines, croutons') python3-eventlet-doc.noarch: W: python-sphinx-doctrees-leftover /usr/share/doc/python3-eventlet-doc/html/.doctrees python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.buildinfo python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.doctrees python3-eventlet-doc.noarch: W: hidden-file-or-dir /usr/share/doc/python3-eventlet-doc/html/.doctrees
The package BuildRequires coverage and pytest-cov and should, not: https://docs.fedoraproject.org/en-US/packaging-guidelines/Python/#_linters # RHEL9 doesn't have nose, and it won't be added to EPEL9 because it's # abandoned upstream (and deprecated in Fedora). # https://bugzilla.redhat.com/show_bug.cgi?id=2041068 %if %{undefined el9} %bcond_without tests %endif Is this comment still accurate? I don't see nose being used at all. PYTHONPATH="%{buildroot}/%{python3_sitelib}" %tox -e docs Is this PYTHONPATH needed? It does not affect tox (it is not exported) and %tox macro sets PYTHONPATH for itself. # Disable setting up dns (we have no /etc/resolv.conf in mock Missing ) %pyproject_check_import -t Is the -t option necessary?