def env(self, rel_dir=None): '''Return dictionary of env for the given project and optional package. It conists of the environment after sourcing the top level projects/setup.sh followed by the setup.sh in the given package package if rel_dir is given. rel_dir can be absolute path or relative from the projects/ directory. It can include or omit the final /cmt sub directory.''' from command import source import fs environ = self.cfg_environ() #print 'projects.env(): Source %s/setup.sh'%fs.projects() environ = source('./setup.sh', env=environ, dir=fs.projects()) if not rel_dir: rel_dir = self.rel_pkg() #print 'Using rel_dir =', rel_dir if not rel_dir: #print 'No rel_dir given' return environ cmtdir = os.path.join(self.proj_dir(), rel_dir) if cmtdir.rfind('/cmt') < 0: cmtdir = os.path.join(cmtdir,'cmt') import cmt if not os.path.exists(cmtdir+'/setup.sh'): cmt.cmt('config', environ=environ, dir=cmtdir) pass #print 'projects.env(): Source %s/setup.sh'%cmtdir environ = source('./setup.sh', env=environ, dir=cmtdir) return environ
def _fix_projects(self): import fs,os,cmt from command import source fs.goto(os.path.join(self.dstdir,'projects')) environ = source('./setup.sh') for pobj in self.project_objects: pdir = os.path.join(self.dstdir,'projects',pobj.name,pobj.rel_pkg(),'cmt') cmt.cmt("config",environ=environ,dir=pdir) pkgenv = source('./setup.sh',env=environ,dir=pdir) cmt.cmt("br cmt config",environ=pkgenv,dir=pdir) fs.goback()
def build_package(self,pkg,cmds = None): ''' for cmd in get config make install do echo "$pkg: running \"cmt pkg_$cmd\"" cmt pkg_$cmd check_cmd done ''' import fs fs.assure(os.path.join(fs.external(),'tarFiles')) fs.assure(os.path.join(fs.external(),'build/LCG')) bdir = self.builder_directory(pkg) from exception import InconsistentState if bdir is None: raise InconsistentState('No builder directory for "%s"'%pkg) if not cmds: print 'Building %s in %s'%(pkg,bdir) pkg = os.path.basename(bdir) cmtdir = os.path.join(bdir,'cmt') envdir = os.path.join('LCG_Builders',pkg) environ = self.env(envdir) import fs fs.goto(cmtdir) import cmt if not cmds: cmds = ['get','config','make','install'] for what in cmds: print '\t%s'%what cmt.cmt('pkg_%s'%what, environ=environ, dir=cmtdir) fs.goback() return