[Xorp-hackers] [PATCH 5/9] xorp: Make symlink to module bins in $BUILDDIR/lib/xorp/sbin

igorm at etf.rs igorm at etf.rs
Mon Feb 6 09:00:33 PST 2012


From: Igor Maravic <igorm at etf.rs>

If env['rtld_origin'] is set to TRUE, makes symlinks for module
bins in $BUILDDIR/lib/xorp/sbin, so xorpsh could be run from $BUILDDIR.
Also, makes running of xorp_rtrmgr from $BUILDDIR easier.

Signed-off-by: Igor Maravic <igorm at etf.rs>
---
 xorp/bgp/SConscript                   |    5 +++++
 xorp/contrib/mld6igmp_lite/SConscript |   10 ++++++++++
 xorp/contrib/olsr/SConscript          |    6 +++++-
 xorp/fea/SConscript                   |   11 ++++++++++-
 xorp/fib2mrib/SConscript              |    6 +++++-
 xorp/libxipc/SConscript               |    5 +++++
 xorp/mld6igmp/SConscript              |    9 +++++++++
 xorp/ospf/SConscript                  |   11 ++++++++++-
 xorp/pim/SConscript                   |   12 ++++++++++--
 xorp/policy/SConscript                |    5 +++++
 xorp/rib/SConscript                   |    6 +++++-
 xorp/rip/SConscript                   |   10 ++++++++++
 xorp/static_routes/SConscript         |    5 +++++
 xorp/vrrp/SConscript                  |    6 +++++-
 14 files changed, 99 insertions(+), 8 deletions(-)

diff --git a/xorp/bgp/SConscript b/xorp/bgp/SConscript
index 55f6176..1a49fcf 100644
--- a/xorp/bgp/SConscript
+++ b/xorp/bgp/SConscript
@@ -190,6 +190,11 @@ bgpsrcs = [
     ]
 
 bgp = bgp_env.Program(target = 'xorp_bgp', source = bgpsrcs)
+if env['rtld_origin']:
+    for obj in bgp:
+        env.AddPostAction(bgp,
+            env.Symlink(obj.abspath,
+                        os.path.join(env['xorp_alias_moduledir'], str(obj))))
 bgp_env.Alias('install', bgp_env.InstallProgram(bgp_env['xorp_moduledir'], bgp))
 
 
diff --git a/xorp/contrib/mld6igmp_lite/SConscript b/xorp/contrib/mld6igmp_lite/SConscript
index 0c82a39..f4379a9 100644
--- a/xorp/contrib/mld6igmp_lite/SConscript
+++ b/xorp/contrib/mld6igmp_lite/SConscript
@@ -101,9 +101,19 @@ mldlite = env.Program(target = 'xorp_mld_lite', source = mldlitesrcs)
 
 env.Alias('install',
           env.InstallProgram(env['xorp_moduledir'], igmplite))
+if env['rtld_origin']:
+    for obj in igmplite:
+        env.AddPostAction(igmplite,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 
 env.Alias('install',
           env.InstallProgram(env['xorp_moduledir'], mldlite))
+if env['rtld_origin']:
+    for obj in mldlite:
+        env.AddPostAction(mldlite,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 
 
 Default(libmld6igmplite, igmplite, mldlite)
diff --git a/xorp/contrib/olsr/SConscript b/xorp/contrib/olsr/SConscript
index 888a715..1f7f1c0 100644
--- a/xorp/contrib/olsr/SConscript
+++ b/xorp/contrib/olsr/SConscript
@@ -150,7 +150,11 @@ olsr4srcs = [
 
 
 olsr4 = env.Program(target = 'xorp_olsr4', source = olsr4srcs)
-
+if env['rtld_origin']:
+    for obj in olsr4:
+        env.AddPostAction(olsr4,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], olsr4))
 
 Default(libolsr, libolsrxrl, olsr4)
diff --git a/xorp/fea/SConscript b/xorp/fea/SConscript
index 192f954..4d8fbe0 100644
--- a/xorp/fea/SConscript
+++ b/xorp/fea/SConscript
@@ -235,7 +235,11 @@ feasrcs = [
           ]
 
 fea = env.Program(target = 'xorp_fea', source = feasrcs)
-
+if env['rtld_origin']:
+    for obj in fea:
+        env.AddPostAction(fea,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], fea))
 
 #######################
