public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Fabian Groffen" <grobian@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:prefix commit in: /
Date: Mon, 22 Oct 2012 17:25:11 +0000 (UTC)	[thread overview]
Message-ID: <1350926607.79403078f737a0d836394b3ebe37fe9435c56ae6.grobian@gentoo> (raw)

commit:     79403078f737a0d836394b3ebe37fe9435c56ae6
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 22 17:23:27 2012 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Mon Oct 22 17:23:27 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=79403078

Merge remote-tracking branch 'overlays-gentoo-org/master' into prefix

Conflicts:
	cnf/make.globals
	pym/_emerge/main.py
	pym/portage/dbapi/vartree.py
	pym/portage/getbinpkg.py


 bin/eapi.sh                                        |   20 +
 bin/ebuild                                         |    2 +-
 bin/ebuild.sh                                      |   20 +-
 bin/egencache                                      |  169 ++++-
 bin/emerge                                         |   97 ++--
 bin/glsa-check                                     |    2 +-
 bin/misc-functions.sh                              |   38 +-
 bin/phase-helpers.sh                               |  181 +++++-
 bin/portageq                                       |  116 +++-
 bin/repoman                                        |   75 ++-
 bin/save-ebuild-env.sh                             |    9 +-
 cnf/make.globals                                   |    3 -
 doc/package/ebuild/eapi/5-progress.docbook         |   30 +
 man/ebuild.5                                       |    7 +-
 man/egencache.1                                    |   21 +
 man/emerge.1                                       |    7 +-
 man/make.conf.5                                    |   16 +-
 man/portage.5                                      |    4 +-
 man/repoman.1                                      |    2 +-
 pym/_emerge/AbstractEbuildProcess.py               |   13 +-
 pym/_emerge/AbstractPollTask.py                    |    2 +-
 pym/_emerge/AsynchronousLock.py                    |    8 +-
 pym/_emerge/CompositeTask.py                       |    4 +
 pym/_emerge/EbuildFetcher.py                       |   53 +-
 pym/_emerge/EbuildMetadataPhase.py                 |    2 +-
 pym/_emerge/FifoIpcDaemon.py                       |   10 +-
 pym/_emerge/MergeListItem.py                       |    6 +-
 pym/_emerge/MetadataRegen.py                       |   64 +--
 pym/_emerge/PackageMerge.py                        |    7 +-
 pym/_emerge/PipeReader.py                          |   10 +-
 pym/_emerge/PollScheduler.py                       |  127 +---
 pym/_emerge/QueueScheduler.py                      |  105 ---
 pym/_emerge/Scheduler.py                           |   84 ++-
 pym/_emerge/SpawnProcess.py                        |  165 +----
 pym/_emerge/SubProcess.py                          |    2 +-
 pym/_emerge/TaskScheduler.py                       |   26 -
 pym/_emerge/actions.py                             |  818 ++++++++++++++++++--
 pym/_emerge/chk_updated_cfg_files.py               |   42 +
 pym/_emerge/create_world_atom.py                   |   25 +-
 pym/_emerge/depgraph.py                            |   46 +-
 pym/_emerge/main.py                                |  800 +------------------
 pym/_emerge/post_emerge.py                         |  165 ++++
 pym/_emerge/resolver/output.py                     |  121 ++-
 pym/_emerge/resolver/output_helpers.py             |    4 +-
 pym/portage/__init__.py                            |   13 +-
 pym/portage/_sets/dbapi.py                         |   25 +-
 pym/portage/_sets/files.py                         |    4 +-
 pym/portage/_sets/libs.py                          |   10 +-
 pym/portage/_sets/security.py                      |    4 +-
 pym/portage/cache/mappings.py                      |    6 +-
 pym/portage/dbapi/_MergeProcess.py                 |  183 +++---
 pym/portage/dbapi/bintree.py                       |   76 +--
 pym/portage/dbapi/porttree.py                      |   23 +-
 pym/portage/dbapi/vartree.py                       |   49 +-
 pym/portage/dep/__init__.py                        |   25 +-
 pym/portage/emaint/modules/logs/__init__.py        |    2 +-
 pym/portage/emaint/modules/move/move.py            |   18 +-
 pym/portage/getbinpkg.py                           |   40 +
 pym/portage/glsa.py                                |    9 +-
 pym/portage/manifest.py                            |   10 +-
 .../package/ebuild/_config/LocationsManager.py     |    6 +-
 pym/portage/package/ebuild/_config/MaskManager.py  |   31 +-
 .../package/ebuild/_config/special_env_vars.py     |    2 +-
 pym/portage/package/ebuild/_ipc/QueryCommand.py    |   86 ++-
 .../ebuild/_parallel_manifest/ManifestProcess.py   |   43 +
 .../ebuild/_parallel_manifest/ManifestScheduler.py |   92 +++
 .../ebuild/_parallel_manifest/ManifestTask.py      |  180 +++++
 .../ebuild/_parallel_manifest}/__init__.py         |    0
 pym/portage/package/ebuild/_spawn_nofetch.py       |    8 +-
 pym/portage/package/ebuild/config.py               |    4 +-
 pym/portage/package/ebuild/doebuild.py             |   21 +-
 pym/portage/package/ebuild/fetch.py                |    5 +-
 pym/portage/package/ebuild/getmaskingreason.py     |   20 +-
 pym/portage/process.py                             |   42 +-
 pym/portage/proxy/lazyimport.py                    |    4 +-
 pym/portage/repository/config.py                   |    8 +-
 pym/portage/tests/dep/testAtom.py                  |    6 +-
 pym/portage/tests/dep/test_best_match_to_list.py   |    6 +-
 pym/portage/tests/ebuild/test_doebuild_spawn.py    |    7 +-
 pym/portage/tests/ebuild/test_ipc_daemon.py        |   74 ++-
 pym/portage/tests/ebuild/test_spawn.py             |    5 +-
 .../test_lazy_import_portage_baseline.py           |    4 +-
 pym/portage/tests/locks/test_asynchronous_lock.py  |   10 +-
 pym/portage/tests/process/test_PopenProcess.py     |   88 +++
 pym/portage/tests/process/test_poll.py             |   17 +-
 pym/portage/util/_async/AsyncScheduler.py          |  102 +++
 pym/portage/util/_async/ForkProcess.py             |   63 ++
 pym/portage/util/_async/PipeLogger.py              |  146 ++++
 pym/portage/util/_async/PopenProcess.py            |   33 +
 pym/portage/util/_async/SchedulerInterface.py      |   86 ++
 pym/portage/util/_async/TaskScheduler.py           |   20 +
 .../{tests/update => util/_async}/__init__.py      |    0
 .../util/_dyn_libs/display_preserved_libs.py       |   79 ++
 pym/portage/util/_info_files.py                    |  138 ++++
 pym/repoman/checks.py                              |   25 +-
 runtests.sh                                        |    2 +-
 96 files changed, 3575 insertions(+), 1913 deletions(-)

