Hi there...
this might not be a problem when running -current on x32-platform but might be a problem if there is any need to re-compile kde-workspace (maybe because a major-version bump of a library dependency).
I have setup 14.2/-current inside of a virtualbox for 32bit and a second virtual machine with 64bit with package updates up to 16-03-10.
I have used 'KDE.SlackBuild kdebase kde-workspace' to recompile the kde-workspace package.
This works fine for x64, the package compiles fine without any issues.
On x32 i get the following error:
Code:
[ 44%] Building C object kdm/backend/CMakeFiles/kdm.dir/auth.c.o
/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../libpci.a(names-hwdb.o): In function `pci_id_hwdb_lookup':
names-hwdb.c:(.text+0xb9): undefined reference to `udev_hwdb_get_properties_list_entry'
names-hwdb.c:(.text+0xc9): undefined reference to `udev_list_entry_get_next'
names-hwdb.c:(.text+0xdb): undefined reference to `udev_list_entry_get_name'
names-hwdb.c:(.text+0xf3): undefined reference to `udev_list_entry_get_value'
names-hwdb.c:(.text+0x25a): undefined reference to `udev_new'
names-hwdb.c:(.text+0x265): undefined reference to `udev_hwdb_new'
/usr/lib/gcc/i586-slackware-linux/5.3.0/../../../libpci.a(names-hwdb.o): In function `pci_id_hwdb_free':
names-hwdb.c:(.text+0x293): undefined reference to `udev_hwdb_unref'
names-hwdb.c:(.text+0x2a9): undefined reference to `udev_unref'
collect2: error: ld returned 1 exit status
kinfocenter/Modules/pci/CMakeFiles/kcm_pci.dir/build.make:191: recipe for target 'lib/kcm_pci.so' failed
make[2]: *** [lib/kcm_pci.so] Error 1
CMakeFiles/Makefile2:17681: recipe for target 'kinfocenter/Modules/pci/CMakeFiles/kcm_pci.dir/all' failed
make[1]: *** [kinfocenter/Modules/pci/CMakeFiles/kcm_pci.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
I thought there might be a problem with pciutils so i had a look to archlinux and it looks like they are using a shared library instead of a static one.
I tried to rebuild pciutils as a shared library (using SHARED=yes with the original SlackBuild) and this will fix the build on x32 but on x64 build kde-workspace is ok with the static version of pciutils.
Not sure if there will be ever again any need to re-compile kde-workspace since KDE4 is deprecated but maybe this affects other packages also so i would like to get some feedback:
Any ideas what could be the problem here and how can it be fixed on x32 without using a shared library version of pciutils? Maybe some missing compiler or linker flags?
P.S. I tried to use some older versions of pciutils (3.2.1) and it looks like build on x32 is ok even with a static library. I had a look to the libpci.pc config file and with 3.4.1 there is an additional -ludev for Libs.private. Might this be a problem related to the eudev package?
P.S.#2: Really looks like an issue with the new -ludev. If i modify the FindPciutils.cmake file from kde-workspace to include the ${UDEV_LIBS} also everything seem to work. I just wonder why this works on x64 without specify the -ludev libs.
Code:
FIND_LIBRARY(PCIUTILS_LIBRARY NAMES pci)
if(PCIUTILS_LIBRARY)
FIND_LIBRARY(RESOLV_LIBRARY NAMES resolv)
if(RESOLV_LIBRARY)
set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARY} ${RESOLV_LIBRARY} ${UDEV_LIBS})
else(RESOLV_LIBRARY)
set(PCIUTILS_LIBRARIES ${PCIUTILS_LIBRARY} ${UDEV_LIBS})
endif(RESOLV_LIBRARY)
endif(PCIUTILS_LIBRARY)