On 4/15/24 18:05, Richard Purdie wrote:
CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Mon, 2024-04-15 at 16:30 +0800, Changqing Li via lists.openembedded.org 
wrote:
From: Changqing Li <[email protected]>

When there are tarballs in local mirror file://, do_fetch will
create symlink under DL_DIR, eg:
pseudo-prebuilt-2.33.tar.xz -> 
/project/path/to/localmirrorA/pseudo-prebuilt-2.33.tar.xz
after user update path from localmirrorA to localmirrorB, because
do_fetch don't depends on PREMIRRORS/MIRRORS, do_fetch will not
be rerun, so the symlink will not update to:
pseudo-prebuilt-2.33.tar.xz -> 
/project/path/to/localmirrorB/pseudo-prebuilt-2.33.tar.xz
then, do_upack will failed since the tarball cannot be found.

Signed-off-by: Changqing Li <[email protected]>
---
  meta/classes-global/base.bbclass | 1 +
  1 file changed, 1 insertion(+)

diff --git a/meta/classes-global/base.bbclass b/meta/classes-global/base.bbclass
index 0999b42daa..5094a1540e 100644
--- a/meta/classes-global/base.bbclass
+++ b/meta/classes-global/base.bbclass
@@ -139,6 +139,7 @@ do_fetch[file-checksums] = 
"${@bb.fetch.get_checksum_file_list(d)}"
  do_fetch[file-checksums] += " ${@get_lic_checksum_file_list(d)}"
  do_fetch[prefuncs] += "fetcher_hashes_dummyfunc"
  do_fetch[network] = "1"
+do_fetch[vardeps] += "PREMIRRORS MIRRORS"
  python base_do_fetch() {

      src_uri = (d.getVar('SRC_URI') or "").split()

Changing PREMIRRORS or MIRRORS should not change the output of the
task, ever, so do_fetch shouldn't depend upon them.

The failure case I met is like this:

I have a project with PREMIRRORS setting, and the tarballs are under it.

PREMIRRORS:append = "file:///project/path/to/localmirrorA"

after first bitbake pseudo-native, there will a symlink under DL_DIR:

pseudo-prebuilt-2.33.tar.xz -> /project/path/to/localmirrorA/pseudo-prebuilt-2.33.tar.xz

Then, Since all the tarballs are moved to /project/path/to/localmirrorB

I changed PREMIRRORS:append = "file:///project/path/to/localmirrorB"

Then bitbake pseudo-native again,   do_fetch  will not rerun since no signature change.

do_unpack rerun since one dependency  change, it will try to unpack ${DL_DIR}/pseudo-prebuilt-2.33.tar.xz,

but since do_fetch not rerun, ${DL_DIR}/pseudo-prebuilt-2.33.tar.xz still point to localmirrorA, but localmirrorA not exist

since localmirrorB replace it.  Then will cause do_unpck failure:

NOTE: Unpacking /build/downloads/pseudo-prebuilt-2.33.tar.xz to /build/tmp-glibc/work/x86_64-linux/pseudo-native/1.9.0+git xz: /build/downloads/pseudo-prebuilt-2.33.tar.xz: No such file or directory

So this is why I want to add this depends,  and want to make do_fetch rerun and resymlink to /project/path/to/localmirrorB

Regards

Changqing


Cheers,

Richard

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#198246): 
https://lists.openembedded.org/g/openembedded-core/message/198246
Mute This Topic: https://lists.openembedded.org/mt/105532159/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to