Bug 1519346 - Review Request: python37 - Version 3.7 of the Python interpreter
Summary: Review Request: python37 - Version 3.7 of the Python interpreter
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: Package Review
Version: rawhide
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Zbigniew Jędrzejewski-Szmek
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-11-30 15:52 UTC by Miro Hrončok
Modified: 2017-12-12 13:43 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-12-12 11:22:08 UTC
Type: ---
Embargoed:
zbyszek: fedora-review+


Attachments (Terms of Use)

Description Miro Hrončok 2017-11-30 15:52:25 UTC
Spec URL: https://src.fedoraproject.org/fork/churchyard/rpms/python3/raw/py37/f/python3.spec
SRPM URL: https://churchyard.fedorapeople.org/SRPMS/python37-3.7.0-0.1.a2.fc28.src.rpm

Description:

This package exists to allow developers to test their code against an newer
version of Python. This is not a full Python stack and if you wish to run
your applications with Python 3.7, update your Fedora to a newer
version once Python 3.7 is stable.

Fedora Account System Username: churchyard

In git: https://src.fedoraproject.org/fork/churchyard/rpms/python3/tree/py37

Koji scratch build: https://koji.fedoraproject.org/koji/taskinfo?taskID=23473822

Comment 1 Zbigniew Jędrzejewski-Szmek 2017-11-30 21:36:03 UTC
.so symlink is deleted. I understand why, but at the same time, this will make it harder to build C extensions for this version. And C extensions is something that people will want to test against the new version too. Not sure what to do about this.

>  %defattr(-,root,root,-)
> %defattr(-,root,root,755)
Not needed.

Since this is essentially a version update from an existing package, I'm only looking at the changes. Licensing and description and all unchanged stuff can be assumed to be OK.

+ package name is OK
+ version is OK (3.7.0-0.1.a2)
+ no conflicts:
  stdlib is in /usr/lib64/python3.7
  include files are in /usr/include/python3.7m/
  and everything else is suffixed with the version.

  /usr/lib/rpm/macros.d/macros.pybytecompile3.7 will be included by rpm (all files in that directory are). But it's currently the same as the one provided by python3.6 and rpm has no issue with duplicated definitions, so this is not a problem.

+ Provides/Requires look OK
+ BuildRequires seem correct
+ installs and functions correctly

Package is APPROVED.

Comment 2 Zbigniew Jędrzejewski-Szmek 2017-12-01 07:26:56 UTC
I fired off a build in mock, and it failed with the following:

test_no_messages_in_queue_after_stop (test.test_logging.QueueListenerTest) ... --- Logging error ---
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/smtplib.py", line 387, in getreply
    line = self.file.readline(_MAXLINE + 1)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/socket.py", line 586, in readinto
    return self._sock.recv_into(b)
socket.timeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/logging/handlers.py", line 1007, in emit
    smtp = smtplib.SMTP(self.mailhost, port, timeout=self.timeout)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/smtplib.py", line 251, in __init__
    (code, msg) = self.connect(host, port)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/smtplib.py", line 338, in connect
    (code, msg) = self.getreply()
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/smtplib.py", line 391, in getreply
    + str(e))
