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