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

Reply via email to