smtplib.SMTPServerDisconnected: Connection unexpectedly closed: timed out
Call stack:
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/regrtest.py", line 50, in <module>
    _main()
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/regrtest.py", line 46, in _main
    main()
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/libregrtest/main.py", line 585, in main
    Regrtest().main(tests=tests, **kwargs)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/libregrtest/main.py", line 510, in main
    self._main(tests, kwargs)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/libregrtest/main.py", line 540, in _main
    self.rerun_failed_tests()
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/libregrtest/main.py", line 291, in rerun_failed_tests
    ok = runtest(self.ns, test)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/libregrtest/runtest.py", line 140, in runtest
    result = runtest_inner(ns, test, display_failure=not ns.verbose)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/libregrtest/runtest.py", line 176, in runtest_inner
    test_runner()
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/support/__init__.py", line 1593, in inner
    return func(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/test_logging.py", line 4505, in test_main
    support.run_unittest(*tests)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/support/__init__.py", line 1936, in run_unittest
    _run_suite(suite)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/support/__init__.py", line 1892, in _run_suite
    result = runner.run(suite)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/unittest/runner.py", line 176, in run
    test(result)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/unittest/suite.py", line 122, in run
    test(result)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/unittest/suite.py", line 84, in __call__
    return self.run(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/unittest/suite.py", line 122, in run
    test(result)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/unittest/case.py", line 680, in __call__
    return self.run(*args, **kwds)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/unittest/case.py", line 632, in run
    testMethod()
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/test_logging.py", line 995, in test_basic
    h.handle(r)
Message: 'Hello ✓'
Arguments: ()
test test_logging failed
ok

======================================================================
FAIL: test_basic (test.test_logging.SMTPHandlerTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/test_logging.py", line 998, in test_basic
    self.assertTrue(self.handled.is_set())
AssertionError: False is not true

----------------------------------------------------------------------
Ran 172 tests in 33.013s

======================================================================
FAIL: test_prlimit (test.test_resource.ResourceTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/support/__init__.py", line 553, in wrapper
    return func(*args, **kw)
  File "/builddir/build/BUILD/Python-3.7.0a2/Lib/test/test_resource.py", line 153, in test_prlimit
    1, resource.RLIMIT_AS)
AssertionError: PermissionError not raised by prlimit

----------------------------------------------------------------------
Ran 11 tests in 0.097s

But it builds in koji, so maybe it's something specific here. Just giving you a heads-up.

Comment 3 Miro Hrončok 2017-12-01 07:30:35 UTC
Thanks. Will try to build C extension before I ship it.

Comment 4 Miro Hrončok 2017-12-01 07:48:07 UTC
The second error only happens in systemd-nspawn mocks.

https://bugs.python.org/issue31132

Comment 5 Miro Hrončok 2017-12-01 07:58:21 UTC
Building C extensions:

[py37t]$ python3.7 -m venv __venv37__
[py37t]$ . __venv37__/bin/activate
(__venv37__) [py37t]$ pip install cython --install-option="--no-cython-compile"
...
Successfully installed cython-0.27.3
(__venv37__) [py37t]$ python setup.py develop
running develop
running egg_info
writing py37t.egg-info/PKG-INFO
writing dependency_links to py37t.egg-info/dependency_links.txt
writing top-level names to py37t.egg-info/top_level.txt
reading manifest file 'py37t.egg-info/SOURCES.txt'
writing manifest file 'py37t.egg-info/SOURCES.txt'
running build_ext
building 'py37t' extension
gcc -pthread -Wno-unused-result -Wsign-compare -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none -fPIC -I/home/churchyard/tmp/py37t/__venv37__/include -I/usr/include/python3.7m -c py37t.c -o build/temp.linux-x86_64-3.7/py37t.o
creating build/lib.linux-x86_64-3.7
gcc -pthread -shared -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -g -flto -fuse-linker-plugin -ffat-lto-objects -flto-partition=none build/temp.linux-x86_64-3.7/py37t.o -L/usr/lib64 -lpython3.7m -o build/lib.linux-x86_64-3.7/py37t.cpython-37m-x86_64-linux-gnu.so
copying build/lib.linux-x86_64-3.7/py37t.cpython-37m-x86_64-linux-gnu.so -> 
Creating /home/churchyard/tmp/py37t/__venv37__/lib/python3.7/site-packages/py37t.egg-link (link to .)
Adding py37t 0.0.0 to easy-install.pth file

Installed /home/churchyard/tmp/py37t
Processing dependencies for py37t==0.0.0
Finished processing dependencies for py37t==0.0.0
(__venv37__) [py37t]$ python
Python 3.7.0a2 (default, Dec  1 2017, 08:47:44) 
[GCC 7.2.1 20170915 (Red Hat 7.2.1-2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import py37t
>>> py37t.py37t()
37
>>> 
(__venv37__) [py37t]$ cat setup.py 
from setuptools import setup
from Cython.Build import cythonize

setup(
    name='py37t',
    ext_modules=cythonize('py37t.pyx', language_level=3),
)
(__venv37__) [py37t]$ cat py37t.pyx 
cpdef int py37t():
    return 37

Comment 6 Zbigniew Jędrzejewski-Szmek 2017-12-01 08:02:59 UTC
Great. I guess that having /usr/lib64/libpython3.7m.so is enough.

Comment 7 Gwyn Ciesla 2017-12-01 12:30:58 UTC
(fedrepo-req-admin):  The Pagure repository was created at https://src.fedoraproject.org/rpms/python37. You may commit to the branch "f27" in about 10 minutes.

Comment 8 Fedora Update System 2017-12-03 11:06:01 UTC
python37-3.7.0-0.1.a2.fc27 has been submitted as an update to Fedora 27. https://bodhi.fedoraproject.org/updates/FEDORA-2017-d3f5db86f9

Comment 9 Fedora Update System 2017-12-03 11:07:04 UTC
python37-3.7.0-0.1.a2.fc26 has been submitted as an update to Fedora 26. https://bodhi.fedoraproject.org/updates/FEDORA-2017-3bc4b69c2e

Comment 10 Fedora Update System 2017-12-03 22:02:21 UTC
python37-3.7.0-0.1.a2.fc27 has been pushed to the Fedora 27 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-d3f5db86f9

Comment 11 Fedora Update System 2017-12-03 22:47:02 UTC
python37-3.7.0-0.1.a2.fc26 has been pushed to the Fedora 26 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2017-3bc4b69c2e

Comment 12 Fedora Update System 2017-12-12 11:22:08 UTC
python37-3.7.0-0.1.a2.fc27 has been pushed to the Fedora 27 stable repository. If problems still persist, please make note of it in this bug report.

Comment 13 Fedora Update System 2017-12-12 13:43:12 UTC
python37-3.7.0-0.1.a2.fc26 has been pushed to the Fedora 26 stable repository. If problems still persist, please make note of it in this bug report.


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