Re: git: f5890bd3cbc6 - main - Revert "Mk/Uses/python.mk: Fix USE_PYTHON=pep517: always compile and install bytecode"

From: Rainer Hurling <rhurlin_at_gwdg.de>
Date: Tue, 07 Feb 2023 19:38:34 UTC
Hi Charlie,

Am 07.02.23 um 19:36 schrieb Charlie Li:
> Po-Chuan Hsieh wrote:
>> Those issues you mentioned might be a problem in the future but 
>> clearly not in the short term.
>> I'm trying to fix an immediate problem which greatly affects the 
>> development.
> They are problems now, because they impede any proper fixes. We have 
> been doing quite a few things wrong with Python packaging, and simply 
> fixing "immediate problems" doesn't work.
>> It may not be good from your point of view but it really fixed the 
>> problem (see below).
>> If you have a better solution, I'm fine with it.
>>
>>
>>          Instead of compiling and installing bytecode at stage/package 
>> time,
>>          there is a WIP, review D34739, that compiles and installs 
>> bytecode
>>          at install time instead, using triggers.
>>
>>
>> Thanks for pointing out a possible solution but it is still WIP.
>>
> It will be *the* solution, because bytecode is not meant to be packaged, 
> but only compiled at install or run-time at user's discretion. The only 
> reason why bytecode was packaged in operating system-level package 
> distributions is how most such systems lack a trigger function that we 
> now have.
> 
> When Python packaging tooling is the final arbiter, bytecode is compiled 
> only after the installation process completes if the user does not 
> disable it. In our case, pkg(8) is the final arbiter, so such tasking 
> falls to pkg(8)'s triggers and not during stage/packaging.

Just out of curiosity, do you expect the trigger to work with Portmaster?

Best wishes,
Rainer

>>
>>          The aforementioned build_fs_violations will be investigated.
>>
>>
>> You could reproduce this problem as follows.
>> 1. Revert d6583d67b69dbf690e6f102e1aec799cb7fd564a (change 
>> devel/py-importlib-metadata back to USE_PYTHON=pep517 which is the 
>> background)
>> 2. Build a port with USE_PYTHON=pep517. I choose devel/py-pyls-black 
>> here.
>> Now it failed earlier with devel/py-click.
>> You could expect more ports to be failed/skipped while building 
>> hundreds of ports in my case.
>>
> Can't reproduce with a proper PEP-517 bootstrap tooling, which most 
> importantly does not have setuptools in the environment at all. If 
> anything, your build failure only demonstrates just how "problematic, 
> fragile and unreliable" compiling and installing bytecode at 
> stage/package time is.
>