Am 19.02.2025 um 18:33 schrieb Richard Purdie:
On Wed, 2025-02-19 at 17:48 +0100, Stefan Herbrechtsmeier wrote:
I don't change the exception. The exceptions are the reason for the
state of the series.
The missing point is that the expectation is related to the end of a
dependency chain and not to a task itself. In any case the real
expectation isn't clear. What happens if the configuration need a
compiled source and it isn't feasible to create a native package. My
series satisfy the following expectations:
* All sources are downloaded after the do_fetch
* All sources are unpacked after the do_unpack
* All sources are patched after the do_patch
I could try and reply to all your points but this one jumps out as a
really fundamental thing we disagree on. All our existing code assumes
that:
"All sources are downloaded during do_fetch"
which means once do_fetch runs, we have all the sources. That is quite
different to what you say above. I fully appreciate it imposes quite
some constraints but it doesn't change the fact that this is the
situation.
I don't get the point. Do you say that only the do_fetch is allow to
download anything? So my assumption that I can download something
outside the do_fetch task as long as the download happens if something
depend on the fetch task (like bitbake -c fetch ...) is wrong?
I don't understand that requirement but I can fulfill it. The only
consequence is a complex do_fetch task.
WIP:
do_fetch : run_fetch,
run_early_fetch, run_early_unpack, run_early_patch, run_resolve,
run_vendor_fetch
do_unpack: run_unpack, run_early_unpack, run_vendor_fetch
do_patch: run_patch, run_early_patch, run_vendor_patch
The bitbake approach looks like the WIP but makes the run_early_patch
complicated or impossible.
Which is why I'm saying that I'd prefer to do this in bitbake and if
we have to drop that patching as a result, so be it.
But this is an essential feature because it simplify the usability. It
allows inexperienced user to fix a security issue in some minutes by
simple back port a patch from the upstream project or fix the problem
with common tools outside of oe.
whether we need to have some kind of
checksum to verify the "lockfile" is correct as originally intended in
the recipe and probably more.
I want to prevent us from having the wrong motivation due to a lack
of understanding of the lock file. Why don't we add a look file
across all expanded URIs, regardless of the source of the URI,
because we could have the same problems in the other fetchers.
I'm in the position of trying to mediate things (i.e. see the different
viewpoints and bring people together, trying to find common ground) and
yet at the same time, express views as someone who as spent a lot of
years trying to maintain and improve this code.
I appreciate your work.
But I sometimes have the feeling that the code is a patchwork quilt
and every attempt to replace several patches with something common is
met with rejection.
We have a patchwork where people trust the current boundaries between
the different pieces. You want to change the boundaries, and the
assumptions made about those boundaries and replace it with something
that isn't going to be easily understood by most of the userbase as
the concepts are complex and break the existing models people work
with. I'm doing my best to explain the problem but either I'm failing
at that or we simply disagree on them.
I don't change the boundaries. The boundaries are not clean at the
moment. Look at the code. Most users of the URIs assume that only the
SRC_URI exists. Because of gitsm this isn't true. But only the archiver
bbclass use it correct. The spdx classes notice it but fix it in a wrong
way. It simple replace the gitsm:// with a git:// and lose all the
dependent sources. I want to sharpen the concept by introduce a fetcher
/ source library in oe. The library abstract the bitbake fetcher details
and provide a simple api on top of it. This allows us to remove all the
duplicated code. The bitbake fetcher focus on the download and the oe
fetcher class on the management of the URIs. This allows use to
introduce new concept for the URI management and allows use to remove
the repeat instantiation and parsing of the SRC_URI.
Based on the code I would argue that the user base don't know that the
SRC_URI could be expand to additional URIs nor that a SRC_URI is
replaced by an other URI underneath. We have to fix this in any way and
I would take the opportunity to introduce a simpler and feature rich
solution.
We have a go-vendor bbclass and gomod fetcher. The first use the wget
and git fetcher and the second add a specific fetcher. We have two
solutions for the same problem with different concepts.
I have tried to seek help from the people who effectively oversee me as
a maintainer (i.e. the TSC) with limited success. I'm not sure what to
do from here.
I really like to upstream my work because I think it would simplify
the package manager support, but there doesn't seem to be much
interest in the community for it.
People are too focused in their own problems to be able to spend
enough time on these architectural type pieces. We do badly need this
kind of work which is why I'm trying to help this move forward but
equally we have to do it in a way which doesn't destablise our
existing userbase, in other words we may have to make some
compromises. I'd like to hope we pick the right ones. I'm worried as
we have tried solutions for this space before and the fact we're
discussing them again shows we haven't got it right yet.
I always try my best to not break existing users. Therefore I keep the
old behavior of the existing tasks or function calls. But we need to
sharpen the concepts and unify the code base. We have different
solutions (like go-vendor.bbclass and gomod.py) for the same problem and
partial integration of features (like expanded_urldata).
I think we have to much theoretical discussion and to less code. I would
like to integrate a Fetcher OE library to remove the redundant code,
unify the codebase and use the extended URIs where appropriate. This
would fix some existing problems and could help in the next step
independence of the solution. Would that be okay with you?
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#211749):
https://lists.openembedded.org/g/openembedded-core/message/211749
Mute This Topic: https://lists.openembedded.org/mt/111229335/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-