Hey,

Desired outcome is for mesa meson configure to succeeded by updating
RUNPATH on llvm-config native binary required by mesa when gallium-llvm
included. When running bitbake -c devshell mesa. Then chrpath -l on llvm-config

Should return on TARGET_ARCH x86_64
$ORIGIN/../lib64:$ORIGIN/../../lib64
not
$ORIGIN/../lib:$ORIGIN/../../lib

SNAPSHOT OF FAILURE
*************************************************************************************************************************
File 
"/../../../mesa/<version>/recipe-sysroot-native/usr/lib/python3.11/re/__init__.py",
 line 223, in finditer
return _compile(pattern, flags).finditer(string)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: expected string or bytes-like object, got 'NoneType'
*************************************************************************************************************************

Reason for above failure, at least for me, when TARGET_ARCH = x86_64 you run 
into
bellow when running llvm-config --help or variant commands directly.

llvm-config: error while loading shared libraries: libtinfo.so.5: cannot open 
shared object file: No such file or directory

Because of that when mesa configure executes llvm-config --version the string 
is not returned. Thus, leading
to above error.

If you run chrpath -l on llvm-config you see

$ORIGIN/../lib:$ORIGIN/../../lib:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

When target architecture is x86_64 those folders don't exists in recipe-sysroot 
of a recipe that requires llvm-native.

The llvm_sysroot_preprocess_native function in current MR addresses that 
problem by
making RUNPATH target architecture dependent.

As to why RUNPATH includes both the original RUNPATH and the update target 
architecture
dependent directory name the llvm recipe requires the llvm-native llvm-config 
binary to
compile, but the build libs are stored in lib directory not lib64. Tried 
everything I could
think of change that not much can be done about that. When llvm-native gets 
included
in another recipe however libs are located at 
$ORIGIN/../lib64:$ORIGIN/../../lib64, at least
for TARGET ARCH x86_64.

As for the second problem llvm-config --libdir returns

/../../../../../../mesa/2_22.2.2-r0/recipe-sysroot/usr/lib

instead of

/../../../../../../mesa/2_22.2.2-r0/recipe-sysroot/usr/lib64

Which causes mesa configure to fail as 
../../mesa/2_22.2.2-r0/recipe-sysroot/usr/lib doesn't exist.

According to 
https://github.com/llvm/llvm-project/blob/a11cd0d94ed3cabf0998a0289aead05da94c86eb/llvm/CMakeLists.txt#L399
and 
https://github.com/llvm/llvm-project/blob/a11cd0d94ed3cabf0998a0289aead05da94c86eb/llvm/CMakeLists.txt#L389

LLVM_LIBDIR_SUFFIX variable is used to set command. MR addresses that by 
setting the LLVM_LIBDIR_SUFFIX
variable. The reason I decided to use HOST_ARCH instead of TARGET_ARCH is 
because bitbake sets
HOST_ARCH = "${TARGET_ARCH}" in bitbake.conf, but I'll admit there's ignorance 
on my part in terms
of what I think that variable is set to and what class-native it used for.

:)
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#173209): 
https://lists.openembedded.org/g/openembedded-core/message/173209
Mute This Topic: https://lists.openembedded.org/mt/94995332/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to