[Xorp-hackers] [PATCH] xorp: Introduced new flag enable_builddirrun for compiling Xorp

igorm at etf.rs igorm at etf.rs
Tue Feb 21 10:37:39 PST 2012


From: Igor Maravic <igorm at etf.rs>

Introduced enable_builddirrun flag, so /lib/xorp/{bin, sbin}
directories would be built even if rtld_origin is set to false
or if shared is set to false.
In this folder module and tool binaries are placed so Xorp
could be run from BUILD_DIR
By default this flag is set to false.
Changed BUILD_NOTES according to this.

Signed-off-by: Igor Maravic <igorm at etf.rs>
---
 xorp/BUILD_NOTES                      |   15 +++------
 xorp/SConstruct                       |   51 ++++++++++++++++++++-------------
 xorp/bgp/SConscript                   |    2 +-
 xorp/bgp/tools/SConscript             |    4 +-
 xorp/cli/tools/SConscript             |    2 +-
 xorp/contrib/mld6igmp_lite/SConscript |    4 +-
 xorp/contrib/olsr/SConscript          |    2 +-
 xorp/contrib/olsr/tools/SConscript    |    2 +-
 xorp/etc/templates/SConscript         |    5 ++-
 xorp/fea/SConscript                   |    4 +-
 xorp/fea/tools/SConscript             |    2 +-
 xorp/fib2mrib/SConscript              |    2 +-
 xorp/libxipc/SConscript               |    2 +-
 xorp/mld6igmp/SConscript              |    2 +-
 xorp/ospf/SConscript                  |    4 +-
 xorp/ospf/tools/SConscript            |    2 +-
 xorp/pim/SConscript                   |    4 +-
 xorp/policy/SConscript                |    2 +-
 xorp/rib/SConscript                   |    2 +-
 xorp/rib/tools/SConscript             |    2 +-
 xorp/rip/SConscript                   |    4 +-
 xorp/rip/tools/SConscript             |    2 +-
 xorp/static_routes/SConscript         |    2 +-
 xorp/utils/SConscript                 |    2 +-
 xorp/vrrp/SConscript                  |    2 +-
 25 files changed, 67 insertions(+), 60 deletions(-)

diff --git a/xorp/BUILD_NOTES b/xorp/BUILD_NOTES
index 2688697..2d81ebc 100644
--- a/xorp/BUILD_NOTES
+++ b/xorp/BUILD_NOTES
@@ -76,23 +76,18 @@ To compile using uSTL instead of standard STL library:
    eg. "xorp-top-level-directory/obj/<arch>-<os>-<rel>",
    it is necessary to run command:
 
-   scons rtld_origin=true
-
-   By default, rtld_origin is set to "True", so it is enough,
-   to run command:
-
-   scons
+   scons enable_builddirrun=true
 
    Binaries xorp_rtrmgr and xorpsh, will be compiled in directory
    obj/<arch>-<os>-<rel>/rtrmgr.
    Copy of all necessary tool binaries, like "ospf_print_neighbours",
    are placed inside obj/<arch>-<os>-<rel>/lib/xorp/bin.
-   Symbolic links for all libraries, are created in
-   obj/<arch>-<os>-<rel>/lib/xorp/lib.
    Symbolic links for all modules, like "xorp_ospf", are created in
    obj/<arch>-<os>-<rel>/lib/xorp/sbin.
-   This layout of executable binary files, enable us to debug Xorp,
-   more easily.
+   All necessary template files will be copied to 
+   obj/<arch>-<os>-<rel>/etc/templates.
+   This layout of executable binary files and template files,
+   enable us to debug Xorp, more easily.
 
    scons disable_ipv6=yes disable_fw=yes disable_warninglogs=yes \
        disable_tracelogs=yes disable_fatallogs=yes disable_infologs=yes \
