Tom Callaway wrote on 2019/02/07 3:39:
One of my packages failed the mass rebuild, but only on ppc64le and
aarch64. The error they both hit is this:
Error: package or namespace load failed for 'BiocParallel' in
dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object
'/builddir/build/BUILDROOT/R-BiocParallel-1.16.5-1.fc30.ppc64le/usr/lib64/R/library/BiocParallel/libs/BiocParallel.so':
/builddir/build/BUILDROOT/R-BiocParallel-1.16.5-1.fc30.ppc64le/usr/lib64/R/library/BiocParallel/libs/BiocParallel.so:
undefined symbol: shm_open
Error: loading failed
Here's the linker invocation:
g++ -m64 -std=gnu++11 -shared -L/usr/lib64/R/lib -Wl,-z,relro
-Wl,--as-needed -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
-o BiocParallel.so ipcmutex.o -L/usr/lib64/R/lib -lR
Now, google says this might be due to a lack of -lrt, but what's not
clear to me is why it only fails on these two architectures (I've
confirmed that none of the others have -lrt either).
Full build logs are here:
https://koji.fedoraproject.org/koji/taskinfo?taskID=32581444
Thanks in advance,
~tom
I don't know well about R, however that is probably because R-core (-3.5.3-4.fc30)
package already
requires librt.so on x86_64, i686, etc, while on aarch64 and ppc64le, it does not, which
probably indicates
that on x86_64, i686, etc R binary is already linked with librt.so , while on aarch64 and
ppc64le
it is not.
So probably on x86_64, i686 when dlopen()ing BiocParallel.so symbol for shm_open is
already resolved
(because R is linked against librt.so) while on aarch64 and ppc64le it is not.
I guess this is because there is some configuration difference on R.spec on aarch64 and
ppc64le.
Regards,
Mamoru