import shutil
import os
import tarfile

Import('env')


#if [ ! -f manifest.txt.config -o ! -d "$PS_INSTALL" ]; then

if not os.path.isfile("manifest.txt.config"):
	print "Doing pedi setup"  
	pedisetup = Command( target = "./testoutput-setup",
			source = "./SConscript",
			action = os.environ['PEDI_HOME'] + 
					"/pedi --setup -m manifest.txt -l ida -l ida_key -l ps -l zipr -l stars -i " + 
					os.environ['PS_INSTALL']
		)
else:
	print "Pedi already setup"  
	pedisetup=list()



# build stars and libirdb
libirdb=      SConscript("irdb-libs/SConscript") # , variant_dir='build/irdb-libs')
Depends(libirdb,pedisetup)
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')
Depends(libirdbdeep,libsmpsa)

# list of zipr plugins and irdb xforms to build
transformDirs='''
	zipr_large_only_plugin
	irdb_transforms
	zipr_push64_reloc_plugin
	zipr_relax_plugin
	zipr
	zipr_trace_plugin
	zipr_unpin_plugin
	'''

# build the xforms and plugins
xforms=list()
for i in Split(transformDirs):
	Export('env')
	xform = SConscript(i+"/SConscript")
	print "After step "+str(i)+", env[LINKFLAGS]=:"+env['LINKFLAGS']
	Depends(xform, libirdbdeep)
	xforms = xforms + xform 


#finally, run pedi to do the final install

pedi = Command( target = "./testoutput-install",
		source = "./SConscript",
		action = os.environ['PEDI_HOME']+"/pedi -m manifest.txt " )

Depends(pedi,  xforms)
Default( pedi )

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()

	# if [[ $(head -1 manifest.txt.config) == $PS_INSTALL ]] ; then
	if str(first_line) == str(os.environ['PS_INSTALL']):
		print "Doing pedi clean"
		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'])+"'"