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]