From 1cb3347a04c054271b9b89be67cb354e25e40c26 Mon Sep 17 00:00:00 2001
From: Jason Hiser <jdhiser@gmail.com>
Date: Thu, 15 Aug 2019 12:06:47 -0400
Subject: [PATCH] reworking scons file for pedi insanity

---
 .gitignore                |  3 ++
 SConscript                | 39 ++++++----------------
 SMPStaticAnalyzer         |  2 +-
 irdb-libs/SConscript      | 70 ++++++++++++++++-----------------------
 irdb-libs/SConscript.deep | 17 ++++++----
 irdb-libs/SConstruct      |  4 +--
 zipr                      |  2 +-
 zipr_push64_reloc_plugin  |  2 +-
 zipr_unpin_plugin         |  2 +-
 9 files changed, 59 insertions(+), 82 deletions(-)

diff --git a/.gitignore b/.gitignore
index 5953e4c85..04ff3d783 100644
--- a/.gitignore
+++ b/.gitignore
@@ -27,3 +27,6 @@ irdb-libs/scons_build/
 *.so
 *.exe
 .*.swp
+irdb-libs/libEXEIO/test/exeio_test
+irdb-libs/meds2pdb/meds2pdb
+
diff --git a/SConscript b/SConscript
index 984ccc6bd..d264fd34e 100644
--- a/SConscript
+++ b/SConscript
@@ -18,38 +18,26 @@ createFolder(os.environ['ZEST_RUNTIME']+'/lib64')
 createFolder(os.environ['ZEST_RUNTIME']+'/sbin')
 createFolder(os.environ['ZEST_RUNTIME']+'/bin')
 
-
-#if [ ! -f manifest.txt.config -o ! -d "$PS_INSTALL" ]; then
-
 if not os.path.isfile("manifest.txt.config"):
 	os.system("$PEDI_HOME/pedi --setup -m manifest.txt -l ida -l ida_key -l ps -l zipr -l stars -i $PS_INSTALL")
 else:
 	print "Pedi already setup"  
 
-
-
 # build stars and libirdb
-libirdb=      SConscript("irdb-libs/SConscript") # , variant_dir='build/irdb-libs')
-libsmpsa=     SConscript("SMPStaticAnalyzer/SConscript") # 
-
+libirdb=      SConscript("irdb-libs/SConscript") 
+libsmpsa=     SConscript("SMPStaticAnalyzer/SConscript") 
 
 # specify some explicit dependencies to make sure these build in order
 Depends(libsmpsa,libirdb)
 
 # now finish building irdb-libs once stars is setup
-libirdbdeep=SConscript("irdb-libs/SConscript.deep", variant_dir='build/irdb-libs')
+libirdbdeep=SConscript("irdb-libs/SConscript.deep")
 Depends(libirdbdeep,libsmpsa)
 
 print "Zipr install is "+env['ZIPR_INSTALL']
 Export('env')
 
 
