Re: [WORKAROUND] www/seamonkey2 on CURRENT

From: Alexey Shuvaev <shuvaev_at_physik.uni-wuerzburg.de>
Date: Sat, 29 Jan 2011 21:20:12 +0100
On Fri, Jan 28, 2011 at 05:37:51PM -0800, Garrett Cooper wrote:
> On Fri, Jan 28, 2011 at 3:58 PM, Alexey Shuvaev
> <shuvaev_at_physik.uni-wuerzburg.de> wrote:
> > Hello!
> >
> > It seems www/seamonkey2 is broken on CURRENT for at least 1 month now [1].
> > Examining build log and reproducing it locally, the problem is in the
> > usage of libiconv in nsNativeCharsetUtils.cpp. The linker fails to
> > produce libxpcom_core.so although -L/usr/local/lib and -liconv
> > are specified [2]. Examining this further I found that nsNativeCharsetUtils.o
> > produced with [3] fails to link with libiconv alone too [4] (note
> > still unresolved libiconv references).
> > I'm not a compiler/linker guru and do not understand what is happening
> > here. As a workaroud I use the attached patch which disables the usage
> > of libiconv in nsNativeCharsetUtils.cpp.
> 
> ls /usr/local/lib/libiconv*so* ?
>
~> ll /usr/local/lib/libiconv*so*
lrwxr-xr-x  1 root  wheel       13 Jan 27 13:14 /usr/local/lib/libiconv.so -> libiconv.so.3
-r--r--r--  1 root  wheel  1078567 Jan 27 13:14 /usr/local/lib/libiconv.so.3

I'm not so lame :)

On Sat, Jan 29, 2011 at 01:39:15PM -0500, Alexander Kabaev wrote:
> On Sat, 29 Jan 2011 13:21:44 -0500
> Alexander Kabaev <kabaev_at_gmail.com> wrote:
> 
> > On Sat, 29 Jan 2011 13:02:24 -0500 (EST)
> > Daniel Eischen <deischen_at_freebsd.org> wrote:
> > 
> > > On Sat, 29 Jan 2011, Alexey Shuvaev wrote:
> > > 
> > > > Hello!
> > > >
> > > > It seems www/seamonkey2 is broken on CURRENT for at least 1 month
> > > > now [1]. Examining build log and reproducing it locally, the
> > > > problem is in the usage of libiconv in nsNativeCharsetUtils.cpp.
> > > > The linker fails to produce libxpcom_core.so although
> > > > -L/usr/local/lib and -liconv are specified [2]. Examining this
> > > > further I found that nsNativeCharsetUtils.o produced with [3]
> > > > fails to link with libiconv alone too [4] (note still unresolved
> > > > libiconv references). I'm not a compiler/linker guru and do not
> > > > understand what is happening here. As a workaroud I use the
> > > > attached patch which disables the usage of libiconv in
> > > > nsNativeCharsetUtils.cpp.
> > > 
> > > Yes, I had this problem also on -current.  Does seamonkey build
> > > on recent 8.x?
> > > 
> > > libxpcomio_s.a is a static library that has unresolved references
> > > to libiconv.  I guess I'd expect those references to be resolved
> > > with a later -L/usr/local/lib -liconv when building the shared
> > > library (libxpcom_core.so), but they are not.
> > > 
> > 
> > My wild guess: seamonkey tries to hide symbols that are coming from
> > different .o file (this time one from libiconv.a) and that fails with
> > our toolchain.
> > 
> > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20218
> > -- 
> > Alexander Kabaev
> 
> Follow-up to myself: Nope, the fix to said bug appears in our compiler.
> Can you make amd64 version of nsNativeCharsetUtils.
> -- 
> Alexander Kabaev
>
??? (It is already on amd64)
Well, I have fogotten to put my environment:
~> uname -a
FreeBSD lexx.ifp.tuwien.ac.at 9.0-CURRENT FreeBSD 9.0-CURRENT #0 r217884: Wed Jan 26 17:00:37 CET 2011     root_at_lexx.ifp.tuwien.ac.at:/usr/obj/usr/src/sys/GENERIC  amd64

And here is the winner:

