本文整理汇总了Python中subprocesses.normExpUserPath函数的典型用法代码示例。如果您正苦于以下问题:Python normExpUserPath函数的具体用法?Python normExpUserPath怎么用?Python normExpUserPath使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了normExpUserPath函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: cfgJsCompile
def cfgJsCompile(shell):
'''Configures, compiles and copies a js shell according to required parameters.'''
print "Compiling..." # Print *with* a trailing newline to avoid breaking other stuff
os.mkdir(sps.normExpUserPath(os.path.join(shell.getShellCacheDir(), 'objdir-js')))
shell.setJsObjdir(sps.normExpUserPath(os.path.join(shell.getShellCacheDir(), 'objdir-js')))
autoconfRun(shell.getRepoDirJsSrc())
configureTryCount = 0
while True:
try:
cfgBin(shell)
break
except Exception as e:
configureTryCount += 1
if configureTryCount > 3:
print 'Configuration of the js binary failed 3 times.'
raise
# This exception message is returned from sps.captureStdout via cfgBin.
# No idea why this is sps.isLinux as well..
if sps.isLinux or (sps.isWin and 'Windows conftest.exe configuration permission' in repr(e)):
print 'Trying once more...'
continue
compileJs(shell)
inspectShell.verifyBinary(shell)
compileLog = sps.normExpUserPath(os.path.join(shell.getShellCacheDir(),
shell.getShellNameWithoutExt() + '.fuzzmanagerconf'))
if not os.path.isfile(compileLog):
envDump(shell, compileLog)
示例2: getOneBuild
def getOneBuild(isJsShell, url, buildType):
'''
Try to get a complete working build.
'''
idNum = getIdFromTboxUrl(url)
tboxCacheFolder = sps.normExpUserPath(os.path.join(compileShell.ensureCacheDir(),
'tboxjs-' + buildType + '-' + idNum))
createTboxCacheFolder(tboxCacheFolder)
incompleteBuildTxtFile = sps.normExpUserPath(os.path.join(tboxCacheFolder, INCOMPLETE_NOTE))
if os.path.isfile(getTboxJsBinPath(tboxCacheFolder)):
return True, idNum, tboxCacheFolder # Cached, complete
if os.path.isfile(incompleteBuildTxtFile):
assert os.listdir(tboxCacheFolder) == [INCOMPLETE_NOTE], 'Only ' + \
'incompleteBuild.txt should be present in ' + tboxCacheFolder
readIncompleteBuildTxtFile(incompleteBuildTxtFile, idNum)
return False, None, None # Cached, incomplete
if downloadBuild.downloadBuild(url, tboxCacheFolder, jsShell=isJsShell):
assert os.listdir(tboxCacheFolder) == ['build'], 'Only ' + \
'the build subdirectory should be present in ' + tboxCacheFolder
return True, idNum, tboxCacheFolder # Downloaded, complete
else:
writeIncompleteBuildTxtFile(url, tboxCacheFolder, incompleteBuildTxtFile, idNum)
return False, None, None # Downloaded, incomplete
示例3: parseShellOptions
def parseShellOptions(inputArgs):
"""Returns a 'buildOptions' object, which is intended to be immutable."""
parser, randomizer = addParserOptions()
buildOptions = parser.parse_args(inputArgs.split())
# Ensures releng machines do not enter the if block and assumes mozilla-central always exists
if os.path.isdir(DEFAULT_TREES_LOCATION):
# Repositories do not get randomized if a repository is specified.
if buildOptions.repoDir is None:
# For patch fuzzing without a specified repo, do not randomize repos, assume m-c instead
if buildOptions.enableRandom and not buildOptions.patchFile:
buildOptions.repoDir = getRandomValidRepo(DEFAULT_TREES_LOCATION)
else:
buildOptions.repoDir = os.path.realpath(sps.normExpUserPath(
os.path.join(DEFAULT_TREES_LOCATION, 'mozilla-central')))
assert hgCmds.isRepoValid(buildOptions.repoDir)
if buildOptions.patchFile:
hgCmds.ensureMqEnabled()
buildOptions.patchFile = sps.normExpUserPath(buildOptions.patchFile)
assert os.path.isfile(buildOptions.patchFile)
if buildOptions.enableRandom:
buildOptions = generateRandomConfigurations(parser, randomizer)
else:
buildOptions.buildOptionsStr = inputArgs
valid = areArgsValid(buildOptions)
if not valid[0]:
print 'WARNING: This set of build options is not tested well because: ' + valid[1]
return buildOptions
示例4: writeIncompleteBuildTxtFile
def writeIncompleteBuildTxtFile(url, cacheFolder, txtFile, num):
'''
Writes a text file indicating that this particular build is incomplete.
'''
if os.path.isdir(sps.normExpUserPath(os.path.join(cacheFolder, 'build', 'dist'))) or \
os.path.isdir(sps.normExpUserPath(os.path.join(cacheFolder, 'build', 'download'))):
sps.rmTreeIncludingReadOnly(sps.normExpUserPath(os.path.join(cacheFolder, 'build')))
assert not os.path.isfile(txtFile), 'incompleteBuild.txt should not be present.'
with open(txtFile, 'wb') as f:
f.write('This build with numeric ID ' + num + ' is incomplete.')
assert num == getIdFromTboxUrl(url), 'The numeric ID ' + num + \
' has to be the one we downloaded from ' + url
print 'Wrote a text file that indicates numeric ID ' + num + ' has an incomplete build.'
return False # False indicates that this text file has not yet been looked at.
示例5: makeRegressionTestPrologue
def makeRegressionTestPrologue(repo, regressionTestListFile):
"""Generate a JS string to tell jsfunfuzz where to find SpiderMonkey's regression tests"""
# We use json.dumps to escape strings (Windows paths have backslashes).
return """
const regressionTestsRoot = %s;
const libdir = regressionTestsRoot + %s; // needed by jit-tests
var regressionTestList;
try { regressionTestList = read(%s).match(/.+/g); } catch(e) { }
""" % (
json.dumps(sps.normExpUserPath(repo) + os.sep),
json.dumps(os.path.join('js', 'src', 'jit-test', 'lib') + os.sep),
json.dumps(os.path.abspath(sps.normExpUserPath(regressionTestListFile))),
)
示例6: getRandomValidRepo
def getRandomValidRepo(treeLocation):
validRepos = []
for repo in ['mozilla-central', 'mozilla-aurora', 'mozilla-esr45']:
if os.path.isfile(sps.normExpUserPath(os.path.join(
treeLocation, repo, '.hg', 'hgrc'))):
validRepos.append(repo)
# After checking if repos are valid, reduce chances that non-mozilla-central repos are chosen
if 'mozilla-aurora' in validRepos and chance(0.5):
validRepos.remove('mozilla-aurora')
if 'mozilla-esr45' in validRepos and chance(0.9):
validRepos.remove('mozilla-esr45')
return os.path.realpath(sps.normExpUserPath(
os.path.join(treeLocation, random.choice(validRepos))))
示例7: ensureCacheDir
def ensureCacheDir():
'''Returns a cache directory for compiled shells to live in, creating one if needed'''
cacheDir = os.path.join(sps.normExpUserPath('~'), 'shell-cache')
ensureDir(cacheDir)
# Expand long Windows paths (overcome legacy MS-DOS 8.3 stuff)
# This has to occur after the shell-cache directory is created
if sps.isWin: # adapted from http://stackoverflow.com/a/3931799
winTmpDir = unicode(cacheDir)
GetLongPathName = ctypes.windll.kernel32.GetLongPathNameW
unicodeBuffer = ctypes.create_unicode_buffer(GetLongPathName(winTmpDir, 0, 0))
GetLongPathName(winTmpDir, unicodeBuffer, len(unicodeBuffer))
cacheDir = sps.normExpUserPath(str(unicodeBuffer.value)) # convert back to a str
return cacheDir
示例8: getShellCompiledRunLibsPath
def getShellCompiledRunLibsPath(self):
lDir = self.getJsObjdir()
libsList = [
sps.normExpUserPath(os.path.join(lDir, 'dist', 'bin', runLib))
for runLib in inspectShell.ALL_RUN_LIBS
]
return libsList
示例9: patchHgRepoUsingMq
def patchHgRepoUsingMq(patchFile, workingDir=os.getcwdu()):
# We may have passed in the patch with or without the full directory.
patchAbsPath = os.path.abspath(sps.normExpUserPath(patchFile))
pname = os.path.basename(patchAbsPath)
assert pname != ''
qimportOutput, qimportRetCode = sps.captureStdout(['hg', '-R', workingDir, 'qimport', patchAbsPath],
combineStderr=True, ignoreStderr=True,
ignoreExitCode=True)
if qimportRetCode != 0:
if 'already exists' in qimportOutput:
print "A patch with the same name has already been qpush'ed. Please qremove it first."
raise Exception('Return code from `hg qimport` is: ' + str(qimportRetCode))
print("Patch qimport'ed..."),
qpushOutput, qpushRetCode = sps.captureStdout(['hg', '-R', workingDir, 'qpush', pname],
combineStderr=True, ignoreStderr=True)
assert ' is empty' not in qpushOutput, "Patch to be qpush'ed should not be empty."
if qpushRetCode != 0:
hgQpopQrmAppliedPatch(patchFile, workingDir)
print 'You may have untracked .rej or .orig files in the repository.'
print '`hg status` output of the repository of interesting files in ' + workingDir + ' :'
subprocess.check_call(['hg', '-R', workingDir, 'status', '--modified', '--added',
'--removed', '--deleted'])
raise Exception('Return code from `hg qpush` is: ' + str(qpushRetCode))
print("Patch qpush'ed. Continuing..."),
return pname
示例10: getRepoNameFromHgrc
def getRepoNameFromHgrc(repoDir):
'''Looks in the hgrc file in the .hg directory of the repository and returns the name.'''
assert isRepoValid(repoDir)
hgCfg = ConfigParser.SafeConfigParser()
hgCfg.read(sps.normExpUserPath(os.path.join(repoDir, '.hg', 'hgrc')))
# Not all default entries in [paths] end with "/".
return [i for i in hgCfg.get('paths', 'default').split('/') if i][-1]
示例11: getRepoNameFromHgrc
def getRepoNameFromHgrc(repoDir):
"""Look in the hgrc file in the .hg directory of the repository and return the name."""
assert isRepoValid(repoDir)
hgCfg = ConfigParser.SafeConfigParser()
hgCfg.read(sps.normExpUserPath(os.path.join(repoDir, ".hg", "hgrc")))
# Not all default entries in [paths] end with "/".
return [i for i in hgCfg.get("paths", "default").split("/") if i][-1]
示例12: getShellCompiledRunLibsPath
def getShellCompiledRunLibsPath(self):
lDir = self.getJsObjdir() if self.getJsBuildSystemConsidersNspr() else self.getNsprObjdir()
libsList = [
sps.normExpUserPath(os.path.join(lDir, 'dist', 'bin', runLib))
for runLib in inspectShell.ALL_RUN_LIBS
]
return libsList
示例13: jsFilesIn
def jsFilesIn(repoPathLength, root):
return [
os.path.join(path, filename)[repoPathLength:]
for path, _dirs, files in os.walk(sps.normExpUserPath(root))
for filename in files
if filename.endswith(".js")
]
示例14: compileJs
def compileJs(shell):
'''This function compiles and copies a binary.'''
try:
cmdList = [MAKE_BINARY, '-C', shell.getJsObjdir(), '-j' + str(COMPILATION_JOBS), '-s']
out = sps.captureStdout(cmdList, combineStderr=True, ignoreExitCode=True,
currWorkingDir=shell.getJsObjdir(), env=shell.getEnvFull())[0]
except Exception as e:
# This exception message is returned from sps.captureStdout via cmdList.
if (sps.isLinux or sps.isMac) and \
('GCC running out of memory' in repr(e) or 'Clang running out of memory' in repr(e)):
# FIXME: Absolute hack to retry after hitting OOM.
print 'Trying once more due to the compiler running out of memory...'
out = sps.captureStdout(cmdList, combineStderr=True, ignoreExitCode=True,
currWorkingDir=shell.getJsObjdir(), env=shell.getEnvFull())[0]
# A non-zero error can be returned during make, but eventually a shell still gets compiled.
if os.path.exists(shell.getShellCompiledPath()):
print 'A shell was compiled even though there was a non-zero exit code. Continuing...'
else:
print MAKE_BINARY + " did not result in a js shell:"
raise
if os.path.exists(shell.getShellCompiledPath()):
shutil.copy2(shell.getShellCompiledPath(), shell.getShellCacheFullPath())
for runLib in shell.getShellCompiledRunLibsPath():
if os.path.isfile(runLib):
shutil.copy2(runLib, shell.getShellCacheDir())
if sps.isLinux:
# Restrict this to only Linux for now. At least Mac OS X needs some (possibly *.a)
# files in the objdir or else the stacks from failing testcases will lack symbols.
shutil.rmtree(sps.normExpUserPath(os.path.join(shell.getShellCacheDir(), 'objdir-js')))
else:
print out
raise Exception(MAKE_BINARY + " did not result in a js shell, no exception thrown.")
示例15: compileNspr
def compileNspr(shell):
'''Compile a NSPR binary.'''
cfgBin(shell, 'nspr')
# Continue to use -j1 because NSPR does not yet seem to support parallel compilation very well.
# Even if we move to parallel compile NSPR in the future, we must beware of breaking old
# build during bisection. Maybe find the changeset that fixes this, and if before that, use -j1,
# and after that, use -jX ?
nsprCmdList = [MAKE_BINARY, '-C', shell.getNsprObjdir(), '-j1', '-s']
out = sps.captureStdout(nsprCmdList, combineStderr=True, ignoreExitCode=True,
currWorkingDir=shell.getNsprObjdir(), env=shell.getEnvFull())[0]
for compileLib in inspectShell.ALL_COMPILE_LIBS:
if not sps.normExpUserPath(os.path.join(shell.getNsprObjdir(), 'dist', 'lib', compileLib)):
print out
raise Exception(MAKE_BINARY + " did not result in a NSPR binary.")
assert os.path.isdir(sps.normExpUserPath(
os.path.join(shell.getNsprObjdir(), 'dist', 'include', 'nspr')))