def match_platform(arch): "Match given architecture with OS" if platform() == 'darwin' or platform() == 'osx': if arch.find('osx') != -1: return True elif platform() == 'linux': if arch.find('slc') != -1: return True return False
def cms_install(rel): """ cmssh command to install given CMSSW release. Examples: cmssh> install CMSSW_5_2_4 """ rel = rel.strip() pat = pat_release if not pat.match(rel): msg = 'Fail to validate release name "%s"' % rel print_error(msg) msg = 'Please check the you provide correct release name,' msg += ' e.g. CMSSW_X_Y_Z<_patchN>' print msg return # check if we have stand-alone installation if os.environ.get('CMSSH_CMSSW', None): msg = '\nYou are not allowed to install new release, ' msg += 'since cmssh was installed with system CMSSW install area' print msg return # check if given release/architecture is in place status = check_release_arch(rel) if status != 'ok': msg = '\nCheck release architecture status: %s' % status print msg return print "Searching for %s" % rel script = get_apt_init(os.environ['SCRAM_ARCH']) cmd = 'source %s; apt-cache search %s | grep -v -i fwlite' % (script, rel) run(cmd) if rel.lower().find('patch') != -1: print "Installing cms+cmssw-patch+%s ..." % rel cmd = 'source %s; apt-get install cms+cmssw-patch+%s' % (script, rel) else: print "Installing cms+cmssw+%s ..." % rel cmd = 'source %s; apt-get install cms+cmssw+%s' % (script, rel) subprocess.call(cmd, shell=True) # use subprocess due to apt-get interactive feature if platform() == 'osx': idir = '%s/%s/cms/cmssw/%s' \ % (os.environ['VO_CMS_SW_DIR'], os.environ['SCRAM_ARCH'], rel) fix_so(idir) print "Create user area for %s release ..." % rel cmsrel(rel)
def cms_releases(arg=None): """ List available CMS releases. Optional parameters either <list> or <all> Examples: cmssh> releases # show installed CMSSW releases cmssh> releases list # list available CMSSW releases on given platform cmssh> releases all # show all known CMS releases, including online, tests, etc. """ if arg: print "CMSSW releases for %s platform" % platform() res = release_info(release=None, rfilter=arg) RESMGR.assign(res) releases = [str(r) for r in res] releases = list(set(releases)) releases.sort() for rel in releases: print rel installed_releases()