Bug 14640

Summary: Relocation error when setting up SDK with rust tools
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Peter Bergin <peter>
Component: coreAssignee: Sundeep Kokkonda <sundeep.kokkonda>
Status: RESOLVED OBSOLETE QA Contact:
Severity: normal    
Priority: Medium+ CC: meta.mr.watcher, meta.watcher, pgowda.cve, randy.macleod, sundeep.kokkonda
Version: 3.4.1   
Target Milestone: 4.2 M1   
Hardware: x86   
OS: Multiple   
Whiteboard:
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)

Description Peter Bergin 2021-11-29 07:58:59 UTC
When installing and setting up a SDK with packagegroup-rust-cross-canadian it fails if the installation path is too long. I have found similar issues in meta-rust [1] and some other setup [2] that can be related.


Steps to reproduce:

  <setup standard poky build, qemux86_64>
  $ echo 'TOOLCHAIN_HOST_TASK:append = " packagegroup-rust-cross-canadian-${MACHINE}"' >> conf/auto.conf
  $ bitbake core-image-minimal -cpopulate_sdk

  <installation>
  $ ./tmp/deploy/sdk/poky-glibc-x86_64-core-image-minimal-core2-64-qemux86-64-toolchain-3.4+snapshot.sh
  Poky (Yocto Project Reference Distro) SDK installer version 3.4+snapshot
========================================================================
  Enter target directory for SDK (default: /opt/poky/3.4+snapshot): /work/sdk/install/sdk/to/a/really/long/path
  You are about to install the SDK to "/work/sdk/install/sdk/to/a/really/long/path". Proceed [Y/n]? y
  Extracting SDK....................................................................................done
  Setting it up...ERROR: could not relocate /work/sdk/install/sdk/to/a/really/long/path/sysroots/x86_64-pokysdk-linux/usr/bin/cargo-clippy, interp size = 84 and 99 is needed.
  ERROR: could not relocate /work/sdk/install/sdk/to/a/really/long/path/sysroots/x86_64-pokysdk-linux/usr/bin/cargo, interp size = 84 and 99 is needed.
  ERROR: could not relocate /work/sdk/install/sdk/to/a/really/long/path/sysroots/x86_64-pokysdk-linux/usr/bin/rustfmt, interp size = 84 and 99 is needed.
  ERROR: could not relocate /work/sdk/install/sdk/to/a/really/long/path/sysroots/x86_64-pokysdk-linux/usr/bin/rustdoc, interp size = 84 and 99 is needed.
  ERROR: could not relocate /work/sdk/install/sdk/to/a/really/long/path/sysroots/x86_64-pokysdk-linux/usr/bin/rustc, interp size = 84 and 99 is needed.
  ERROR: could not relocate /work/sdk/install/sdk/to/a/really/long/path/sysroots/x86_64-pokysdk-linux/usr/bin/clippy-driver, interp size = 84 and 99 is needed.
  ERROR: could not relocate /work/sdk/install/sdk/to/a/really/long/path/sysroots/x86_64-pokysdk-linux/usr/lib/x86_64-poky-linux/rustlib/x86_64-unknown-linux-gnu/bin/rust-llvm-dwp, interp size = 84 and 99 is needed.
  done
  SDK has been successfully set up and is ready to be used.
  Each time you wish to use the SDK in a new shell session, you need to source the environment setup script e.g.
   $ . /work/sdk/install/sdk/to/a/really/long/path/environment-setup-core2-64-poky-linux


The workaround is fairly easy and it is to install the SDK to a shorter path. In that sense this is no big blocker but if we can find a solution it would be good. 


[1] https://github.com/kraj/meta-clang/issues/119

[2] https://lists.yoctoproject.org/g/yocto/message/48173
Comment 1 Randy MacLeod 2021-12-09 15:35:17 UTC
We modify the SDK compile flags or perhaps the compiler itself to make the SDK work so we'll have to rust SDK components as well. Ping me as needed and we'll try to find an example.
Comment 2 Randy MacLeod 2021-12-09 15:36:05 UTC
see: meta/recipes-devtools/binutils/binutils/0001-binutils-crosssdk-Generate-relocatable-SDKs.patch

according to RP.
Comment 3 Randy MacLeod 2022-04-12 00:36:57 UTC
Sundeep, Naveen, Peter, 
Is this still a problem or is it resolved by:
https://git.openembedded.org/openembedded-core/commit/?id=7d6f4b1373e4dfafc63702ef2426cd45100f18a3
Comment 4 Sundeep KOKKONDA 2022-04-12 09:08:58 UTC
Hi Randy,

The below commit is for different issue (14742).
https://git.openembedded.org/openembedded-core/commit/?id=7d6f4b1373e4dfafc63702ef2426cd45100f18a3

For this issue, the work is in progress with Chandra.
Comment 5 Randy MacLeod 2022-10-13 14:29:18 UTC
Naveen are you the right owner here?
Comment 6 pgowda.cve 2022-10-17 11:36:42 UTC
(In reply to comment #5)
> Naveen are you the right owner here?

I suppose Sundeep is working on this issue.
Hence, he should be the right owner.
Comment 7 Sundeep KOKKONDA 2022-11-14 07:51:09 UTC
Unable to reproduce the issue with latest sources. Issue fixed with commit ID ce18cc1d72374d7bec2b069b71e72e49aff5649a. For Patch details refer mailing list message https://lists.openembedded.org/g/openembedded-core/message/168878.
Tested the sdk installed cargo and rust and those are working fine. So the issue is closed.