configure.ac                           |   15 ++++++++++-----
 extensions/Executable_pluginapp.bin.mk |    4 ----
 2 files changed, 10 insertions(+), 9 deletions(-)

New commits:
commit 800005b120d06100e082ad45051d4f1c3c549569
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Thu Oct 24 14:28:58 2013 +0200

    Disallow --without-system-cairo combined with (implicit) --enable-gtk
    
    As the system gtk libraries may depend on later versions of libcairo.so.2 
and
    its bring-along libpixman-1.so.0 with the same SONAMEs.  So if it would ever
    happen at runtime that our bundled libcairo.so.2 and/or libpixman-1.so.0 get
    loaded before the system ones, the system gtk would probably not work 
correctly.
    
    Ultimately, the bundled cairo can probably go completely.
    
    This reverts 122a137672d761418a549568ad8cad623dd2b4b5 "extensions: crude 
hack
    for mysterious cairo link failure."
    
    As discussed at #libreoffice-dev:
    Oct 24 10:10:15 <mst__> sberg, caolan, dtardon  any idea what the proper 
fix is
      for pluginapp.bin? 122a137672d761418a549568ad8cad623dd2b4b5  breaks on 
RHEL5
      tinderbox...
    Oct 24 10:10:17 <IZBot> core - extensions: crude hack for mysterious cairo 
link
      failure -
      
http://cgit.freedesktop.org/libreoffice/core/commit/?id=122a137672d761418a549568ad8cad623dd2b4b5
    Oct 24 10:12:53 <dtardon> mst__, i'd try
      gb_Executable_use_external,pluginapp.bin,cairo
    Oct 24 10:13:58 <mst__> dtardon, i'm not sure if that is the intent - the
      -lcairo comes from the gtk external so we should use same cairo as gtk 
i.e.
      system one? but id on't understand why linker won't find the pixman 
library
    Oct 24 10:16:35 <sberg> mst__, I get no build failures in "make
      extensions.clean && make extensions" when I comment out that FIXME in
      extensions/Executable_pluginapp.bin.mk
    Oct 24 10:18:59 <mst__> sberg, it only started to fail for me when i removed
      libcairo.so from solver, probably you still have a stale one
    Oct 24 10:19:42 <sberg> mst__, in solver/*/lib/? no
    Oct 24 10:20:48 <sberg> mst__, but turns out I'm using --with-system-cairo 
(as
      required by --enable-gtk3), so ignore me
    Oct 24 10:22:53 <mst__> sberg, so if i rm solver/unxlngx6/lib/*cairo*
      solver/unxlngx6/lib/*pixman*  it still fails for me, how could 
system-cairo
      work then?
    Oct 24 10:24:13 <sberg> mst__, in that /usr/lib64/libcairo.so has a 
DT_NEEDED on
      libpixman-1.so.0 (which "our" libcairo.so is missing, I'd assume)
    Oct 24 10:24:44 <sberg> mst__, erm
    Oct 24 10:41:18 <mst__> sberg, so if i filter out -lcairo in
      gb_LinkTarget__use_gtk then it magically works - are there any problems 
with
      that approach?
    Oct 24 10:47:19 <sberg> mst__, so the root of the problem is that there's 
two
      different libcairo involved?  (just doing a local build 
--wihtout-system-cairo
      here, to see what's going on)
    Oct 24 10:47:55 <mst__> sberg, i don't think so since i get same problem 
after
      removing all cairo libs from solver
    Oct 24 11:12:11 <sberg> mst__, so the link line for pluginapp.bin contains
      -lcairo twice, apparently dragged in indirectly (via _use_externals 
gthread
      and gtk, likely), and does not contain "our" -L.../cairo/src/.libs (as it
      doesn't _use_externals cairo), but does contain -Lsolver/*/lib.  Now,
      /usr/lib64/libcairo.so needs libpixman-1.so.0 and there happens to be one 
in
      solver/*/lib that lacks syms compared to /usr/lib64/libpixman-1.so.0
    Oct 24 11:13:43 <sberg> mst__, so this was nicely hidden when all the 
external
      libs were delivered to solver/*/lib, but in the end I think the bug is to
      combine system gtk with non-system cairo and/or pixman
    Oct 24 11:14:49 <sberg> mst__, as long as our cairo and/or pixman have the 
