mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-11-09 00:40:11 +01:00
Remove shell option from FDroidPopen
This commit is contained in:
parent
43ccdce0ac
commit
fe7f6cfe50
@ -175,7 +175,7 @@ def get_clean_vm(reset=False):
|
|||||||
shutil.rmtree('builder')
|
shutil.rmtree('builder')
|
||||||
os.mkdir('builder')
|
os.mkdir('builder')
|
||||||
|
|
||||||
p = subprocess.Popen('vagrant --version', shell=True,
|
p = subprocess.Popen(['vagrant', '--version'],
|
||||||
stdout=subprocess.PIPE)
|
stdout=subprocess.PIPE)
|
||||||
vver = p.communicate()[0]
|
vver = p.communicate()[0]
|
||||||
if vver.startswith('Vagrant version 1.2'):
|
if vver.startswith('Vagrant version 1.2'):
|
||||||
@ -665,7 +665,7 @@ def build_local(app, thisbuild, vcs, build_dir, output_dir, srclib_dir, extlib_d
|
|||||||
cmd += ' ./distribute.sh'
|
cmd += ' ./distribute.sh'
|
||||||
cmd += ' -m ' + "'" + ' '.join(modules) + "'"
|
cmd += ' -m ' + "'" + ' '.join(modules) + "'"
|
||||||
cmd += ' -d fdroid'
|
cmd += ' -d fdroid'
|
||||||
p = FDroidPopen(cmd, cwd='python-for-android', shell=True)
|
p = subprocess.Popen(cmd, cwd='python-for-android', shell=True)
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
raise BuildException("Distribute build failed")
|
raise BuildException("Distribute build failed")
|
||||||
|
|
||||||
|
@ -128,6 +128,7 @@ def check_tags(app, pattern):
|
|||||||
|
|
||||||
if repotype in ('git',):
|
if repotype in ('git',):
|
||||||
tags = vcs.latesttags(tags, 5)
|
tags = vcs.latesttags(tags, 5)
|
||||||
|
logging.debug("Latest tags: " + ','.join(tags))
|
||||||
|
|
||||||
for tag in tags:
|
for tag in tags:
|
||||||
logging.debug("Check tag: '{0}'".format(tag))
|
logging.debug("Check tag: '{0}'".format(tag))
|
||||||
|
@ -514,8 +514,14 @@ class vcs:
|
|||||||
rtags.append(tag)
|
rtags.append(tag)
|
||||||
return rtags
|
return rtags
|
||||||
|
|
||||||
# Get a list of latest number tags
|
def latesttags(self, tags, number):
|
||||||
def latesttags(self, number):
|
"""Get the most recent tags in a given list.
|
||||||
|
|
||||||
|
:param tags: a list of tags
|
||||||
|
:param number: the number to return
|
||||||
|
:returns: A list containing the most recent tags in the provided
|
||||||
|
list, up to the maximum number given.
|
||||||
|
"""
|
||||||
raise VCSException('latesttags not supported for this vcs type')
|
raise VCSException('latesttags not supported for this vcs type')
|
||||||
|
|
||||||
# Get current commit reference (hash, revision, etc)
|
# Get current commit reference (hash, revision, etc)
|
||||||
@ -626,14 +632,21 @@ class vcs_git(vcs):
|
|||||||
p = FDroidPopen(['git', 'tag'], cwd=self.local, output=False)
|
p = FDroidPopen(['git', 'tag'], cwd=self.local, output=False)
|
||||||
return p.output.splitlines()
|
return p.output.splitlines()
|
||||||
|
|
||||||
def latesttags(self, alltags, number):
|
def latesttags(self, tags, number):
|
||||||
self.checkrepo()
|
self.checkrepo()
|
||||||
p = FDroidPopen(['echo "' + '\n'.join(alltags) + '" | '
|
tl = []
|
||||||
+
|
for tag in tags:
|
||||||
'xargs -I@ git log --format=format:"%at @%n" -1 @ | '
|
p = FDroidPopen(
|
||||||
+ 'sort -n | awk \'{print $2}\''],
|
['git', 'show', '--format=format:%ct', '-s', tag],
|
||||||
cwd=self.local, shell=True, output=False)
|
cwd=self.local, output=False)
|
||||||
return p.output.splitlines()[-number:]
|
# Timestamp is on the last line. For a normal tag, it's the only
|
||||||
|
# line, but for annotated tags, the rest of the info precedes it.
|
||||||
|
ts = int(p.output.splitlines()[-1])
|
||||||
|
tl.append((ts, tag))
|
||||||
|
latest = []
|
||||||
|
for _, t in sorted(tl)[-number:]:
|
||||||
|
latest.append(t)
|
||||||
|
return latest
|
||||||
|
|
||||||
|
|
||||||
class vcs_gitsvn(vcs):
|
class vcs_gitsvn(vcs):
|
||||||
@ -772,9 +785,13 @@ class vcs_hg(vcs):
|
|||||||
self.clone_failed = True
|
self.clone_failed = True
|
||||||
raise VCSException("Hg clone failed", p.output)
|
raise VCSException("Hg clone failed", p.output)
|
||||||
else:
|
else:
|
||||||
p = FDroidPopen(['hg status -uS | xargs rm -rf'], cwd=self.local, shell=True, output=False)
|
p = FDroidPopen(['hg', 'status', '-uS'], cwd=self.local, output=False)
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
raise VCSException("Hg clean failed", p.output)
|
raise VCSException("Hg status failed", p.output)
|
||||||
|
for line in p.output.splitlines():
|
||||||
|
if not line.startswith('? '):
|
||||||
|
raise VCSException("Unexpected output from hg status -uS: " + line)
|
||||||
|
FDroidPopen(['rm', '-rf', line[2:]], cwd=self.local, output=False)
|
||||||
if not self.refreshed:
|
if not self.refreshed:
|
||||||
p = FDroidPopen(['hg', 'pull'], cwd=self.local, output=False)
|
p = FDroidPopen(['hg', 'pull'], cwd=self.local, output=False)
|
||||||
if p.returncode != 0:
|
if p.returncode != 0:
|
||||||
@ -1345,9 +1362,9 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
|
|||||||
logging.info("Removing {0}".format(part))
|
logging.info("Removing {0}".format(part))
|
||||||
if os.path.lexists(dest):
|
if os.path.lexists(dest):
|
||||||
if os.path.islink(dest):
|
if os.path.islink(dest):
|
||||||
FDroidPopen(['unlink ' + dest], shell=True, output=False)
|
FDroidPopen(['unlink', dest], output=False)
|
||||||
else:
|
else:
|
||||||
FDroidPopen(['rm -rf ' + dest], shell=True, output=False)
|
FDroidPopen(['rm', '-rf', dest], output=False)
|
||||||
else:
|
else:
|
||||||
logging.info("...but it didn't exist")
|
logging.info("...but it didn't exist")
|
||||||
|
|
||||||
@ -1694,15 +1711,15 @@ class PopenResult:
|
|||||||
output = ''
|
output = ''
|
||||||
|
|
||||||
|
|
||||||
def SdkToolsPopen(commands, cwd=None, shell=False, output=True):
|
def SdkToolsPopen(commands, cwd=None, output=True):
|
||||||
cmd = commands[0]
|
cmd = commands[0]
|
||||||
if cmd not in config:
|
if cmd not in config:
|
||||||
config[cmd] = find_sdk_tools_cmd(commands[0])
|
config[cmd] = find_sdk_tools_cmd(commands[0])
|
||||||
return FDroidPopen([config[cmd]] + commands[1:],
|
return FDroidPopen([config[cmd]] + commands[1:],
|
||||||
cwd=cwd, shell=shell, output=output)
|
cwd=cwd, output=output)
|
||||||
|
|
||||||
|
|
||||||
def FDroidPopen(commands, cwd=None, shell=False, output=True):
|
def FDroidPopen(commands, cwd=None, output=True):
|
||||||
"""
|
"""
|
||||||
Run a command and capture the possibly huge output.
|
Run a command and capture the possibly huge output.
|
||||||
|
|
||||||
@ -1721,10 +1738,11 @@ def FDroidPopen(commands, cwd=None, shell=False, output=True):
|
|||||||
result = PopenResult()
|
result = PopenResult()
|
||||||
p = None
|
p = None
|
||||||
try:
|
try:
|
||||||
p = subprocess.Popen(commands, cwd=cwd, shell=shell, env=env,
|
p = subprocess.Popen(commands, cwd=cwd, shell=False, env=env,
|
||||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||||
except OSError, e:
|
except OSError, e:
|
||||||
raise BuildException("OSError while trying to execute " + ' '.join(commands) + ': ' + str(e))
|
raise BuildException("OSError while trying to execute " +
|
||||||
|
' '.join(commands) + ': ' + str(e))
|
||||||
|
|
||||||
stdout_queue = Queue.Queue()
|
stdout_queue = Queue.Queue()
|
||||||
stdout_reader = AsynchronousFileReader(p.stdout, stdout_queue)
|
stdout_reader = AsynchronousFileReader(p.stdout, stdout_queue)
|
||||||
|
Loading…
Reference in New Issue
Block a user