> I'm having a few issues compiling the syncevolution 0.9
release on
> either F-11 or rawhide.
>
> I'm not sure if its a missing dep that isn't picked up by ./configure
> or something else. The last beta compiled OK so I suspect its
> something quite minor that I've missed.
I'm not aware of build changes in the SyncEvolution and libsynthesis
source since the last beta. Perhaps comparing against a build of that on
your system will give a clue?
You are compiling both in exactly the same way, I presume? The paths
below (syncevolution-0.9/src/build-synthesis/src) indicate that you
compile from source .tar.gz. Did you rebuild libtool and friends?
Nope. Just a plain ./configure and then a make :)
> I get the following undefined
> reference errors below.
The root problem of those is that libsynthesis.so.0 is not found:
> /bin/sh ../libtool --tag=CXX --mode=link g++
> -I/home/perobinson/rpmbuild/BUILD/syncevolution-0.9/src/build-synthesis/src
> -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
> -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
> -uSyncEvolution_Module_Version -Wl,--export-dynamic -o syncevolution
> syncevolution-syncevolution.o syncevolution-test.o
> core/libsyncevolution.la -lglib-2.0
> mkdir .libs
> DIE_RPATH_DIE="/usr/lib64/syncevolution:$DIE_RPATH_DIE" g++
> -I/home/perobinson/rpmbuild/BUILD/syncevolution-0.9/src/build-synthesis/src
> -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions
> -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic
> -uSyncEvolution_Module_Version -Wl,--export-dynamic -o
> .libs/syncevolution syncevolution-syncevolution.o syncevolution-test.o
> core/.libs/libsyncevolution.so -lglib-2.0
> /usr/bin/ld: warning: libsynthesis.so.0, needed by
> core/.libs/libsyncevolution.so, not found (try using -rpath or
> -rpath-link)
I suspect that wiping out -rpath inside core/.libs/libsyncevolution.so
too aggressively is causing this. But this is just a guess.
Yes, that looks like it. I get the following below when compiling it
as before (it worked fine in beta3). The standard fix for this in
Fedora is to run the following 2 sed commands which generally fixes
the problem. Apparently in this case it doesn't :-)
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g'
libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+ /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot
*******************************************************************************
*
* WARNING: 'check-rpaths' detected a broken RPATH and will cause
'rpmbuild'
* to fail. To ignore these errors, you can set the '$QA_RPATHS'
* environment variable which is a bitmask allowing the values
* below. The current value of QA_RPATHS is 0x0000.
*
* 0x0001 ... standard RPATHs (e.g. /usr/lib); such RPATHs are a minor
* issue but are introducing redundant searchpaths without
* providing a benefit. They can also cause errors in multilib
* environments.
* 0x0002 ... invalid RPATHs; these are RPATHs which are neither absolute
* nor relative filenames and can therefore be a SECURITY risk
* 0x0004 ... insecure RPATHs; these are relative RPATHs which are a
* SECURITY risk
* 0x0008 ... the special '$ORIGIN' RPATHs are appearing after other
* RPATHs; this is just a minor issue but usually unwanted
* 0x0010 ... the RPATH is empty; there is no reason for such RPATHs
* and they cause unneeded work while loading libraries
* 0x0020 ... an RPATH references '..' of an absolute path; this will break
* the functionality when the path before '..' is a symlink
*
*
* Examples:
* - to ignore standard and empty RPATHs, execute 'rpmbuild' like
* $ QA_RPATHS=$[ 0x0001|0x0010 ] rpmbuild my-package.src.rpm
* - to check existing files, set $RPM_BUILD_ROOT and execute check-rpaths like
* $ RPM_BUILD_ROOT=<top-dir> /usr/lib/rpm/check-rpaths
*
*******************************************************************************
ERROR 0001: file
'/usr/lib64/syncevolution/libsyncevolution.so.0.0.0' contains a
standard rpath '/usr/lib64' in [/usr/lib64]
ERROR 0001: file '/usr/lib64/libsynthesis.so.0.1.0' contains a
standard rpath '/usr/lib64' in [/usr/lib64]
ERROR 0001: file '/usr/bin/sync-ui-gtk' contains a standard rpath
'/usr/lib64' in [/usr/lib64]
ERROR 0001: file '/usr/bin/sync-ui-moblin' contains a standard rpath
'/usr/lib64' in [/usr/lib64]
Cheers,
Peter