diff --cc bin/misc-functions.sh
index 3b2c309,f3b0cc0..6d9d1e4
mode 100644,100755..100644
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@@ -834,10 -780,11 +834,11 @@@ install_qa_check_misc() 
  	rm -f "${ED}"/usr/share/info/dir{,.gz,.bz2} || die "rm failed!"
  
  	if has multilib-strict ${FEATURES} && \
 -	   [[ -x /usr/bin/file && -x /usr/bin/find ]] && \
 +	   [[ -x ${EPREFIX}/usr/bin/file && -x ${EPREFIX}/usr/bin/find ]] && \
  	   [[ -n ${MULTILIB_STRICT_DIRS} && -n ${MULTILIB_STRICT_DENY} ]]
  	then
- 		local abort=no dir file firstrun=yes
+ 		rm -f "${T}/multilib-strict.log"
+ 		local abort=no dir file
  		MULTILIB_STRICT_EXEMPT=$(echo ${MULTILIB_STRICT_EXEMPT} | sed -e 's:\([(|)]\):\\\1:g')
  		for dir in ${MULTILIB_STRICT_DIRS} ; do
  			[[ -d ${ED}/${dir} ]] || continue
diff --cc cnf/make.globals
index 53c4bb6,e53f186..e61d3dd
--- a/cnf/make.globals
+++ b/cnf/make.globals
@@@ -66,15 -66,6 +66,12 @@@ FEATURES="assume-digests binpkg-log
  COLLISION_IGNORE="/lib/modules/* *.py[co]"
  UNINSTALL_IGNORE="/lib/modules/*"
  
 +# Prefix: we want preserve-libs, not sure how mainline goes about this
 +FEATURES="${FEATURES} preserve-libs"
 +
 +# Force EPREFIX, ED and EROOT to exist in all EAPIs, not just 3 and up
 +FEATURES="${FEATURES} force-prefix"
 +
- # Default chunksize for binhost comms
- PORTAGE_BINHOST_CHUNKSIZE="3000"
- 
  # By default wait 5 secs before cleaning a package
  CLEAN_DELAY="5"
  