diff --git a/xorp/SConstruct b/xorp/SConstruct
index 234f3c0..700fac9 100644
--- a/xorp/SConstruct
+++ b/xorp/SConstruct
@@ -82,6 +82,7 @@ vars.AddVariables(
     BoolVariable('disable_errorlogs',  'Force disable error logs', False),
     BoolVariable('disable_otherlogs',  'Force disable other logs', False),
     BoolVariable('disable_profile',  'Disable Xorp Profiler feature', False),
+    BoolVariable('enable_builddirrun',  'Enable Xorp to run from BUILD_DIR', False),
     BoolVariable('enable_boost',  'Use BOOST', False),
     BoolVariable('enable_ustl',  'Use uSTL', False),
     BoolVariable('enable_bgp',  'Build BGP', True),
@@ -273,6 +274,7 @@ print 'Enable FEA Dummy: ', env['enable_fea_dummy']
 print 'Enable async method impls: ', env['enable_async_server']
 print 'Enable BGP:       ', env['enable_bgp']
 print 'Enable BuildInfo: ', env['enable_buildinfo']
+print 'Xorp can run from BUILD_DIR: ', env['enable_builddirrun']
 print 'Try Enable BOOST: ', env['enable_boost']
 print 'Try Enable uSTL : ', env['enable_ustl']
 print 'Disable IPv6:     ', env['disable_ipv6']
@@ -394,6 +396,12 @@ env['xorp_tooldir']     = env['libdir']  + '/xorp/bin'	# tools/*
 env['xorp_xrlsdir']     = env['datadir'] + '/xrl/targets'	# *.xrls
 env['xorp_sourcedir']   = sourcedir	# rtrmgr/util.cc and xif need this
 
+tst = ARGUMENTS.get('enable_builddirrun', False)
+if tst and not (tst == "no"):
+    env['enable_builddirrun'] = True
+else:
+    env['enable_builddirrun'] = False
+
 tst = ARGUMENTS.get('enable_boost', False)
 if tst and not (tst == "no"):
     env['enable_boost'] = True
@@ -1019,7 +1027,7 @@ if env.has_key('SHAREDLIBS'):
 	   os.path.relpath(env.Dir('$xorp_libdir').abspath,
 			   env.Dir('$xorp_moduledir').abspath))
 
-if env['rtld_origin']:
+if env['enable_builddirrun']:
 	#
 	# Build a subdirectories for holding symlinks to modules and command binaries,
 	# so that xorpsh and rtrmngr, about to be built, can be run from inside the BUILDDIR.
@@ -1027,25 +1035,28 @@ if env['rtld_origin']:
 	# $BUILDIR/lib/bin will contain symlinks to command bins
 	# $BUILDIR/lib/sbin will contain symlinks to module bins
 	#
-	xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin')
-	xorp_alias_tooldir = os.path.join(xorp_alias_subdir, 'bin')
-	try:
-		Execute(Mkdir(xorp_alias_moduledir))
-	except:
-		pass
-	env['xorp_alias_moduledir'] = xorp_alias_moduledir
-	try:
-		Execute(Mkdir(xorp_alias_tooldir))
-	except:
-		pass
-	env['xorp_alias_tooldir'] = xorp_alias_tooldir
-	#Make subdir  $BUILDDIR/etc/templates for holding template files
-	xorp_alias_templatedir = os.path.join(builddir, 'etc/templates')
-	try:
-		Execute(Mkdir(xorp_alias_templatedir))
-	except:
-		pass
-	env['xorp_alias_templatedir'] = xorp_alias_templatedir
+    xorp_alias_subdir = os.path.join(builddir, 'lib')
+    xorp_alias_subdir = os.path.join(xorp_alias_subdir, 'xorp')
+    xorp_alias_moduledir = os.path.join(xorp_alias_subdir, 'sbin')
+    xorp_alias_tooldir = os.path.join(xorp_alias_subdir, 'bin')
+    try:
+        Execute(Mkdir(xorp_alias_moduledir))
+    except:
+        pass
+    env['xorp_alias_moduledir'] = xorp_alias_moduledir
+    try:
+        Execute(Mkdir(xorp_alias_tooldir))
+    except:
+        pass
+    env['xorp_alias_tooldir'] = xorp_alias_tooldir
+    #Make subdir  $BUILDDIR/etc/templates for holding template files
+    xorp_alias_templatedir = os.path.join(builddir, 'etc')
+    xorp_alias_templatedir = os.path.join(builddir, 'templates')
+    try:
+        Execute(Mkdir(xorp_alias_templatedir))
+    except:
+        pass
+    env['xorp_alias_templatedir'] = xorp_alias_templatedir
 
 
 if not fnmatch.fnmatch(host_os, 'mingw32*'):
