public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/
Date: Sat,  6 Jul 2013 01:41:23 +0000 (UTC)	[thread overview]
Message-ID: <1373074861.1ac7623f580711d26a2b8e72547f2e6b5800b88e.zmedico@gentoo> (raw)

commit:     1ac7623f580711d26a2b8e72547f2e6b5800b88e
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Jul  6 01:41:01 2013 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sat Jul  6 01:41:01 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=1ac7623f

doebuild: cleanup returnpid support, bug #475812

The returnpid parameter is no longer deprecated, since it's useful for
API consumers that wish to use the fd_pipes parameter (the fd_pipes
parameter is only respected when returnpid is True).

---
 pym/portage/package/ebuild/doebuild.py | 57 ++++++++++++++++++++--------------
 1 file changed, 33 insertions(+), 24 deletions(-)

diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
index 6901719..8444e19 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -499,7 +499,9 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 	@param prev_mtimes: A dict of { filename:mtime } keys used by merge() to do config_protection
 	@type prev_mtimes: dictionary
 	@param fd_pipes: A dict of mapping for pipes, { '0': stdin, '1': stdout }
-		for example.
+		for example. This is parameter only guaranteed to be respected when
+		returnpid is True (otherwise all subprocesses simply inherit file
+		descriptors from sys.__std* streams).
 	@type fd_pipes: Dictionary
 	@param returnpid: Return a list of process IDs for a successful spawn, or
 		an integer value if spawn is unsuccessful. NOTE: This requires the
@@ -581,12 +583,6 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 		writemsg("\n", noiselevel=-1)
 		return 1
 
-	if returnpid and mydo != 'depend':
-		warnings.warn("portage.doebuild() called " + \
-			"with returnpid parameter enabled. This usage will " + \
-			"not be supported in the future.",
-			DeprecationWarning, stacklevel=2)
-
 	if mydo == "fetchall":
 		fetchall = 1
 		mydo = "fetch"
@@ -697,7 +693,7 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 		# we can temporarily override PORTAGE_TMPDIR with a random temp dir
 		# so that there's no need for locking and it can be used even if the
 		# user isn't in the portage group.
-		if mydo in ("info",):
+		if not returnpid and mydo in ("info",):
 			tmpdir = tempfile.mkdtemp()
 			tmpdir_orig = mysettings["PORTAGE_TMPDIR"]
 			mysettings["PORTAGE_TMPDIR"] = tmpdir
@@ -736,14 +732,15 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 			return _spawn_phase(mydo, mysettings,
 				fd_pipes=fd_pipes, returnpid=returnpid)
 
-		# Validate dependency metadata here to ensure that ebuilds with invalid
-		# data are never installed via the ebuild command. Don't bother when
-		# returnpid == True since there's no need to do this every time emerge
-		# executes a phase.
 		if tree == "porttree":
-			rval = _validate_deps(mysettings, myroot, mydo, mydbapi)
-			if rval != os.EX_OK:
-				return rval
+
+			if not returnpid:
+				# Validate dependency metadata here to ensure that ebuilds with
+				# invalid data are never installed via the ebuild command. Skip
+				# this when returnpid is True (assume the caller handled it).
+				rval = _validate_deps(mysettings, myroot, mydo, mydbapi)
+				if rval != os.EX_OK:
+					return rval
 
 		else:
 			# FEATURES=noauto only makes sense for porttree, and we don't want
@@ -761,11 +758,16 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 				return rval
 
 		if mydo == "unmerge":
+			if returnpid:
+				writemsg("!!! doebuild: %s\n" %
+					_("returnpid is not supported for phase '%s'\n" % mydo),
+					noiselevel=-1)
 			return unmerge(mysettings["CATEGORY"],
 				mysettings["PF"], myroot, mysettings, vartree=vartree)
 
 		phases_to_run = set()
-		if "noauto" in mysettings.features or \
+		if returnpid or \
+			"noauto" in mysettings.features or \
 			mydo not in actionmap_deps:
 			phases_to_run.add(mydo)
 		else:
@@ -1013,7 +1015,9 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 			if len(actionmap_deps.get(x, [])):
 				actionmap[x]["dep"] = ' '.join(actionmap_deps[x])
 
-		if mydo in actionmap:
+		regular_actionmap_phase = mydo in actionmap
+
+		if regular_actionmap_phase:
 			bintree = None
 			if mydo == "package":
 				# Make sure the package directory exists before executing
@@ -1037,6 +1041,9 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 				actionmap, mysettings, debug, logfile=logfile,
 				fd_pipes=fd_pipes, returnpid=returnpid)
 