On Sat, Jan 29, 2011 at 08:32:07AM +0300, Anonymous wrote:
> Alexey Shuvaev <shuvaev_at_physik.uni-wuerzburg.de> writes:
> 
> > Hello!
> >
> > It seems www/seamonkey2 is broken on CURRENT for at least 1 month now [1].
> > Examining build log and reproducing it locally, the problem is in the
> > usage of libiconv in nsNativeCharsetUtils.cpp. The linker fails to
> > produce libxpcom_core.so although -L/usr/local/lib and -liconv
> > are specified [2]. Examining this further I found that nsNativeCharsetUtils.o
> > produced with [3] fails to link with libiconv alone too [4] (note
> > still unresolved libiconv references).
> > I'm not a compiler/linker guru and do not understand what is happening
> > here. As a workaroud I use the attached patch which disables the usage
> > of libiconv in nsNativeCharsetUtils.cpp.
> >
> [...]
> > /usr/bin/ld: aaa: hidden symbol `libiconv_open' isn't defined
> 
> /head per r215840 has working -fvisibility=hidden, i.e. config/gcc_hidden.h.
> Try following diff, it should enable patching iconv.h wrapper in bsd.gecko.mk
> 
> 	_at_${ECHO_CMD} "#pragma GCC system_header" >> ${MOZSRC}/${subdir}/iconv.h
> 	_at_${ECHO_CMD} "#pragma GCC visibility push(default)" >> ${MOZSRC}/${subdir}/iconv.h
> 	_at_${ECHO_CMD} "#include \"${LOCALBASE}/include/iconv.h\"" >> ${MOZSRC}/${subdir}/iconv.h
> 	_at_${ECHO_CMD} "#pragma GCC visibility pop" >> ${MOZSRC}/${subdir}/iconv.h
> 
> %%
> Index: www/seamonkey2/Makefile
> ===================================================================
> RCS file: /a/.cvsup/ports/www/seamonkey2/Makefile,v
> retrieving revision 1.315
> diff -u -p -r1.315 Makefile
> --- www/seamonkey2/Makefile	10 Dec 2010 13:31:12 -0000	1.315
> +++ www/seamonkey2/Makefile	29 Jan 2011 05:22:11 -0000
> _at__at_ -28,11 +28,10 _at__at_ ALL_TARGET=	default
>  MAKE_JOBS_SAFE=	yes
>  MOZ_PIS_SCRIPTS=	moz_pis_S50cleanhome
>  MAKE_ENV=	LD_LIBRARY_PATH=${WRKSRC}/dist/bin
> -CONFIGURE_ENV=	CPPFLAGS="-I${LOCALBASE}/include/cairo"
> +CONFIGURE_ENV=	LOCALBASE=${LOCALBASE} CPPFLAGS="-I${LOCALBASE}/include/cairo" \
> +		ac_cv_func__Unwind_Backtrace=no
>  USE_GCC=	4.2+
>  
> -CONFIGURE_ENV=	LOCALBASE=${LOCALBASE}
> -
>  MOZ_EXTENSIONS=	default
>  MOZ_OPTIONS+=	--with-default-mozilla-five-home=${PREFIX}/lib/${MOZILLA} \
>  		--enable-svg \
> _at__at_ -121,11 +120,6 _at__at_ post-patch:
>  		${WRKSRC}/mozilla/storage/build/Makefile.in
>  	_at_${REINPLACE_CMD} -e '/accessibility.typeaheadfind.enablesound/s/true/false/' \
>  		${WRKSRC}/mozilla/modules/libpref/src/init/all.js
> -	_at_${REINPLACE_CMD} -e 's|<iconv.h>|\"${LOCALBASE}/include/iconv.h\"|g' \
> -		${WRKSRC}/configure \
> -		${WRKSRC}/mozilla/configure \
> -		${WRKSRC}/mozilla/intl/uconv/native/nsNativeUConvService.cpp \
> -		${WRKSRC}/mozilla/xpcom/io/nsNativeCharsetUtils.cpp
>  	_at_${REINPLACE_CMD} -e 's|libgnome-2.so.0|libgnome-2.so|' \
>  		${WRKSRC}/mozilla/toolkit/xre/nsNativeAppSupportUnix.cpp \
>  		${WRKSRC}/mozilla/modules/libpr0n/decoders/icon/gtk/nsIconChannel.cpp
> %%
>
This patch did it!
I have successfully rebuilt www/seamonkey2 with the above patch
applied to port's Makefile (and without my previous workaround).
Everything works!

As this hidden/visibility symbols are beyond my C/CPP foo,
I am leaving the final decision for the experts :)

Thanks,
Alexey.
Received on Sat Jan 29 2011 - 19:20:15 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:11 UTC