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-commits
Navigation:
Lists: gentoo-commits: < Prev By Thread Next > < Prev By Date Next >
Headers:
To: gentoo-commits@g.o
From: "Fabian Groffen (grobian)" <grobian@g.o>
Subject: portage r12807 - in main/branches/prefix: bin man pym/_emerge pym/portage pym/portage/cache
Date: Mon, 09 Mar 2009 19:51:12 +0000
Author: grobian
Date: 2009-03-09 19:51:11 +0000 (Mon, 09 Mar 2009)
New Revision: 12807

Modified:
   main/branches/prefix/bin/ebuild.sh
   main/branches/prefix/bin/misc-functions.sh
   main/branches/prefix/bin/repoman
   main/branches/prefix/man/repoman.1
   main/branches/prefix/pym/_emerge/__init__.py
   main/branches/prefix/pym/portage/__init__.py
   main/branches/prefix/pym/portage/cache/metadata.py
Log:
   Merged from trunk -r12790:12806

   | 12791    | Also support + character in eclass names.                   |
   | zmedico  |                                                             |
   
   | 12792    | Fix typo from previous commit.                              |
   | zmedico  |                                                             |
   
   | 12793    | for pointers cast to 32bit ints, we always want to abort on |
   | SpankMan | 64bit systems, not just when FEATURES=stricter              |
   
   | 12794    | Generate a QA Notice when EXPORT_FUNCTIONS is called before |
   | zmedico  | inherit, since it's incompatible with <=portage-2.1.6.7.    |
   
   | 12795    | Replace things like [[ $PORTAGE_BUILDDIR/.prepared -nt      |
   | zmedico  | $WORKDIR ]] with simply [[ -e $PORTAGE_BUILDDIR/.prepared   |
   |          | ]] since the timestamp of $WORKDIR is practically always    |
   |          | newer due to the other hidden files that are created there  |
   |          | as each phase is executed. Thanks to Alfredo Tupone         |
   |          | <tupone@g.o> for reporting.                                 |
   
   | 12796    | Make the --digest warning message show for FEATURES=digest. |
   | zmedico  |                                                             |
   
   | 12797    | Bug #261675 - When doebuild() is called by emerge, don't    |
   | zmedico  | call digestgen() for FEATURES=digest because it's redundant |
   |          | and it can cause interference with parallel-fetch and       |
   |          | parallel builds.                                            |
   
   | 12798    | Bug #261675 - Also don't call digestgen() from              |
   | zmedico  | parallel-fetch processes.                                   |
   
   | 12799    | Bug #261675 - Generate manifests in advance when            |
   | zmedico  | FEATURES=digest is enabled.                                 |
   
   | 12800    | Never call digestgen() inside doebuild() which only 'fetch' |
   | zmedico  | has been requested since it's not needed in this case.      |
   
   | 12801    | Reorganize code for --digests and FEATURES=digest.          |
   | zmedico  |                                                             |
   
   | 12802    | Make manifest mode with --force option cause existing       |
   | zmedico  | digests to be replaced for any files that exist in          |
   |          | ${DISTDIR}. This provides an alternative to ebuild --force  |
   |          | manifest for updating existing distfiles digests. Digests   |
   |          | are assumed to be corect for files that do not exist in     |
   |          | ${DISTDIR} since the user could simply remove the whole     |
   |          | Manifest if they wanted to regenerate digests for all files |
   |          | (and it's safer to regenerate as few as possible because    |
   |          | it's less probably that a valid digest will get replaced by |
   |          | an invalid one).                                            |
   
   | 12803    | Fix _setitem() to account for the change to                 |
   | zmedico  | serialize_eclasses = False.                                 |
   
   | 12804    | Inside dyn_unpack(), only call pre/post phase hooks when    |
   | zmedico  | src_unpack is called (when .unpacked does not already       |
   |          | exist).                                                     |
   
   | 12805    | Use the ebuild_phase helper function to calls phase hooks   |
   | zmedico  | and fix broken trap calls that try to unset multiple signal |
   |          | handlers at once without passing - as the first argument.   |
   
   | 12806    | When generating variable names to hold EXPORT_FUNCTIONS     |
   | zmedico  | argument in, use $ECLASS_DEPTH as a unique id since it's a  |
   |          | lot simpler then encoding the eclass name in the variable   |
   |          | name.                                                       |


