Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-25 Thread Konstantin Belousov
On Mon, Nov 25, 2013 at 01:36:15PM +0100, Dimitry Andric wrote:
> On 25 Nov 2013, at 08:51, Konstantin Belousov  wrote:
> > On Sun, Nov 24, 2013 at 11:48:54PM -0500, Glen Barber wrote:
> ...
> >> Index: Makefile
> >> ===
> >> --- Makefile  (revision 258538)
> >> +++ Makefile  (working copy)
> >> @@ -42,6 +42,9 @@
> >> 
> >> DPADD= ${LIBTERMCAP} ${LIBCRYPT}
> >> LDADD= -ltermcap -lcrypt
> >> +.if ${MK_ICONV} != "no" && ${MK_DYNAMICROOT} != "yes"
> >> +LDADD+=-lc_nonshared
> >> +.endif
> >> 
> >> LINKS= ${BINDIR}/csh ${BINDIR}/tcsh
> >> 
> > 
> > No, this is wrong.  As is, static linking is broken and the hack above
> > only fixes one case.
> > 
> > What is needed is inclusion of the lib/libc_nonshared object files into
> > static libc.a.  I am not sure how to express this in our build system.
> 
> Hi Kostik,
> 
> You can add the additional object files to ${STATICOBJS}.  These will
> only be built for the static and profiled libraries.  See for example
> gnu/lib/libgcc/Makefile or lib/libc++/Makefile.
> 

The patch we ended up with is available at
http://people.freebsd.org/~kib/misc/iconv_static_linking.1.patch



pgpEK8LQcCTPP.pgp
Description: PGP signature


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-25 Thread Dimitry Andric
On 25 Nov 2013, at 08:51, Konstantin Belousov  wrote:
> On Sun, Nov 24, 2013 at 11:48:54PM -0500, Glen Barber wrote:
...
>> Index: Makefile
>> ===
>> --- Makefile  (revision 258538)
>> +++ Makefile  (working copy)
>> @@ -42,6 +42,9 @@
>> 
>> DPADD=   ${LIBTERMCAP} ${LIBCRYPT}
>> LDADD=   -ltermcap -lcrypt
>> +.if ${MK_ICONV} != "no" && ${MK_DYNAMICROOT} != "yes"
>> +LDADD+=-lc_nonshared
>> +.endif
>> 
>> LINKS=   ${BINDIR}/csh ${BINDIR}/tcsh
>> 
> 
> No, this is wrong.  As is, static linking is broken and the hack above
> only fixes one case.
> 
> What is needed is inclusion of the lib/libc_nonshared object files into
> static libc.a.  I am not sure how to express this in our build system.

Hi Kostik,

You can add the additional object files to ${STATICOBJS}.  These will
only be built for the static and profiled libraries.  See for example
gnu/lib/libgcc/Makefile or lib/libc++/Makefile.

-Dimitry



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Konstantin Belousov
On Sun, Nov 24, 2013 at 11:48:54PM -0500, Glen Barber wrote:
> On Sun, Nov 24, 2013 at 08:41:48PM -0800, Manfred Antar wrote:
> > At 08:17 PM 11/24/2013, Glen Barber wrote:
> > >On Sun, Nov 24, 2013 at 05:29:14PM -0800, Manfred Antar wrote:
> > >> adding -lc_nonshared to LAAD enables me to build /bin and /sbin 
> > >> statically
> > >> /bin/csh/Makefile was the only one I had to change all the rest of /bin 
> > >> and /sbin built fine
> > >> 
> > >
> > >Hmm, I'm not sure if bin/csh/ should require -c_nonshared
> > >unconditionally.
> > >
> > >I've done some testing with WITHOUT_DYNAMICROOT=1, WITHOUT_ICONV=1,
> > >WITH_ICONV=1, WITH_DYNAMICROOT=1, and am getting different results with
> > >regard to what iconv_*() are included...
> > >
> > >Glen
> > >
> > >
> > 
> > I  think it only needs it if you want a static csh.
> > my src.conf :
> > 
> > #WITHOUT_DYNAMICROOT=yes 
> > WITH_IDEA=yes
> > # Don't die on warnings
> > NO_WERROR=
> > WERROR=
> > WITH_GCC=yes
> > WITH_GNUCXX=yes
> > 
> > can you some kind of conditional
> > 
> > if WITHOUT_DYNAMICROOT=yes then LADD+= -lc_nonshared 
> > 
> 
> Yes, that is what I am doing, but also getting unexpected results.
> 
> Latest diff I tried is:
> 
> Index: Makefile
> ===
> --- Makefile  (revision 258538)
> +++ Makefile  (working copy)
> @@ -42,6 +42,9 @@
>  
>  DPADD=   ${LIBTERMCAP} ${LIBCRYPT}
>  LDADD=   -ltermcap -lcrypt
> +.if ${MK_ICONV} != "no" && ${MK_DYNAMICROOT} != "yes"
> +LDADD+=-lc_nonshared
> +.endif
> 
>  LINKS=   ${BINDIR}/csh ${BINDIR}/tcsh
>   

No, this is wrong.  As is, static linking is broken and the hack above
only fixes one case.

What is needed is inclusion of the lib/libc_nonshared object files into
static libc.a.  I am not sure how to express this in our build system.


pgpxQ04hkPtgO.pgp
Description: PGP signature


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Glen Barber
On Sun, Nov 24, 2013 at 08:41:48PM -0800, Manfred Antar wrote:
> At 08:17 PM 11/24/2013, Glen Barber wrote:
> >On Sun, Nov 24, 2013 at 05:29:14PM -0800, Manfred Antar wrote:
> >> adding -lc_nonshared to LAAD enables me to build /bin and /sbin statically
> >> /bin/csh/Makefile was the only one I had to change all the rest of /bin 
> >> and /sbin built fine
> >> 
> >
> >Hmm, I'm not sure if bin/csh/ should require -c_nonshared
> >unconditionally.
> >
> >I've done some testing with WITHOUT_DYNAMICROOT=1, WITHOUT_ICONV=1,
> >WITH_ICONV=1, WITH_DYNAMICROOT=1, and am getting different results with
> >regard to what iconv_*() are included...
> >
> >Glen
> >
> >
> 
> I  think it only needs it if you want a static csh.
> my src.conf :
> 
> #WITHOUT_DYNAMICROOT=yes 
> WITH_IDEA=yes
> # Don't die on warnings
> NO_WERROR=
> WERROR=
> WITH_GCC=yes
> WITH_GNUCXX=yes
> 
> can you some kind of conditional
> 
> if WITHOUT_DYNAMICROOT=yes then LADD+= -lc_nonshared 
> 

Yes, that is what I am doing, but also getting unexpected results.

Latest diff I tried is:

Index: Makefile
===
--- Makefile  (revision 258538)
+++ Makefile  (working copy)
@@ -42,6 +42,9 @@
 
 DPADD= ${LIBTERMCAP} ${LIBCRYPT}
 LDADD= -ltermcap -lcrypt
+.if ${MK_ICONV} != "no" && ${MK_DYNAMICROOT} != "yes"
+LDADD+=-lc_nonshared
+.endif

 LINKS= ${BINDIR}/csh ${BINDIR}/tcsh
  

Glen



pgpBZQ90afreN.pgp
Description: PGP signature


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Manfred Antar
At 08:17 PM 11/24/2013, Glen Barber wrote:
>On Sun, Nov 24, 2013 at 05:29:14PM -0800, Manfred Antar wrote:
>> adding -lc_nonshared to LAAD enables me to build /bin and /sbin statically
>> /bin/csh/Makefile was the only one I had to change all the rest of /bin and 
>> /sbin built fine
>> 
>
>Hmm, I'm not sure if bin/csh/ should require -c_nonshared
>unconditionally.
>
>I've done some testing with WITHOUT_DYNAMICROOT=1, WITHOUT_ICONV=1,
>WITH_ICONV=1, WITH_DYNAMICROOT=1, and am getting different results with
>regard to what iconv_*() are included...
>
>Glen
>
>

I  think it only needs it if you want a static csh.
my src.conf :

#WITHOUT_DYNAMICROOT=yes 
WITH_IDEA=yes
# Don't die on warnings
NO_WERROR=
WERROR=
WITH_GCC=yes
WITH_GNUCXX=yes

can you some kind of conditional

if WITHOUT_DYNAMICROOT=yes then LADD+= -lc_nonshared 



||  n...@pozo.com   ||
||  ||
 

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Glen Barber
On Sun, Nov 24, 2013 at 05:29:14PM -0800, Manfred Antar wrote:
> adding -lc_nonshared to LAAD enables me to build /bin and /sbin statically
> /bin/csh/Makefile was the only one I had to change all the rest of /bin and 
> /sbin built fine
> 

Hmm, I'm not sure if bin/csh/ should require -c_nonshared
unconditionally.

I've done some testing with WITHOUT_DYNAMICROOT=1, WITHOUT_ICONV=1,
WITH_ICONV=1, WITH_DYNAMICROOT=1, and am getting different results with
regard to what iconv_*() are included...

Glen



pgpzKPgssq1I7.pgp
Description: PGP signature


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Manfred Antar
At 05:23 PM 11/24/2013, Glen Barber wrote:
>On Sun, Nov 24, 2013 at 08:19:49PM -0500, Glen Barber wrote:
>> I think WITHOUT_DYNAMICROOT=1 has nothing to do with this.  I worked
>> around it by setting WITHOUT_NLS_CATALOGS=1 (see src.conf(5)).
>> 
>
>I'm sorry, I misread a part of your email.
>
>I'll rebuild without WITHOUT_NLS_CATALOGS=1 and your LADD fix.  If this
>fixes the problem (and passes 'make universe') will commit your fix.
>
>Thanks.
>
>Glen
>
>

Sounds good.
adding -lc_nonshared to LAAD enables me to build /bin and /sbin statically
/bin/csh/Makefile was the only one I had to change all the rest of /bin and 
/sbin built fine


||  n...@pozo.com   ||
||  ||
 

___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Glen Barber
On Sun, Nov 24, 2013 at 08:19:49PM -0500, Glen Barber wrote:
> I think WITHOUT_DYNAMICROOT=1 has nothing to do with this.  I worked
> around it by setting WITHOUT_NLS_CATALOGS=1 (see src.conf(5)).
> 

I'm sorry, I misread a part of your email.

I'll rebuild without WITHOUT_NLS_CATALOGS=1 and your LADD fix.  If this
fixes the problem (and passes 'make universe') will commit your fix.

Thanks.

Glen



pgpvmfsdwjv3D.pgp
Description: PGP signature


