From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-1058754-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 898AC138334 for <garchives@archives.gentoo.org>; Sat, 24 Nov 2018 21:34:36 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 83A5CE085B; Sat, 24 Nov 2018 21:34:34 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 46AEDE085B for <gentoo-commits@lists.gentoo.org>; Sat, 24 Nov 2018 21:34:34 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 91658335D29 for <gentoo-commits@lists.gentoo.org>; Sat, 24 Nov 2018 21:34:32 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 583A342F for <gentoo-commits@lists.gentoo.org>; Sat, 24 Nov 2018 21:34:30 +0000 (UTC) From: "Zac Medico" <zmedico@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" <zmedico@gentoo.org> Message-ID: <1543010468.a9f925aa0c10b728496870b42794783b46882fa8.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: lib/portage/ X-VCS-Repository: proj/portage X-VCS-Files: lib/portage/process.py X-VCS-Directories: lib/portage/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: a9f925aa0c10b728496870b42794783b46882fa8 X-VCS-Branch: master Date: Sat, 24 Nov 2018 21:34:30 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 7eb9434e-0d25-4744-bd80-38916d8576c3 X-Archives-Hash: 835c4b8ccc8be736ce578d6aa59b02f4 commit: a9f925aa0c10b728496870b42794783b46882fa8 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Fri Nov 23 21:47:41 2018 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Fri Nov 23 22:01:08 2018 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=a9f925aa portage.process.spawn: add cwd parameter Signed-off-by: Zac Medico <zmedico <AT> gentoo.org> lib/portage/process.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/portage/process.py b/lib/portage/process.py index 75ec299f0..ed1a49247 100644 --- a/lib/portage/process.py +++ b/lib/portage/process.py @@ -220,7 +220,7 @@ def cleanup(): pass def spawn(mycommand, env={}, opt_name=None, fd_pipes=None, returnpid=False, - uid=None, gid=None, groups=None, umask=None, logfile=None, + uid=None, gid=None, groups=None, umask=None, cwd=None, logfile=None, path_lookup=True, pre_exec=None, close_fds=(sys.version_info < (3, 4)), unshare_net=False, unshare_ipc=False, unshare_mount=False, unshare_pid=False, @@ -248,6 +248,8 @@ def spawn(mycommand, env={}, opt_name=None, fd_pipes=None, returnpid=False, @type groups: List @param umask: An integer representing the umask for the process (see man chmod for umask details) @type umask: Integer + @param cwd: Current working directory + @type cwd: String @param logfile: name of a file to use for logging purposes @type logfile: String @param path_lookup: If the binary is not fully specified then look for it in PATH @@ -350,7 +352,7 @@ def spawn(mycommand, env={}, opt_name=None, fd_pipes=None, returnpid=False, if pid == 0: try: _exec(binary, mycommand, opt_name, fd_pipes, - env, gid, groups, uid, umask, pre_exec, close_fds, + env, gid, groups, uid, umask, cwd, pre_exec, close_fds, unshare_net, unshare_ipc, unshare_mount, unshare_pid, cgroup) except SystemExit: @@ -421,7 +423,8 @@ def spawn(mycommand, env={}, opt_name=None, fd_pipes=None, returnpid=False, # Everything succeeded return 0 -def _exec(binary, mycommand, opt_name, fd_pipes, env, gid, groups, uid, umask, +def _exec(binary, mycommand, opt_name, fd_pipes, + env, gid, groups, uid, umask, cwd, pre_exec, close_fds, unshare_net, unshare_ipc, unshare_mount, unshare_pid, cgroup): @@ -446,6 +449,8 @@ def _exec(binary, mycommand, opt_name, fd_pipes, env, gid, groups, uid, umask, @type uid: Integer @param umask: an int representing a unix umask (see man chmod for umask details) @type umask: Integer + @param cwd: Current working directory + @type cwd: String @param pre_exec: A function to be called with no arguments just prior to the exec call. @type pre_exec: callable @param unshare_net: If True, networking will be unshared from the spawned process @@ -609,6 +614,8 @@ def _exec(binary, mycommand, opt_name, fd_pipes, env, gid, groups, uid, umask, os.setuid(int(uid)) if umask: os.umask(umask) + if cwd is not None: + os.chdir(cwd) if pre_exec: pre_exec()