On 09/02/2017 02:05 PM, Michał Górny wrote:
> W dniu sob, 02.09.2017 o godzinie 12∶19 -0700, użytkownik Zac Medico
> napisał:
>> On 09/02/2017 10:46 AM, Michał Górny wrote:
>>> dev-python/pycparser-2.18+ exposes a design flaw in dev-python/ply that
>>> makes it unable to work with -OO code. Remove the optimizations from
>>> Portage shebangs to prevent triggering the issue until we find a proper
>>> solution for it.
>>>
>>> Bug: https://bugs.gentoo.org/628386
>>> ---
>>>  bin/clean_locks   | 2 +-
>>>  bin/dispatch-conf | 2 +-
>>>  bin/ebuild        | 2 +-
>>>  bin/emaint        | 2 +-
>>>  bin/env-update    | 2 +-
>>>  bin/portageq      | 2 +-
>>>  tabcheck.py       | 2 +-
>>>  7 files changed, 7 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/bin/clean_locks b/bin/clean_locks
>>> index 13af06197..fb245972f 100755
>>> --- a/bin/clean_locks
>>> +++ b/bin/clean_locks
>>> @@ -1,4 +1,4 @@
>>> -#!/usr/bin/python -bO
>>> +#!/usr/bin/python -b
>>
>> The diff shows -O, but the commit messages says -OO, so which one is it 
>> really?
> 
> Yes, it's a curious problem. -OO is the one breaking it but py<3.5 seems
> to be happy to load -OO files with -O:
> 
> $ python2.7 -O -c 'import pycparser; print(pycparser.__file__)'
> /usr/lib64/python2.7/site-packages/pycparser/c_parser.py:20: RuntimeWarning: 
> parsing methods must have __doc__ for pycparser to work properly
>   class CParser(PLYParser):
> /usr/lib64/python2.7/site-packages/pycparser/__init__.pyo
> 
> $ python3.4 -O -c 'import pycparser; print(pycparser.__cached__)'
> /usr/lib64/python3.4/site-packages/pycparser/c_parser.py:20: RuntimeWarning: 
> parsing methods must have __doc__ for pycparser to work properly
>   class CParser(PLYParser):
> /usr/lib64/python3.4/site-packages/pycparser/__pycache__/__init__.cpython-34.pyo
> 
> This doesn't seem to be the case anymore for py3.5+:
> 
> $ python3.5 -O -c 'import pycparser; print(pycparser.__cached__)'
> /usr/lib64/python3.5/site-packages/pycparser/__pycache__/__init__.cpython-35.opt-1.pyc
> 
>> Are we sure that it's worth it to load all of the __doc__ strings into
>> memory, given that we have alternative implementations for everything
>> that pycrypto provides?
> 
> I dare say that if -O can cause completely random total breakage, then
> we shouldn't risk doing that for the sake of some minor memory savings.
> It's not a case of 'support for pycryptodome' vs '1M memory saving'.
> It's a case of 'loading random module can wreak total havoc in Portage'.

Seems reasonable. Please merge.
-- 
Thanks,
Zac

Reply via email to