diff --git a/xorp/bgp/SConscript b/xorp/bgp/SConscript
index 1a49fcf..46d89d7 100644
--- a/xorp/bgp/SConscript
+++ b/xorp/bgp/SConscript
@@ -190,7 +190,7 @@ bgpsrcs = [
     ]
 
 bgp = bgp_env.Program(target = 'xorp_bgp', source = bgpsrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in bgp:
         env.AddPostAction(bgp,
             env.Symlink(obj.abspath,
diff --git a/xorp/bgp/tools/SConscript b/xorp/bgp/tools/SConscript
index eb13bd1..d71fbdb 100644
--- a/xorp/bgp/tools/SConscript
+++ b/xorp/bgp/tools/SConscript
@@ -124,7 +124,7 @@ xppeers_srcs = [
 	]
 
 xppeers = env.Program(target = 'bgp_print_peers', source = xppeers_srcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in xppeers:
         env.AddPostAction(xppeers,
             env.Copy(obj.abspath,
@@ -140,7 +140,7 @@ xproutes_srcs = [
 	]
 
 xproutes = env.Program(target = 'bgp_print_routes', source = xproutes_srcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in xproutes:
         env.AddPostAction(xproutes,
             env.Copy(obj.abspath,
diff --git a/xorp/cli/tools/SConscript b/xorp/cli/tools/SConscript
index 7780711..e5b958a 100644
--- a/xorp/cli/tools/SConscript
+++ b/xorp/cli/tools/SConscript
@@ -81,7 +81,7 @@ sendclisrcs = [
 
 cligen = env.Program(target = 'cli_generic', source = cligensrcs)
 sendcli = env.Program(target = 'cli_send_processor_xrl', source = sendclisrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in cligen:
         env.AddPostAction(cligen,
             env.Copy(obj.abspath,
diff --git a/xorp/contrib/mld6igmp_lite/SConscript b/xorp/contrib/mld6igmp_lite/SConscript
index c70d5c4..0d9784e 100644
--- a/xorp/contrib/mld6igmp_lite/SConscript
+++ b/xorp/contrib/mld6igmp_lite/SConscript
@@ -107,7 +107,7 @@ mldlite = env.Program(target = 'xorp_mld_lite', source = mldlitesrcs)
 
 env.Alias('install',
           env.InstallProgram(env['xorp_moduledir'], igmplite))
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in igmplite:
         env.AddPostAction(igmplite,
             env.Symlink(obj.abspath,
@@ -115,7 +115,7 @@ if env['rtld_origin']:
 
 env.Alias('install',
           env.InstallProgram(env['xorp_moduledir'], mldlite))
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in mldlite:
         env.AddPostAction(mldlite,
             env.Symlink(obj.abspath,
diff --git a/xorp/contrib/olsr/SConscript b/xorp/contrib/olsr/SConscript
index b4cdba4..dcd288d 100644
--- a/xorp/contrib/olsr/SConscript
+++ b/xorp/contrib/olsr/SConscript
@@ -162,7 +162,7 @@ olsr4srcs = [
 
 
 olsr4 = env.Program(target = 'xorp_olsr4', source = olsr4srcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in olsr4:
         env.AddPostAction(olsr4,
             env.Symlink(obj.abspath,
diff --git a/xorp/contrib/olsr/tools/SConscript b/xorp/contrib/olsr/tools/SConscript
index c0342d1..6e63a71 100644
--- a/xorp/contrib/olsr/tools/SConscript
+++ b/xorp/contrib/olsr/tools/SConscript
@@ -83,7 +83,7 @@ cleardb = env.Program(target = 'olsr_clear_database', source = cleardbsrcs)
 printdb = env.Program(target = 'olsr_print_databases', source = printdbsrcs)
 
 #olsrtoolpath = '$exec_prefix/contrib/olsr/tools'
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in cleardb:
         env.AddPostAction(cleardb,
             env.Copy(obj.abspath,
diff --git a/xorp/etc/templates/SConscript b/xorp/etc/templates/SConscript
index fcab12e..fcf4ea2 100644
--- a/xorp/etc/templates/SConscript
+++ b/xorp/etc/templates/SConscript
@@ -153,8 +153,9 @@ for tp in tp_raw:
 
 Default(all_tp_raw)
 
-if env['rtld_origin']:
-        template_source_dir = os.path.join(env['xorp_sourcedir'], "etc/templates")
+if env['enable_builddirrun']:
+        template_source_dir = os.path.join(env['xorp_sourcedir'], "etc")
+        template_source_dir = os.path.join(template_source_dir, "templates")
 
         cmd_files = [c.__add__('.cmds') for c in cmds]
         for obj in cmd_files:
diff --git a/xorp/fea/SConscript b/xorp/fea/SConscript
index 4d8fbe0..da483ee 100644
--- a/xorp/fea/SConscript
+++ b/xorp/fea/SConscript
@@ -235,7 +235,7 @@ feasrcs = [
           ]
 
 fea = env.Program(target = 'xorp_fea', source = feasrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in fea:
         env.AddPostAction(fea,
             env.Symlink(obj.abspath,
@@ -256,7 +256,7 @@ if env['enable_fea_dummy']:
         ]
 
     feadummy = env.Program(target = 'xorp_fea_dummy', source = feadummysrcs)
-    if env['rtld_origin']:
+    if env['enable_builddirrun']:
         for obj in feadummy:
             env.AddPostAction(feadummy,
                 env.Symlink(obj.abspath,
diff --git a/xorp/fea/tools/SConscript b/xorp/fea/tools/SConscript
index 96094c1..4304525 100644
--- a/xorp/fea/tools/SConscript
+++ b/xorp/fea/tools/SConscript
@@ -82,7 +82,7 @@ showifsrcs = [
     ]
 
 showif = env.Program(target = 'fea_show_interfaces', source = showifsrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in showif:
         env.AddPostAction(showif,
             env.Copy(obj.abspath,
diff --git a/xorp/fib2mrib/SConscript b/xorp/fib2mrib/SConscript
index 7e9e9c5..57d830e 100644
--- a/xorp/fib2mrib/SConscript
+++ b/xorp/fib2mrib/SConscript
@@ -113,7 +113,7 @@ fib2mribsrcs = [
           ]
 
 fib2mrib = env.Program(target = 'xorp_fib2mrib', source = fib2mribsrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in fib2mrib:
         env.AddPostAction(fib2mrib,
             env.Symlink(obj.abspath,
diff --git a/xorp/libxipc/SConscript b/xorp/libxipc/SConscript
index 0735b94..5bbd275 100644
--- a/xorp/libxipc/SConscript
+++ b/xorp/libxipc/SConscript
@@ -245,7 +245,7 @@ call_xrl = env.Program(target = 'call_xrl',
 env.Alias('install', env.InstallProgram('$exec_prefix/sbin/', call_xrl))
 
 if env['enable_tests']:
-    if env['rtld_origin']:
+    if env['enable_builddirrun']:
         for obj in xorp_finder:
             env.AddPostAction(xorp_finder,
                 env.Symlink(obj.abspath,
diff --git a/xorp/mld6igmp/SConscript b/xorp/mld6igmp/SConscript
index 566ca94..54ad030 100644
--- a/xorp/mld6igmp/SConscript
+++ b/xorp/mld6igmp/SConscript
@@ -125,7 +125,7 @@ mld = env.Program(target = 'xorp_mld', source = mldsrcs)
 
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], igmp))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], mld))
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in igmp:
         env.AddPostAction(igmp,
             env.Symlink(obj.abspath,
diff --git a/xorp/ospf/SConscript b/xorp/ospf/SConscript
index d0d7908..81cc5d1 100644
--- a/xorp/ospf/SConscript
+++ b/xorp/ospf/SConscript
@@ -129,7 +129,7 @@ else:
 
 ospfv2srcs = [ 'xorp_ospfv2.cc', ]
 ospfv2 = env.Program(target = 'xorp_ospfv2', source = ospfv2srcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in ospfv2:
         env.AddPostAction(ospfv2,
             env.Symlink(obj.abspath,
@@ -142,7 +142,7 @@ if is_shared:
 if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
     ospfv3srcs = [ 'xorp_ospfv3.cc' ]
     ospfv3 = env.Program(target = 'xorp_ospfv3', source = ospfv3srcs)
-    if env['rtld_origin']:
+    if env['enable_builddirrun']:
         for obj in ospfv3:
             env.AddPostAction(ospfv3,
                 env.Symlink(obj.abspath,
diff --git a/xorp/ospf/tools/SConscript b/xorp/ospf/tools/SConscript
index cad0ecc..04c4783 100644
--- a/xorp/ospf/tools/SConscript
+++ b/xorp/ospf/tools/SConscript
@@ -95,7 +95,7 @@ printlsas = env.Program(target = 'ospf_print_lsas',
 			source = printlsassrcs)
 printneighbors = env.Program(target = 'ospf_print_neighbours',
 			     source = printneighborssrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in cleardb:
         env.AddPostAction(cleardb,
             env.Copy(obj.abspath,
diff --git a/xorp/pim/SConscript b/xorp/pim/SConscript
index 4b56b05..d0e8ba9 100644
--- a/xorp/pim/SConscript
+++ b/xorp/pim/SConscript
@@ -143,7 +143,7 @@ pim4srcs = [
           ]
 
 pim4 = env.Program(target = 'xorp_pimsm4', source = pim4srcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in pim4:
         env.AddPostAction(pim4,
             env.Symlink(obj.abspath,
@@ -156,7 +156,7 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
         ]
 
     pim6 = env.Program(target = 'xorp_pimsm6', source = pim6srcs)
-    if env['rtld_origin']:
+    if env['enable_builddirrun']:
         for obj in pim6:
             env.AddPostAction(pim6,
                 env.Symlink(obj.abspath,
diff --git a/xorp/policy/SConscript b/xorp/policy/SConscript
index 6941232..b6dc68c 100644
--- a/xorp/policy/SConscript
+++ b/xorp/policy/SConscript
@@ -136,7 +136,7 @@ else:
 
 policysrcs = [ 'xorp_policy.cc', ]
 policy = env.Program(target = 'xorp_policy', source = policysrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in policy:
         env.AddPostAction(policy,
             env.Symlink(obj.abspath,
diff --git a/xorp/rib/SConscript b/xorp/rib/SConscript
index cf5af51..466ae9c 100644
--- a/xorp/rib/SConscript
+++ b/xorp/rib/SConscript
@@ -146,7 +146,7 @@ ribsrcs = [
           ]
 
 rib = env.Program(target = 'xorp_rib', source = ribsrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in rib:
         env.AddPostAction(rib,
             env.Symlink(obj.abspath,
diff --git a/xorp/rib/tools/SConscript b/xorp/rib/tools/SConscript
index 6e676a3..dc18743 100644
--- a/xorp/rib/tools/SConscript
+++ b/xorp/rib/tools/SConscript
@@ -86,7 +86,7 @@ shrtessrcs = [
 
 shdist = env.Program(target = 'rib_show_distances', source = shdistsrcs)
 shrtes = env.Program(target = 'rib_show_routes', source = shrtessrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in shdist:
         env.AddPostAction(shdist,
             env.Copy(obj.abspath,
diff --git a/xorp/rip/SConscript b/xorp/rip/SConscript
index 0f48182..98727d5 100644
--- a/xorp/rip/SConscript
+++ b/xorp/rip/SConscript
@@ -175,7 +175,7 @@ else:
 				      LIBS = '')
 
 rip = e.Program(target = 'xorp_rip', source = ripsrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in rip:
         env.AddPostAction(rip,
             env.Symlink(obj.abspath,
@@ -288,7 +288,7 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
                                            LIBS = '')
 
     ripng = e.Program(target = 'xorp_ripng', source = ripngsrcs)
-    if env['rtld_origin']:
+    if env['enable_builddirrun']:
         for obj in ripng:
             env.AddPostAction(ripng,
                 env.Symlink(obj.abspath,
diff --git a/xorp/rip/tools/SConscript b/xorp/rip/tools/SConscript
index b4676d1..7980646 100644
--- a/xorp/rip/tools/SConscript
+++ b/xorp/rip/tools/SConscript
@@ -73,7 +73,7 @@ shstatssrcs = [
 
 shpeer = env.Program(target = 'rip_show_peer_stats', source = shpeersrcs)
 shstats = env.Program(target = 'rip_show_stats', source = shstatssrcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in shpeer:
         env.AddPostAction(shpeer,
             env.Copy(obj.abspath,
diff --git a/xorp/static_routes/SConscript b/xorp/static_routes/SConscript
index 690582e..583432a 100644
--- a/xorp/static_routes/SConscript
+++ b/xorp/static_routes/SConscript
@@ -113,7 +113,7 @@ else:
 
 xorp_static_routes = env.Program(target = 'xorp_static_routes',
 				 source = xorp_static_routes_srcs)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in xorp_static_routes:
         env.AddPostAction(xorp_static_routes,
             env.Symlink(obj.abspath,
diff --git a/xorp/utils/SConscript b/xorp/utils/SConscript
index 336c048..88e5cd6 100644
--- a/xorp/utils/SConscript
+++ b/xorp/utils/SConscript
@@ -51,7 +51,7 @@ runit_srcs = [
 runit = env.Program(target = 'runit', source = runit_srcs)
 
 if env['enable_tests']:
-    if env['rtld_origin']:
+    if env['enable_builddirrun']:
         for obj in runit:
             env.AddPostAction(runit,
                 env.Symlink(obj.abspath,
diff --git a/xorp/vrrp/SConscript b/xorp/vrrp/SConscript
index f70799e..56795ad 100644
--- a/xorp/vrrp/SConscript
+++ b/xorp/vrrp/SConscript
@@ -99,7 +99,7 @@ vrrpsources = [ 'xorp_vrrp.cc' ]
 
 xorp_vrrp = env.Program(target = 'xorp_vrrp',
             source = vrrpsources)
-if env['rtld_origin']:
+if env['enable_builddirrun']:
     for obj in xorp_vrrp:
         env.AddPostAction(xorp_vrrp,
             env.Symlink(obj.abspath,
-- 
1.7.5.4



More information about the Xorp-hackers mailing list