+			if returnpid and isinstance(retval, list):
+				return retval
+
 			if retval == os.EX_OK:
 				if mydo == "package" and bintree is not None:
 					bintree.inject(mysettings.mycpv,
@@ -1048,7 +1055,15 @@ def doebuild(myebuild, mydo, _unused=DeprecationWarning, settings=None, debug=0,
 					except OSError:
 						pass
 
-		elif mydo=="qmerge":
+		elif returnpid:
+			writemsg("!!! doebuild: %s\n" %
+				_("returnpid is not supported for phase '%s'\n" % mydo),
+				noiselevel=-1)
+
+		if regular_actionmap_phase:
+			# handled above
+			pass
+		elif mydo == "qmerge":
 			# check to ensure install was run.  this *only* pops up when users
 			# forget it and are using ebuild
 			if not os.path.exists(
@@ -1492,12 +1507,6 @@ def spawn(mystring, mysettings, debug=0, free=0, droppriv=0, sesandbox=0, fakero
 def spawnebuild(mydo, actionmap, mysettings, debug, alwaysdep=0,
 	logfile=None, fd_pipes=None, returnpid=False):
 
-	if returnpid:
-		warnings.warn("portage.spawnebuild() called " + \
-			"with returnpid parameter enabled. This usage will " + \
-			"not be supported in the future.",
-			DeprecationWarning, stacklevel=2)
-
 	if not returnpid and \
 		(alwaysdep or "noauto" not in mysettings.features):
 		# process dependency first


             reply	other threads:[~2013-07-06  1:41 UTC|newest]

Thread overview: 191+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-06  1:41 Zac Medico [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-07-15 21:54 [gentoo-commits] proj/portage:master commit in: pym/portage/package/ebuild/ Zac Medico
2018-06-23  9:24 Ulrich Müller
2018-05-26  6:09 Zac Medico
2018-05-24 19:45 Zac Medico
2018-05-03 18:48 Zac Medico
2018-03-03 22:24 Zac Medico
2018-02-05 19:25 Michał Górny
2018-01-27 10:19 Michał Górny
2018-01-27 10:19 Michał Górny
2018-01-26 14:59 Michał Górny
2017-11-10  0:32 Zac Medico
2017-11-07 23:14 Michał Górny
2017-07-30  0:07 Zac Medico
2017-03-14 16:30 Michał Górny
2017-03-10  1:46 Zac Medico
2016-11-30  1:10 Zac Medico
2016-09-24  7:23 Zac Medico
2016-09-14 21:39 Zac Medico
2016-09-14 21:28 Zac Medico
2016-06-06 15:50 Zac Medico
2016-02-23 20:32 Zac Medico
2015-12-20 17:39 Michał Górny
2015-12-13 21:27 Zac Medico
2015-12-13 16:54 Zac Medico
2015-12-09 12:37 Arfrever Frehtes Taifersar Arahesis
2015-12-09  1:30 Zac Medico
2015-12-01 17:56 Arfrever Frehtes Taifersar Arahesis
2015-10-08  0:47 Brian Dolbec
2015-04-21 23:52 Zac Medico
2015-03-04 19:29 Zac Medico
2015-03-03 21:26 git@oystercatcher mirror+tproxy
2015-03-03 21:26 Zac Medico
2015-01-31 21:28 Michał Górny
2015-01-30 20:48 Brian Dolbec
2015-01-30 20:48 Brian Dolbec
2014-12-10 20:24 Arfrever Frehtes Taifersar Arahesis
2014-11-05 19:41 Zac Medico
2014-10-22 23:26 Zac Medico
2014-02-17 20:35 Sebastian Luther
2013-09-06 20:10 Zac Medico
2013-08-22  3:57 Zac Medico
2013-08-06 20:02 Zac Medico
2013-07-26 21:01 Zac Medico
2013-07-23 20:27 Zac Medico
2013-07-23 20:09 Arfrever Frehtes Taifersar Arahesis
2013-07-14 18:13 Zac Medico
2013-07-07 19:34 Zac Medico
2013-07-06 22:06 Zac Medico
2013-06-24 20:01 Arfrever Frehtes Taifersar Arahesis
2013-05-18 11:34 Zac Medico
2013-05-03  2:21 Zac Medico
2013-05-03  1:52 Zac Medico
2013-03-27 15:21 Zac Medico
2013-03-27  4:15 Zac Medico
2013-02-27  0:27 Zac Medico
2013-02-18  2:09 Mike Frysinger
2013-02-11 15:29 Zac Medico
2013-02-11  3:06 Zac Medico
2013-02-02  9:03 Zac Medico
2013-01-25 19:49 Zac Medico
2013-01-15 15:16 Zac Medico
2013-01-11  6:56 Zac Medico
2013-01-07  8:41 Zac Medico
2013-01-07  7:12 Zac Medico
2013-01-03 23:55 Zac Medico
2012-12-19 21:48 Zac Medico
2012-12-05 21:19 Zac Medico
2012-12-05 18:02 Zac Medico
2012-10-18  4:58 Zac Medico
2012-10-18  3:43 Zac Medico
2012-10-18  1:56 Zac Medico
2012-10-18  0:50 Zac Medico
2012-10-08 22:07 Zac Medico
2012-09-21 22:17 Zac Medico
2012-09-21 18:01 Zac Medico
2012-09-20  3:38 Zac Medico
2012-09-20  3:14 Zac Medico
2012-09-20  2:36 Zac Medico
2012-09-14  2:24 Zac Medico
2012-08-30 16:43 Zac Medico
2012-08-23 17:10 Zac Medico
2012-07-31 22:02 Zac Medico
2012-07-31 10:21 Zac Medico
2012-06-12  2:00 Zac Medico
2012-06-02  0:13 Zac Medico
2012-06-01 22:51 Zac Medico
2012-06-01 22:12 Zac Medico
2012-05-16 19:44 Zac Medico
2012-05-16  4:55 Zac Medico
2012-05-12  1:34 Zac Medico
2012-05-11 22:54 Zac Medico
2012-05-11 21:04 Zac Medico
2012-05-10 19:56 Arfrever Frehtes Taifersar Arahesis
2012-05-09 22:08 Zac Medico
2012-05-09  8:13 Zac Medico
2012-04-22 22:11 Zac Medico
2012-04-05 19:54 Zac Medico
2012-04-03 15:39 Zac Medico
2012-04-03  6:52 Zac Medico
2012-03-21 19:26 Zac Medico
2012-03-19 18:33 Zac Medico
2012-03-19 17:00 Zac Medico
2012-02-17 21:35 Arfrever Frehtes Taifersar Arahesis
2012-02-13 23:45 Zac Medico
2011-12-22 20:07 Zac Medico
2011-12-22 19:10 Zac Medico
2011-12-20  7:25 Zac Medico
2011-12-13 17:00 Zac Medico
2011-12-10 22:19 Zac Medico
2011-12-10 17:49 Zac Medico
2011-12-10 17:40 Zac Medico
2011-12-10  6:40 Zac Medico
2011-12-10  6:07 Zac Medico
2011-12-09 23:16 Zac Medico
2011-11-29 16:25 Zac Medico
2011-11-26  2:57 Zac Medico
2011-11-18 21:11 Zac Medico
2011-11-18  5:16 Zac Medico
2011-11-18  3:26 Zac Medico
2011-11-09  2:41 Zac Medico
2011-10-29  4:21 Zac Medico
2011-10-28 22:06 Zac Medico
2011-10-28  2:16 Zac Medico
2011-10-28  2:04 Zac Medico
2011-10-24 22:26 Zac Medico
2011-10-18  7:22 Zac Medico
2011-10-18  6:27 Zac Medico
2011-10-14  6:40 Zac Medico
2011-10-14  6:24 Zac Medico
2011-10-13 20:58 Zac Medico
2011-10-11 20:59 Zac Medico
2011-10-11 17:27 Zac Medico
2011-09-28 13:47 Zac Medico
2011-09-27  2:10 Zac Medico
2011-09-23  0:17 Zac Medico
2011-09-17  5:50 Zac Medico
2011-09-15  5:34 Zac Medico
2011-09-15  5:31 Zac Medico
2011-09-15  2:44 Zac Medico
2011-09-14 17:09 Zac Medico
2011-09-14 16:23 Zac Medico
2011-09-13  5:01 Zac Medico
2011-09-13  4:33 Zac Medico
2011-09-12  1:38 Zac Medico
2011-09-01  6:50 Zac Medico
2011-08-31  0:49 Zac Medico
2011-08-30 17:03 Zac Medico
2011-08-29 18:04 Arfrever Frehtes Taifersar Arahesis
2011-08-29  0:05 Zac Medico
2011-08-28 21:05 Zac Medico
2011-08-28 19:55 Arfrever Frehtes Taifersar Arahesis
2011-08-13 12:55 Zac Medico
2011-08-09  0:14 Zac Medico
2011-08-07  5:59 Zac Medico
2011-07-27  9:53 Zac Medico
2011-07-14 21:54 Zac Medico
2011-07-14  1:31 Zac Medico
2011-07-14  1:25 Zac Medico
2011-07-14  0:57 Zac Medico
2011-07-14  0:37 Zac Medico
2011-07-13 17:08 Zac Medico
2011-07-12 23:40 Zac Medico
2011-07-12 20:04 Zac Medico
2011-07-11 16:22 Zac Medico
2011-07-11 15:22 Zac Medico
2011-07-07 17:22 Zac Medico
2011-07-07  7:00 Zac Medico
2011-06-30  7:35 Zac Medico
2011-06-30  6:57 Zac Medico
2011-06-30  2:10 Zac Medico
2011-06-27  2:32 Zac Medico
2011-06-25  5:42 Zac Medico
2011-06-21  0:44 Zac Medico
2011-06-17 19:41 Zac Medico
2011-06-17 19:27 Zac Medico
2011-06-16 19:27 Zac Medico
2011-06-13 15:26 Zac Medico
2011-06-13 13:41 Zac Medico
2011-06-11  0:02 Arfrever Frehtes Taifersar Arahesis
2011-06-09 13:58 Zac Medico
2011-06-09 13:14 Zac Medico
2011-06-06 10:30 Zac Medico
2011-06-06 10:10 Zac Medico
2011-06-06  9:11 Zac Medico
2011-05-24  3:02 Zac Medico
2011-05-09 22:34 Zac Medico
2011-04-28 21:32 Zac Medico
2011-03-04 16:41 Zac Medico
2011-02-04 17:23 zmedico
2011-02-04 17:18 zmedico

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1373074861.1ac7623f580711d26a2b8e72547f2e6b5800b88e.zmedico@gentoo \
    --to=zmedico@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox