On Tue, May 20th, 2014 at 1:06 AM, Marc Espie <es...@nerim.net> wrote:

> On Mon, May 19, 2014 at 06:56:48PM +0400, Vadim Zhukov wrote:
> > This patch improves loading time of Samba 4 binaries a bit. This is
> > a rude hack that involves lorder(1) to change order of object files
> > being linked. Unfortunately, it cannot be used to reorder libraries,
> > i.e., the "-lfoo" items.
> > 
> > Bad thing is that we inject shell code into command line, which
> > forces us to switch shell=False to shell=True.
> > 
> > I have at least samba-4.0.17 compiled with this patch, and results are
> > promising a bit: ~15 secs instead of 30-60 secs previously.
> > 
> > If this is considered a good idea, I'll work on reordering of -lfoo.
> > --
> > WBR,
> >   Vadim Zhukov
> > 
> > 
> > Index: patches/patch-buildtools_wafadmin_Tools_cc_py
> > 
=================================================================
==
> > RCS file: patches/patch-buildtools_wafadmin_Tools_cc_py
> > diff -N patches/patch-buildtools_wafadmin_Tools_cc_py
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ patches/patch-buildtools_wafadmin_Tools_cc_py   19 May 2014 14:45:35
> -0000
> > @@ -0,0 +1,16 @@
> > +$OpenBSD$
> > +Reorder object files to minimize library interrefs count.
> > +Speeds up loading of library files.
> > +--- buildtools/wafadmin/Tools/cc.py.orig   Mon May 19 17:29:02 2014
> > ++++ buildtools/wafadmin/Tools/cc.py        Mon May 19 18:05:26 2014
> > +@@ -93,8 +93,8 @@ cls = Task.simple_task_type('cc', cc_str, 'GREEN',
> ext
> > + cls.scan = ccroot.scan
> > + cls.vars.append('CCDEPS')
> > + 
> > +-link_str = '${LINK_CC} ${CCLNK_SRC_F}${SRC}
> ${CCLNK_TGT_F}${TGT[0].abspath(env)} ${LINKFLAGS}'
> > +-cls = Task.simple_task_type('cc_link', link_str, color='YELLOW',
> ext_in='.o', ext_out='.bin', shell=False)
> > ++link_str = '${LINK_CC} ${CCLNK_SRC_F} `set -- ${SRC}; test $# -gt 0 &&
> lorder "$@" | tsort -q` ${CCLNK_TGT_F}${TGT[0].abspath(env)}
> ${LINKFLAGS}'
> > ++cls = Task.simple_task_type('cc_link', link_str, color='YELLOW',
> ext_in='.o', ext_out='.bin', shell=True)
> > + cls.maxjobs = 1
> > + cls.install = Utils.nada
> > + 
> > Index: patches/patch-buildtools_wafadmin_Tools_cxx_py
> > 
=================================================================
==
> > RCS file: patches/patch-buildtools_wafadmin_Tools_cxx_py
> > diff -N patches/patch-buildtools_wafadmin_Tools_cxx_py
> > --- /dev/null       1 Jan 1970 00:00:00 -0000
> > +++ patches/patch-buildtools_wafadmin_Tools_cxx_py  19 May 2014 14:45:35
> -0000
> > @@ -0,0 +1,14 @@
> > +$OpenBSD$
> > +Reorder object files to minimize library interrefs count.
> > +Speeds up loading of library files.
> > +--- buildtools/wafadmin/Tools/cxx.py.orig  Mon May 19 18:30:35 2014
> > ++++ buildtools/wafadmin/Tools/cxx.py       Mon May 19 18:31:28 2014
> > +@@ -97,7 +97,7 @@ cls = Task.simple_task_type('cxx', cxx_str,
> color='GRE
> > + cls.scan = ccroot.scan
> > + cls.vars.append('CXXDEPS')
> > + 
> > +-link_str = '${LINK_CXX} ${CXXLNK_SRC_F}${SRC}
> ${CXXLNK_TGT_F}${TGT[0].abspath(env)} ${LINKFLAGS}'
> > ++link_str = '${LINK_CXX} ${CXXLNK_SRC_F} `set -- ${SRC}; test $# -gt 0
> && lorder "$@" | tsort -q` ${CXXLNK_TGT_F}${TGT[0].abspath(env)}
> ${LINKFLAGS}'
> > + cls = Task.simple_task_type('cxx_link', link_str, color='YELLOW',
> ext_in='.o', ext_out='.bin', shell=False)
> > + cls.maxjobs = 1
> > + cls.install = Utils.nada
> This is definitely a good idea, this is what the base system does for
> linking
> libraries !
> 
> 

Sounds good to me. The whole waf build thingy i'm still coming to grips with so 
if espie@ likes it then 
run with it.

Ian McWilliam

Reply via email to