Skip to contentSkip to conversation

do_populate_sysroot: Function failed: relocatable_binaries_preprocess

DISCUSSION Paul Gortmaker 3 participants 3 messages Jan 23, 2017

lore
Share & tools
lore
#0 lore raw

After updating this morning (everything on master, re-using the existing build dir that was built OK within the last 48h) I saw this:

ERROR: pseudo-native-1.8.1-r0 do_populate_sysroot: pseudo-native: chrpath command failed with exit code 7:
b'/home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1-r0/sysroot-destdir/home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1-r0/recipe-sysroot-native/usr/bin/pseudodb:
RPATH=/home/paul/poky/build/tmp/sysroots/x86_64-linux/usr/lib:/home/paul/poky/build/tmp/sysroots/x86_64-linux/lib\n'b"new
rpath
'$ORIGIN/../../../../../../../sysroots/x86_64-linux/usr/lib:$ORIGIN/../../../../../../../sysroots/x86_64-linux/lib' too large; maximum length 107\n"
ERROR: pseudo-native-1.8.1-r0 do_populate_sysroot: Function failed: relocatable_binaries_preprocess
ERROR: Logfile of failure stored in: /home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1-r0/temp/log.do_populate_sysroot.11

I did a cleansstate on that and then it was fine but then openssl died in the same way:

ERROR: openssl-native-1.0.2j-r0 do_populate_sysroot: openssl-native: chrpath command failed with exit code 7:
b'/home/paul/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2j-r0/sysroot-destdir/home/paul/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2j-r0/recipe-sysroot-native/usr/lib/libssl.so.1.0.0: RPATH=/home/paul/poky/build/tmp/sysroots/x86_64-linux/usr/lib:/home/paul/poky/build/tmp/sysroots/x86_64-linux/lib\n'b"new rpath '$ORIGIN/../../../../../../../sysroots/x86_64-linux/usr/lib:$ORIGIN/../../../../../../../sysroots/x86_64-linux/lib' too large; maximum length 107\n"
ERROR: openssl-native-1.0.2j-r0 do_populate_sysroot: Function failed: relocatable_binaries_preprocess
ERROR: Logfile of failure stored in: /home/paul/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2j-r0/temp/log.do_populate_sysroot.7182
ERROR: Task (virtual:native:/home/paul/poky/meta/recipes-connectivity/openssl/openssl_1.0.2j.bb:do_populate_sysroot) failed with exit code '1'

I mentioned it to Mark and he suggested I should mention it here.

P.

#1 lore raw
Quoted 10 lines · Paul Gortmaker

After updating this morning (everything on master, re-using the existing build dir that was built OK within the last 48h) I saw this:

ERROR: pseudo-native-1.8.1-r0 do_populate_sysroot: pseudo-native: chrpath command failed with exit code 7:
b'/home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1-r0/sysroot-destdir/home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1-r0/recipe-sysroot-native/usr/bin/pseudodb:
RPATH=/home/paul/poky/build/tmp/sysroots/x86_64-linux/usr/lib:/home/paul/poky/build/tmp/sysroots/x86_64-linux/lib\n'b"new
rpath
'$ORIGIN/../../../../../../../sysroots/x86_64-linux/usr/lib:$ORIGIN/../../../../../../../sysroots/x86_64-linux/lib' too large; maximum length 107\n"
ERROR: pseudo-native-1.8.1-r0 do_populate_sysroot: Function failed: relocatable_binaries_preprocess
ERROR: Logfile of failure stored in: /home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1-r0/temp/log.do_populate_sysroot.11

Looking at it, the error from chrpath is easy to explain. The original RPATH value is shorted then the new RPATH value that was calculated.

i.e.:
/home/paul/poky/build/tmp/sysroots/x86_64-linux/usr/lib

vs

$ORIGIN/../../../../../../../sysroots/x86_64-linux/usr/lib

So the system errors because it would overflow the buffer inside of the ELF object.

What is strange is this issue is new. It means something has changed in the origin processing of native packages over the weekend.

I'm wondering if this has something to do with the new recipe specific sysroot.

It should hopefully be easy to _workaround_ this issue, by having the build directory in a deeper path (something with more characters in it.)

But this is a big enough program we're going to have to figure out how to solve it.

--Mark

Quoted 14 lines

I did a cleansstate on that and then it was fine but then openssl died in the same way:

ERROR: openssl-native-1.0.2j-r0 do_populate_sysroot: openssl-native: chrpath command failed with exit code 7:
b'/home/paul/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2j-r0/sysroot-destdir/home/paul/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2j-r0/recipe-sysroot-native/usr/lib/libssl.so.1.0.0: RPATH=/home/paul/poky/build/tmp/sysroots/x86_64-linux/usr/lib:/home/paul/poky/build/tmp/sysroots/x86_64-linux/lib\n'b"new rpath '$ORIGIN/../../../../../../../sysroots/x86_64-linux/usr/lib:$ORIGIN/../../../../../../../sysroots/x86_64-linux/lib' too large; maximum length 107\n"
ERROR: openssl-native-1.0.2j-r0 do_populate_sysroot: Function failed: relocatable_binaries_preprocess
ERROR: Logfile of failure stored in: /home/paul/poky/build/tmp/work/x86_64-linux/openssl-native/1.0.2j-r0/temp/log.do_populate_sysroot.7182
ERROR: Task (virtual:native:/home/paul/poky/meta/recipes-connectivity/openssl/openssl_1.0.2j.bb:do_populate_sysroot) failed with exit code '1'

I mentioned it to Mark and he suggested I should mention it here.

P.

#2 lore raw
In reply to Paul Gortmaker
Quoted 13 lines · Paul Gortmaker

After updating this morning (everything on master, re-using the existing
build dir that was built OK within the last 48h) I saw this:

ERROR: pseudo-native-1.8.1-r0 do_populate_sysroot: pseudo-native:
chrpath command failed with exit code 7:
b'/home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1- r0/sysroot-destdir/home/paul/poky/build/tmp/work/x86_64-linux/pseudo- native/1.8.1-r0/recipe-sysroot-native/usr/bin/pseudodb:
RPATH=/home/paul/poky/build/tmp/sysroots/x86_64- linux/usr/lib:/home/paul/poky/build/tmp/sysroots/x86_64- linux/lib\n'b"new
rpath

Quoted 8 lines

'$ORIGIN/../../../../../../../sysroots/x86_64- linux/usr/lib:$ORIGIN/../../../../../../../sysroots/x86_64-linux/lib' too large; maximum length 107\n"
ERROR: pseudo-native-1.8.1-r0 do_populate_sysroot: Function failed:
relocatable_binaries_preprocess
ERROR: Logfile of failure stored in:
/home/paul/poky/build/tmp/work/x86_64-linux/pseudo-native/1.8.1- r0/temp/log.do_populate_sysroot.11

To follow up we've figured out this is the error you see if you take an existing build directory, pre recipe specific sysroot and then update to post recipe specific sysroot.

It seems that pseudo-native, openssl-native and subversion-native have issues where you can pass in new configuration but they don't recompile the binaries, despite those binaries depending on the paths you pass in.

We're seeing how widespread the problem is before deciding exactly how to handle this. It might be a case of some PR bumps, obvioulsy wiping TMPDIR is the comprehensive solution.

Cheers,

Richard