Closed
Bug 204236
Opened 22 years ago
Closed 22 years ago
linux builds statically linking libstdc++ with licensing issues
Categories
(SeaMonkey :: Build Config, defect, P2)
Tracking
(Not tracked)
VERIFIED
FIXED
mozilla1.4final
People
(Reporter: dmosedale, Assigned: granrosebugs)
References
Details
(Whiteboard: [adt1])
In the course of upgrading the build machines to 2.95.3, we've inadvertantly
started linking statically with libstdc++ from that version, which we had
decided earlier (in bug 79681) had some license issues which would make us
uncomfortable doing that.
It seems to me that we have a bunch of options here, in particular
a) Try again to get the FSF to state that the relevant code in 2.95.3 is under
the exception mentioned in
<http://bugzilla.mozilla.org/show_bug.cgi?id=79681#c27>. If this actually
works, this is may be the best option, since it involves no code changes at this
late date.
b) If the FSF still won't answer their email, assume the risk associated with
doing nothing and leaving things as they are. This doesn't seem to like a lot
of risk to me, but, of course, I Am Not A Lawyer.
c) Rebuild the build machine copies of 2.95.3 to allow dynamic linking with
libstdc++. This will probably mean the builds will run on a significantly
smaller number of machines out-of-the-box than they do now, possibly including
all Red Hat boxes. This could perhaps be mitigated by providing a link to an
RPM of the dynamic libstdc++ from 2.95.3 on the download page.
d) Switch to gcc 3.2.x now. I've been given to understand, though I haven't
verified myself, that static linking libstdc++ under gcc 3.2.x is legally OK.
My understanding is also that at least one Netscape person has gotten various
commercial bits playing nice with 3.2.x, so the fact that the build machines do
double duty for Mozilla and Netscape builds shouldn't be a problem.
Additionally, this isn't as untested as it sounds: I believe blizzard has been
shipping gcc 3.2.x built RPMs for a while now, and, as far as I'm aware, without
incident.
| Reporter | ||
Updated•22 years ago
|
Flags: blocking1.4b?
Flags: blocking1.4?
Comment 1•22 years ago
|
||
The latter, please! We've been talking about it for long enough, and we get the
7-10% speed boot by being able to use -O2.
(GCC-3.3 is out RSN; I don't recommened moving to that for a while, although if
we go static then it shouldn't be as much of an issue as this move since the c++
ABI is teh same)
Comment 2•22 years ago
|
||
When building gcc-3.2 (the compiler itself, not _with_ 3.2), make sure to follow:
http://gcc.gnu.org/gcc-3.2/c++-abi.html
so that our builds are compatable with the rest of the world.
| Assignee | ||
Updated•22 years ago
|
Priority: -- → P3
Target Milestone: --- → mozilla1.5beta
| Assignee | ||
Comment 3•22 years ago
|
||
option e) go back to RedHat 6.2 and egcs.
Updated•22 years ago
|
Flags: blocking1.4b? → blocking1.4b-
Updated•22 years ago
|
Flags: blocking1.4? → blocking1.4+
Comment 4•22 years ago
|
||
isn't this basically a duplicate of bug 158387?
| Assignee | ||
Comment 5•22 years ago
|
||
no, this is regarding the licensing issues around using 2.95.3 and libstdc++-v2
that we're using for mozilla 1.4f. That bug is on technical issues influencing
the decision of what version of gcc 3.x to use for future releases at some
future date.
I'm working with our legal people to resolve this, but I'm hoping that this
won't be a problem based on
http://gcc.gnu.org/onlinedocs/libstdc++/17_intro/license.html talking about the
binary exception for libstdc++-v3 and
http://gcc.gnu.org/ml/libstdc++/2001-06/msg00370.html talking about the intent
for -v2.
Severity: major → critical
Status: NEW → ASSIGNED
Priority: P3 → P2
Target Milestone: mozilla1.5beta → mozilla1.4final
Comment 6•22 years ago
|
||
Any progress on doing one of these? This is a 1.4 release blocker!
| Assignee | ||
Comment 7•22 years ago
|
||
We may be upgrading to gcc 3.something, work is still underway on this problem.
| Assignee | ||
Comment 8•22 years ago
|
||
for the record, had a conference call today with relevant parties.
current plan is that cls will check if the gcc 2.95.3 files were updated on the
tip of the 2.95.3 branch. if so, we're holding off til after 1.4 to switch
compilers. keep your fingers crossed that this is the case.
if not, we're going to gcc 3.2.3 and either statically linking in the libstdc++
library or doing it dynamically and putting a pointer to an rpm in the release
notes for people not running RH8. leaf is working on a test build so we can
test the rest of the plugins and do a smoketest.
known issues:
- current JRE won't work with 3.2.3, need 1.4.2 beta (discussion in Sun's bugs
4694590 and 4687814 about this stuff - thanks Rick)
Comment 9•22 years ago
|
||
Suns stuff works with 1.4.1, I thought. It also works with blackdown's java
builds. That option will work for moz.
Comment 10•22 years ago
|
||
No, Sun's 1.4.1 version does NOT come with a plugin compiled with gcc-3. Sun's
1.4.2beta and Blackdown's version are the only alternatives with a
gcc-3.x-compiled Mozilla.
| Assignee | ||
Comment 11•22 years ago
|
||
2.95.3 is not an option. we're now pursuing gcc 3.2.3 builds with due haste.
Comment 12•22 years ago
|
||
Please don't switch to gcc-3.x now, since this will **** off the last remaining
Solaris users of Mozilla. There have been enough hassles with additional
software requirements, OS patches, and bleeding edge library versions.
Requiring to install a BETA version of java now will surely alienate anyone
who was not tired yet using that platform with Mozilla....
| Assignee | ||
Comment 14•22 years ago
|
||
we have a mozilla build that is being smoketested:
http://ftp.mozilla.org/pub/mozilla/nightly/2003-06-11-14-1.4-gcc323/mozilla-i686-pc-linux-gnu-installer.tar.gz
the bug tracking changes required for the commercial build is 28819.
Comment 15•22 years ago
|
||
Just a question for "beanladen" you mention the Solaris users of
mozilla.....Most of the Mozilla builds I know of (including my own) are built
using the Sun CC compiler (Forte, Workshop, Sun One, Whatever) so as long as you
have libc.so you should be just fine. GCC has absolutely no bearing on the
Solaris users I know.
Comment 16•22 years ago
|
||
Oh yes, I just learned that this will instead force Linux users to either use the
Blackdown or Sun's 1.4.2 Beta java. If that also means that Linux users MUST have
a gcc 3.x compiled system, this will be not an option.
Comment 17•22 years ago
|
||
Reply to Donnie Cranford ... I'm a Solaris user of Mozilla. None of the Sun CC
compiled Mozillas work on my machine. We do not have admin privileges for my
machine. We do not have a Mozilla-friendly (or even Open Source-friendly) set
of system admins. We can not download and install official patches. I can not
use Roland Mainz's gcc/Solaris build of Mozilla, since he insists on including
the XPrint code (which does not work on our machines "out of the box") and
excluding the PostScript driver (which works fine).
Hence I need to build my own copy.
I have downloaded and built gcc 2.95.3. I have also downloaded Sun's version
of Netscape 7 and squirrelled away the dynamic libraries I need. Ditto Sun's
Java plugin which works with gcc 2.95.3 compatible binaries. I now build
Mozilla (latest is 1.4b) from the src.tar.bz2 that are released and install
in my home area for others to use.
So, on the one hand, I am one of these mythical Solaris users of gcc 2.95.3.
However, none of the publically providied Solaris builds of Mozilla work on
our systems anyway, so we are resigned/accustomed to building our own.
I've no axe to grind with Mozilla.org moving to gcc 3.2.x versions of Mozilla
(and when Sun release a Java plugin compatible with gcc 3.2.x, I'll be moving
up myself!), but please at least make sure that Mozilla will continue to be
compilable by gcc 2.95.3, even if the publically-provided binaries do not
do so ...
| Assignee | ||
Comment 18•22 years ago
|
||
now that we have resolved 2.95.3 is not an option and we're going with gcc
3.2.3, should this bug be resolved as a dup of 158385?
Comment 19•22 years ago
|
||
Trying to run the installer at
http://ftp.mozilla.org/pub/mozilla/nightly/2003-06-11-14-1.4-gcc323/mozilla-i686-pc-linux-gnu-installer.tar.gz
on a RedHat 7.3 system results in "error while loading shared libraries".
I happen to have a locally compiled gcc 3.2.1 lying around under /usr/local/lib
and having /usr/local/lib in /etc/ld.so.conf (which is not the default). With
that, I can run the build.
However, no check is being made that I have the 3.2.3, it just uses my 3.2.1.
The build appears to run and work. But as expected, the latest non-beta Java
plugin does not work.
Question: Would it make sense to continue to provide egcs compiled builds in
addition?
| Assignee | ||
Comment 20•22 years ago
|
||
turns out that build wasn't statically linking libstdc++, we're doing a new
build now.
anyone who wishes to is welcome to provide egcs 1.12 or gcc 2.95.3 builds to
mozilla, but the Netscape build team has to do 3.2.3 builds and we don't have
time to spare at this point to look at other compilers.
Comment 21•22 years ago
|
||
So again the number of users who can run Mozilla out of the box continues to
shrink...
| Assignee | ||
Comment 22•22 years ago
|
||
leaf has run into problems getting the 1.4 branch to compile with gcc 3.2.3 on
RH7.3 and statically linking libstdc++. Next step is to try building with
gcc3.2.3 on RH8. If that doesn't work, we'll need to go back to the drawing
board and rethink our options.
Comment 23•22 years ago
|
||
I'd reccommend against RH8, for the simple reason that whilst libc is forard
compat (so the build will run on RH9), its not backwards compat, so it won't run
on people's RH7 systems. RH8 uses glibc-2.9x, so it'll then effectivly add a
glibc2.3 requreiment to the binary. I don't think that you want that.
What RH7 problems were you having?
Comment 24•22 years ago
|
||
beanladen, Graham Hudspith:
If I get this correctly, it 1) won't affect what compiler can be used to build
Mozilla, and 2) it will only affect pre-compiled builds for Linux, and not for
any other platform. This all means, it won't affect Solaris in any way. You can
use the same pre-compiled builds and you can use the same compilers there.
Even on Linux, it doesn't affect people who build Mozilla their own, but only
pre-compiled binaries.
Developers, correct me if I'm wrong.
Comment 25•22 years ago
|
||
*** Bug 209279 has been marked as a duplicate of this bug. ***
| Assignee | ||
Comment 26•22 years ago
|
||
bugzilla bug 205360 added the -lc option which is causing our problems building
on gcc 3.2.3. we're doing a test build now removing -lc.
reopened 205360 since it's a 1.4 blocker to make sure both these get fixed.
Depends on: 205360
Comment 27•22 years ago
|
||
Linux Distros with GCC>=3.2 (from distrowatch.com):
Mandrake: 9.1 (current), 9.0 (released 2002/09/25)
Red Hat: 9 (current), 8.0 (released 2002/09/30)
SuSE: 8.2 (current), 8.1 (released 2002/09/30)
Comment 28•22 years ago
|
||
Gentoo GNU/Linux uses gcc 3.2.2 on stable tree and gcc 3.2.3 on testing tree.
Gcc 3.3 is available to install also on the hardmasked tree but preparations
are being made before it can be rolled out officially.
Comment 29•22 years ago
|
||
Slackware 9.0 (released on March 19, 2003) uses 3.2.2 as well. The -current tree
is using 3.2.3 since May 21. I'm off to download and try one of the 3.2 builds.
| Assignee | ||
Comment 30•22 years ago
|
||
we have test builds statically linking libstdc++. there is a new requirement of
glibc 2.2.4 or higher, so if you're running 7.0-7.2 and you don't keep up with
the errata, you'll need to install the latest.
http://ftp.mozilla.org/pub/mozilla/nightly/2003-06-16-18-1.4/mozilla-i686-pc-linux-gnu-installer.tar.gz
Comment 31•22 years ago
|
||
I did not download the installer, but the full build tar.gz. I can run that
build successfully on my up-to-date RH 7.3 system.
Java 1.4.1 does not work.
I downloaded Java 1.4.2 beta 2, and the contained ns610-gcc32 appears to work
fine. But when trying to do Java based online banking, the application crashes
completely. This is something that works for me correcely with egcs based
Mozilla and the 1.4.1 Java plugin.
Comment 32•22 years ago
|
||
There is an error message on the console:
INTERNAL ERROR on Browser End: Plugin instance index out of bounds 13376.
System error?:: Resource not available
Comment 33•22 years ago
|
||
At least the build mentioned in this bug does not run on a RH 7.2 system, I just
verified.
However, Leaf told me that Brian was able to get a compatible build on another
machine. If you want me to test that, please let me know.
Comment 34•22 years ago
|
||
Please note: I am able to use the version of egcs 1.1.2 that was shipped with RH
7.3, and compile Mozilla binaries on that RH 7.3 system that run on the RH 7.2
just fine. I suspect those binaries run on some earlier versions, too. And that
binary works correctly with stable Java 1.4.1.
I will have binaries available tomorrow for you to test.
Comment 35•22 years ago
|
||
The binary compiled with RH 7.3's egcs 1.1.2 also runs on RH 9.
RH 9's package compat-libstdc++-7.3-2.96.118 contains the required
/usr/lib/libstdc++-2-libc6.1-1-2.9.0.so
Comment 36•22 years ago
|
||
Note, I'm using a trick to make sure, when compiling on RH 7.3 with egcs, that
no part of the build system uses another system installed compiler. Confusion is
easy, because egcs is installed as egcs++ and egcs, while gcc and g++ point to
gcc 2.96.
I have create a directory
/usr/local/egcs
that contains the following links:
c++ -> g++
cc -> gcc
g++ -> /usr/bin/egcs++
gcc -> /usr/bin/egcs
I learned this is better than using the build system's variables to use a
different compiler. In particular because of NSS, which seems to fall back to
gcc whatever is specified. (This was true in the past, not sure if that is still
valid).
Comment 37•22 years ago
|
||
I've uploaded a full (non-install) build to
www.kuix.de/misc/testmoz14.tar.gz
using the build environment I outlined above.
I managed to find someone with a plain RH 7.0 system.
That system was still running glibc 2.1.92-14, the original glibc that came with
7.0. No compiler has ever been compiled on that system.
It was able to run the above binary, it converted an older netscape profile and
loaded www.cnn.com fine.
That was on an i486 machine with 32 MB of ram, over a remote X display tunneled
through ssh.
Comment 38•22 years ago
|
||
kaie: was that an opt build? The thing which moved this all forward was that -O
caused gcc to segfault. It may have only happened when built with symbols, or
--enable-debug, or something like that. symbols are required for talkback,
though. Can't find a bug on it now.
Does java still segfault if you grab /lib/libgcc_s.so* from RH9, and stick it in
/lib on your RH7 box?
Comment 39•22 years ago
|
||
is somebody working with sun/blackdown to get a 1.3.x build of java or something
that doesn't require the specific term in the license agreement stating that you
surrender the right to let sun download and install software to your computer?
i will not install java builds later than the 1.3 series.
i hope this doesn't mean i am blocked from using java in mozilla.
see J2RE 1.4.1 License, Supplemental License Terms 5 and 6:
<ftp://ftp.tux.org/pub/java/JDK-1.4.1/i386/01/LICENSE-j2re>
5. Notice of Automatic Software Updates from Sun. You acknowledge
that the Software may automatically download, install, and execute
applets, applications, software extensions, and updated versions of
the Software from Sun ("Software Updates"), which may require you to
accept updated terms and conditions for installation. If additional
terms and conditions are not presented on installation, the Software
Updates will be considered part of the Software and subject to the
terms and conditions of the Agreement
6. Notice of Automatic Downloads. You acknowledge that, by your use
of the Software and/or by requesting services that require use of the
Software, the Software may automatically download, install, and
execute software applications from sources other than Sun ("Other
Software"). Sun makes no representations of a relationship of any
kind to licensors of Other Software. ...
Comment 40•22 years ago
|
||
> kaie: was that an opt build?
Yes, -O
--enable-optimize="-O -g" --enable-crypto --disable-tests --disable-debug
--enable-elf-dynstr-gc --disable-logging --without-system-nspr
--without-system-zlib --without-system-jpeg --without-system-png
--without-system-mng
> The thing which moved this all forward was that -O caused gcc to segfault. It
> may have only happened when built with symbols, or
> --enable-debug, or something like that. symbols are required for talkback,
> though. Can't find a bug on it now.
egcs does not segfault for me
I guess the files in my build tree have symbols, because I built using -g.
And I have used egcs for all my Linux development work during the last 2 years,
including all my Linux debugging.
> Does java still segfault if you grab /lib/libgcc_s.so* from RH9, and stick
> it in /lib on your RH7 box?
I think our users should not be required to do such fiddling to their system.
Some might not have root rights.
| Assignee | ||
Comment 41•22 years ago
|
||
release builds are built with
/configure --disable-tests --enable-extensions=default,irc
--without-system-nspr --without-system-jpeg --without-system-zlib
--without-system-png --without-system-mng --disable-debug --enable-optimize
--disable-elf-dynstr-gc --enable-crypto
--with-dist-prefix=/builds/client/linux22/seamonkey/mozilla/dist --with-mozilla
--cache-file=.././config.cache --srcdir=.
| Assignee | ||
Comment 42•22 years ago
|
||
the glibc requirement comes from the installation failing (bugzilla 180810) and
then if you get it installed and run on a non-glibc225 system you get:
./mozilla-bin: /lib/i686/libc.so.6: version `GCC_3.0' not found (required by
/u/granrose/communicator/linux/2003061707-1.4/libmozjs.so)
./mozilla-bin: /lib/i686/libc.so.6: version `GCC_3.0' not found (required by
/u/granrose/communicator/linux/2003061707-1.4/libplds4.so)
./mozilla-bin: /lib/i686/libc.so.6: version `GCC_3.0' not found (required by
/u/granrose/communicator/linux/2003061707-1.4/libplc4.so)
./mozilla-bin: /lib/i686/libc.so.6: version `GCC_3.0' not found (required by
/u/granrose/communicator/linux/2003061707-1.4/libnspr4.so)
I'm open to suggestions on how to resolve this in such a way that glibc 2.2.5+
isn't required.
Comment 43•22 years ago
|
||
Also note that scriptable plugins like Flash are not updated to be scriptable
under gcc3 yet and Java 1.4.2 is only in beta. Anyone accessing XPCOM from
native code could be effected by this.
Since this bug sounds like it was caused by upgrading to 2.95.3, would it be
possible to just go back to whatever we used in the previous release, at least
for 1.4?
Comment 44•22 years ago
|
||
> Since this bug sounds like it was caused by upgrading to 2.95.3, would it be
> possible to just go back to whatever we used in the previous release, at least
> for 1.4?
For previous releases, we were using egcs 1.1.2
Using gcc 2.95.3 was not possible, so gcc 3.2.3 was considered.
gcc 3.2.3 causes the compatibility problems.
I'm suggesting to stay == go back to egcs 1.1.2, to stay compatible.
Comment 45•22 years ago
|
||
I was successfully able to produce a build using the build options Jon posted in
comment 41, with the minor difference:
I used
--enable-optimize="-O"
to only use stable optimization in egcs.
--with-dist-prefix=/builds/client/linux22/seamonkey/mozilla/dist
--srcdir=.
These are just driving where the build tree lives and don't influence
the generated code.
Comment 46•22 years ago
|
||
I agre that requireing users to copy libgcc over isn't a solution, but if that
fixes it then it shows what the problem is... Please try it, just for diagnostic
purposes.
Flash is a c plugin, I thought, so is unaffected by this. We did, however,
document that the ABI change would break stuff when we froze interfaces.
For 1.4, if egcs works, that'd be good, but it was segfaulting for multiple people.
Comment 47•22 years ago
|
||
> Does java still segfault if you grab /lib/libgcc_s.so* from RH9, and stick it in
> /lib on your RH7 box?
> I agre that requireing users to copy libgcc over isn't a solution, but if that
> fixes it then it shows what the problem is... Please try it, just for diagnostic
> purposes.
Here is what I did.
On the RH 7.3 machine, I again ran the gcc 3.2.3 build Mozilla 1.4 test build,
using Sun's 1.4.2 beta 2 plugin. I crashed again, so I'm sure I can reproduce
the problem.
Next I tried your suggestion and copied /lib/libgcc_* from RH9 to the RH7.3 test
system and repeated my test. I still crash.
Note, I don't think the crash is caused by missing system libraries. It's simply
caused by the fact that Java 1.4.2 beta is not stable.
Comment 48•22 years ago
|
||
Flash is not just a C plugin anymore. They've got XPCOM hooks for Javascript.
Has anyone tried building under RH6? Did egcs come with RH6?
Also, be sure you symlink the Java plugin instead of copying.
Comment 49•22 years ago
|
||
> Has anyone tried building under RH6? Did egcs come with RH6?
Yes, according to packages on a RedHat download mirror, egcs 1.1.2 was the
standard system compiler for RedHat 6.2.
> Also, be sure you symlink the Java plugin instead of copying.
That's what I did, I created a symlink.
| Assignee | ||
Comment 50•22 years ago
|
||
1.4 branch builds are built with gcc 3.2.3, trunk builds are next. new
requirement is glibc 2.2.4 or higher.
Comment 51•22 years ago
|
||
I'm assuming the talk here applies to mozilla. What about Mozilla Firebird?
Can I request please that milestone releases at the very minimum be built with
gcc 3.2.3 as certain plugins don't work? I filed a bug for firebird and
thunderbird but it was marked as a duplicate of this one. However, I have not
seen any activity on here relating to those packages.
Comment 52•22 years ago
|
||
compilers updated for trunk and branch release machines.
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Updated•21 years ago
|
Product: Browser → Seamonkey
You need to log in
before you can comment on or make changes to this bug.
Description
•