Modified: main/branches/prefix/bin/ebuild.sh
===================================================================
--- main/branches/prefix/bin/ebuild.sh	2009-03-09 10:32:13 UTC (rev 12806)
+++ main/branches/prefix/bin/ebuild.sh	2009-03-09 19:51:11 UTC (rev 12807)
@@ -649,7 +649,6 @@
 }
 
 dyn_unpack() {
-	[ "$(type -t pre_src_unpack)" == "function" ] && qa_call pre_src_unpack
 	local newstuff="no"
 	if [ -e "${WORKDIR}" ]; then
 		local x
@@ -682,7 +681,6 @@
 	if [ -e "${WORKDIR}" ]; then
 		if [ "$newstuff" == "no" ]; then
 			vecho ">>> WORKDIR is up-to-date, keeping..."
-			[ "$(type -t post_src_unpack)" == "function" ] && qa_call post_src_unpack
 			return 0
 		fi
 	fi
@@ -691,13 +689,12 @@
 		install -m${PORTAGE_WORKDIR_MODE:-0700} -d "${WORKDIR}" || die "Failed to create dir '${WORKDIR}'"
 	fi
 	cd "${WORKDIR}" || die "Directory change failed: \`cd '${WORKDIR}'\`"
+	ebuild_phase pre_src_unpack
 	vecho ">>> Unpacking source..."
 	ebuild_phase src_unpack
 	touch "${PORTAGE_BUILDDIR}/.unpacked" || die "IO Failure -- Failed 'touch .unpacked' in ${PORTAGE_BUILDDIR}"
 	vecho ">>> Source unpacked in ${WORKDIR}"
-	cd "${PORTAGE_BUILDDIR}"
-
-	[ "$(type -t post_src_unpack)" == "function" ] && qa_call post_src_unpack
+	ebuild_phase post_src_unpack
 }
 
 dyn_clean() {
@@ -824,7 +821,7 @@
 	echo
 	eval ${3}
 	#unset signal handler
-	trap SIGINT SIGQUIT
+	trap - SIGINT SIGQUIT
 }
 
 abort_prepare() {
@@ -859,7 +856,7 @@
 
 dyn_prepare() {
 
-	if [[ $PORTAGE_BUILDDIR/.prepared -nt $WORKDIR ]] ; then
+	if [[ -e $PORTAGE_BUILDDIR/.prepared ]] ; then
 		vecho ">>> It appears that '$PF' is already prepared; skipping."
 		vecho ">>> Remove '$PORTAGE_BUILDDIR/.prepared' to force prepare."
 		return 0
@@ -882,12 +879,12 @@
 	vecho ">>> Source prepared."
 	ebuild_phase post_src_prepare
 
-	trap SIGINT SIGQUIT
+	trap - SIGINT SIGQUIT
 }
 
 dyn_configure() {
 
-	if [[ $PORTAGE_BUILDDIR/.configured -nt $WORKDIR ]] ; then
+	if [[ -e $PORTAGE_BUILDDIR/.configured ]] ; then
 		vecho ">>> It appears that '$PF' is already configured; skipping."
 		vecho ">>> Remove '$PORTAGE_BUILDDIR/.configured' to force configuration."
 		return 0
@@ -895,23 +892,21 @@
 
 	trap abort_configure SIGINT SIGQUIT
 
-	[[ $(type -t pre_src_configure) = function ]] && \
-		qa_call pre_src_configure
+	ebuild_phase pre_src_configure
 
 	vecho ">>> Configuring source in $srcdir ..."
 	ebuild_phase src_configure
 	touch "$PORTAGE_BUILDDIR"/.configured
 	vecho ">>> Source configured."
 
-	[[ $(type -t post_src_configure) = function ]] && \
-		qa_call post_src_configure
+	ebuild_phase post_src_configure
 
-	trap SIGINT SIGQUIT
+	trap - SIGINT SIGQUIT
 }
 
 dyn_compile() {
 
-	if [[ $PORTAGE_BUILDDIR/.compiled -nt $WORKDIR ]] ; then
+	if [[ -e $PORTAGE_BUILDDIR/.compiled ]] ; then
 		vecho ">>> It appears that '${PF}' is already compiled; skipping."
 		vecho ">>> Remove '$PORTAGE_BUILDDIR/.compiled' to force compilation."
 		return 0
@@ -919,17 +914,16 @@
 
 	trap abort_compile SIGINT SIGQUIT
 
-	[[ $(type -t pre_src_compile) = function ]] && \
-		qa_call pre_src_compile
+	ebuild_phase pre_src_compile
 
 	vecho ">>> Compiling source in ${srcdir} ..."
 	ebuild_phase src_compile
 	touch "$PORTAGE_BUILDDIR"/.compiled
 	vecho ">>> Source compiled."
 
-	[ "$(type -t post_src_compile)" == "function" ] && qa_call post_src_compile
+	ebuild_phase post_src_compile
 
-	trap SIGINT SIGQUIT
+	trap - SIGINT SIGQUIT
 }
 
 dyn_test() {
@@ -939,10 +933,9 @@
 		# like it's supposed to here.
 		! hasq test ${USE} && export USE="${USE} test"
 	fi
-	[ "$(type -t pre_src_test)" == "function" ] && qa_call pre_src_test
-	if [ "${PORTAGE_BUILDDIR}/.tested" -nt "${WORKDIR}" ]; then
+	ebuild_phase pre_src_test
+	if [[ -e $PORTAGE_BUILDDIR/.tested ]] ; then
 		vecho ">>> It appears that ${PN} has already been tested; skipping."
-		[ "$(type -t post_src_test)" == "function" ] && qa_call post_src_test
 		return
 	fi
 	trap "abort_test" SIGINT SIGQUIT
@@ -962,23 +955,23 @@
 		SANDBOX_PREDICT="${SANDBOX_PREDICT%:/}"
 	fi
 
-	cd "${PORTAGE_BUILDDIR}"
-	touch .tested || die "Failed to 'touch .tested' in ${PORTAGE_BUILDDIR}"
-	[ "$(type -t post_src_test)" == "function" ] && qa_call post_src_test
-	trap SIGINT SIGQUIT
+	touch "$PORTAGE_BUILDDIR/.tested" || \
+		die "Failed to 'touch .tested' in $PORTAGE_BUILDDIR"
+	ebuild_phase post_src_test
+	trap - SIGINT SIGQUIT
 }
 
 dyn_install() {
 	[ -z "$PORTAGE_BUILDDIR" ] && die "${FUNCNAME}: PORTAGE_BUILDDIR is unset"
 	if hasq noauto $FEATURES ; then
 		rm -f "${PORTAGE_BUILDDIR}/.installed"
-	elif [[ ${PORTAGE_BUILDDIR}/.installed -nt ${WORKDIR} ]] ; then
+	elif [[ -e $PORTAGE_BUILDDIR/.installed ]] ; then
 		vecho ">>> It appears that '${PF}' is already installed; skipping."
 		vecho ">>> Remove '${PORTAGE_BUILDDIR}/.installed' to force install."
 		return 0
 	fi
 	trap "abort_install" SIGINT SIGQUIT
-	[ "$(type -t pre_src_install)" == "function" ] && qa_call pre_src_install
+	ebuild_phase pre_src_install
 	rm -rf "${PORTAGE_BUILDDIR}/image"
 	mkdir "${PORTAGE_BUILDDIR}/image"
 	if [ -d "${S}" ]; then
@@ -1007,8 +1000,7 @@
 	touch "${PORTAGE_BUILDDIR}/.installed"
 	vecho ">>> Completed installing ${PF} into ${ED}"
 	vecho
-	cd ${PORTAGE_BUILDDIR}
-	[ "$(type -t post_src_install)" == "function" ] && qa_call post_src_install
+	ebuild_phase post_src_install
 
 	cd "${PORTAGE_BUILDDIR}"/build-info
 	set -f
@@ -1041,7 +1033,7 @@
 	then
 		touch DEBUGBUILD
 	fi
-	trap SIGINT SIGQUIT
+	trap - SIGINT SIGQUIT
 }
 
 dyn_preinst() {
@@ -1166,6 +1158,13 @@
 		debug-print "*** Multiple Inheritence (Level: ${ECLASS_DEPTH})"
 	fi
 
+	if [[ -n $ECLASS && -n ${!__export_funcs_var} ]] ; then
+		echo "QA Notice: EXPORT_FUNCTIONS is called before inherit in" \
+			"$ECLASS.eclass. For compatibility with <=portage-2.1.6.7," \
+			"only call EXPORT_FUNCTIONS after inherit(s)." \
+			| fmt -w 75 | while read ; do eqawarn "$REPLY" ; done
+	fi
+
 	local location
 	local olocation
 	local x
@@ -1183,11 +1182,7 @@
 		olocation=""
 
 		export ECLASS="$1"
-		__export_funcs_var=__export_functions_$ECLASS
-		while [[ $__export_funcs_var =~ [-.] ]] ; do
-			__export_funcs_var=${__export_funcs_var/-/__dash__}
-			__export_funcs_var=${__export_funcs_var/./__dot__}
-		done
+		__export_funcs_var=__export_functions_$ECLASS_DEPTH
 		unset $__export_funcs_var
 
 		if [ "${EBUILD_PHASE}" != "depend" ] && \

Modified: main/branches/prefix/bin/misc-functions.sh
===================================================================
--- main/branches/prefix/bin/misc-functions.sh	2009-03-09 10:32:13 UTC (rev 12806)
+++ main/branches/prefix/bin/misc-functions.sh	2009-03-09 19:51:11 UTC (rev 12807)
@@ -536,14 +536,18 @@
 			fi
 
 		fi
-		if [[ $abort = yes ]] && [[ $gentoo_bug != yes ]] ; then
-			echo "Please do not file a Gentoo bug and instead" \
-			"report the above QA issues directly to the upstream" \
-			"developers of this software." | fmt -w 70 | \
-			while read line ; do eqawarn "${line}" ; done
-			eqawarn "Homepage: ${HOMEPAGE}"
+		if [[ ${abort} == "yes" ]] ; then
+			if [[ ${gentoo_bug} == "yes" ]] ; then
+				die "poor code kills airplanes"
+			else
+				echo "Please do not file a Gentoo bug and instead" \
+				"report the above QA issues directly to the upstream" \
+				"developers of this software." | fmt -w 70 | \
+				while read line ; do eqawarn "${line}" ; done
+				eqawarn "Homepage: ${HOMEPAGE}"
+				hasq stricter ${FEATURES} && die "poor code kills airplanes"
+			fi
 		fi
-		[[ ${abort} == "yes" ]] && hasq stricter ${FEATURES} && die "poor code kills airplanes"
 	fi
 
 	# Compiled python objects do not belong in /usr/share (FHS violation)

Modified: main/branches/prefix/bin/repoman
===================================================================
--- main/branches/prefix/bin/repoman	2009-03-09 10:32:13 UTC (rev 12806)
+++ main/branches/prefix/bin/repoman	2009-03-09 19:51:11 UTC (rev 12807)
@@ -799,11 +799,50 @@
 
 	if options.mode == "manifest" or \
 	  options.mode in ('commit', 'fix') and not options.pretend:
+		auto_assumed = set()
+		fetchlist_dict = portage.FetchlistDict(checkdir,
+			repoman_settings, portdb)
+		if options.mode == 'manifest' and options.force:
+			portage._doebuild_manifest_exempt_depend += 1
+			try:
+				distdir = repoman_settings['DISTDIR']
+				mf = portage.manifest.Manifest(checkdir, distdir,
+					fetchlist_dict=fetchlist_dict)
+				mf.create(requiredDistfiles=None,
+					assumeDistHashesAlways=True)
+				for distfiles in fetchlist_dict.itervalues():
+					for distfile in distfiles:
+						if os.path.isfile(os.path.join(distdir, distfile)):
+							mf.fhashdict['DIST'].pop(distfile, None)
+						else:
+							auto_assumed.add(distfile)
+				mf.write()
+			finally:
+				portage._doebuild_manifest_exempt_depend -= 1
+
 		repoman_settings["O"] = checkdir
 		if not portage.digestgen([], repoman_settings, myportdb=portdb):
 			print "Unable to generate manifest."
 			dofail = 1
 		if options.mode == "manifest":
+			if not dofail and options.force and auto_assumed and \
+				'assume-digests' in repoman_settings.features:
+				# Show which digests were assumed despite the --force option
+				# being given. This output will already have been shown by
+				# digestgen() if assume-digests is not enabled, so only show
+				# it here if assume-digests is enabled.
+				pkgs = list(fetchlist_dict)
+				pkgs.sort()
+				portage.writemsg_stdout("  digest.assumed" + \
+					portage.output.colorize("WARN",
+					str(len(auto_assumed)).rjust(18)) + "\n")
+				for cpv in pkgs:
+					fetchmap = fetchlist_dict[cpv]
+					pf = portage.catsplit(cpv)[1]
+					for distfile in sorted(fetchmap):
+						if distfile in auto_assumed:
+							portage.writemsg_stdout(
+								"   %s::%s\n" % (pf, distfile))
 			continue
 		elif dofail:
 			sys.exit(1)

Modified: main/branches/prefix/man/repoman.1
===================================================================
--- main/branches/prefix/man/repoman.1	2009-03-09 10:32:13 UTC (rev 12806)
+++ main/branches/prefix/man/repoman.1	2009-03-09 19:51:11 UTC (rev 12807)
@@ -18,6 +18,14 @@
 causes the most time consuming QA checks to be skipped. The commit message will
 include an indication that this option has been enabled, together with the
 usual portage version stamp.
+
+When used together with \fBmanifest\fR mode, \fB--force\fR causes existing
+digests to be replaced for any files that exist in ${DISTDIR}.
+Existing digests are assumed to be correct for files that would otherwise
+have to be downloaded in order to recompute digests. \fBWARNING:\fR When
+replacing existing digests, it is the user's responsibility to ensure that
+files contained in ${DISTDIR} have the correct identities. Especially beware
+of partially downloaded files.
 .TP
 \fB-q\fR, \fB--quiet\fR
 Be less verbose about extraneous info
@@ -69,7 +77,8 @@
 Fix simple QA issues (stray digests, missing digests)
 .TP
 .B manifest
-Generate a Manifest (fetches files if necessary)
+Generate a Manifest (fetches distfiles if necessary). See the \fB\-\-force\fR
+option if you would like to replace existing distfiles digests.
 .TP
 .B commit
 Scan directory tree for QA issues; if OK, commit via cvs

Modified: main/branches/prefix/pym/_emerge/__init__.py
===================================================================
--- main/branches/prefix/pym/_emerge/__init__.py	2009-03-09 10:32:13 UTC (rev 12806)
+++ main/branches/prefix/pym/_emerge/__init__.py	2009-03-09 19:51:11 UTC (rev 12807)
@@ -10470,6 +10470,51 @@
 
 		return ebuild_phase.returncode
 
+	def _generate_digests(self):
+		"""
+		Generate digests if necessary for --digests or FEATURES=digest.
+		In order to avoid interference, this must done before parallel
+		tasks are started.
+		"""
+
+		if '--fetchonly' in self.myopts:
+			return os.EX_OK
+
+		digest = '--digest' in self.myopts
+		if not digest:
+			for pkgsettings in self.pkgsettings.itervalues():
+				if 'digest' in pkgsettings.features:
+					digest = True
+					break
+
+		if not digest:
+			return os.EX_OK
+
+		for x in self._mergelist:
+			if not isinstance(x, Package) or \
+				x.type_name != 'ebuild' or \
+				x.operation != 'merge':
+				continue
+			pkgsettings = self.pkgsettings[x.root]
+			if '--digest' not in self.myopts and \
+				'digest' not in pkgsettings.features:
+				continue
+			portdb = x.root_config.trees['porttree'].dbapi
+			ebuild_path = portdb.findname(x.cpv)
+			if not ebuild_path:
+				writemsg_level(
+					"!!! Could not locate ebuild for '%s'.\n" \
+					% x.cpv, level=logging.ERROR, noiselevel=-1)
+				return 1
+			pkgsettings['O'] = os.path.dirname(ebuild_path)
+			if not portage.digestgen([], pkgsettings, myportdb=portdb):
+				writemsg_level(
+					"!!! Unable to generate manifest for '%s'.\n" \
+					% x.cpv, level=logging.ERROR, noiselevel=-1)
+				return 1
+
+		return os.EX_OK
+
 	def _check_manifests(self):
 		# Verify all the manifests now so that the user is notified of failure
 		# as soon as possible.
@@ -10678,6 +10723,10 @@
 			self.pkgsettings[root] = portage.config(
 				clone=root_config.settings)
 
+		rval = self._generate_digests()
+		if rval != os.EX_OK:
+			return rval
+
 		rval = self._check_manifests()
 		if rval != os.EX_OK:
 			return rval
@@ -14350,8 +14399,13 @@
 	if pretend or fetchonly:
 		# make the mtimedb readonly
 		mtimedb.filename = None
-	if "--digest" in myopts:
-		msg = "The --digest option can prevent corruption from being" + \
+	if '--digest' in myopts or 'digest' in settings.features:
+		if '--digest' in myopts:
+			msg = "The --digest option"
+		else:
+			msg = "The FEATURES=digest setting"
+
+		msg += " can prevent corruption from being" + \
 			" noticed. The `repoman manifest` command is the preferred" + \
 			" way to generate manifests and it is capable of doing an" + \
 			" entire repository or category at once."
@@ -14657,20 +14711,6 @@
 			# Convert Atom instances to plain str.
 			mtimedb["resume"]["favorites"] = [str(x) for x in favorites]
 
-			if ("--digest" in myopts) and not ("--fetchonly" in myopts or "--fetch-all-uri" in myopts):
-				for pkgline in mydepgraph.altlist():
-					if pkgline[0]=="ebuild" and pkgline[3]=="merge":
-						y = trees[pkgline[1]]["porttree"].dbapi.findname(pkgline[2])
-						tmpsettings = portage.config(clone=settings)
-						edebug = 0
-						if settings.get("PORTAGE_DEBUG", "") == "1":
-							edebug = 1
-						retval = portage.doebuild(
-							y, "digest", settings["ROOT"], tmpsettings, edebug,
-							("--pretend" in myopts),
-							mydbapi=trees[pkgline[1]]["porttree"].dbapi,
-							tree="porttree")
-
 			pkglist = mydepgraph.altlist()
 			mydepgraph.saveNomergeFavorites()
 			mydepgraph.break_refs(pkglist)

Modified: main/branches/prefix/pym/portage/__init__.py
===================================================================
--- main/branches/prefix/pym/portage/__init__.py	2009-03-09 10:32:13 UTC (rev 12806)
+++ main/branches/prefix/pym/portage/__init__.py	2009-03-09 19:51:11 UTC (rev 12807)
@@ -5996,6 +5996,7 @@
 		mycpv = "/".join((mysettings["CATEGORY"], mysettings["PF"]))
 
 		emerge_skip_distfiles = returnpid
+		emerge_skip_digest = returnpid
 		# Only try and fetch the files if we are going to need them ...
 		# otherwise, if user has FEATURES=noauto and they run `ebuild clean
 		# unpack compile install`, we will try and fetch 4 times :/
@@ -6052,7 +6053,11 @@
 			elif mydo == "digest":
 				return not digestgen(aalist, mysettings, overwrite=1,
 					myportdb=mydbapi)
-			elif "digest" in mysettings.features:
+			elif mydo != 'fetch' and not emerge_skip_digest and \
+				"digest" in mysettings.features:
+				# Don't do this when called by emerge or when called just
+				# for fetch (especially parallel-fetch) since it's not needed
+				# and it can interfere with parallel tasks.
 				digestgen(aalist, mysettings, overwrite=0, myportdb=mydbapi)
 		except portage.exception.PermissionDenied, e:
 			writemsg("!!! Permission Denied: %s\n" % (e,), noiselevel=-1)

Modified: main/branches/prefix/pym/portage/cache/metadata.py
===================================================================
--- main/branches/prefix/pym/portage/cache/metadata.py	2009-03-09 10:32:13 UTC (rev 12806)
+++ main/branches/prefix/pym/portage/cache/metadata.py	2009-03-09 19:51:11 UTC (rev 12807)
@@ -71,8 +71,7 @@
 	def _setitem(self, cpv, values):
 		if "_eclasses_" in values:
 			values = ProtectedDict(values)
-			values["INHERITED"] = ' '.join(sorted(
-				reconstruct_eclasses(cpv, values["_eclasses_"])))
+			values["INHERITED"] = ' '.join(sorted(values["_eclasses_"]))
 
 		s = cpv.rfind("/")
 		fp = os.path.join(self.location,cpv[:s],



Navigation:
Lists: gentoo-commits: < Prev By Thread Next > < Prev By Date Next >
Previous by thread:
devmanual r143 - in trunk: ebuild-writing/functions/src_compile ebuild-writing/functions/src_compile/configuring ebuild-writing/using-eclasses general-concepts/autotools general-concepts/use-flags quickstart
Next by thread:
gentoo-x86 commit in sci-biology/mummer: mummer-3.21.ebuild ChangeLog
Previous by date:
devmanual r143 - in trunk: ebuild-writing/functions/src_compile ebuild-writing/functions/src_compile/configuring ebuild-writing/using-eclasses general-concepts/autotools general-concepts/use-flags quickstart
Next by date:
gentoo commit in xml/htdocs/doc/es: bugzilla-howto.xml


Updated Dec 18, 2011

Summary: Archive of the gentoo-commits mailing list.

Donate to support our development efforts.

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