@@ -252,6 +256,11 @@ if env['enable_fea_dummy']:
         ]
 
     feadummy = env.Program(target = 'xorp_fea_dummy', source = feadummysrcs)
+    if env['rtld_origin']:
+        for obj in feadummy:
+            env.AddPostAction(feadummy,
+                env.Symlink(obj.abspath,
+                            os.path.join(env['xorp_alias_moduledir'], str(obj))))
     env.Alias('install', env.InstallProgram(env['xorp_moduledir'], feadummy))
 
 #######################
diff --git a/xorp/fib2mrib/SConscript b/xorp/fib2mrib/SConscript
index 2b50b0a..7e9e9c5 100644
--- a/xorp/fib2mrib/SConscript
+++ b/xorp/fib2mrib/SConscript
@@ -113,7 +113,11 @@ fib2mribsrcs = [
           ]
 
 fib2mrib = env.Program(target = 'xorp_fib2mrib', source = fib2mribsrcs)
-
+if env['rtld_origin']:
+    for obj in fib2mrib:
+        env.AddPostAction(fib2mrib,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], fib2mrib))
 
 if is_shared:
diff --git a/xorp/libxipc/SConscript b/xorp/libxipc/SConscript
index 95d7f4b..0735b94 100644
--- a/xorp/libxipc/SConscript
+++ b/xorp/libxipc/SConscript
@@ -245,6 +245,11 @@ 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']:
+        for obj in xorp_finder:
+            env.AddPostAction(xorp_finder,
+                env.Symlink(obj.abspath,
+                    os.path.join(env['xorp_alias_moduledir'], str(obj))))
     env.Alias('install', env.InstallProgram(env['xorp_moduledir'], xorp_finder))
     
 Default(libxipc, libfinder, call_xrl, xorp_finder)
diff --git a/xorp/mld6igmp/SConscript b/xorp/mld6igmp/SConscript
index 30b202d..566ca94 100644
--- a/xorp/mld6igmp/SConscript
+++ b/xorp/mld6igmp/SConscript
@@ -125,6 +125,15 @@ 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']:
+    for obj in igmp:
+        env.AddPostAction(igmp,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
+    for obj in mld:
+        env.AddPostAction(mld,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 if is_shared:
     env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxorp_mld6igmp))
 
diff --git a/xorp/ospf/SConscript b/xorp/ospf/SConscript
index edc25ab..d0d7908 100644
--- a/xorp/ospf/SConscript
+++ b/xorp/ospf/SConscript
@@ -129,6 +129,11 @@ else:
 
 ospfv2srcs = [ 'xorp_ospfv2.cc', ]
 ospfv2 = env.Program(target = 'xorp_ospfv2', source = ospfv2srcs)
+if env['rtld_origin']:
+    for obj in ospfv2:
+        env.AddPostAction(ospfv2,
+            env.Symlink(obj.abspath,
+                        os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], ospfv2))
 
 if is_shared:
@@ -137,7 +142,11 @@ 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']:
+        for obj in ospfv3:
+            env.AddPostAction(ospfv3,
+                env.Symlink(obj.abspath,
+                            os.path.join(env['xorp_alias_moduledir'], str(obj))))
     env.Alias('install', env.InstallProgram(env['xorp_moduledir'], ospfv3))
     Default(ospfv2, ospfv3)
 else:
diff --git a/xorp/pim/SConscript b/xorp/pim/SConscript
index ac05531..4b56b05 100644
--- a/xorp/pim/SConscript
+++ b/xorp/pim/SConscript
@@ -143,7 +143,11 @@ pim4srcs = [
           ]
 
 pim4 = env.Program(target = 'xorp_pimsm4', source = pim4srcs)
-
+if env['rtld_origin']:
+    for obj in pim4:
+        env.AddPostAction(pim4,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], pim4))
 
 if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