same
      SONAMEs or exported symbol names as system ones, all hell can happen at
      runtime anyway
    Oct 24 11:15:32 <mst__> sberg, but... why then does it fail for me if i 
don't
      have the cairo/pixman libs in solver?
    Oct 24 11:15:57 <mst__> ahhh  -Wl,-rpath-link,$S/instdir/unxlngx6/program <-
      taht must be why
    Oct 24 11:17:40 <mst__> is it normal that -Wl,--trace does not print out 
what
      libraries were found via -Wl,-rpath-link? it only appears to print 
explicit
      -lfoo
    Oct 24 11:18:27 <sberg> mst__, because of -Linstdir/*/program
    Oct 24 11:20:27 <mst__> sberg, so we need
      -Wl,-rpath-link,$S/instdir/unxlngx6/program obviously;
    Oct 24 11:22:08 <mst__> sberg, apparently everything builds successfully 
when
      filtering out -lcairo from GTK_LIBS, do you think that is the best 
workaround
      for this?
    Oct 24 11:22:14 <sberg> mst__, no, we need to change configure.ac to 
disallow
      --enable-gtk --without-system-{ciaro,pixman}
    Oct 24 11:22:39 <sberg> mst__, similarly to how we already disallow
      --enable-gtk3 --without-system-cairo
    Oct 24 11:24:48 <mst__> sberg, that would be sort of pointless, since linux 
is
      afaik the only platfrom where cairo is used at all - effectvely we could
      remove bundled caior then?
    Oct 24 11:27:04 <sberg> mst__, effectively yes, unless it would still be 
useful
      for some --disable-gtk scenario
    Oct 24 11:33:41 <mst__> caolan, cloph does RHEL5 have a sufficiently recent
      system cairo?
    Oct 24 11:34:43 <cloph> cairo 1.2.4 on the CentOS 5.9 (well, more like 5.10 
now)
      system
    Oct 24 11:37:08 <jcorrius> my RHEL6 build uses internal cairo
    Oct 24 11:37:47 <caolan> rhel-5 cairo is 1.2.4
    Oct 24 11:37:54 <mst__> caolan, the other option i can see is to do $(call
      gb_LinkTarget_add_libs,$(1),$(filter-out -lcairo,$(GTK_LIBS))) in
      gb_LinkTarget__use_gtk which works-for-me(TM)
    Oct 24 11:38:30 <sberg> jcorrius, not for very much longer ,)  (it typically
      happens to work by luck to combine system GTK with bundled cairo)
    Oct 24 11:38:59 <mst__> thorsten, are you aware of any reason why we must 
bundle
      cairo on linux?
    Oct 24 11:40:05 <sberg> mst__, "<caolan> rhel-5 cairo is 1.2.4" and we only
      check for "cairo >= 1.0.2" in cofingure.ac, so all should be good
    Oct 24 11:40:35 <sberg> mst__, "works-for-me(TM)" just by luck
    Oct 24 11:41:33 <mst__> sberg, well perhaps guess the real problem is that
      pkg-config spits out a spurious -lcairo for gtk+-2.0 so...
    Oct 24 11:42:19 <mst__> ... but of course if a sufficiently good cairo is
      available everywhere we don't have reason to bundle it anyway
    Oct 24 11:45:45 <sberg> mst__, at least my /usr/lib64/libgtk-x11-2.0.so.0 
does
      have a DT_NEEDED on libcairo.so.2, so even if pkg-config wouldn't spit it 
out
      we would still be in trouble at runtime
    Oct 24 11:47:05 <mst__> sberg, at runtime we have this problem for a lot 
more
      libraries than just cairo
    Oct 24 11:47:43 <sberg> mst__, but why refuse to fix the problem, at least 
for
      cairo, where there is apparently no good reason to bundle it anyway?
    Oct 24 11:48:36 <jcorrius> is cairo used on Windows for anything?
    Oct 24 11:48:42 <mst__> sberg, since there is no good reason to bundle it 
anyway
      i don't object to removing the bundled cairo
    Oct 24 11:49:38 <mst__> sberg, ... but i can still hold the opinion that gtk
      shouldn't put -lcairo in its pkgconfig :)
    Oct 24 11:53:12 <sberg> mst__, since "pkg-config --cflags gtk+-2.0" includes
      "-I/usr/include/cairo", one could argue that cairo is a "re-exported" 
part of
      that, so should also appear in pkg-config --libs output; one could likely
      argue either way
    Oct 24 11:55:27 <mst__> sberg, well but if you're calling functions from 
cairo
      then you're using cairo directly whereas if you just call gtk functions 
you
      have no need to link cario
    Oct 24 11:56:47 <sberg> mst__, sure, my argumentation depends on that
      "re-exports" argument (which might be thin); anyway, are you going to 
remove
      bundled cairo
    Oct 24 11:56:54 <sberg> ?
    Oct 24 11:57:34 <mst__> sberg, i'm going to force it to system in configure 
for
      now
    Oct 24 11:58:13 <sberg> mst__, I have a patch for exactly that already 
locally
      here, so could push that if you've not done that too already anyway
    Oct 24 11:59:00 <mst__> sberg, i havent' finished my freetype patch yet 
because
      people always distract me on irc so you can push
    Oct 24 11:59:01 <sberg> mst__, or, rather, my patch just errors out in the
      --enable-gtk --without-system-cairo combination, so if you have a better 
one,
      go ahead
    
    Change-Id: I071e759a55f46338b36c3cf8ac7cd5591bd9e376

diff --git a/configure.ac b/configure.ac
index e1d6124..6b64984 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1436,8 +1436,8 @@ AC_ARG_WITH(system-jars,
 
 AC_ARG_WITH(system-cairo,
     AS_HELP_STRING([--with-system-cairo],
-        [Use Cairo libraries already on system.]),,
-    [with_system_cairo="$with_system_libs"])
+        [Use cairo libraries already on system.  Happens automatically for
+         (implicit) --enable-gtk and for --enable-gtk3.]))
 
 AC_ARG_WITH(myspell-dicts,
     AS_HELP_STRING([--with-myspell-dicts],
@@ -9910,10 +9910,10 @@ GTK3_CFLAGS=""
 GTK3_LIBS=""
 ENABLE_GTK3=""
 if test "x$enable_gtk3" = "xyes"; then
-    if test "$with_system_cairo" != yes; then
-        AC_MSG_WARN([System cairo required for gtk3 support, please use 
--with-system-cairo])
-        add_warning "System cairo required for gtk3 support, please use 
--with-system-cairo"
+    if test "$with_system_cairo" = no; then
+        AC_MSG_ERROR([System cairo required for gtk3 support, do not combine 
--enable-gtk3 with --without-system-cairo])
     fi
+    : ${with_system_cairo:=yes}
     PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= 3.2 gtk+-unix-print-3.0 
gmodule-no-export-2.0 cairo, ENABLE_GTK3="TRUE", ENABLE_GTK3="")
     if test "x$ENABLE_GTK3" = "xTRUE"; then
         R="gtk3"
@@ -9932,6 +9932,10 @@ if test "$GUIBASE" != "unx" -o "$enable_headless" = 
"yes"; then
 fi
 ENABLE_GTK=""
 if test "x$enable_gtk" = "xyes"; then
+    if test "$with_system_cairo" = no; then
+        AC_MSG_ERROR([System cairo required for gtk support, do not use 
--without-system-cairo or use --disable-gtk])
+    fi
+    : ${with_system_cairo:=yes}
     ENABLE_GTK="TRUE"
     AC_DEFINE(ENABLE_GTK)
     R="gtk $R"
@@ -11707,6 +11711,7 @@ fi
 if test "$test_cairo" = "yes"; then
     AC_MSG_CHECKING([whether to use the system cairo])
 
+    : ${with_system_cairo:=$with_system_libs}
     if test "$with_system_cairo" = "yes"; then
         SYSTEM_CAIRO=YES
         AC_MSG_RESULT([yes])
diff --git a/extensions/Executable_pluginapp.bin.mk 
b/extensions/Executable_pluginapp.bin.mk
index fb01602..531aabd 100644
--- a/extensions/Executable_pluginapp.bin.mk
+++ b/extensions/Executable_pluginapp.bin.mk
@@ -71,10 +71,6 @@ $(eval $(call gb_Executable_use_externals,pluginapp.bin,\
     gthread \
     gtk \
 ))
-# FIXME: on Fedora 19 link fails with unresolved symbols in cairo without this?
-$(eval $(call gb_Executable_add_libs,pluginapp.bin,\
-       -lpixman-1 \
-))
 
 # the orignal dmakefile said: don't ask, it's ugly
 ifeq ($(OS),SOLARIS)
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to