-#libtrace=env.SConscript(["zipr_trace_plugin/libtrace/SConscript"])
-#print "Zipr install is "+env['ZIPR_INSTALL']
-#zipr_trace_plugin=SConscript(["zipr_trace_plugin/SConscript"])
-#Depends(zipr_trace_plugin,libtrace);
-
-
 # list of zipr plugins and irdb xforms to build
 transformDirs='''
 	builtin_xforms/add_lib  	
@@ -70,27 +58,22 @@ for i in Split(transformDirs):
 
 
 #finally, run pedi to do the final install
-
-pedi = Command( target = "./testoutput-install",
-		source = "./SConscript",
+pedi = Command( target = "./zipr-umb-testoutput-install",
+		source = xforms,
 		action = os.environ['PEDI_HOME']+"/pedi -m manifest.txt " )
 
-Depends(pedi,  xforms)
-Default( pedi )
+if Dir('.').abspath == Dir('#.').abspath:
+	Default( pedi )
+else:
+	Default(xforms)
 
 if env.GetOption('clean') and os.path.isfile("manifest.txt.config"):
 	with open("manifest.txt.config") as myfile:
-	    first_line=myfile.readlines()[0] #put here the interval you want
-
-	first_line=first_line.rstrip()
+	    first_line=myfile.readlines()[0].rstrip()
 
 	# if [[ $(head -1 manifest.txt.config) == $PS_INSTALL ]] ; then
 	if str(first_line) == str(os.environ['PS_INSTALL']):
-		print "Doing pedi clean"
+		print "Doing pedi clean as I'm the pedi root"
 		os.system( "pwd; $PEDI_HOME/pedi -c -m manifest.txt " )
 		shutil.rmtree(os.environ['PS_INSTALL'])
-	else:
-		print "Eliding pedi clean as I'm not the root" 
-		print "Root is '"+first_line+"'"
-		print "I am    '"+str(os.environ['PS_INSTALL'])+"'"
 
diff --git a/SMPStaticAnalyzer b/SMPStaticAnalyzer
index 754a400ff..48edeefcb 160000
--- a/SMPStaticAnalyzer
+++ b/SMPStaticAnalyzer
@@ -1 +1 @@
-Subproject commit 754a400ffb55eb62c22f7ae70750e710e8a44e71
+Subproject commit 48edeefcbe4b29a80c354d089f13b950a3162bd8
diff --git a/irdb-libs/SConscript b/irdb-libs/SConscript
index 19c7bc9d8..4058ec7f4 100644
--- a/irdb-libs/SConscript
+++ b/irdb-libs/SConscript
@@ -4,8 +4,6 @@ import tarfile
 
 Import('env')
 
-(sysname, nodename, release, version, machine)=os.uname()
-
 
 if env.GetOption('clean'):
     if os.path.exists(os.environ['SECURITY_TRANSFORMS_HOME']+"/include/targ-config.h"):
@@ -18,12 +16,6 @@ if env.GetOption('clean'):
 
 else:
 
-    # check/install targ-config.h
-    #if not os.path.isfile(os.environ['SECURITY_TRANSFORMS_HOME']+"/include/targ-config.h"):
-	##print "uname=", sysname, " xx ", nodename, " xx ", release, " xx ", version, " xx ", machine
-	#shutil.copy( os.path.join(os.environ['SECURITY_TRANSFORMS_HOME'],"include",machine,"config.h"), 
-		     #os.path.join(os.environ['SECURITY_TRANSFORMS_HOME'],"include","targ-config.h"))
-
     os.chdir(os.environ['SECURITY_TRANSFORMS_HOME']+"/third_party/capstone")
     print "Rebuilding libcapstone."
     jobs=env.GetOption('num_jobs')
@@ -39,16 +31,10 @@ if "PEDI_HOME" in os.environ:
 
 env['BASE_IRDB_LIBS']="irdb-core"
 
-if sysname != "SunOS":
-	libPEBLISS=SConscript("third_party/SConscript.pebliss", variant_dir='scons_build/libPEBLISS')
-	# setup libraries needed for linking
-	if "PEDI_HOME" in os.environ:
-		Depends(pedi,libPEBLISS)
-
-# pebliss requires iconv, which needs to be explicit on cygwin.
-if "CYGWIN" in sysname:
-	# add tuple of 1 item!
-	env['BASE_IRDB_LIBS']=env['BASE_IRDB_LIBS']+("iconv",)
+libPEBLISS=SConscript("third_party/SConscript.pebliss")
+# setup libraries needed for linking
+if "PEDI_HOME" in os.environ:
+	Depends(pedi,libPEBLISS)
 
 Export('env')
 
@@ -61,31 +47,26 @@ libcapstone_path = env.Install("$SECURITY_TRANSFORMS_HOME/lib/", libcapstone_pat
 env.Command(os.environ['SECURITY_TRANSFORMS_HOME']+"/lib/libcapstone.so", libcapstone_path, "ln -s $SOURCE.abspath $TARGET.abspath")
 libcapstone=os.environ['SECURITY_TRANSFORMS_HOME']+"/lib/libcapstone.so"
 
-libehp=env.SConscript("libehp/SConscript", variant_dir='scons_build/libehp')
+libehp=env.SConscript("libehp/SConscript")
 libehp=env.Install("$SECURITY_TRANSFORMS_HOME/lib", libehp);
 
-libIRDBcore=env.SConscript("libIRDB-core/src/SConscript", variant_dir='scons_build/libIRDB-core')
+libIRDBcore=env.SConscript("libIRDB-core/src/SConscript")
 Depends(libIRDBcore,libcapstone)
 
-libIRDBcfg=env.SConscript("libIRDB-cfg/src/SConscript", variant_dir='scons_build/libIRDB-cfg')
-libIRDButil=env.SConscript("libIRDB-util/src/SConscript", variant_dir='scons_build/libIRDB-util')
-libIRDBsyscall=env.SConscript("libIRDB-syscall/src/SConscript", variant_dir='scons_build/libIRDB-syscall')
-libElfDep=SConscript("libIRDB-elfdep/src/SConscript", variant_dir='scons_build/libIRDB-elfdep')
-libtransform=SConscript("libIRDB-transform/src/SConscript", variant_dir='scons_build/libIRDB-transform')
-libEXEIO=SConscript("libEXEIO/SConscript", variant_dir='scons_build/libEXEIO')
-#libbea=SConscript("beaengine/SConscript", variant_dir='scons_build/beaengine')
-
-libMEDSannotation=SConscript("libMEDSannotation/SConscript", variant_dir='scons_build/libMEDSannotation')
-# libxform=SConscript("xform/SConscript", variant_dir='scons_build/libxform')
-# libIRDB=SConscript("libIRDB/SConscript", variant_dir='scons_build/libIRDB')
-# Depends(libIRDB,libcapstone)
-libStructDiv=SConscript("libStructDiv/SConscript", variant_dir='scons_build/libStructDiv')
-thanos=SConscript("thanos/SConscript", variant_dir='scons_build/thanos')
-rida=SConscript("rida/SConscript", variant_dir='scons_build/rida')
-meds2pdb=SConscript("meds2pdb/SConscript", variant_dir='scons_build/meds2pdb')
-dump_map=SConscript("dump_map/SConscript", variant_dir='scons_build/dump_map')
-dump_insns=SConscript("dump_insns/SConscript", variant_dir='scons_build/dump_insns')
-ir_builders=SConscript("ir_builders/SConscript", variant_dir='scons_build/ir_builders')
+libIRDBcfg=env.SConscript("libIRDB-cfg/src/SConscript")
+libIRDButil=env.SConscript("libIRDB-util/src/SConscript")
+libIRDBsyscall=env.SConscript("libIRDB-syscall/src/SConscript")
+libElfDep=SConscript("libIRDB-elfdep/src/SConscript")
+libtransform=SConscript("libIRDB-transform/src/SConscript")
+libEXEIO=SConscript("libEXEIO/SConscript")
+libMEDSannotation=SConscript("libMEDSannotation/SConscript")
+libStructDiv=SConscript("libStructDiv/SConscript")
+thanos=SConscript("thanos/SConscript")
+rida=SConscript("rida/SConscript")
+meds2pdb=SConscript("meds2pdb/SConscript")
+dump_map=SConscript("dump_map/SConscript")
+dump_insns=SConscript("dump_insns/SConscript")
+ir_builders=SConscript("ir_builders/SConscript")
 
 
 libs=( libIRDBcore, 
@@ -107,9 +88,16 @@ libs=( libIRDBcore,
 	ir_builders)
 
 if "PEDI_HOME" in os.environ:
+
 	Depends(pedi,  libs)
-	Default( pedi )
-	Return('pedi')
+	Default(libs)
+	# if is local build
+	if Dir('.').abspath == Dir('#.').abspath:
+		Default( pedi )
+		ret=[pedi]+ libs
+		Return('ret')
+	else:
+		Return('libs')
 else:
 
 	Default(libIRDBcore, libIRDBcfg, libIRDButil, libIRDBdeep, libIRDBcore, libehp,libtransform,libEXEIO,libMEDSannotation,libStructDiv,libElfDep, libcapstone, thanos, rida, meds2pdb, dump_map, dump_insns, ir_builders)
diff --git a/irdb-libs/SConscript.deep b/irdb-libs/SConscript.deep
index 93a9b58df..ec4059fa6 100644
--- a/irdb-libs/SConscript.deep
+++ b/irdb-libs/SConscript.deep
@@ -2,15 +2,18 @@ import os
 
 Import('env')
 
-pedi = Command( target = "./testoutput",
-		source = "./SConscript",
-		action = os.environ['PEDI_HOME']+"/pedi -m manifest.txt " )
 
 env['BASE_IRDB_LIBS']="irdb-core", "pqxx", "pq"
 
-libIRDBdeep=env.SConscript("libIRDB-deep/src/SConscript", variant_dir='scons_build/libIRDB-deep')
+libIRDBdeep=env.SConscript("libIRDB-deep/src/SConscript")
+
 
-Depends(pedi,  libIRDBdeep)
-Default( pedi )
+pedi = Command( target = "./deep-testoutput",
+		source = libIRDBdeep,
+		action = os.environ['PEDI_HOME']+"/pedi -m manifest.txt " )
+ret=libIRDBdeep
+if Dir('.').abspath == Dir('#.').abspath:
+	ret=ret+pedi
 
-Return('pedi')
+Default(ret)
+Return('ret')
diff --git a/irdb-libs/SConstruct b/irdb-libs/SConstruct
index 870baa527..0abcc3f52 100644
--- a/irdb-libs/SConstruct
+++ b/irdb-libs/SConstruct
@@ -71,7 +71,7 @@ if sysname == "SunOS":
 
 Export('env')
 if int(env['build_deep']) == 1:
-	SConscript("SConscript.deep", variant_dir='build')
+	SConscript("SConscript.deep")
 else:
-	SConscript("SConscript", variant_dir='build')
+	SConscript("SConscript")
 
diff --git a/zipr b/zipr
index 650791dcb..10400dc73 160000
--- a/zipr
+++ b/zipr
@@ -1 +1 @@
-Subproject commit 650791dcba22811466b2e4fec92ebace0bb0eb78
+Subproject commit 10400dc73023f4af7dac75819d062e9871ca46ce
diff --git a/zipr_push64_reloc_plugin b/zipr_push64_reloc_plugin
index 93ecc5f23..390478f47 160000
--- a/zipr_push64_reloc_plugin
+++ b/zipr_push64_reloc_plugin
@@ -1 +1 @@
-Subproject commit 93ecc5f231f57bf0e835d36b614233833f92bc44
+Subproject commit 390478f4739c7b76e2b3a08e77e49293fa03b1b6
diff --git a/zipr_unpin_plugin b/zipr_unpin_plugin
index cf484f94f..5e891f9f6 160000
--- a/zipr_unpin_plugin
+++ b/zipr_unpin_plugin
@@ -1 +1 @@
-Subproject commit cf484f94f6b2dd85fa2c458a26ca19095698224c
+Subproject commit 5e891f9f6544d4e6dbce99df55cd3b844746009d
-- 
GitLab