@@ -152,7 +156,11 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
         ]
 
     pim6 = env.Program(target = 'xorp_pimsm6', source = pim6srcs)
-
+    if env['rtld_origin']:
+        for obj in pim6:
+            env.AddPostAction(pim6,
+                env.Symlink(obj.abspath,
+                    os.path.join(env['xorp_alias_moduledir'], str(obj))))
 
     env.Alias('install', env.InstallProgram(env['xorp_moduledir'], pim6))
 
diff --git a/xorp/policy/SConscript b/xorp/policy/SConscript
index f60e771..6941232 100644
--- a/xorp/policy/SConscript
+++ b/xorp/policy/SConscript
@@ -136,6 +136,11 @@ else:
 
 policysrcs = [ 'xorp_policy.cc', ]
 policy = env.Program(target = 'xorp_policy', source = policysrcs)
+if env['rtld_origin']:
+    for obj in policy:
+        env.AddPostAction(policy,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], policy))
 
 Default(libxorp_policy, policy)
diff --git a/xorp/rib/SConscript b/xorp/rib/SConscript
index ca991ce..cf5af51 100644
--- a/xorp/rib/SConscript
+++ b/xorp/rib/SConscript
@@ -146,7 +146,11 @@ ribsrcs = [
           ]
 
 rib = env.Program(target = 'xorp_rib', source = ribsrcs)
-
+if env['rtld_origin']:
+    for obj in rib:
+        env.AddPostAction(rib,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], rib))
 
 if is_shared:
diff --git a/xorp/rip/SConscript b/xorp/rip/SConscript
index 3807956..0f48182 100644
--- a/xorp/rip/SConscript
+++ b/xorp/rip/SConscript
@@ -175,6 +175,11 @@ else:
 				      LIBS = '')
 
 rip = e.Program(target = 'xorp_rip', source = ripsrcs)
+if env['rtld_origin']:
+    for obj in rip:
+        env.AddPostAction(rip,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 e.Alias('install', e.InstallProgram(e['xorp_moduledir'], rip))
 
 if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
@@ -283,6 +288,11 @@ if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
                                            LIBS = '')
 
     ripng = e.Program(target = 'xorp_ripng', source = ripngsrcs)
+    if env['rtld_origin']:
+        for obj in ripng:
+            env.AddPostAction(ripng,
+                env.Symlink(obj.abspath,
+                    os.path.join(env['xorp_alias_moduledir'], str(obj))))
     e.Alias('install', e.InstallProgram(e['xorp_moduledir'], ripng))
 
     Default(rip, ripng)
diff --git a/xorp/static_routes/SConscript b/xorp/static_routes/SConscript
index b8d4297..690582e 100644
--- a/xorp/static_routes/SConscript
+++ b/xorp/static_routes/SConscript
@@ -113,6 +113,11 @@ else:
 
 xorp_static_routes = env.Program(target = 'xorp_static_routes',
 				 source = xorp_static_routes_srcs)
+if env['rtld_origin']:
+    for obj in xorp_static_routes:
+        env.AddPostAction(xorp_static_routes,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], xorp_static_routes))
 
 if is_shared:
diff --git a/xorp/vrrp/SConscript b/xorp/vrrp/SConscript
index e42fdfc..f70799e 100644
--- a/xorp/vrrp/SConscript
+++ b/xorp/vrrp/SConscript
@@ -99,7 +99,11 @@ vrrpsources = [ 'xorp_vrrp.cc' ]
 
 xorp_vrrp = env.Program(target = 'xorp_vrrp',
             source = vrrpsources)
-
+if env['rtld_origin']:
+    for obj in xorp_vrrp:
+        env.AddPostAction(xorp_vrrp,
+            env.Symlink(obj.abspath,
+                os.path.join(env['xorp_alias_moduledir'], str(obj))))
 env.Alias('install', env.InstallProgram(env['xorp_moduledir'], xorp_vrrp))
 if is_shared:
     env.Alias('install', env.InstallLibrary(env['xorp_libdir'], libxorp_vrrp))
-- 
1.7.5.4



More information about the Xorp-hackers mailing list