Closed Bug 68604 Opened 24 years ago Closed 17 years ago

Solaris installer should statically link against libstdc++ or not at all

Categories

(SeaMonkey :: Installer, defect)

Sun
Solaris
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INVALID

People

(Reporter: ted, Unassigned)

Details

(Keywords: relnote)

Neithe Mozilla 0.7 nor nightly builds will install on my UltraSparc running Solaris8 (64 bit). Missing libstdc++.so should this library be included with the builds since it's not a standard part of the OS? Probably the same for glib and GTK, I have GNOME installed so those are found. -Thomas
QA Contact: gemal → gbush
Thats a standard library..Does it work when you have that library?
Standard from where? I have Solaris 8 w/ gnome and enlightenment from the Sun CDs. I download mozilla-sparc-sun-solaris2.8-0.7.tar.gz from mozilla.org cd to package and: $./mozilla-installer-bin ld.so.1: ./mozilla-installer-bin: fatal: libstdc++.so.2.10.0: open failed: No such file or directory Killed $ldd ./mozilla-installer-bin libgtk-1.2.so.0 => /usr/local/lib/libgtk-1.2.so.0 libgdk-1.2.so.0 => /usr/local/lib/libgdk-1.2.so.0 libgmodule-1.2.so.0 => /opt/sfw/lib/libgmodule-1.2.so.0 libglib-1.2.so.0 => /opt/sfw/lib/libglib-1.2.so.0 libdl.so.1 => /usr/lib/libdl.so.1 libXext.so.0 => /usr/openwin/lib/libXext.so.0 libX11.so.4 => /usr/openwin/lib/libX11.so.4 libsocket.so.1 => /usr/lib/libsocket.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 librt.so.1 => /usr/lib/librt.so.1 libm.so.1 => /usr/lib/libm.so.1 libstdc++.so.2.10.0 => (file not found) libpthread.so.1 => /usr/lib/libpthread.so.1 libc.so.1 => /usr/lib/libc.so.1 libmp.so.2 => /usr/lib/libmp.so.2 libaio.so.1 => /usr/lib/libaio.so.1 libthread.so.1 => /usr/lib/libthread.so.1 /usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1 So where is libstdc++.so.2.10.0 supposed to come from? Where should it be installed? I just grabbed a new nightly build, 20001-02-15-21-Mtrunk/mozilla-sparc-sun-solaris2.6.tar.gz $ldd mozilla-bin libgkgfx.so => (file not found) libxpcom.so => (file not found) libmozjs.so => (file not found) libjsj.so => (file not found) libplds4.so => (file not found) libplc4.so => (file not found) libnspr4.so => (file not found) libpthread.so.1 => /usr/lib/libpthread.so.1 libposix4.so.1 => /usr/lib/libposix4.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 libdl.so.1 => /usr/lib/libdl.so.1 libm.so.1 => /usr/lib/libm.so.1 libc.so.1 => /usr/lib/libc.so.1 libaio.so.1 => /usr/lib/libaio.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libmp.so.2 => /usr/lib/libmp.so.2 libthread.so.1 => /usr/lib/libthread.so.1 /usr/platform/SUNW,Ultra-1/lib/libc_psr.so.1 ( note that . isn't in my normal LD_LIBRARY_PATH ) notice noy libstdc++ needed, and mozilla comes up, even grabs my old netscape profile :) Will the Mozilla 0.8 Sparc-Solaris buld be like this or need libstdc++?
Sorry on Red Hat Linux I have always had it installed automatically...Thats me opening my big mouth again. Not sure where to get it then :)
Possible release note?
Keywords: relnote
reassigning to Samir.
Assignee: ssu → sgehani
Over to Girish for Sun support.
Assignee: sgehani → girish.manwani
I am seeing this as well. I have a Solaris 8 install. It is brand new. I've looked all over for a library called libstdc++* and don't see it anywhere. Mozilla 0.8 will not run or install. Its ironic, I upgraded to Solaris 8 just to get the mozilla builds. :-(
It is true that libstdc++ does not come with solaris. This is available though through sun's release of Netscape6. Download from the following URL.. www.sun.com/solaris/netscape This package/bundle is shipped with the libstdc++ library present in it.
Marking NEW as per comments but this i am pretty sure can be moved to documentation.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: Cannot install in Solaris → Cannot install in Solaris without libstdc++
CCing endico for possible release note comment.
For fun, please try: $ run-mozilla.sh ldd mozilla-bin see also bug 79065. girish/ssu: for Solaris, it looks like we should do static linkage for the installer binary.
Keywords: mozilla1.0
to answer my own question: y:/tmp/obj-sparc-sun-solaris2.7/dist/bin: setenv LD_LIBRARY_PATH .:./components y:/tmp/obj-sparc-sun-solaris2.7/dist/bin: ldd mozilla-bin libgkgfx.so => ./libgkgfx.so libxpcom.so => ./libxpcom.so libmozjs.so => ./libmozjs.so libjsj.so => ./libjsj.so libplds4.so => ./libplds4.so libplc4.so => ./libplc4.so libnspr4.so => ./libnspr4.so libdl.so.1 => /usr/lib/libdl.so.1 librt.so.1 => /usr/lib/librt.so.1 libsocket.so.1 => /usr/lib/libsocket.so.1 libm.so.1 => /usr/lib/libm.so.1 libpthread.so.1 => /usr/lib/libpthread.so.1 libc.so.1 => /usr/lib/libc.so.1 libnsl.so.1 => /usr/lib/libnsl.so.1 libthread.so.1 => /usr/lib/libthread.so.1 libaio.so.1 => /usr/lib/libaio.so.1 libmp.so.2 => /usr/lib/libmp.so.2 /usr/platform/SUNW,Ultra-2/lib/libc_psr.so.1 cls: this is the reason that we should statically link against libstdc++.
Summary: Cannot install in Solaris without libstdc++ → Solaris installer should statically link against libstdc++
timeless, you're preaching to the choir. Take it to staff & drivers.
A design goal of installer is to be as small as possible with the initially downloaded bits. Statically linking anything to the application will be contrary to that goal. I suspect what has happened is that libstdc++ got majically added to the list of libs we link to (I may be wrong, I need to pull a build and investigate). If that is the case, I want to see if we can make some Makefile.in changes within the xpinstaller component so that we don't gratuitously link in this library as a part of the install wizard. If we don't use the library, we shouldn't be linking (we may need it, I don't know, again I need to pull and find out). Another solution would be to produce platform specific builds for the installer binary if we can't find some other workaround, builds that dynamically link in whatever is the correct libs for the *nix platform being shipped. Probably #ifdef foo inside the Makefile.in can handle this.
Yeah I remember the design goal about being small. However it should work out of the box too (ie, i shouldn't need to get the entire mozilla to run the installer). Syd: does that mean you're volunteering to investigate this? I don't have enough experience or knowledge to do this, although I could be tutored. Reporter: you originally asked about gtk/gdk, since this installer will install a gtk version of mozilla, it's fair that we require it. Yes you can build mozilla xlib (I do) or Qt (I do that too), but they would probably want to build their own installers (or just packagers perhaps a .deb).
Summary: Solaris installer should statically link against libstdc++ → Solaris installer should statically link against libstdc++ or not at all
> Reporter: you originally asked about gtk/gdk, since this installer will > install a gtk version of mozilla, it's fair that we require it. Yes you > can build mozilla xlib (I do) or Qt (I do that too), but they would probably > want to build their own installers (or just packagers perhaps a .deb). I guess what matters is that if a library is missing, the mozilla install should configure that. Especially on non-linux systems that don't use gtk+ or Qt yet. Since all Solaris/AIX/HP-UX systems have Motif it wasn't needed for Navigator, but the linux builds included a runtime/static copy most systems didn't have Motif. Mozilla should do the same.
For solaris the problem also occurs with gtk+/glib which are dynamically linked. Thus for our Sun's Netscape 6 releases we statically linmk these libraries in too. The size does increase but then use "strip" and it is much better.
I'm working on a patch to make the libstdc++ static. This will probibly take up about ~20k. I'll get back to you guys with it when it's done.
you guys might find this kind of interisting, but I did a little checking. Communicator 4.x requires libstdc++ too. Maybe we should consider this a pre-req, and leave it alone?
We need to go ahead and add to the release notes that libgtk-1.2.so.0 and libgfx_gtk.so are required as well on Solaris. Probably need to mention where these can be found as well. Are they in the ns6 install?
Yes it is in the ns6install. The netscape6 downloadable from Sun's website for solaris has all the pre-reqs bundled in.
libstdc++ is a part of gcc if you're working with a GNU toolset. Older Sun-packaged gcc's, i.e. the one I d/l'd from BigAdmin a few months ago, did not come with a shared libstdc++ (the result of not compiling with --enable-shared). Newer ones do, i.e. the one on the Solaris 8 4/01 Software Companion CD. Just a little contribution since nobody has mentioned it yet.
No longer working on Mozilla.
Assignee: girish.manwani → ssu
QA Contact: gbush → gemal
QA Contact: gemal → ktrina
another wrinkle: the netscape6 download at sun is solaris 7 and 8 only. if you're using 2.6 you can't install it and thus can't get the libstdc++. yes, you could try and take the package apart (i'm doing that now), but.... IMHO it REALLY should be included. like timeless says, its must at least install...
Question is whether a commercial product like Netscape 6 should be build with gcc (which ends-up in this libstdc++ issues and other pain) ? Why isn't it simply possible to use Sun Workshop/Forte in this case ?
gcc vs. forte is certainly a valid question, but i don't think that is the point of this bug. regardless of which is chosen, it should Just Work (and install) without having to chase down libraries. worse, in this case, the given chase location doesn't work in all cases (solaris 2.6).
i think the priority of this bug should be raised significantly - it is, strictly speaking, a blocker but with a workaround of chasing down the library. it also looks REALLY bad (when it shows up; solaris).
over to David.
Assignee: ssu → dprice
The release notes contain this item. "To install Mozilla on Solaris8 (64 bit), you must first install libstdc++. Download the Sun Netscape 6 install package and install libstdc++ from that package before installing or running Mozilla . In addition the following patches from http://sunsolve.sun.com need to be installed: 109147-09, 108434-02 108435-02. (Bug 68604)" Apparently this is no longer correct because the latest versions of Netscape no longer contain libstdc++. What should it say now? In email, paul asked: " Maybe I misunderstood this note, but I interpreted this as meaning that I should install the libraries from Netscape 6.01 (which put them in /opt/SUNWns6/dist/lib) and set LD_LIBRARY_PATH=/opt/SUNWns6/dist/lib to pick up libstdc++ for mozilla. Unfortunately, as far as I can tell, Netscape 6.21 does not include libstdc++ anymore - either the SPARC or the Intel version. Also, I've been using these libraries from the /opt/SUNWns6/dist/lib directory, /opt/SUNWns6/dist/lib//libgdk-1.2.so.0 /opt/SUNWns6/dist/lib//libglib-1.2.so.0 /opt/SUNWns6/dist/lib//libgmodule-1.2.so.0 /opt/SUNWns6/dist/lib//libgtk-1.2.so.0 Of course, these don't exist anymore either, but luckily the /opt/sfw/lib contains these libraries. The Solaris 8 Intel version that I've been building seems dependent on the libstdc++ library. The SPARC version does not. Currently, I'm investigating my Solaris Intel installation, and I'm hoping to be able to reconfigure my Solaris Intel box to re-build Mozilla such that it doesn't require the library. Any thoughts on this? Or, whom I need to contact about the missing libstdc++ library situation for Mozilla? "
AFAIK all newer Netscape releases for Solaris are build using the Sun Workshop compiler which does not need libstdc++. We either build our nightlies with Sun Workshop, too (preferred because Sun Workshop builds are much faster - and the newer JDK/JRE releases do not support a JAVA-plugin for gcc builds aynmore) or provide somehow access to libstdc++ binaries (seperate download, include them in the tarball (preferred - you need exactly the same libstdc++ version as the one used for building the Zilla or you end-up in various issues ("missing symbol" for example)) or link statically) ...
Since the SPARC nightlies are so erradic, I've started building from the nightly tarball. I just checked and I've got gcc-2.95.3 (20010315) installd recently. The builds DO NOT use libstdc++ now. When did it change?
I grabbed the RC2 file. The libstdc++ issue is back. And NS6.01 is nolonger on the sun website. So where does one get this? Why is it back? RC1 didn't need it and was built with gcc according to the README. RC1 used gcc-2.95.2 and RC2 used 2.95.3
Hooray, RC3 doesn't seem to need libstdc++.so !
Therefore the release notes are now wrong. http://www.mozilla.org/releases/mozilla1.0/#compatible
is it fixed on the trunk too? i.e., do the builds builds in this directory require it? ftp://ftp.mozilla.org/pub/mozilla/nightly/latest/
I got ask from Dawn to investigate this problem,
Thanks Bruce for helping to investigate this, It is the response from Bruce Gao, hope is helps *************************************************** Jay, If we build using gcc,then libstdc++ is required,the release will ship libstdc++ at the same time . If we build usging CC,libstdc++ can be removed from both the build process and release binary. Generally speaking,now Sun build Netscape using CC, so Netscape for Solaris(Sun released) doesn't need libstdc++ any more,while other mozilla builds may require it,depending on build tools. Bruce *********************************************************
Bruce Gao is added into the CC list.
libstdc++.so is not available on Soalris 8 by default. It is provided by glib. Thanks, Tian siyuan.tian@sun.com The following is from bruce.gao@sun.com: If we build using gcc,then libstdc++ is required,the release will ship libstdc++ at the same time . If we build usging CC,libstdc++ can be removed from both the build process and release binary. Generally speaking,now Sun build Netscape using CC, so Netscape for Solaris(Sun released) doesn't need libstdc++ any more,while other mozilla builds may require it,depending on build tools. Bruce
The README in RC3 claims it was built with gcc. But it's not looking for libstdc++, which is contrary to the claim that it's a gcc dependency. Tian, where does glib provide that? I have the gnome-1.4 preview from Solaris8, which uses glib, but not libstdc++. Which package is it in? Where does it get installed?
I got glib-1.2.10-sol8-sparc-local.gz from www.sunfreeware.com After install it, I got /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/2.95.3/libstdc++.so /usr/local/lib/libstdc++.so.2.10.0
I just checked using the following command,and make sure that libstdc++ should come from gcc package not glib. Tian may oversighted it. # pkgchk -l SMCgcc | grep libstdc Pathname: /usr/local/doc/gcc/install/dec-osf-shlibstdc++.patch Pathname: /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/libstdc++.a Source of link: ../../../libstdc++.a.2.10.0 Pathname: /usr/local/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/libstdc++.so Source of link: ../../../libstdc++.so.2.10.0 Pathname: /usr/local/lib/libstdc++.a.2.10.0 Pathname: /usr/local/lib/libstdc++.so.2.10.0 # pkgchk -l SMCglib | grep libstdc #(no output)
gcc here is built by the system admin. It doesn't have libsdtc++.so, only libstdc++.a Can we include libstdc++.so, as used by the build on mozilla.org? Or find a way to not link against for the builds. RC1 didn't need it, RC2 did, then was fixed, and RC3 doesn't so far. Still, the Release notes must be changed. Downloading Netscape 6+ for Sun does NOT provide libstdc++. If sun could distribute a copy of libsdtc++, mozilla should be able to do that.
Misc comments: 1. AFAIK (better: As far as I can remember) we cannot provide libstdc++.so binaries build from gcc 2.x sources with the mozilla distribution due unclear legal reasons (cls please correct me if I am wrong) - we had that problem with Linux, too 2. ANSI-C-only-*.so: Only shared libraries build with Sun Workshop/Forte can work with both gcc binaries and Sun Workshop binaries. Shared libraries build with gcc only work with gcc binaries - not with binaries build with Sun Workshop. If we want binary compatibility we MUST build with Sun Workshop/Forte. 3. C++-*.so: Name mangeling between Sun Workshop and gcc 2.x is different and completly incompatible (that's the reason why we currently need two JAVA2 plugins - one for gcc (e.g. /usr/java/jre/plugin/sparc/ns600/) and one for Sun Workshop builds (e.g. /usr/java/jre/plugin/sparc/ns610/)) 4. gcc binaries are slow as molasses compared to Sun Workshop binaries (and Sun Workshop builds may use far higher optimisation levels before running into compiler bugs (WS6U2+patches can be used with --enable-optimize="-dalign -xO4 -xtarget=generic -xbuiltin=%all -xlibmil" without problems)) Conclusion: Please do not build official builds with gcc or you hit issues [1]-[4] ...
Well, I'm not sure if point 1 of comment 44 is relevant. We may not be able to distribute libstdc++*so, but we don't have. Just statically link in libstdc++*.a and the problem is avoided. Of course Roland's other points still stand, so forte is probably preferred when available.
So what is the "Mozilla" bug here? Is this not an issue for whoever is building the installer? If you want to statically link against libstdc++, go ahead. The Solaris releases are contributed and the Solaris nightlies are bare tarballs (no installer).
Product: Browser → Seamonkey
Assignee: dprice → nobody
QA Contact: ktrina → general
resolving INVALID
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.