Gentoo Logo
Gentoo Spaceship




Note: Due to technical difficulties, the Archives are currently not up to date. GMANE provides an alternative service for most mailing lists.
c.f. bug 424647
List Archive: gentoo-portage-dev
Navigation:
Lists: gentoo-portage-dev: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-portage-dev@g.o
From: Brian Harring <ferringb@g.o>
Subject: PATCH: parallel-fetch
Date: Tue, 15 Nov 2005 02:00:56 -0600
Yo.

Continuing the pillaging of ebd, attached is an integration of 
parallel-fetch.

The modification is pretty straight forward offhand; the notable 
difference this time around is rather then extending portage_exec to 
have the capability to 'spawn' python funcs (something I always found 
ugly), this handles the fork itself.

Debatable on that one, so feedback welcome.
~harring
Index: bin/emerge
===================================================================
--- bin/emerge	(revision 2309)
+++ bin/emerge	(working copy)
@@ -1821,6 +1824,42 @@
 
 		self.pkgsettings["FEATURES"]=string.join(myfeat)
 
+		if "parallel-fetch" in myfeat and not ("--ask" in myopts or "--pretend" in myopts or "--fetchonly" in myopts):
+			if "distlocks" not in myfeat:
+				print red("!!!")
+				print red("!!!")+" parallel-fetching requires the distlocks feature enabled"
+				print red("!!!")+" you have it disabled, thus parallel-fetching is being disabled"
+				print red("!!!")
+			elif len(mymergelist) > 1:
+				print ">>> parallel-fetching is in the hizzay"
+				pid = os.fork()
+				if not pid:
+					sys.stdin.close()
+					sys.stdout.close()
+					sys.stderr.close()
+					sys.stdout = open("/dev/null","w")
+					sys.stderr = open("/dev/null","w")
+					os.dup2(sys.stdout.fileno(), 1)
+					os.dup2(sys.stdout.fileno(), 2)
+					for x in ("autoaddcvs", "cvs"):
+						try:	myfeat.remove(x)
+						except ValueError: pass
+					self.pkgsettings["FEATURES"] = " ".join(myfeat)
+					print "child"
+					ret = 0
+					for x in mymergelist:
+						if x[0] != "ebuild":
+							continue
+						try:
+							ret = portage.doebuild(portage.portdb.findname(x[2]), "fetch", x[1], self.pkgsettings,
+								cleanup=0, fetchonly=True, tree="porttree")
+						except SystemExit:
+							raise
+						except Exception:
+							ret = 1
+					sys.exit(0)
+				portage.portage_exec.spawned_pids.append(pid)
+
 		mergecount=0
 		for x in mymergelist:
 			mergecount+=1
Attachment:
pgpfcbTHFC85q.pgp (PGP signature)
Replies:
Re: PATCH: parallel-fetch
-- Zac Medico
Navigation:
Lists: gentoo-portage-dev: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
confcache
Next by thread:
Re: PATCH: parallel-fetch
Previous by date:
Re: confcache
Next by date:
Making pax-utils a depend


Updated Jun 17, 2009

Summary: Archive of the gentoo-portage-dev mailing list.

Donate to support our development efforts.

Copyright 2001-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.