On Mon, 2025-01-27 at 15:26 -0500, Mark Asselstine via lists.openembedded.org wrote: > > > On 1/27/2025 8:12 AM, Christian Lindeberg via lists.openembedded.org wrote: > > > > > > On 27/01/2025 13:22, Stefan Herbrechtsmeier via lists.openembedded.org > > wrote: > > > Am 27.01.2025 um 12:21 schrieb Stefan Herbrechtsmeier via > > > lists.openembedded.org: > > > > Am 27.01.2025 um 10:53 schrieb Richard Purdie: > > > > > On Mon, 2025-01-27 at 10:07 +0100, Stefan Herbrechtsmeier wrote: > > > > > > Am 25.01.2025 um 14:17 schrieb Richard Purdie: > > > > > > > The gomod fetcher is totally broken for mirroring unfortunately. > > > > > > > It is > > > > > > > used for the crucible recipe in meta-oe and it is one of the > > > > > > > reasons > > > > > > > the autobuilder mirroring test for meta-oe never passes. > > > > > > > > > > > > > > The issue is that it downloads files into subdirs of DL_DIR but > > > > > > > when > > > > > > > mirroring, that translation is lost. The files are there on the > > > > > > > mirror, > > > > > > > the code just doesn't have any way to access them. > > > > > > Does this mean the downloadfilename doesn't support sub directories > > > > > > or > > > > > > is the rewrite of the URI a problem? > > > > > The rewrite is hard. The syntax doesn't support taking a path > > > > > component > > > > > and injecting it into a parameter. > > > > > > > > I assume the problem is not the path but the wrong assumption that > > > > the downloadfilename is used for the replace of the mirror url. > > > > > > > > > > Is the npm fetcher broken too? > > > > > I don't know. > > > > > > > > The npm fetcher use a npm2 sub folder in its downloadfilename. > > > > > > > > > > > I don't know what to do about this. The source mirroring for > > > > > > > meta-oe > > > > > > > has been broken for months. I've tried to fix a couple of the > > > > > > > issues > > > > > > > but this one is systemic and not easy to fix. > > > > > > > > > > > > > > I'd note that the sanity test in sanity.bbclass doesn't recognise > > > > > > > the > > > > > > > gomod and godmogit fetchers anyway. I did try a few different > > > > > > > urls > > > > > > > but > > > > > > > due to the weird way gomod subclasses wget, the normal mirror url > > > > > > > manipulation techniques don't work. > > > > > > > > > > > > > > What do I do? > > > > > > > > > > > > > > I could drop meta-oe from source mirroring. > > > > > > > > > > > > > > I could ask Khem to drop the recipe. > > > > > > > > > > > > > > Neither seem like nice things to do but I don't want to do > > > > > > > "partial" > > > > > > > mirrors. Explaining to people that it may or may not work looks > > > > > > > really > > > > > > > bad and I'm not doing it. > > > > > > > > > > > > > > Is there anyone willing to help fix this? Only stopping it > > > > > > > running at > > > > > > > all is really within my own control. > > > > > > I can look into it. Would it be okay to init the urldata before > > > > > > resolve > > > > > > the mirror or should the mirror use the gomod scheme? > > > > > Currently the mirror being passed the modified url which makes it a > > > > > challenge as it appears as a normal http url. > > > > > > > > > > I posted my workaround that made it work but that has several issues. > > > > > It needs a new parameter to the wget fetcher, which might be useful > > > > > elsewhere, not sure. It also requires hardcoding the go proxy url into > > > > > the PREMIRROR which won't work for any other go proxy servers. > > > > > > > > This only works because the downloadfilename match the path of the > > > > uri. I think it would be better to use the downloadfilename inside > > > > the build_mirroruris / uri_replace function, add the downloadfilename > > > > to the mirrortarballs or add an additional downloadfiledir parameter. > > > > > > > > The following test data for replaceuris in MirrorUriTest should > > > > reproduce the problem: > > > > ("https://somewhere.org/scope/example/1.0.0/ > > > > example-1.0.0.tgz;downloadfilename=subdir/scope-example-1.0.0.tgz", > > > > "https://.*/.*", "http://somewhere2.org/somedir3") > > > > : "http://somewhere2.org/somedir3/subdir/scope- > > > > example-1.0.0.tgz;downloadfilename=subdir/scope-example-1.0.0.tgz", > > > > > > > > > > > The following patch pass the test cases with the additional test data > > > above: diff --git a/bitbake/lib/bb/fetch2/__init__.py b/bitbake/lib/ > > > bb/fetch2/__init__.py index 1fea02ee9c..fb013160c4 100644 --- a/ > > > bitbake/lib/bb/fetch2/__init__.py +++ b/bitbake/lib/bb/fetch2/ > > > __init__.py @@ -472,7 +472,7 @@ def uri_replace(ud, uri_find, > > > uri_replace, replacements, d, mirrortarball=None): uri_decoded[5] = {} > > > uri_find_decoded[5] = {} elif ud.localpath and > > > ud.method.supports_checksum(ud): - basename = > > > os.path.basename(ud.localpath) + basename = > > > ud.localpath.replace(d.getVar("DL_DIR"), "").lstrip("./") if basename: > > > uri_basename = os.path.basename(uri_decoded[loc]) # Prefix with a > > > slash as a sentinel in case > > > > > > The dot in the lstrip is needed to pass the tests. This need to be > > > resolved in an other way to avoid side-effects. > > > > > Looks like flattening the downloadfilename would solve/workaround the > > problem then (replace the slashes with a punctuation character other > > than those valid in a Go module path segment) but I have not had time to > > try the additional MirrorUriTest case yet. Is this the desired solution > > for wget based fetchers? > > The timing of this is uncanny. I actually spent an hour this weekend > looking at an unrelated bug associated with `downloadfilename` > (https://bugzilla.yoctoproject.org/show_bug.cgi?id=15126). > > The related test code actually demonstrates some existing confusion > around `downloadfilename` that could result in some very confusing > results. Take a look at > test_fetch_premirror_use_downloadfilename_to_fetch(). The only reason > this test passes is because the specified `downloadfilename` > `bitbake-1.0.tar.gz` actually exists in the premirror. The test really > should use a random `downloadfilename` such as `bitcook-1.0.tar.gz` > instead of something that can actually exist. > > If the behavior is left to stand this way it could definitely lead to > head scratching as it would be difficult to understand why checksums > would be failing since what is downloaded is not what is expected. > > My thinking was that `downloadfilename` should only come into play when > fetching from DL_DIR and not when fetching from a PREMIRRORS or MIRRORS, > but I didn't get that far into reviewing the issue to make any conclusions. > > At any rate, I wanted to speak up considering the current discussion is > around handling of `downloadfilename` and this might just result in even > more confusion on how it should be handled.
I'm now travelling so I'm not going to get as much time to think about things as I'd like. I did want to highlight that in theory you can use DL_DIR as a mirror/premirror pretty directly so the naming does need to match across them. Cheers, Richard
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#2109): https://lists.openembedded.org/g/openembedded-architecture/message/2109 Mute This Topic: https://lists.openembedded.org/mt/110806536/21656 Group Owner: openembedded-architecture+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-architecture/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-