[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: New utility suggestion: chdir(1)
From: |
Colin Watson |
Subject: |
Re: New utility suggestion: chdir(1) |
Date: |
Sat, 26 Aug 2017 19:23:10 +0100 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
Incidentally, here's a simplified excerpt of Python code from a project
I maintain at my day job (https://launchpad.net/launchpad-buildd) which
could benefit from this, and also illustrates chaining the similar
env(1) as well:
import re
import subprocess
non_meta_re = re.compile(r'^[a-zA-Z0-9+,./:=@_-]+$')
def shell_escape(arg):
if non_meta_re.match(arg):
return arg
else:
return "'%s'" % arg.replace("'", "'\\''")
def run_build_command(chroot_path, args, env=None):
"""Run a build command in the chroot.
This is unpleasant because we need to run it in /build under sudo
chroot, and there's no way to do this without either a helper
program in the chroot or unpleasant quoting. We go for the
unpleasant quoting.
"""
args = [shell_escape(arg) for arg in args]
if env:
args = (
["env"] +
["%s=%s" % (key, shell_escape(value))
for key, value in env.items()] +
args)
command = "cd /build && %s" % " ".join(args)
subprocess.check_call(
["sudo", "chroot", chroot_path, "/bin/sh", "-c", command])
With chdir(1), this would become something like:
def run_build_command(chroot_path, args, env=None):
"""Run a build command in the chroot."""
if env:
args = (
["env"] +
["%s=%s" % (key, value) for key, value in env.items()] +
args)
subprocess.check_call(
["sudo", "chroot", chroot_path, "chdir", "/build"] + args)
--
Colin Watson [address@hidden]
- New utility suggestion: chdir(1), Colin Watson, 2017/08/26
- Re: New utility suggestion: chdir(1),
Colin Watson <=
- Re: New utility suggestion: chdir(1), Pádraig Brady, 2017/08/26
- Re: New utility suggestion: chdir(1), Colin Watson, 2017/08/27
- Re: New utility suggestion: chdir(1), Pádraig Brady, 2017/08/27
- Re: New utility suggestion: chdir(1), Bernhard Voelker, 2017/08/28
- Re: New utility suggestion: chdir(1), Pádraig Brady, 2017/08/28
- Re: New utility suggestion: chdir(1), Pádraig Brady, 2017/08/28
- Re: New utility suggestion: chdir(1), Jim Meyering, 2017/08/29
- Re: New utility suggestion: chdir(1), Pádraig Brady, 2017/08/29
- Re: New utility suggestion: chdir(1), Colin Watson, 2017/08/29
Re: New utility suggestion: chdir(1), Kaz Kylheku (Coreutils), 2017/08/26