Closed Bug 86291 Opened 24 years ago Closed 24 years ago

Xprint duplicates symbols from some widgets

Categories

(Core Graveyard :: Printing: Xprint, defect)

x86
Linux
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: cls, Assigned: roland.mainz)

References

Details

Attachments

(4 files)

I attempted to create a static build from the STATIC_BUILD_20010612_BRANCH tag and the final link of mozilla-bin failed with the following error: ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o): In function `nsFontStretch::SortSizes(void)': nsFontMetricsGTK.o(.text+0x2f54): multiple definition of `nsFontStretch::SortSizes(void)' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXP.o)(.text+0x2bcc): first defined here ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o): In function `nsFontWeight::FillStretchHoles(void)': nsFontMetricsGTK.o(.text+0x2f78): multiple definition of `nsFontWeight::FillStretchHoles(void)' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXP.o)(.text+0x2bf0): first defined here /usr/bin/ld: Warning: size of symbol `nsFontWeight::FillStretchHoles(void)' changed from 467 to 463 in nsFontMetricsGTK.o ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o): In function `nsFontStyle::FillWeightHoles(void)': nsFontMetricsGTK.o(.text+0x3148): multiple definition of `nsFontStyle::FillWeightHoles(void)' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXP.o)(.text+0x2dc4): first defined here ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o): In function `nsFontNode::FillStyleHoles(void)': nsFontMetricsGTK.o(.text+0x3328): multiple definition of `nsFontNode::FillStyleHoles(void)' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXP.o)(.text+0x2fa4): first defined here collect2: ld returned 1 exit status make[1]: *** [mozilla-bin] Error 1 make[1]: Leaving directory `/usr/cls/moz/static-20010612/obj-bigball/xpfe/bootstrap' make: *** [install] Error 2
Blocks: 46775
Keywords: mozilla0.9.2
cls: 1. I am going to reuse nsFontMetricsXlib.cpp in the near future. nsFontMetricsXP.cpp is more or less obsolete. Both sources are ~98% identical except s/Xp/Xlib/ and some minor other things(=~2% ... :-) 2. Is there no way except renaming all classes ? 3. If [2] is unavoidable the same changes should be "made" to the nsFontMetrics(GTK|Xlib).(cpp|h) files, too - to keep class naming consistently (hi pocemit/timecop !)... Swapping QA<-->bug owner as usual...
Assignee: katakai → Roland.Mainz
QA Contact: Roland.Mainz → katakai
Summary: xprint duplicates symbols from some widgets → Xprint duplicates symbols from some widgets
No, there is no other way except renaming all of the classes. How you do it is up to you, however. You can either copy the file and duplicate the classes line for line and change the name of the class that way. Or you can modify the original file to use macros that will automatically change the name of the class if a certain define is used. You'll have to run the latter situation by the Xlib owner. Either way, this needs to be done ASAP as the static build code is going to land tomorrow.
OK OK... as a quick&dirty solution I suggest a #define for these classes as a workaround - otherwise my current patches in work are for --> trashcan...
1. Accepting bug 2. ToDo: bug 83242 has a comment about a build issue, fix: -- snip -- add " $(srcdir)/../xlib " to VPATH and remove the ../xlib/ from the files in CPPSRCS -- snip --
Status: NEW → ASSIGNED
Depends on: 83242
ToDo: Somehow something changed which breaks linking of Xlib-toolkit-based mozilla-bin (see bug 84482): -- snip -- BUILD_OFFICIAL=1 ./configure --prefix=%{_prefix} --enable-optimize \ --disable-debug \ --with-default-mozilla-five-home=/usr/lib/mozilla \ --enable-strip-libs --disable-tests --disable-short-wchar \ --enable-nspr-autoconf --with-extensions --without-mng \ --enable-crypto \ --enable-toolkit=xlib but it tailed at the end with:nsWindowCreator.cpp nsSigHandlers.cpp showOSAlert.cpp nsAppRunner.o: In function `InitializeProfileService(nsICmdLineService *)': nsAppRunner.o(.text+0x1fe6): undefined reference to `nsMPFileLocProvider::nsMPFileLocProvider(void)' ../../dist/bin/libxlibrgb.so: undefined reference to `NS_ERROR' collect2: ld returned 1 exit status make[1]: *** [mozilla-bin] Error 1 make: *** [install] Error 2 -- snip -- Seems I am blind, I do not see why it fails... I'll disable the NS_ERROR stuff in xlibrgb.c for now as a workaround - maybe this works... ;-(
Filed prototype patch to adress the issues lited here. Patch requires checkin of patch in bug 83242 first. I have used #define to rename the classes - this is a _hack_ solution to keep the patch small for now. cls: 1. Wanna test this patch and check if the all duplicate symbols in Xprint module land are "gone" ? 2. change to mozilla/gfx/src/Makefile.in contains a small flaw: xlibrgb is added twice to DIRS when Mozilla is build with Xlib-toolkit... any idea how to fix this more cleanly ? I'll file a final patch (where classes have been renamed itself, no #define hack) if it works for StaticBuild stuff... It would be nice if we could rename classes in GTK+ toolkit, too - for consistency&correctness...
Filed new patch. After looking a 3rd time over the patch I see two issues: 1. Bad blank: -- snip -- # Build xlibrgb only for X toolkits -ifneq (,$(filter motif xlib,$(MOZ_WIDGET_TOOLKIT))$(MOZ_ENABLE_XLIB)) +ifneq (,$(filter motif xlib,$(MOZ_WIDGET_TOOLKIT))$(MOZ_ENABLE_XLIB) $(MOZ_ENABLE_XPRINT)) -- snip -- 2. Unneccesary VPATH stuff (Xlib-toolkit _links_ against xlibrgb.so instead of importing sources (I wasn't aware that this has been changed recently... ;-( )): -- snip -- diff -r -u mozilla_original/gfx/src/xlib/Makefile.in mozilla/gfx/src/xlib/Makefile.in --- mozilla_original/gfx/src/xlib/Makefile.in Wed Jun 20 19:21:26 2001 +++ mozilla/gfx/src/xlib/Makefile.in Wed Jun 20 17:24:22 2001 @@ -22,13 +22,13 @@ DEPTH = ../../.. topsrcdir = @top_srcdir@ srcdir = @srcdir@ -VPATH = @srcdir@ +VPATH = @srcdir@:@srcdir@/../xlibrgb include $(DEPTH)/config/autoconf.mk -- snip -- Dauphin/cls - do you see more issues ?
Patch was checked in with the exception of the changes that rely upon bug 83242 as they are independent.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Does that mean that patch in bug 83242 is busted ?
cls: This patch is useless without patch in bug 83242. Requesting backout of that patch, please. Current StaticBuild stuff works with patched nsFontMetricsXP.(cpp|h), patching nsFontMetricsXlib.(cpp|h) is _only_ neccesary _after_ patch in bug 83242 has been checked-in...
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Why back it out so that you can reapply it after 83242 is checked in? Applying the patch in 83242 to the current tree has one small easily fixed conflict in nsFontMetricsXlib.cpp and 3 easily fixed conflicts in xprint/Makefile.in . Backing out this patch doesn't make any sense unless you're not going to check in 83242 at all.
Status: REOPENED → RESOLVED
Closed: 24 years ago24 years ago
Resolution: --- → FIXED
No, wrong. You are patching the sources in the wrong order. This bug has a explicit dependicy on bug 83242... see "view bug activity"... see "attachment comments", see comments in "description" of this bug... I marked the dependicy _everywhere_...
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
More ToDo stuff: Rename class |nsGCCache| to |nsGCCacheXlib|
static build errors after applying patch from 83242 ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o)(.data+0xc34): multiple definition of `FLG_WESTERN' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXlib.o)(.data+0x4cc): first defined here ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o)(.data+0xc3c): multiple definition of `FLG_ZHCN' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXlib.o)(.data+0x4d4): first defined here ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o)(.data+0xc44): multiple definition of `FLG_ZHTW' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXlib.o)(.data+0x4dc): first defined here ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o)(.data+0xc4c): multiple definition of `FLG_JA' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXlib.o)(.data+0x4e4): first defined here ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o)(.data+0xc54): multiple definition of `FLG_KO' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXlib.o)(.data+0x4ec): first defined here ../../dist/lib/components/libgfx_gtk.a(nsFontMetricsGTK.o)(.data+0xc5c): multiple definition of `FLG_NONE' ../../dist/lib/components/libgfxxprint.a(nsFontMetricsXlib.o)(.data+0x4f4): first defined here ../../dist/lib/components/libgfx_gtk.a(nsGCCache.o)(.data+0x0): multiple definition of `nsGCCache::copyRegion' ../../dist/lib/components/libgfxxprint.a(nsGCCache.o)(.data+0x0): first defined here ../../dist/lib/components/libgfx_gtk.a(nsGCCache.o): In function `nsGCCache::nsGCCache(void)': nsGCCache.o(.text+0x0): multiple definition of `nsGCCache::nsGCCache(void)' ../../dist/lib/components/libgfxxprint.a(nsGCCache.o)(.text+0x0): first defined here ../../dist/lib/components/libgfx_gtk.a(nsGCCache.o): In function `nsGCCache::move_cache_entry(PRCListStr *)': nsGCCache.o(.text+0x58): multiple definition of `nsGCCache::move_cache_entry(PRCListStr *)' ../../dist/lib/components/libgfxxprint.a(nsGCCache.o)(.text+0x58): first defined here ../../dist/lib/components/libgfx_gtk.a(nsGCCache.o): In function `nsGCCache::free_cache_entry(PRCListStr *)': nsGCCache.o(.text+0x88): multiple definition of `nsGCCache::free_cache_entry(PRCListStr *)' ../../dist/lib/components/libgfxxprint.a(nsGCCache.o)(.text+0x88): first defined here /usr/bin/ld: Warning: size of symbol `nsGCCache::free_cache_entry(PRCListStr *)' changed from 127 to 107 in nsGCCache.o ../../dist/lib/components/libgfx_gtk.a(nsGCCache.o): In function `nsGCCache::~nsGCCache(void)': nsGCCache.o(.text+0xf4): multiple definition of `nsGCCache::~nsGCCache(void)' ../../dist/lib/components/libgfxxprint.a(nsGCCache.o)(.text+0x108): first defined here /usr/bin/ld: Warning: size of symbol `nsGCCache::~nsGCCache(void)' changed from 134 to 138 in nsGCCache.o ../../dist/lib/components/libgfx_gtk.a(nsGCCache.o): In function `nsGCCache::ReportStats(void)': nsGCCache.o(.text+0x180): multiple definition of `nsGCCache::ReportStats(void)' ../../dist/lib/components/libgfxxprint.a(nsGCCache.o)(.text+0x190): first defined here ../../dist/lib/components/libgfx_gtk.a(nsGCCache.o): In function `nsGCCache::Flu
cls: Thanks for fixing these issues. AFAIK we can close this bug now (and file a new one to replace the hack in nsGCCache.(cpp|h) with a real s/nsGCCache/nsGCCacheXlib/-thingie...)... Is that OK for you ?
Is this related? Red Hat Linux release 20010619 (Rawhide) (XFree86-4.1.0) 20010622xx (nigthly whithout any patches) BUILD_OFFICIAL=1 ./configure --prefix=%{_prefix} --enable-optimize \ --disable-debug \ --with-default-mozilla-five-home=/usr/lib/mozilla \ --enable-strip-libs --disable-tests --disable-short-wchar \ --enable-nspr-autoconf --with-extensions --without-mng \ --enable-crypto \ --enable-toolkit=xlib ... nsGCCache.cpp xprintutil.c xprintutil.c: In function `XpuGetPrinter2': xprintutil.c:99: warning: comparison between pointer and integer xprintutil.c: In function `XpuGetPrinter': xprintutil.c:134: warning: assignment makes integer from pointer without a cast .deps/xprintutil.pp: no such file or directory xprintutil.c: In function `XpuSetContentOrientation': xprintutil.c:313: warning: control reaches end of non-void function In the directory /usr/src/redhat/BUILD/mozilla/gfx/src/xprint The following command failed to execute properly: gcc -o xprintutil.o -c -DOSTYPE="Linux2.4.5-0" -DOSARCH="Linux" -DOJI -D_IMPL_NS_GFXONXP -DUSE_MOZILLA_TYPES -DUSE_XPRINT -D_IMPL_NS_XPRINT -D_BSD_SOURCE -I../../../dist/include -I../../../dist/include -I/usr/src/redhat/BUILD/mozilla/dist/include/nspr -I./../gtk -I./../xlib -I./../xlibrgb -I./../xprint -I/usr/X11R6/include -fPIC -I/usr/X11R6/include -Wall -W -Wno-unused -Wpointer-arith -Wcast-align -pedantic -Wno-long-long -pipe -fshort-wchar -pthread -O -DNDEBUG -DTRIMMED -I/usr/X11R6/include -I/usr/X11R6/include -include ../../../config-defs.h -DMOZILLA_CLIENT -Wp,-MD,.deps/xprintutil.pp xprintutil.c make[3]: *** [xprintutil.o] Error 1 make[2]: *** [install] Error 2 make[1]: *** [install] Error 2 make: *** [install] Error 2
the issue with broken dependencies (comment above) is in bug 87422
Marking bug as "FIXED"... AFAIK all StaticBuild issues in Xprint module have been fixed for now... :-)
Status: REOPENED → RESOLVED
Closed: 24 years ago24 years ago
Resolution: --- → FIXED
I'm now verifying the Xprt bugs, however, I'm not sure how to verify this bug. Roland, could you give the exact instruction how to verify this problem. Is it OK when I can compile with the following? BUILD_OFFICIAL=1 ./configure --prefix=%{_prefix} --enable-optimize \ --disable-debug \ --with-default-mozilla-five-home=/usr/lib/mozilla \ --enable-strip-libs --disable-tests --disable-short-wchar \ --enable-nspr-autoconf --with-extensions --without-mng \ --enable-crypto \ --enable-toolkit=xlib
katakai: "StaticBuild" means that all components are put into one single monster binary You have to add the options "--enable-static --disable-shared" to "configure" to get a static build (but be prepared that this needs more compilation time - and the final link step may need insane abouts of swap) ... cls: Can you VERIFY this one for us, please ?
verified.
Status: RESOLVED → VERIFIED
cls, Thank you for veritication.
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: