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


Buildworld broken with WITHOUT_DYNAMICROOT=yes in src.conf

2013-11-24 Thread Manfred Antar
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



||  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"