Note

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Udisks isn't building

From Funtoo
Jump to navigation Jump to search

This is an issue that Azerthoth ran into. He was trying to build udisks and was running into a linking issue:

  CC     udisks_probe_sas_expander-udisks-probe-sas-expander.o
  CCLD   udisks-probe-sas-expander
  CC     udisks_lvm_pv_export-udisks-lvm-pv-export.o
  CCLD   udisks-lvm-pv-export
/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/../../../../lib64/liblvm2app.so: undefined reference to `floor'
collect2: ld returned 1 exit status
make[4]: *** [udisks-lvm-pv-export] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

The line that looked funny was /usr/lib/gcc/x86_64-pc-linux-gnu/4.4.3/../../../../lib64/liblvm2app.so: undefined reference to `floor'. That would indicate that liblvm2app.so was linking to the floor function but that function at the time of linking udisks-lvm-pv-export was undefined. The floor function is defined in glibc within libm. Consequently, we compared the floor linkage in our libms:

      gurganbldesktop brantgurga # readelf -s /lib64/libm-2.11.2.so | grep floor
         200: 000000000002e3b0   156 FUNC    WEAK   DEFAULT   12 floorf@@GLIBC_2.2.5
         204: 0000000000036f10    39 FUNC    WEAK   DEFAULT   12 floorl@@GLIBC_2.2.5
         297: 0000000000018da0   392 FUNC    WEAK   DEFAULT   12 floor@@GLIBC_2.2.5
       
      Beast enUS # readelf -s /lib64/libm-2.10.1.so | grep floor
         200: 000000000002e910   171 FUNC    WEAK   DEFAULT   12 floorf@@GLIBC_2.2.5
         204: 00000000000375d0    39 FUNC    WEAK   DEFAULT   12 floorl@@GLIBC_2.2.5
         297: 0000000000018da0   392 FUNC    WEAK   DEFAULT   12 floor@@GLIBC_2.2.5

The floor linkage was the same. So maybe there was an issue with the liblvm2app.so linkage:

      gurganbldesktop brantgurga # readelf -s /lib64/liblvm2app.so.2.2 | grep floor
         220: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND floor@GLIBC_2.2.5 (11)
       
      Beast enUS # readelf -s /lib64/liblvm2app.so.2.2 | grep floor
          19: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND floor

This seemed to be the issue. For some reason, the floor function wasn't getting linked in lvm2-2.02.70. Why that was the case was never found, but lvm2-2.02.68 and lvm2-2.02.75 was tried and the linkage worked fine for both. Case closed.