Re: Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Glen Barber
On Sun, Nov 24, 2013 at 05:11:51PM -0800, Manfred Antar wrote:
> Since the changes to libc in the last few weeks.
> building world fails in /bin/csh
> 
> cc -O2 -pipe  -I. -I/usr/src/bin/csh -I/usr/src/bin/csh/../../contrib/tcsh 
> -D_PATH_TCSHELL='"/bin/csh"' -DHAVE_ICONV -std=gnu99 -Qunused-arguments 
> -fstack-protector -Wsystem-headers -Wno-pointer-sign -Wno-empty-body 
> -Wno-string-plus-int -Wno-tautological-compare -Wno-unused-value 
> -Wno-parentheses-equality -Wno-unused-function -Wno-conversion -Wno-switch 
> -Wno-switch-enum -Wno-knr-promoted-parameter -Wno-parentheses  -static -o csh 
> sh.o sh.dir.o sh.dol.o sh.err.o sh.exec.o sh.char.o sh.exp.o sh.file.o 
> sh.func.o sh.glob.o sh.hist.o sh.init.o sh.lex.o sh.misc.o sh.parse.o 
> sh.print.o sh.proc.o sh.sem.o sh.set.o sh.time.o glob.o mi.termios.o 
> tw.help.o tw.init.o tw.parse.o tw.spell.o tw.comp.o tw.color.o ed.chared.o 
> ed.defns.o ed.init.o ed.inputl.o ed.refresh.o ed.screen.o ed.xmap.o ed.term.o 
> tc.alloc.o tc.bind.o tc.const.o tc.disc.o tc.func.o tc.nls.o tc.os.o 
> tc.printf.o tc.prompt.o tc.sched.o tc.sig.o tc.str.o tc.vers.o tc.who.o 
> tc.defs.o -ltermcap -lcrypt
> sh.func.o: In function `nlsclose':
> /usr/src/bin/csh/../../contrib/tcsh/sh.func.c:(.text+0x2753): undefined 
> reference to `iconv_close'
> sh.func.o: In function `nlsinit':
> /usr/src/bin/csh/../../contrib/tcsh/sh.func.c:(.text+0x2874): undefined 
> reference to `iconv_open'
> sh.func.o: In function `iconv_catgets':
> /usr/src/bin/csh/../../contrib/tcsh/sh.func.c:(.text+0x3f9a): undefined 
> reference to `iconv'
> cc: error: linker command failed with exit code 1 (use -v to see invocation)
> *** Error code 1
> 
> If I add -lc_nonshared to the LADD= line it builds fine 
> 
> cc -O2 -pipe  -I. -I/usr/src/bin/csh -I/usr/src/bin/csh/../../contrib/tcsh 
> -D_PATH_TCSHELL='"/bin/csh"' -DHAVE_ICONV -std=gnu99 -Qunused-arguments 
> -fstack-protector -Wsystem-headers -Wno-pointer-sign -Wno-empty-body 
> -Wno-string-plus-int -Wno-tautological-compare -Wno-unused-value 
> -Wno-parentheses-equality -Wno-unused-function -Wno-conversion -Wno-switch 
> -Wno-switch-enum -Wno-knr-promoted-parameter -Wno-parentheses  -static -o csh 
> sh.o sh.dir.o sh.dol.o sh.err.o sh.exec.o sh.char.o sh.exp.o sh.file.o 
> sh.func.o sh.glob.o sh.hist.o sh.init.o sh.lex.o sh.misc.o sh.parse.o 
> sh.print.o sh.proc.o sh.sem.o sh.set.o sh.time.o glob.o mi.termios.o 
> tw.help.o tw.init.o tw.parse.o tw.spell.o tw.comp.o tw.color.o ed.chared.o 
> ed.defns.o ed.init.o ed.inputl.o ed.refresh.o ed.screen.o ed.xmap.o ed.term.o 
> tc.alloc.o tc.bind.o tc.const.o tc.disc.o tc.func.o tc.nls.o tc.os.o 
> tc.printf.o tc.prompt.o tc.sched.o tc.sig.o tc.str.o tc.vers.o tc.who.o 
> tc.defs.o -ltermcap -lcrypt -lc_nonshared
> 
> Not sure what rule to use.
> I don't know how many people use WITHOUT_DYNAMICROOT
> I like it though.
> Manfred
> 

I think WITHOUT_DYNAMICROOT=1 has nothing to do with this.  I worked
around it by setting WITHOUT_NLS_CATALOGS=1 (see src.conf(5)).

The relevant parts of the contrib/tcsh/sh.func.c are:

2578 # if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
2579 char *
2580 iconv_catgets(nl_catd ctd, int set_id, int msg_id, const char *s)
2581 {
2582 static char *buf = NULL;
2583 static size_t buf_size = 0;

Glen



pgpcodVLy5Eeg.pgp
Description: PGP signature