[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