diff --cc pym/_emerge/actions.py
index c8d04f2,fec2dfa..8902aab
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@@ -28,9 -33,8 +33,9 @@@ portage.proxy.lazyimport.lazyimport(glo
  from portage.localization import _
  from portage import os
  from portage import shutil
- from portage import eapi_is_supported, _unicode_decode
+ from portage import eapi_is_supported, _encodings, _unicode_decode
  from portage.cache.cache_errors import CacheError
 +from portage.const import EPREFIX
  from portage.const import GLOBAL_CONFIG_PATH
  from portage.const import _DEPCLEAN_LIB_CHECK_DEFAULT
  from portage.dbapi.dep_expand import dep_expand
diff --cc pym/_emerge/main.py
index 8553bbc,be5a5ca..b902234
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@@ -3,51 -3,19 +3,20 @@@
  
  from __future__ import print_function
  
- import logging
- import signal
- import stat
- import subprocess
- import sys
- import textwrap
  import platform
+ import sys
+ 
  import portage
  portage.proxy.lazyimport.lazyimport(globals(),
- 	'portage.news:count_unread_news,display_news_notifications',
- 	'portage.emaint.modules.logs.logs:CleanLogs',
+ 	'logging',
+ 	'portage.util:writemsg_level',
+ 	'textwrap',
+ 	'_emerge.actions:load_emerge_config,run_action,' + \
+ 		'validate_ebuild_environment',
+ 	'_emerge.help:help@emerge_help',
  )
  from portage import os
- from portage import _encodings
- from portage import _unicode_decode
- import _emerge.help
- import portage.xpak, errno, re, time
- from portage.output import colorize, xtermTitle, xtermTitleReset
- from portage.output import create_color_func
- good = create_color_func("GOOD")
- bad = create_color_func("BAD")
- 
- import portage.elog
- import portage.util
- import portage.locks
- import portage.exception
- from portage.const import EPREFIX, EPREFIX_LSTRIP
- from portage.data import secpass
- from portage.dbapi.dep_expand import dep_expand
- from portage.util import normalize_path as normpath
- from portage.util import (shlex_split, varexpand,
- 	writemsg_level, writemsg_stdout)
- from portage._sets import SETPREFIX
- from portage._global_updates import _global_updates
- 
- from _emerge.actions import action_config, action_sync, action_metadata, \
- 	action_regen, action_search, action_uninstall, action_info, action_build, \
- 	adjust_configs, chk_updated_cfg_files, display_missing_pkg_set, \
- 	display_news_notification, getportageversion, load_emerge_config
- import _emerge
- from _emerge.emergelog import emergelog
- from _emerge._flush_elog_mod_echo import _flush_elog_mod_echo
- from _emerge.is_valid_package_atom import is_valid_package_atom
- from _emerge.stdout_spinner import stdout_spinner
- from _emerge.userquery import userquery
++from portage.const import EPREFIX
  
  if sys.hexversion >= 0x3000000:
  	long = int
@@@ -115,325 -83,6 +84,328 @@@ COWSAY_MOO = ""
  
  """
  
++<<<<<<< HEAD
 +def chk_updated_info_files(root, infodirs, prev_mtimes, retval):
 +
 +	if os.path.exists(EPREFIX + "/usr/bin/install-info"):
 +		out = portage.output.EOutput()
 +		regen_infodirs=[]
 +		for z in infodirs:
 +			if z=='':
 +				continue
 +			inforoot=normpath(root+z)
 +			if os.path.isdir(inforoot) and \
 +				not [x for x in os.listdir(inforoot) \
 +				if x.startswith('.keepinfodir')]:
 +					infomtime = os.stat(inforoot)[stat.ST_MTIME]
 +					if inforoot not in prev_mtimes or \
 +						prev_mtimes[inforoot] != infomtime:
 +							regen_infodirs.append(inforoot)
 +
 +		if not regen_infodirs:
 +			portage.writemsg_stdout("\n")
 +			if portage.util.noiselimit >= 0:
 +				out.einfo("GNU info directory index is up-to-date.")
 +		else:
 +			portage.writemsg_stdout("\n")
 +			if portage.util.noiselimit >= 0:
 +				out.einfo("Regenerating GNU info directory index...")
 +
 +			dir_extensions = ("", ".gz", ".bz2")
 +			icount=0
 +			badcount=0
 +			errmsg = ""
 +			for inforoot in regen_infodirs:
 +				if inforoot=='':
 +					continue
 +
 +				if not os.path.isdir(inforoot) or \
 +					not os.access(inforoot, os.W_OK):
 +					continue
 +
 +				file_list = os.listdir(inforoot)
 +				file_list.sort()
 +				dir_file = os.path.join(inforoot, "dir")
 +				moved_old_dir = False
 +				processed_count = 0
 +				for x in file_list:
 +					if x.startswith(".") or \
 +						os.path.isdir(os.path.join(inforoot, x)):
 +						continue
 +					if x.startswith("dir"):
 +						skip = False
 +						for ext in dir_extensions:
 +							if x == "dir" + ext or \
 +								x == "dir" + ext + ".old":
 +								skip = True
 +								break
 +						if skip:
 +							continue
 +					if processed_count == 0:
 +						for ext in dir_extensions:
 +							try:
 +								os.rename(dir_file + ext, dir_file + ext + ".old")
 +								moved_old_dir = True
 +							except EnvironmentError as e:
 +								if e.errno != errno.ENOENT:
 +									raise
 +								del e
 +					processed_count += 1
 +					try:
 +						proc = subprocess.Popen(
 +							['%s/usr/bin/install-info'
 +							'--dir-file=%s' % (EPREFIX, os.path.join(inforoot, "dir")),
 +							os.path.join(inforoot, x)],
 +							env=dict(os.environ, LANG="C", LANGUAGE="C"),
 +							stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
 +					except OSError:
 +						myso = None
 +					else:
 +						myso = _unicode_decode(
 +							proc.communicate()[0]).rstrip("\n")
 +						proc.wait()
 +					existsstr="already exists, for file `"
 +					if myso:
 +						if re.search(existsstr,myso):
 +							# Already exists... Don't increment the count for this.
 +							pass
 +						elif myso[:44]=="install-info: warning: no info dir entry in ":
 +							# This info file doesn't contain a DIR-header: install-info produces this
 +							# (harmless) warning (the --quiet switch doesn't seem to work).
 +							# Don't increment the count for this.
 +							pass
 +						else:
 +							badcount=badcount+1
 +							errmsg += myso + "\n"
 +					icount=icount+1
 +
 +				if moved_old_dir and not os.path.exists(dir_file):
 +					# We didn't generate a new dir file, so put the old file
 +					# back where it was originally found.
 +					for ext in dir_extensions:
 +						try:
 +							os.rename(dir_file + ext + ".old", dir_file + ext)
 +						except EnvironmentError as e:
 +							if e.errno != errno.ENOENT:
 +								raise
 +							del e
 +
 +				# Clean dir.old cruft so that they don't prevent
 +				# unmerge of otherwise empty directories.
 +				for ext in dir_extensions:
 +					try:
 +						os.unlink(dir_file + ext + ".old")
 +					except EnvironmentError as e:
 +						if e.errno != errno.ENOENT:
 +							raise
 +						del e
 +
 +				#update mtime so we can potentially avoid regenerating.
 +				prev_mtimes[inforoot] = os.stat(inforoot)[stat.ST_MTIME]
 +
 +			if badcount:
 +				out.eerror("Processed %d info files; %d errors." % \
 +					(icount, badcount))
 +				writemsg_level(errmsg, level=logging.ERROR, noiselevel=-1)
 +			else:
 +				if icount > 0 and portage.util.noiselimit >= 0:
 +					out.einfo("Processed %d info files." % (icount,))
 +
 +def display_preserved_libs(vardbapi, myopts):
 +	MAX_DISPLAY = 3
 +
 +	if vardbapi._linkmap is None or \
 +		vardbapi._plib_registry is None:
 +		# preserve-libs is entirely disabled
 +		return
 +
 +	# Explicitly load and prune the PreservedLibsRegistry in order
 +	# to ensure that we do not display stale data.
 +	vardbapi._plib_registry.load()
 +
 +	if vardbapi._plib_registry.hasEntries():
 +		if "--quiet" in myopts:
 +			print()
 +			print(colorize("WARN", "!!!") + " existing preserved libs found")
 +			return
 +		else:
 +			print()
 +			print(colorize("WARN", "!!!") + " existing preserved libs:")
 +
 +		plibdata = vardbapi._plib_registry.getPreservedLibs()
 +		linkmap = vardbapi._linkmap
 +		consumer_map = {}
 +		owners = {}
 +
 +		try:
 +			linkmap.rebuild()
 +		except portage.exception.CommandNotFound as e:
 +			writemsg_level("!!! Command Not Found: %s\n" % (e,),
 +				level=logging.ERROR, noiselevel=-1)
 +			del e
 +		else:
 +			search_for_owners = set()
 +			for cpv in plibdata:
 +				internal_plib_keys = set(linkmap._obj_key(f) \
 +					for f in plibdata[cpv])
 +				for f in plibdata[cpv]:
 +					if f in consumer_map:
 +						continue
 +					consumers = []
 +					for c in linkmap.findConsumers(f):
 +						# Filter out any consumers that are also preserved libs
 +						# belonging to the same package as the provider.
 +						if linkmap._obj_key(c) not in internal_plib_keys:
 +							consumers.append(c)
 +					consumers.sort()
 +					consumer_map[f] = consumers
 +					search_for_owners.update(consumers[:MAX_DISPLAY+1])
 +
 +			owners = {}
 +			for f in search_for_owners:
 +				owner_set = set()
 +				for owner in linkmap.getOwners(f):
 +					owner_dblink = vardbapi._dblink(owner)
 +					if owner_dblink.exists():
 +						owner_set.add(owner_dblink)
 +				if owner_set:
 +					owners[f] = owner_set
 +
 +		for cpv in plibdata:
 +			print(colorize("WARN", ">>>") + " package: %s" % cpv)
 +			samefile_map = {}
 +			for f in plibdata[cpv]:
 +				obj_key = linkmap._obj_key(f)
 +				alt_paths = samefile_map.get(obj_key)
 +				if alt_paths is None:
 +					alt_paths = set()
 +					samefile_map[obj_key] = alt_paths
 +				alt_paths.add(f)
 +
 +			for alt_paths in samefile_map.values():
 +				alt_paths = sorted(alt_paths)
 +				for p in alt_paths:
 +					print(colorize("WARN", " * ") + " - %s" % (p,))
 +				f = alt_paths[0]
 +				consumers = consumer_map.get(f, [])
 +				for c in consumers[:MAX_DISPLAY]:
 +					print(colorize("WARN", " * ") + "     used by %s (%s)" % \
 +						(c, ", ".join(x.mycpv for x in owners.get(c, []))))
 +				if len(consumers) == MAX_DISPLAY + 1:
 +					print(colorize("WARN", " * ") + "     used by %s (%s)" % \
 +						(consumers[MAX_DISPLAY], ", ".join(x.mycpv \
 +						for x in owners.get(consumers[MAX_DISPLAY], []))))
 +				elif len(consumers) > MAX_DISPLAY:
 +					print(colorize("WARN", " * ") + "     used by %d other files" % (len(consumers) - MAX_DISPLAY))
 +		print("Use " + colorize("GOOD", "emerge @preserved-rebuild") + " to rebuild packages using these libraries")
 +
 +def post_emerge(myaction, myopts, myfiles,
 +	target_root, trees, mtimedb, retval):
 +	"""
 +	Misc. things to run at the end of a merge session.
 +
 +	Update Info Files
 +	Update Config Files
 +	Update News Items
 +	Commit mtimeDB
 +	Display preserved libs warnings
 +
 +	@param myaction: The action returned from parse_opts()
 +	@type myaction: String
 +	@param myopts: emerge options
 +	@type myopts: dict
 +	@param myfiles: emerge arguments
 +	@type myfiles: list
 +	@param target_root: The target EROOT for myaction
 +	@type target_root: String
 +	@param trees: A dictionary mapping each ROOT to it's package databases
 +	@type trees: dict
 +	@param mtimedb: The mtimeDB to store data needed across merge invocations
 +	@type mtimedb: MtimeDB class instance
 +	@param retval: Emerge's return value
 +	@type retval: Int
 +	"""
 +
 +	root_config = trees[target_root]["root_config"]
 +	vardbapi = trees[target_root]['vartree'].dbapi
 +	settings = vardbapi.settings
 +	info_mtimes = mtimedb["info"]
 +
 +	# Load the most current variables from ${ROOT}/etc/profile.env
 +	settings.unlock()
 +	settings.reload()
 +	settings.regenerate()
 +	settings.lock()
 +
 +	config_protect = shlex_split(settings.get("CONFIG_PROTECT", ""))
 +	infodirs = settings.get("INFOPATH","").split(":") + \
 +		settings.get("INFODIR","").split(":")
 +
 +	os.chdir("/")
 +
 +	if retval == os.EX_OK:
 +		exit_msg = " *** exiting successfully."
 +	else:
 +		exit_msg = " *** exiting unsuccessfully with status '%s'." % retval
 +	emergelog("notitles" not in settings.features, exit_msg)
 +
 +	_flush_elog_mod_echo()
 +
 +	if not vardbapi._pkgs_changed:
 +		# GLEP 42 says to display news *after* an emerge --pretend
 +		if "--pretend" in myopts:
 +			display_news_notification(root_config, myopts)
 +		# If vdb state has not changed then there's nothing else to do.
 +		return
 +
 +	vdb_path = os.path.join(root_config.settings['EROOT'], portage.VDB_PATH)
 +	portage.util.ensure_dirs(vdb_path)
 +	vdb_lock = None
 +	if os.access(vdb_path, os.W_OK) and not "--pretend" in myopts:
 +		vardbapi.lock()
 +		vdb_lock = True
 +
 +	if vdb_lock:
 +		try:
 +			if "noinfo" not in settings.features:
 +				chk_updated_info_files(target_root + EPREFIX,
 +					infodirs, info_mtimes, retval)
 +			mtimedb.commit()
 +		finally:
 +			if vdb_lock:
 +				vardbapi.unlock()
 +
 +	display_preserved_libs(vardbapi, myopts)
 +	chk_updated_cfg_files(settings['EROOT'], config_protect)
 +
 +	display_news_notification(root_config, myopts)
 +
 +	postemerge = os.path.join(settings["PORTAGE_CONFIGROOT"],
 +		portage.USER_CONFIG_PATH, "bin", "post_emerge")
 +	if os.access(postemerge, os.X_OK):
 +		hook_retval = portage.process.spawn(
 +						[postemerge], env=settings.environ())
 +		if hook_retval != os.EX_OK:
 +			writemsg_level(
 +				" %s spawn failed of %s\n" % (bad("*"), postemerge,),
 +				level=logging.ERROR, noiselevel=-1)
 +
 +	clean_logs(settings)
 +
 +	if "--quiet" not in myopts and \
 +		myaction is None and "@world" in myfiles:
 +		show_depclean_suggestion()
 +
 +def show_depclean_suggestion():
 +	out = portage.output.EOutput()
 +	msg = "After world updates, it is important to remove " + \
 +		"obsolete packages with emerge --depclean. Refer " + \
 +		"to `man emerge` for more information."
 +	for line in textwrap.wrap(msg, 72):
 +		out.ewarn(line)
 +
++=======
++>>>>>>> overlays-gentoo-org/master
  def multiple_actions(action1, action2):
  	sys.stderr.write("\n!!! Multiple actions requested... Please choose one only.\n")
  	sys.stderr.write("!!! '%s' or '%s'\n\n" % (action1, action2))
diff --cc pym/portage/dbapi/vartree.py
index dc97491,46afea5..07aac3d
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@@ -32,11 -32,10 +32,13 @@@ portage.proxy.lazyimport.lazyimport(glo
  	'portage.util.movefile:movefile',
  	'portage.util._dyn_libs.PreservedLibsRegistry:PreservedLibsRegistry',
  	'portage.util._dyn_libs.LinkageMapELF:LinkageMapELF@LinkageMap',
 +	'portage.util._dyn_libs.LinkageMapMachO:LinkageMapMachO',
 +	'portage.util._dyn_libs.LinkageMapPeCoff:LinkageMapPeCoff',
 +	'portage.util._dyn_libs.LinkageMapXCoff:LinkageMapXCoff',
+ 	'portage.util._async.SchedulerInterface:SchedulerInterface',
+ 	'portage.util._eventloop.EventLoop:EventLoop',
  	'portage.versions:best,catpkgsplit,catsplit,cpv_getkey,vercmp,' + \
- 		'_pkgsplit@pkgsplit,_pkg_str',
+ 		'_pkgsplit@pkgsplit,_pkg_str,_unknown_repo',
  	'subprocess',
  	'tarfile',
  )
diff --cc pym/portage/getbinpkg.py
index 992e1f4,28b18a0..8c22145
--- a/pym/portage/getbinpkg.py
+++ b/pym/portage/getbinpkg.py
@@@ -18,7 -18,7 +18,8 @@@ import socke
  import time
  import tempfile
  import base64
 +from portage.const import CACHE_PATH
+ import warnings
  
  _all_errors = [NotImplementedError, ValueError, socket.error]
  
diff --cc pym/portage/process.py
index b26d742,fbfbde0..969e7a3
--- a/pym/portage/process.py
+++ b/pym/portage/process.py
@@@ -15,10 -15,10 +15,10 @@@ from portage import _encoding
  from portage import _unicode_encode
  import portage
  portage.proxy.lazyimport.lazyimport(globals(),
- 	'portage.util:dump_traceback',
+ 	'portage.util:dump_traceback,writemsg',
  )
  
 -from portage.const import BASH_BINARY, SANDBOX_BINARY, FAKEROOT_BINARY
 +from portage.const import BASH_BINARY, SANDBOX_BINARY, MACOSSANDBOX_BINARY, FAKEROOT_BINARY
  from portage.exception import CommandNotFound
  
  try:


             reply	other threads:[~2012-10-22 17:25 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-22 17:25 Fabian Groffen [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-02-25  9:40 [gentoo-commits] proj/portage:prefix commit in: / Fabian Groffen
2024-02-22  7:27 Fabian Groffen
2024-01-18 10:22 Fabian Groffen
2024-01-18  9:36 Fabian Groffen
2023-12-03 10:10 Fabian Groffen
2023-12-03  9:54 Fabian Groffen
2023-12-03  9:54 Fabian Groffen
2023-12-03  9:54 Fabian Groffen
2023-11-24 20:18 Fabian Groffen
2023-11-24 20:06 Fabian Groffen
2023-11-24 20:06 Fabian Groffen
2023-06-22  8:47 Fabian Groffen
2023-06-17  9:04 Fabian Groffen
2023-06-17  8:41 Fabian Groffen
2022-07-28 17:38 Fabian Groffen
2022-07-27 19:20 Fabian Groffen
2022-07-26 19:39 Fabian Groffen
2022-07-25 15:20 Fabian Groffen
2022-07-24 19:27 Fabian Groffen
2022-07-24 14:01 Fabian Groffen
2022-07-24  9:45 Fabian Groffen
2022-01-14 10:40 Fabian Groffen
2022-01-14 10:32 Fabian Groffen
2021-07-06  7:10 Fabian Groffen
2021-04-16 13:37 Fabian Groffen
2021-01-24  9:02 Fabian Groffen
2021-01-04 10:48 Fabian Groffen
2020-12-07 17:28 Fabian Groffen
2020-12-07 16:46 Fabian Groffen
2020-11-23  7:48 Fabian Groffen
2020-11-22 11:15 Fabian Groffen
2020-09-26 11:29 Fabian Groffen
2020-08-02 12:33 Fabian Groffen
2020-06-02 18:55 Fabian Groffen
2020-01-08 19:14 Fabian Groffen
2019-07-01 13:11 Fabian Groffen
2019-05-30  9:20 Fabian Groffen
2019-02-28 12:31 Fabian Groffen
2019-01-11 10:19 Fabian Groffen
2019-01-07 10:22 Fabian Groffen
2018-12-23 11:14 Fabian Groffen
2018-12-12 18:54 Fabian Groffen
2018-08-04  6:56 Fabian Groffen
2018-06-25  8:34 Fabian Groffen
2018-06-17 14:38 Fabian Groffen
2018-06-17 14:38 Fabian Groffen
2018-05-28 15:24 Fabian Groffen
2018-05-25 19:44 Fabian Groffen
2018-05-25 19:44 Fabian Groffen
2018-05-18 19:46 Fabian Groffen
2017-12-12  8:19 Fabian Groffen
2017-10-29 14:51 Fabian Groffen
2017-10-03  7:32 Fabian Groffen
2017-09-22 10:08 Fabian Groffen
2017-08-21 13:27 Fabian Groffen
2017-08-13  7:21 Fabian Groffen
2017-05-23 13:34 Fabian Groffen
2017-03-25  9:12 Fabian Groffen
2017-03-24 19:09 Fabian Groffen
2017-03-24  7:43 Fabian Groffen
2017-03-23 17:46 Fabian Groffen
2017-03-23 17:32 Fabian Groffen
2017-03-23 17:23 Fabian Groffen
2017-03-23 15:38 Fabian Groffen
2017-03-17  8:25 Fabian Groffen
2017-03-02  8:48 Fabian Groffen
2017-03-02  8:18 Fabian Groffen
2017-02-23 14:05 Fabian Groffen
2017-01-27 15:08 Fabian Groffen
2017-01-27 15:08 Fabian Groffen
2016-03-20 19:31 Fabian Groffen
2016-02-21 16:17 Fabian Groffen
2016-02-21 16:17 Fabian Groffen
2016-02-18 19:35 Fabian Groffen
2016-02-18 19:35 Fabian Groffen
2015-06-20  7:12 Fabian Groffen
2015-06-09 18:30 Fabian Groffen
2015-06-09 18:01 Fabian Groffen
2015-06-04 19:47 Fabian Groffen
2015-04-05  9:15 Fabian Groffen
2014-11-12 17:31 Fabian Groffen
2014-10-02 18:48 Fabian Groffen
2014-09-28 17:52 Fabian Groffen
2014-05-06 19:32 Fabian Groffen
2014-05-06 19:18 Fabian Groffen
2014-04-22 19:52 Fabian Groffen
2014-02-06 21:09 Fabian Groffen
2014-01-06  9:47 Fabian Groffen
2013-09-24 17:29 Fabian Groffen
2013-09-20 17:59 Fabian Groffen
2013-09-18 18:34 Fabian Groffen
2013-09-13 18:02 Fabian Groffen
2013-08-10 20:54 Fabian Groffen
2013-07-10  5:31 Fabian Groffen
2013-07-08 19:32 Fabian Groffen
2013-06-29  5:41 Fabian Groffen
2013-06-27 17:20 Fabian Groffen
2013-06-12  9:02 Fabian Groffen
2013-06-09 15:53 Fabian Groffen
2013-05-04 18:55 Fabian Groffen
2013-04-02 16:57 Fabian Groffen
2013-03-31 19:03 Fabian Groffen
2013-03-31 19:00 Fabian Groffen
2013-03-24  8:36 Fabian Groffen
2013-03-23 19:54 Fabian Groffen
2013-02-28 19:29 Fabian Groffen
2013-02-07 20:01 Fabian Groffen
2013-01-27 21:41 Fabian Groffen
2013-01-27 21:41 Fabian Groffen
2013-01-13 10:26 Fabian Groffen
2013-01-10 21:02 Fabian Groffen
2013-01-05 18:14 Fabian Groffen
2012-12-26 14:48 Fabian Groffen
2012-12-02 15:47 Fabian Groffen
2012-12-02 15:36 Fabian Groffen
2012-12-02 15:33 Fabian Groffen
2012-12-02 15:33 Fabian Groffen
2012-12-02 15:33 Fabian Groffen
2012-12-02 13:12 Fabian Groffen
2012-12-02 12:59 Fabian Groffen
2012-11-04 10:48 Fabian Groffen
2012-10-02 12:02 Fabian Groffen
2012-09-30 11:22 Fabian Groffen
2012-09-26 18:26 Fabian Groffen
2012-09-12 18:18 Fabian Groffen
2012-09-09  7:40 Fabian Groffen
2012-09-06 18:14 Fabian Groffen
2012-08-27  6:44 Fabian Groffen
2012-08-12  7:50 Fabian Groffen
2012-07-19 16:25 Fabian Groffen
2012-07-06  7:05 Fabian Groffen
2012-04-23 19:23 Fabian Groffen
2012-04-03 18:04 Fabian Groffen
2012-03-31 19:31 Fabian Groffen
2012-03-01 20:32 Fabian Groffen
2012-02-19  9:58 Fabian Groffen
2012-02-09  8:01 Fabian Groffen
2012-01-10 17:45 Fabian Groffen
2011-12-31 16:45 Fabian Groffen
2011-12-26  9:12 Fabian Groffen
2011-12-23  9:51 Fabian Groffen
2011-12-22  9:51 Fabian Groffen
2011-12-19 18:30 Fabian Groffen
2011-12-14 15:25 Fabian Groffen
2011-12-10 11:28 Fabian Groffen
2011-12-09 20:33 Fabian Groffen
2011-12-02 20:31 Fabian Groffen
2011-12-02 19:20 Fabian Groffen
2011-12-02 19:19 Fabian Groffen
2011-12-02 19:18 Fabian Groffen
2011-12-02 18:03 Fabian Groffen
2011-10-21 17:34 Fabian Groffen
2011-10-21 17:34 Fabian Groffen
2011-10-20 20:28 Fabian Groffen
2011-10-20 17:08 Fabian Groffen
2011-10-20 16:38 Fabian Groffen
2011-10-17 18:36 Fabian Groffen
2011-10-16 13:59 Fabian Groffen
2011-10-15 18:27 Fabian Groffen
2011-10-13  6:52 Fabian Groffen
2011-09-23 18:38 Fabian Groffen
2011-09-23 18:23 Fabian Groffen
2011-09-20 18:25 Fabian Groffen
2011-09-14 18:43 Fabian Groffen
2011-09-14 18:38 Fabian Groffen
2011-09-13 17:41 Fabian Groffen
2011-08-31 18:39 Fabian Groffen
2011-08-30 18:45 Fabian Groffen
2011-08-29 19:03 Fabian Groffen
2011-08-25 20:25 Fabian Groffen
2011-08-20 17:50 Fabian Groffen
2011-07-26 17:35 Fabian Groffen
2011-07-17  9:48 Fabian Groffen
2011-07-17  8:12 Fabian Groffen
2011-07-01 17:44 Fabian Groffen
2011-06-14 15:39 Fabian Groffen
2011-06-06 17:12 Fabian Groffen
2011-05-28  8:29 Fabian Groffen
2011-05-27 17:41 Fabian Groffen
2011-05-14 13:59 Fabian Groffen
2011-05-02 17:41 Fabian Groffen
2011-04-24 12:08 Fabian Groffen
2011-04-15 18:27 Fabian Groffen
2011-04-15 18:27 Fabian Groffen
2011-03-28 16:52 Fabian Groffen
2011-03-23 19:26 Fabian Groffen
2011-03-17 19:08 Fabian Groffen
2011-03-13 14:45 Fabian Groffen
2011-03-09 19:44 Fabian Groffen
2011-02-26 21:15 Fabian Groffen
2011-02-10 18:46 Fabian Groffen
2011-02-10 18:44 Fabian Groffen
2011-02-10 18:20 Fabian Groffen
2011-02-05 12:25 Fabian Groffen

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=1350926607.79403078f737a0d836394b3ebe37fe9435c56ae6.grobian@gentoo \
    --to=grobian@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