Commit Graph

20 Commits

Author SHA1 Message Date
Hongxu Jia
4ed99ca9b4 toolchain-shar-relocate.sh: support multiple dynamic loaders for multilib
While nativesdk support multilib, there are two dynamic loaders,

    $OECORE_NATIVE_SYSROOT/lib64/ld-linux-x86-64.so.2
    $OECORE_NATIVE_SYSROOT/lib/ld-linux.so.2

Search them with wildcard and call relocate_sdk.py separately

[ YOCTO #15722 ]

(From OE-Core rev: 703187755244b1a45dd9f90aeaf620d4c92a6757)

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2025-02-11 11:44:19 +00:00
Chen Qi
19f1ab574f toolchain-shar-relocate.sh: fix the replacing commands
There're two cases that the current replacing commands cannot handle well:
1. Files with whitespace in their names
2. Installation path with keyword such as 'script'

This results in installation failure of a buildtools. We can use the following
commands to reproduce the problem.
1. bitbake buildtools-tarball
2. ./tmp/deploy/sdk/x86_64-buildtools-nativesdk-standalone-5.1.sh -d dir-with-keyword-script -y

The error message is like below:

  Setting it up...sed: can't read /PATH/TO/dir-with-keyword-script/sysroots/x86_64-wrlinuxsdk-linux
    /usr/lib/python3.13/site-packages/setuptools/_vendor/jaraco/text/Lorem: No such file or directory
  Failed to replace perl. Relocate script failed. Abort!

The actual file name is /PATH/TO/dir-with-keyword-script/sysroots/x86_64-pokysdk-linux/usr/lib/python3.13
/site-packages/setuptools/_vendor/jaraco/text/Lorem ipsum.txt

Note that the file path matches "script.*text". In fact, if we install the SDK into
some directory containing both 'script' and 'text', all files will be matched. This
is not expected.

This patch fixes the replacing commands by doing the following two things:
1. Use '\n' as the field separator for xargs so that files with white spaces are not splitted.
2. Use awk to match the second filed of the file command's output so that the file
   path does not mess up with the matching process.

(From OE-Core rev: 443912d512edbb75f16c52de489b33b6f8687431)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-12-09 15:23:28 +00:00
Tom Hochstein
084fe2241b toolchain-shar-relocate.sh: Add check for missing command 'file'
On a machine without the file command, the SDK install fails with a
cryptic error message.

```
xargs: file: No such file or directory
sed: no input files
Failed to replace perl. Relocate script failed. Abort!
```

Add a test for 'file' to print a clear error message.

```
The command 'file' is required by the relocation script, please install it first. Abort!
```

(From OE-Core rev: 1aa19b9e34ebe6f39a25364073fed4c069f650e8)

Signed-off-by: Tom Hochstein <tom.hochstein@nxp.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-03-23 10:18:20 +00:00
Maanya Goenka
3ef63361b4 toolchain-shar-relocate: allow 'find' access to libraries in symlinked directories
If the '/' is not added to the end of the dynamic loader path, only directories
that are not symlinks will be looked into for libraries such as ld-linux*,
so the slash is added to allow the 'find' command to have symlinked directory access too.

(From OE-Core rev: 8468f24e3e81d5248eb1424e43accd2ea8bf0568)

Signed-off-by: Maanya Goenka <maanyagoenka@microsoft.com>
Signed-off-by : Alejandro Hernandez Samaniego <alhe@linux.microsoft.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2024-02-08 10:53:13 +00:00
Christian Eggers
e56ac9e229 sdk: fix search for dynamic loader
if the package "nativesdk-glibc-dbg" is installed as part of the SDK,
the existing search expression finds two files:

$OECORE_NATIVE_SYSROOT/lib/.debug/ld-linux-x86-64.so.2
$OECORE_NATIVE_SYSROOT/lib/ld-linux-x86-64.so.2

The generated relocate_sdk.sh shell script contains then an extra
newline and segfaults during SDK relocation.

Limit the search depth to 1, to avoid finding the file in the .debug
directory.

(From OE-Core rev: baec04b936ab6b3d2039978fd568c3824cd0a501)

Signed-off-by: Christian Eggers <ceggers@arri.de>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2022-02-12 17:05:35 +00:00
hongxu
7c88e08e62 sdk: fix relocate symlink failed
Install SDK to non-default dir, sysmlink mkfs.vfat is invalid

$ ./sdk.sh -y -d ./dnf-2 -S -D
$ ls sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat -al
lrwxrwxrwx 1 hjia users 99 Aug 10 20:38 sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat -> /opt/windriver/wrlinux-graphics/21.32/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat.dosfstools

Since commit [bc4ee54535 sdk: Decouple default install path from
built in path] applied, sdk relocates symlink failed, it should
replace $SDK_BUILD_PATH rather than $DEFAULT_INSTALL_DIR, just
like above commit did

Without this commit:
...
|+ for l in $($SUDO_EXEC find $native_sysroot -type l)
|++ readlink path-to/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat
|++ sed -e s:/usr/local/oecore-x86_64:path-to:
|+ ln -sfn /opt/windriver/wrlinux-graphics/21.32/sysroots/x86_64-wrlinuxsdk-linux/
usr/bin/mkfs.vfat.dosfstools path-to//sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat
...

After appling this commit:
...
|+ for l in $($SUDO_EXEC find $native_sysroot -type l)
|++ readlink path-to/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat
|++ sed -e s:/opt/windriver/wrlinux-graphics/21.31:path-to:
|+ ln -sfn path-to/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat.dosfstools
path-to/sysroots/x86_64-wrlinuxsdk-linux/usr/bin/mkfs.vfat
...

(From OE-Core rev: 942c06a7348070b92f722fa5c439c8c4404485b7)

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-08-13 14:44:06 +01:00
Richard Purdie
f62f684de8 sdk: Decouple default install path from built in path
Add SDKPATHINSTALL which is used as the default install location of the SDK
instead of SDKPATH. This means the default install path isn't encoded into
every SDK binary, meaning if a date is used there the entire SDK doesn't
have to rebuild. Most distros can switch to only customise SDKPATHINSTALL
meaning more sstate reuse too.

[YOCTO #14100]

(From OE-Core rev: bc4ee5453560dcefc4a4ecc5657df5cc1666e153)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-08-02 15:44:11 +01:00
Oleksiy Obitotskyy yIEf0zt.mo
ed410b5dd8 toolchain-shar-relocate.sh: Fix handling files with colons
Files could contain colons in name and we should not use
colons (':') as field separator. E.g. perl/python man
pages packages.

(From OE-Core rev: 50d2ed0689f1aed6f33b4992d37e2e991c99eb07)

Signed-off-by: Oleksiy Obitotskyy <oobitots@cisco.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-01-20 22:46:18 +00:00
Marek Vasut
4421e0969d meta: toolchain-shar-relocate.sh: Filter out post-relocate-setup script
The toolchain-shar-extract.sh script updates the SDK relocation paths in
post-relocate-setup.sh, so avoid doing this twice. This is generally not
a problem, unless the SDK path is a subset of the SDK relocation path, in
which case the resulting path is substituted twice. To trigger the issue,
  $ ./tmp/deploy/sdk/poky-glibc-x86_64-core-image-base-core2-64-qemux86-64-toolchain-3.2+snapshot.sh -y -d /home/oe/.local/opt/poky/3.2+snapshot
which generates relocation path
  /home/oe/.local/home/oe/.local/opt/poky/3.2+snapshot
instead of
  /home/oe/.local/opt/poky/3.2+snapshot

Fixes: 93ec145f42 ("toolchain-shar-extract: Add post-relocate scripts")
(From OE-Core rev: 5000aabe6ac336e7b424dafa1bf76271dee6a6f1)

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joshua Watt <JPEWhacker@gmail.com>
Cc: Krzysztof Zawadzki <krzysztof.zawadzki@nokia.com>
Cc: Randy Witt <randy.e.witt@linux.intel.com>
Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-01-12 17:44:17 +00:00
Marek Vasut
ced1f30c6f meta: toolchain-shar-relocate.sh: Do not use $target_sdk_dir as regex
The $target_sdk_dir path might contain special characters, for example if
the path is /opt/poky/3.2+snapshot . Prevent grep from interpreting those
as part of the regex by using the -F parameter and multiple -e parameters
to specify which strings to filter out. Also note that the previous regex
was using asterisk as wildcard (e.g. environment-setup-*), but that should
have been regex (e.g. environment-setup-.*, with dot) to match correctly,
this is also fixed by this change.

Fixes: 9721378688 ("toolchain-shar-template.sh: Make relocation optional.")
(From OE-Core rev: 19d9fa7ab6c851000bc5d24281739e1b2bb8f057)

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Joshua Watt <JPEWhacker@gmail.com>
Cc: Krzysztof Zawadzki <krzysztof.zawadzki@nokia.com>
Cc: Randy Witt <randy.e.witt@linux.intel.com>
Cc: Richard Purdie <richard.purdie@linuxfoundation.org>
Cc: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2021-01-12 17:44:17 +00:00
Richard Purdie
d8762a1ea7 Revert "relocate_sdk.py: remove hardcoded SDK path"
This reverts commit 6671a4d980c8bef8f402780a308f6c43a25044aa.

This breaks uninative tarball since the call of relocate_sdk.py from uninative.bbclass
wasn't updated to account for this change. It isn't clear what value that code could
pass in and this isn't simple to fix so revert until a better fix can be found
that doesn't break uninative.

(From OE-Core rev: b247392b4ced57cfe694656032f6a6723740a9e8)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-25 16:46:56 +01:00
Ruslan Bilovol
bf5b43495a relocate_sdk.py: remove hardcoded SDK path
This patch removes hardcodes added to relocate_sdk.py
during SDK build, making it flexible and reusable.
Now default SDK path is passed to the script as
parameter rather then harcoded inside it.

This allows to reuse this script for multiple
relocations, and adds possibility to relocate
SDK multiple times

(From OE-Core rev: 6671a4d980c8bef8f402780a308f6c43a25044aa)

Signed-off-by: Ruslan Bilovol <rbilovol@cisco.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-24 11:52:27 +01:00
Richard Purdie
b75ed251a3 toolchain-shar-relocate.sh: Fix typo
(From OE-Core rev: 8d6ee36493800a30e9bd6eacb671fbafe5d61ad7)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-09-23 18:06:08 +01:00
Mariano Lopez
7a0fbb90a6 toolchain-shar-relocate.sh: Add error-handling
The relocation script of the SDK doesn't have enough
error handling when replacing host perl with SDK perl
or changing the symlinks. This will add those checks
along with a sanity check of xargs.

[YOCTO #10114]

(From OE-Core rev: c9982dab4cfdd5963d2c2dd4aab99dd6a27fcd1c)

Signed-off-by: Mariano Lopez <mariano.lopez@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-09-22 11:13:24 +01:00
Zawadzki, Krzysztof (Nokia - PL/Wroclaw)
9d76cfee1f meta: toolchain-shar-relocate.sh: Fix for extracting SDK in the same directory as SDK script.
If SDK will be extracted in the same folder as sdk shar script.
The shar_relocate will substitute SDK.sh script SDKPATH with extract destination path.
After that operation no one will be able use this sdk script as paths in it will be different.
To fix this we need to filter out sdk script and relocate_sdk scripts from  SDKPATH substitution

(From OE-Core rev: 723434fb3bb78f18fdf281d31efa5b59138ca8a6)

Signed-off-by: Krzysztof Zawadzki <krzysztof.zawadzki@nokia.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-03-11 16:50:46 +00:00
Liam R. Howlett
92abb5f1ce meta/files/toolchain-shar-relocate.sh: Detect different python binaries and select one that exists.
Although the relocate_sdk.sh supports python3, fc23 does not symlink
/usr/bin/python3 to /usr/bin/python.  Using exec instead of a call to
the correct interpreter causes a failure on fc23 when python2 is not
present.  This uses 'which' to locate python, python2, then python3 and
uses the first one that's found.

(From OE-Core rev: 99d4d97f51b658d58a50789056b422e48df89ad9)

Signed-off-by: Liam R. Howlett <Liam.Howlett@WindRiver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2016-01-24 09:40:21 +00:00
Paul Eggleton
68d3dfe807 toolchain-shar-extract.sh: proper fix for additional env setup scripts
buildtools-tarball uses a custom env setup script, which isn't named the
same as the default; thus unfortunately OE-Core revision
a36469c97c9cb335de1e95dea5141038f337df95 broke installation of
buildtools-tarball. Revert that and implement a more robust mechanism.

(From OE-Core rev: 00e081b81ba8118959b724269ba9d18d42aba8a4)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-12-08 10:20:47 +00:00
Jean-Francois Dagenais
8ffba255a8 toolchain-shar-relocate: don't assume last state of env_setup_script is good
In the case where many environment-setup-* files exist, the incorrect
filename might be lastly set in env_setup_script, which leads to
incorrect behaviour for the initialization of native_sysroot.

The scenario I had was that our custom meta-toolchain-*.bb, which
inherits populate_sdk, defined another environment-setup-* file to dump
variable information for qt-creator. The file is named like so in order
for the sdk shell script to pick it up and fix the SDK paths in the
file. Since it (coincidentally) alphabetically comes after ...-core2, it
was last set in env_setup_script and the grep OECORE_NATIVE_SYSROOT
would simply be blank. The apparent symptom was "...relocate_sdk.py:
Argument list too long" since the find command would not be searching in
the right path.

(From OE-Core rev: a36469c97c9cb335de1e95dea5141038f337df95)

Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-12-01 21:32:02 +00:00
Robert Yang
c275627212 toolchain-shar-relocate.sh: make it faster
Make the extrating faster by:
* Merge the two heavy "for .. find" loops into one
* Move the commands out of for loop rather than inside, this can reduce the
  forking amount.

As a result, when install:
* buildtools-nativesdk-standalone: 14s -> 7s (50% saved)
* core-image-minimal-core2-64-toolchain: 56s -> 47s (17% saved)

[YOCTO #8404]

(From OE-Core rev: a619f8e5fd8b88278d41a3d82aca5a8d03cb2907)

Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-10-01 07:43:32 +01:00
Randy Witt
01c9f3b390 toolchain-shar-template.sh: Make relocation optional.
If the buildsystem is copied into the sdk and its toolchain is to
be used, then the relocation provided in toolchain-shar-template.sh
isn't needed and will actually fail.

So break the relocation aspect out and essentially make it another
SDK_POST_INSTALL_COMMAND script.

(From OE-Core rev: 9721378688a05cd8d8443c6ee4be823e5c0688f6)

Signed-off-by: Randy Witt <randy.e.witt@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2015-02-24 17:41:43 +00:00