The following is especially important to all "open/free" distros 
including Indiana, since those cannot ship with / depend on closed 
non-re-distributable libraries:

As I already had written in my 05:45AM message, dirtily working around 
the issue described below costed less than 20 minutes, here is the patch 
that gets all the gtk/gdk based X-clients (Gnome, FF, TB ... ) working 
again, with Xorg's libXext, instead of Sun's one:


bash-3.00$ pwd
/FOX/MERCURIAL_20070830thu/XXX__fox-gate/XW_NV/open-src/lib/libXext
bash-3.00$ ls -al *.patch
-rw-r--r--   1 bochnig  other       3069 Oct  3 15:11 
XineramaGetState_and_XineramaGetInfo__fake_libXext.patch
bash-3.00$ cat XineramaGetState_and_XineramaGetInfo__fake_libXext.patch
###############################################################################
#
# XineramaGetState_and_XineramaGetInfo__fake_libXext.patch 0.1
#
# @SEE http://www.opensolaris.org/jive/thread.jspa?threadID=41001&tstart=0
#
###############################################################################
#
# XineramaGetState_and_XineramaGetInfo__fake_libXext.patch 0.1
#
# Copyright 2007 Martin Bochnig, MartUX.org  All rights reserved.
# Use subject to license terms.
#
# Permission is hereby granted, free of charge, to any person obtaining a
# copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
# without limitation the rights to use, copy, modify, merge, publish,
# distribute, and/or sell copies of the Software, and to permit persons
# to whom the Software is furnished to do so, provided that the above
# copyright notice(s) and this permission notice appear in all copies of
# the Software and that both the above copyright notice(s) and this
# permission notice appear in supporting documentation.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
# OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
# HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
# INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
# FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
# WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
# Except as contained in this notice, the name of a copyright holder
# shall not be used in advertising or otherwise to promote the sale, use
# or other dealings in this Software without prior written authorization
# of the copyright holder.
#
# @(#)Makefile  0.1     07/10/03
#

--- src/Makefile.in     2006-10-13 22:09:51.000000000 +0200
+++ src/Makefile.in     2007-10-03 14:48:34.624660000 +0200
@@ -58,7 +58,7 @@
 libXext_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_libXext_la_OBJECTS = DPMS.lo MITMisc.lo XAppgroup.lo XEVI.lo \
        XLbx.lo XMultibuf.lo XSecurity.lo XShape.lo XShm.lo XSync.lo \
-       XTestExt1.lo Xcup.lo Xdbe.lo extutil.lo globals.lo
+       XTestExt1.lo Xcup.lo Xdbe.lo extutil.lo globals.lo 
XineramaGetState_and_XineramaGetInfo__fake_libXext.lo
 libXext_la_OBJECTS = $(am_libXext_la_OBJECTS)
 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -217,7 +217,8 @@
        Xcup.c \
        Xdbe.c \
        extutil.c \
-       globals.c
+       globals.c \
+       XineramaGetState_and_XineramaGetInfo__fake_libXext.c

 all: all-am

--- src/XineramaGetState_and_XineramaGetInfo__fake_libXext.c    
1970-01-01 01:00:00.000000000 +0100
+++ src/XineramaGetState_and_XineramaGetInfo__fake_libXext.c    
2007-10-03 14:37:16.087893000 +0200
@@ -0,0 +1,10 @@
+void XineramaGetState(void *p)
+{
+       return;
+}
+
+void XineramaGetInfo(void *p)
+{
+        return;
+}
+


Regards,
%martin



On Wed Oct  3 06:09AM MEST 2007 Martin Bochnig wrote:

> Just to be clear: Setting LD_RUN_PATH (build host) and/or LD_LIBRARY_PATH_32 
> (on the [build host {bad} or] client) to "/usr/openwin/lib" is not the 
> "solution" I am looking for, nor is using any libtool- or ld-flags.
>
> I rather would like to see both of the following two things:
>
> #0.) Desktop/JDS should no longer depend on any deprecated call
> #1.) *Solely* for the sake of backwards compatibility: An open-up Sun's 
> proprietary libXext, so that we can add proprietary functionality to Xorg's 
> default version of libXext (de facto standard since 6.8), via automatically 
> patching the diffs in before each src tree generation.
>
> What do you think?
>
> %martin
>
> p.s. Did you already hear some info from g11n regarding where SUNWxorg-xkb 
> has gone?
>   
>>> On Wed Oct  3 05:51AM MEST 2007 Martin Bochnig wrote:
>> I just found Moinak has asked the same question already:
>> http://www.opensolaris.org/jive/thread.jspa?messageID=153375
>>
>> %m
>>> On Wed Oct  3 05:45AM MEST 2007 Martin Bochnig wrote:
>>> Modern (gtk/gdk based) desktop applications shipping as part of SXCR are 
>>> linked against /usr/lib/libgdk-x11-2.0.so.0, which in turn still depends on 
>>> the deprecated libXext-function XineramaGetState(), which gets reported as 
>>> missing symbol, whenever an (unpatched default) libXext is found/used by 
>>> the runtime linker, before the Sun-provided historic 
>>> /usr/openwin/lib/libXext.so.0 would be found/used.
>>> This has led to one of the issues, that prevented me from calling 
>>> http://www.martux.org/xorg/fox-gate/20070930sun/bin_pkgadd/Xorg7.2.0_opensol_sparc_snv70_binary_pkgadd__fox-gate_20070930.tar.gz
>>> a more_mature_than_alpha-release. Because the previous release 
>>> http://www.martux.org/xorg/OLD/20070503__7.2.0/bin_pkgadd_packages/
>>> had not shipped with libXext at all, no problems arised when replacing 
>>> Xsun: Gnome could be started, so coud firefox, thunderbird et al. Because 
>>> the first flavour of libXext that would have been found would always be the 
>>> very version, /usr/lib/libgdk-x11-2.0.so.0 once had been linked against. 
>>> Now that I have added libXext to the fox-gate framework (encouraged 
>>> by/derived from Moinak's work) the default unpatched version at 
>>> /usr/X11/lib/libXext.so.0.0.0 would be found first, attempted to use, and 
>>> then the default error handling mechanism of exit()'ing would be gone, 
>>> printing that nice message to stderr:
>>>
>>> ld.so.1: gnome-session: fatal: relocation error: file 
>>> /usr/lib/libgdk-x11-2.0.so.0: symbol XineramaGetState: referenced symbol 
>>> not found
>>>
>>> It is naturally a question of a few minutes to either add such a symbol to 
>>> /FOX/MERCURIAL_20070830thu/XXX__fox-gate/XW_NV/open-src/lib/libXext/libXext.patch
>>>  and change the Makefile to alawys apply that patch (and let that function 
>>> do nothing, but make the linker's symbol table happy). Or to add such a 
>>> symbol to an almost empty fake-lib (and LD_PRELOAD it, or link against 
>>> that).
>>>
>>> But those are only hacks/workarounds.
>>> Are there plans to open up Sun's version of libXext, or does it even exist 
>>> for download already, somewhere? One could then go and make Xorg's new 
>>> libXext backward compatible to Sun-provided X-clients in a properly 
>>> engineered manner. Don't know.
>>>
>>> References:
>>>
>>> Even SGI listed XineramaGetState(3X11) as 
>>> "This API call is deprecated by the new call,
>>>           XineramaActive(3X11). Only run-time backward compatibility
>>>           is provided. For compilation, use the API proposed by Xorg."
>>> Years ago!
>>> (Then I don't quite understand why state of the art JDS stuff is still 
>>> depending on it, on the latest versions of SX[C-D]R ?)
>>>
>>> http://docs.sgi.com/library/tpl/cgi-bin/getdoc.cgi?coll=0650&db=man&fname=/usr/share/catman/p_man/cat3/Xext/XineramaGetState.z
>>> http://blogs.sun.com/alanc/date/20050602
>>> http://www.google.com/search?hl=en&q=%22XineramaGetState%3A%22&btnG=Search
>>>
>>> --
>>> %martin
>>>  


Reply via email to