On 04/26/10 10:43, Caolán McNamara wrote:
On Sun, 2010-04-25 at 19:44 +0200, Rene Engelhard wrote:
We can only improve things here when we eventually drop the STLport-requirement
(and become URE-incompatible on the affected platforms).

If we continue to build and package into the install sets stlport on
Linux x86, but not actually build OOo itself against it, its quite
likely that stuff will work out ok (i.e. legacy binary x86 extensions
that link against stlport will continue to work) as there's no explicit
use of stl types in the public ure interfaces. Not 100% certain about
that though :-)

I always thought there actually were traces of STLport in the URE ABI, in some obscure corner of it. And I am pretty sure I actually checked that, a long time ago. Anyway, checking on DEV300_m77 unxlngi6, it appears there are no such traces, not in the ABI designated by those dynamic libraries not listed as "private" in ure/source/README (apart from the STLport library itself, of course).

So, I made a quick hack to verify that not building against our STLport would actually work, see patch below. Some notes:

The hack for now is only for the Hamburg setsolar environment (solenv/config/sdev300.ini), configure.in would still need to be adapted. There is a new build environment variable, OOO_INCLUDE_STLPORT; for USE_SYSTEM_STL!=YES it controls whether to include (and thus build) OOo's STLport library in installation sets nonetheless. (stlport/makefile.mk now only controls whether to build STLport, while the new stlport/systemstl/makefile.mk controls whether to copy the stlport/systemstl wrapper files to solver.)

The hack for now is only for unxlngi6. And at least for Linux, it appears, there is not even a need to explicitly link executables that can load OOo extensions (uno.bin, soffice.bin) against the STLport library, so that legacy extension libraries linking against the STLport library can find it: The Linux dynamic loader apparently uses the executable's RPATH, among other places, to locate an extension library's dependencies, so finds the STLport library in ure/lib via that.

This sounds promising, I would say.

-Stephan


diff -r 331c22de59dc scp2/source/ooo/makefile.mk
--- a/scp2/source/ooo/makefile.mk       Thu Apr 22 18:47:26 2010 +0200
+++ b/scp2/source/ooo/makefile.mk       Mon May 10 09:35:29 2010 +0200
@@ -123,6 +123,10 @@
 SCPDEFS+=-DUSE_SYSTEM_STL
 .ENDIF
+.IF "$(OOO_INCLUDE_STLPORT)" == "TRUE"
+SCPDEFS+=-DOOO_INCLUDE_STLPORT
+.ENDIF
+
 .IF "$(WITH_MOZILLA)" == "NO"
 SCPDEFS+=-DWITHOUT_MOZILLA
 .ENDIF
diff -r 331c22de59dc scp2/source/ooo/ure.scp
--- a/scp2/source/ooo/ure.scp   Thu Apr 22 18:47:26 2010 +0200
+++ b/scp2/source/ooo/ure.scp   Mon May 10 09:35:29 2010 +0200
@@ -842,7 +842,8 @@
 #endif
#if !defined USE_SYSTEM_STL || \
-    (defined USE_SYSTEM_STL && defined _C52 && defined IS_LP64)
+    (defined USE_SYSTEM_STL && defined _C52 && defined IS_LP64) || \
+    defined OOO_INCLUDE_STLPORT
 File gid_File_Dl_Stlport
     TXT_FILE_BODY;
     Dir = SCP2_URE_DL_DIR;
diff -r 331c22de59dc solenv/config/sdev300.ini
--- a/solenv/config/sdev300.ini Thu Apr 22 18:47:26 2010 +0200
+++ b/solenv/config/sdev300.ini Mon May 10 09:35:29 2010 +0200
@@ -631,6 +631,8 @@
                        SOLAR_OJDK16PATH 
%SOLAR_ENV_ROOT%/openjdk-6-b08-linux-i586
                        SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
                        SRC_ROOT 
%SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+            USE_SYSTEM_STL YES
+            OOO_INCLUDE_STLPORT TRUE
                }
                common2
                {
diff -r 331c22de59dc stlport/makefile.mk
--- a/stlport/makefile.mk       Thu Apr 22 18:47:26 2010 +0200
+++ b/stlport/makefile.mk       Mon May 10 09:35:29 2010 +0200
@@ -34,29 +34,7 @@
.INCLUDE : settings.mk -.IF "$(USE_SYSTEM_STL)"=="YES"
-
-.IF "$(OS)"=="SOLARIS" && "$(COM)"!="GCC"
-# System STL when building with SunStudio is just a version of STLport
-# which comes with the compiler
-all:
-       @echo "Nothing to do"
-.ELSE #"$(OS)"=="SOLARIS" && "$(COM)"!="GCC"
-#
-# If you choose to build without stlport, some headers will be used to bring 
the
-# sgi extensions into the std namespace:
-$(INCCOM)$/stlport$/functional \
-$(INCCOM)$/stlport$/hash_map \
-$(INCCOM)$/stlport$/hash_set \
-$(INCCOM)$/stlport$/numeric \
-$(INCCOM)$/stlport$/slist \
-$(INCCOM)$/stlport$/rope \
-$(INCCOM)$/stlport$/vector: systemstl$/$$(@:f)
-    $(MKDIRHIER) $(@:d)
-    $(COPY) $< $@
-.ENDIF #"$(OS)"=="SOLARIS" && "$(COM)"!="GCC"
-
-.ELSE # "$(USE_SYSTEM_STL)"
+.IF "$(USE_SYSTEM_STL)" != "YES" || "$(OOO_INCLUDE_STLPORT)" == "TRUE"
# --- Files --------------------------------------------------------
 .EXPORT : CC CXX
@@ -161,12 +139,14 @@
 BUILD_FLAGS=-f sunpro6.mak
 .ENDIF # "$(CCNUMVER)">="00050008"
-OUT2INC= \
-    stlport$/SC5$/*.SUNWCCh
+.IF "$(USE_SYSTEM_STL)" != "YES"
+OUT2INC = stlport$/SC5$/*.SUNWCCh
+.END
 .ENDIF
-OUTDIR2INC= \
-    stlport
+.IF "$(USE_SYSTEM_STL)" != "YES"
+OUTDIR2INC = stlport
+.END
.IF "$(GUI)"=="WNT"
 .IF "$(COM)"=="GCC"
@@ -243,4 +223,4 @@
 .ENDIF "$(COM)"=="GCC"
 .ENDIF          # "$(GUI)"=="WNT"
-.ENDIF # "$(USE_SYSTEM_STL)"
+.ENDIF # "$(USE_SYSTEM_STL)" || "$(OOO_INCLUDE_STLPORT)"
diff -r 331c22de59dc stlport/prj/build.lst
--- a/stlport/prj/build.lst     Thu Apr 22 18:47:26 2010 +0200
+++ b/stlport/prj/build.lst     Mon May 10 09:35:29 2010 +0200
@@ -1,2 +1,3 @@
 sl     stlport :   SO:so_prereq solenv NULL
 sl     stlport                                         nmake   -       all     
sl_mkout NULL
+sl stlport/systemstl nmake - all sl_systemstl NULL
diff -r 331c22de59dc stlport/systemstl/makefile.mk
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/stlport/systemstl/makefile.mk     Mon May 10 09:35:29 2010 +0200
@@ -0,0 +1,54 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2010 Oracle and/or its affiliates.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org.  If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#***********************************************************************/
+
+PRJ = ..
+PRJNAME = stlport
+TARGET = systemstl
+
+.INCLUDE: settings.mk
+
+# If you choose to build without STLport, some headers will be used to bring 
the
+# SGI extensions into the std namespace; however, system STL when building with
+# SunStudio is just a version of STLport which comes with the compiler:
+
+.IF "$(USE_SYSTEM_STL)" == "YES" && ("$(OS)" != "SOLARIS" || "$(COM)" != "C52")
+
+$(INCCOM)/stlport/functional \
+$(INCCOM)/stlport/hash_map \
+$(INCCOM)/stlport/hash_set \
+$(INCCOM)/stlport/numeric \
+$(INCCOM)/stlport/rope \
+$(INCCOM)/stlport/slist \
+$(INCCOM)/stlport/vector : $$(@:f)
+    $(MKDIRHIER) $(@:d)
+    $(COPY) $< $@
+
+.ELSE
+
+nothing .PHONY:
+
+.END

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to