Re: F41 Change Proposal - Reproducible Package Builds (System-Wide)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 17, 2024 at 05:12:07PM -0500, Maxwell G wrote:
> On 4/13/24 06:41, Fabio Valentini wrote:
> > On Sat, Apr 13, 2024 at 1:18 PM Zbigniew Jędrzejewski-Szmek
> > <zbyszek@xxxxxxxxx>  wrote:
> > > Yes. But actually I think Rust is the optimal choice here. Writing
> > > this in Python would be possibly slightly nicer, but we don't want
> > > to pull the interpreter and packages into the buildroot. Python
> > > also has the problem (challenge?) that it needs to be bootstrapped
> > > once per year. The less packages are involved in the bootstrap, the
> > > easier it is. And if the brp was written in Python, we'd need to
> > > deal with that, and it would probably increase the number of builds
> > > which are done without the cleanup. Having this as an indepedent
> > > binary avoids some of the issues with bootstrap.
> > I think Rust*would*  be a good choice here ...
> > BUT add-determinism uses pyo3 to link to CPython, so it pulls in
> > python3-libs anyway.
> > So you get the downsides of pulling in Python without the upsides of
> > using Rust ...
> 
> Would it be possible to shell out to Python instead of using pyo3? I assume
> add-determinism's Python handler is not that complicated given that
> marshalparser does most of the work.

Possible — yes.
Desirable — not clear.

Firstly, Python interpreter startup with module imports is relatively
slow. In the current implementation we do that just once in each
worker, and then read the list of files to process from a socket.
People were worried about the postprocessing being slow, so I
implemented a fairly nice multiprocessing scheme that cuts down on
this avoidable overhead.

Secondly, calling a library function is generally preferred over
calling a binary for the purposes of error handling. For example,
right now I can catch an exception and handle it as appropriate.
When calling a subprogram, we only get an error code and maybe some
error message, and, for example, supressing or customizing the
message for some classes of exceptions cannot be done cleanly.

Thirdly, bootstrapping might actually be easier with a link to a
library. We might install older python3-libs together with a new
versions of python3-libs and python3, since they don't conflict, but
we can have only one /usr/bin/python…

But yeah, just calling an external python binary is certainly an
option if the current approach doesn't work out. Thank you for the
suggestion.

Zbyszek
--
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux