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: Sun,  5 Apr 2015 09:15:28 +0000 (UTC)	[thread overview]
Message-ID: <1428225228.eed711a2e330ae73978bd7612ae596a7b3f7adbb.grobian@gentoo> (raw)

commit:     eed711a2e330ae73978bd7612ae596a7b3f7adbb
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun Apr  5 09:13:48 2015 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun Apr  5 09:13:48 2015 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=eed711a2

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

 NEWS                                               |   11 +
 RELEASE-NOTES                                      |  121 ++
 bin/bashrc-functions.sh                            |    2 +-
 bin/chpathtool.py                                  |   22 +-
 bin/dispatch-conf                                  |   68 +-
 bin/eapi.sh                                        |  114 +-
 bin/ebuild                                         |    7 +-
 bin/ebuild-helpers/dohtml                          |    4 +
 bin/ebuild.sh                                      |   98 +-
 bin/egencache                                      |   38 +-
 bin/emerge-webrsync                                |    4 +-
 bin/etc-update                                     |  158 ++-
 bin/install-qa-check.d/05double-D                  |    9 +-
 bin/install-qa-check.d/90world-writable            |   27 +-
 bin/install.py                                     |    2 +-
 bin/isolated-functions.sh                          |   89 +-
 bin/misc-functions.sh                              |   71 +-
 bin/phase-functions.sh                             |   15 +-
 bin/phase-helpers.sh                               |  315 +++++-
 bin/portageq                                       |   27 +-
 bin/quickpkg                                       |    3 +-
 bin/regenworld                                     |    4 +-
 bin/repoman                                        |   43 +-
 bin/save-ebuild-env.sh                             |    9 +-
 bin/socks5-server.py                               |  227 ++++
 cnf/dispatch-conf.conf                             |    2 +-
 cnf/make.conf.example                              |    2 +-
 cnf/make.globals                                   |    3 +-
 cnf/repo.postsync.d/example                        |   51 +
 cnf/repos.conf                                     |    1 +
 cnf/sets/portage.conf                              |   12 +-
 doc/config/sets.docbook                            |   47 +-
 man/ebuild.5                                       |   28 +-
 man/egencache.1                                    |   15 +-
 man/emaint.1                                       |   71 +-
 man/emerge.1                                       |  117 +-
 man/make.conf.5                                    |   45 +-
 man/portage.5                                      |  262 ++++-
 man/repoman.1                                      |    2 +-
 pym/_emerge/AbstractPollTask.py                    |   52 +-
 pym/_emerge/Binpkg.py                              |   33 +-
 pym/_emerge/BinpkgExtractorAsync.py                |   25 +-
 pym/_emerge/BinpkgFetcher.py                       |   13 +-
 pym/_emerge/BinpkgPrefetcher.py                    |    2 +-
 pym/_emerge/BinpkgVerifier.py                      |    6 +-
 pym/_emerge/EbuildBinpkg.py                        |    9 +-
 pym/_emerge/EbuildBuild.py                         |   36 +-
 pym/_emerge/FakeVartree.py                         |   16 +-
 pym/_emerge/Package.py                             |  135 ++-
 pym/_emerge/Scheduler.py                           |    7 +-
 pym/_emerge/actions.py                             | 1194 +++-----------------
 pym/_emerge/clear_caches.py                        |    1 -
 pym/_emerge/create_depgraph_params.py              |   27 +
 pym/_emerge/create_world_atom.py                   |    6 +-
 pym/_emerge/depgraph.py                            |  780 ++++++++++---
 pym/_emerge/help.py                                |    2 +-
 pym/_emerge/is_valid_package_atom.py               |    5 +-
 pym/_emerge/main.py                                |   94 +-
 pym/_emerge/resolver/DbapiProvidesIndex.py         |  101 ++
 pym/_emerge/resolver/output.py                     |   40 +-
 pym/_emerge/resolver/output_helpers.py             |   19 +-
 pym/_emerge/resolver/package_tracker.py            |   42 +-
 pym/_emerge/resolver/slot_collision.py             |   35 +-
 pym/_emerge/search.py                              |  188 ++-
 pym/_emerge/unmerge.py                             |   42 +-
 pym/portage/__init__.py                            |   29 +-
 pym/portage/_global_updates.py                     |    4 +-
 pym/portage/_selinux.py                            |   14 +-
 pym/portage/_sets/ProfilePackageSet.py             |   35 +
 pym/portage/_sets/__init__.py                      |   19 +-
 pym/portage/_sets/files.py                         |  160 ++-
 pym/portage/_sets/profiles.py                      |   28 +-
 pym/portage/cache/fs_template.py                   |   25 +-
 pym/portage/cache/index/IndexStreamIterator.py     |   27 +
 .../sync => portage/cache/index}/__init__.py       |    2 +-
 pym/portage/cache/index/pkg_desc_index.py          |   60 +
 pym/portage/const.py                               |    3 +
 pym/portage/data.py                                |  134 ++-
 pym/portage/dbapi/DummyTree.py                     |   16 +
 pym/portage/dbapi/IndexedPortdb.py                 |  171 +++
 pym/portage/dbapi/IndexedVardb.py                  |  114 ++
 .../dbapi/_ContentsCaseSensitivityManager.py       |   93 ++
 pym/portage/dbapi/_VdbMetadataDelta.py             |  153 +++
 pym/portage/dbapi/__init__.py                      |   10 +-
 pym/portage/dbapi/bintree.py                       |  898 ++++++++-------
 pym/portage/dbapi/vartree.py                       |  416 ++++---
 pym/portage/dbapi/virtual.py                       |  113 +-
 pym/portage/dep/__init__.py                        |   69 +-
 pym/portage/dep/_slot_operator.py                  |   13 +
 pym/portage/dep/dep_check.py                       |   69 +-
 pym/portage/dep/soname/SonameAtom.py               |   72 ++
 .../sync => portage/dep/soname}/__init__.py        |    2 +-
 pym/portage/dep/soname/multilib_category.py        |  114 ++
 pym/portage/dep/soname/parse.py                    |   47 +
 pym/portage/dispatch_conf.py                       |  189 +++-
 pym/portage/eapi.py                                |    2 +-
 pym/portage/emaint/main.py                         |   33 +-
 pym/portage/emaint/modules/binhost/binhost.py      |   47 +-
 pym/portage/emaint/modules/merges/merges.py        |   15 +-
 pym/portage/emaint/modules/sync/__init__.py        |   55 +
 pym/portage/emaint/modules/sync/sync.py            |  289 +++++
 pym/portage/exception.py                           |    1 +
 pym/portage/locks.py                               |   11 +-
 pym/portage/metadata.py                            |  208 ++++
 pym/portage/{emaint => }/module.py                 |   40 +-
 pym/portage/news.py                                |   15 +-
 .../package/ebuild/_config/KeywordsManager.py      |    7 +-
 .../package/ebuild/_config/LocationsManager.py     |   44 +-
 pym/portage/package/ebuild/_config/MaskManager.py  |   25 +-
 pym/portage/package/ebuild/_config/UseManager.py   |  116 +-
 .../package/ebuild/_config/special_env_vars.py     |   10 +-
 pym/portage/package/ebuild/config.py               |  195 +++-
 pym/portage/package/ebuild/doebuild.py             |  246 +++-
 pym/portage/package/ebuild/fetch.py                |    7 +-
 pym/portage/package/ebuild/prepare_build_dirs.py   |    9 +-
 pym/portage/{emaint => }/progress.py               |    0
 pym/portage/repository/config.py                   |  121 +-
 pym/portage/sync/__init__.py                       |   38 +
 pym/portage/sync/config_checks.py                  |   72 ++
 pym/portage/sync/controller.py                     |  321 ++++++
 .../sync/getaddrinfo_validate.py                   |    0
 pym/{repoman => portage/sync/modules}/__init__.py  |    0
 pym/portage/sync/modules/cvs/__init__.py           |   45 +
 pym/portage/sync/modules/cvs/cvs.py                |   67 ++
 pym/portage/sync/modules/git/__init__.py           |   55 +
 pym/portage/sync/modules/git/git.py                |   86 ++
 pym/portage/sync/modules/rsync/__init__.py         |   28 +
 pym/portage/sync/modules/rsync/rsync.py            |  543 +++++++++
 pym/portage/sync/modules/svn/__init__.py           |   31 +
 pym/portage/sync/modules/svn/svn.py                |   89 ++
 pym/portage/sync/modules/webrsync/__init__.py      |   49 +
 pym/portage/sync/modules/webrsync/webrsync.py      |   66 ++
 .../sync/old_tree_timestamp.py                     |    5 +-
 pym/portage/sync/syncbase.py                       |  136 +++
 pym/portage/tests/__init__.py                      |    4 +-
 pym/portage/tests/dbapi/test_fakedbapi.py          |   11 +-
 pym/portage/tests/dbapi/test_portdb_cache.py       |   18 +-
 pym/portage/tests/dep/test_isvalidatom.py          |    8 +-
 .../tests/ebuild/test_use_expand_incremental.py    |  132 +++
 pym/portage/tests/emerge/test_config_protect.py    |  292 +++++
 pym/portage/tests/emerge/test_simple.py            |   10 +-
 pym/portage/tests/glsa/test_security_set.py        |    5 +-
 pym/portage/tests/lint/metadata.py                 |   11 +
 pym/portage/tests/lint/test_compile_modules.py     |   13 +
 pym/portage/tests/resolver/ResolverPlayground.py   |   46 +-
 .../resolver/binpkg_multi_instance}/__init__.py    |    2 +-
 .../resolver/binpkg_multi_instance/__test__.py}    |    2 +-
 .../test_build_id_profile_format.py                |  134 +++
 .../binpkg_multi_instance/test_rebuilt_binaries.py |  101 ++
 .../tests/resolver/soname}/__init__.py             |    2 +-
 .../tests/resolver/soname/__test__.py}             |    2 +-
 .../tests/resolver/soname/test_autounmask.py       |  103 ++
 pym/portage/tests/resolver/soname/test_depclean.py |   61 +
 .../tests/resolver/soname/test_downgrade.py        |  240 ++++
 .../tests/resolver/soname/test_or_choices.py       |   92 ++
 .../tests/resolver/soname/test_reinstall.py        |   87 ++
 .../tests/resolver/soname/test_skip_update.py      |   86 ++
 .../soname/test_slot_conflict_reinstall.py         |  342 ++++++
 .../resolver/soname/test_slot_conflict_update.py   |  117 ++
 .../tests/resolver/soname/test_soname_provided.py  |   78 ++
 .../tests/resolver/soname/test_unsatisfiable.py    |   71 ++
 .../tests/resolver/soname/test_unsatisfied.py      |   87 ++
 pym/portage/tests/resolver/test_backtracking.py    |    9 +-
 pym/portage/tests/resolver/test_changed_deps.py    |  120 ++
 .../tests/resolver/test_onlydeps_circular.py       |   51 +
 pym/portage/tests/resolver/test_or_choices.py      |  137 ++-
 pym/portage/tests/resolver/test_package_tracker.py |    4 +-
 .../tests/resolver/test_profile_default_eapi.py    |  126 +++
 .../tests/resolver/test_profile_package_set.py     |  123 ++
 ..._slot_operator_update_probe_parent_downgrade.py |   68 ++
 pym/portage/tests/resolver/test_virtual_slot.py    |   75 ++
 pym/portage/tests/resolver/test_with_test_deps.py  |   44 +
 pym/{_emerge => portage/tests}/sync/__init__.py    |    2 +-
 pym/portage/tests/sync/test_sync_local.py          |  189 ++++
 pym/portage/update.py                              |    4 +-
 pym/portage/util/__init__.py                       |  111 +-
 pym/portage/util/_dyn_libs/LinkageMapELF.py        |   62 +-
 pym/portage/util/_dyn_libs/NeededEntry.py          |   82 ++
 pym/portage/util/_dyn_libs/soname_deps.py          |  138 +++
 pym/portage/util/compression_probe.py              |   79 ++
 pym/portage/util/cpuinfo.py                        |   18 +
 pym/{_emerge/sync => portage/util/elf}/__init__.py |    2 +-
 pym/portage/util/elf/constants.py                  |   45 +
 pym/portage/util/elf/header.py                     |   65 ++
 .../sync => portage/util/endian}/__init__.py       |    2 +-
 pym/portage/util/endian/decode.py                  |   48 +
 pym/portage/util/iterators/MultiIterGroupBy.py     |   94 ++
 .../sync => portage/util/iterators}/__init__.py    |    2 +-
 pym/portage/util/movefile.py                       |    2 +-
 pym/portage/util/path.py                           |   48 +
 pym/portage/util/socks5.py                         |   81 ++
 pym/portage/util/writeable_check.py                |    2 +-
 pym/portage/versions.py                            |   28 +-
 pym/repoman/check_missingslot.py                   |   31 +
 pym/repoman/utilities.py                           |    7 +-
 setup.py                                           |   27 +-
 196 files changed, 12504 insertions(+), 2861 deletions(-)

diff --cc bin/bashrc-functions.sh
index 1a92738,cc02546..daa00d2
--- a/bin/bashrc-functions.sh
+++ b/bin/bashrc-functions.sh
@@@ -1,12 -1,7 +1,12 @@@
 -#!/bin/bash
 +#!@PORTAGE_BASH@
- # Copyright 1999-2013 Gentoo Foundation
+ # Copyright 1999-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
 +portageq() {
 +	PYTHONPATH=${PORTAGE_PYTHONPATH:-${PORTAGE_PYM_PATH}}\
 +	"${PORTAGE_PYTHON:-@PREFIX_PORTAGE_PYTHON@}" "${PORTAGE_BIN_PATH}/portageq" "$@"
 +}
 +
  register_die_hook() {
  	local x
  	for x in $* ; do
diff --cc bin/dispatch-conf
index 286d821,678a66d..4215e5b
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@@ -21,11 -26,10 +26,11 @@@ if osp.isfile(osp.join(osp.dirname(osp.
  	sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
  import portage
  portage._internal_caller = True
- from portage import os
- from portage import _unicode_decode
- from portage.dispatch_conf import diffstatusoutput
+ from portage import os, shutil
+ from portage import _encodings, _unicode_decode
+ from portage.dispatch_conf import diffstatusoutput, diff_mixed_wrapper
  from portage.process import find_binary, spawn
 +from portage.const import EPREFIX
  
  FIND_EXTANT_CONFIGS  = "find '%s' %s -name '._cfg????_%s' ! -name '.*~' ! -iname '.*.bak' -print"
  DIFF_CONTENTS        = "diff -Nu '%s' '%s'"
diff --cc bin/ebuild-helpers/dohtml
index 70cb1f4,0478e49..bf1f0fe
--- a/bin/ebuild-helpers/dohtml
+++ b/bin/ebuild-helpers/dohtml
@@@ -2,10 -2,14 +2,14 @@@
  # Copyright 2009-2013 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
 -source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh
 +source "${PORTAGE_BIN_PATH:-@PORTAGE_BASE@/bin}"/isolated-functions.sh
  
+ if ___eapi_has_dohtml_deprecated; then
+ 	eqawarn "'${0##*/}' is deprecated in EAPI '$EAPI'"
+ fi
+ 
 -PORTAGE_BIN_PATH=${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}
 -PORTAGE_PYM_PATH=${PORTAGE_PYM_PATH:-/usr/lib/portage/pym}
 +PORTAGE_BIN_PATH=${PORTAGE_BIN_PATH:-@PORTAGE_BASE@/bin}
 +PORTAGE_PYM_PATH=${PORTAGE_PYM_PATH:-@PORTAGE_BASE@/pym}
  # Use safe cwd, avoiding unsafe import for bug #469338.
  export __PORTAGE_HELPER_CWD=${PWD}
  cd "${PORTAGE_PYM_PATH}"
diff --cc bin/egencache
index e2f57a5,f97432f..def4837
--- a/bin/egencache
+++ b/bin/egencache
@@@ -57,8 -58,7 +58,8 @@@ from portage.util._async.run_main_sched
  from portage.util._eventloop.global_event_loop import global_event_loop
  from portage import cpv_getkey
  from portage.dep import Atom, isjustname
- from portage.versions import pkgsplit, vercmp
+ from portage.versions import pkgsplit, vercmp, _pkg_str
 +from portage.const import EPREFIX
  
  try:
  	from xml.etree import ElementTree
diff --cc bin/install-qa-check.d/90world-writable
index 635612d,820683b..bb9b075
--- a/bin/install-qa-check.d/90world-writable
+++ b/bin/install-qa-check.d/90world-writable
@@@ -2,23 -2,34 +2,36 @@@
  
  world_writable_check() {
  	# Now we look for all world writable files.
 -	local unsafe_files=$(find "${ED}" -type f -perm -2 | sed -e "s:^${ED}:/:")
 +	# PREFIX LOCAL: keep offset prefix in the reported files
- 	local unsafe_files=$(find "${ED}" -type f -perm -2 | sed -e "s:^${D}:- :")
++	local unsafe_files=$(find "${ED}" -type f -perm -2 | sed -e "s:^${D}:/:")
 +	# END PREFIX LOCAL
+ 	local OLDIFS x prev_shopts=$-
+ 
+ 	OLDIFS=$IFS
+ 	IFS=$'\n'
+ 	set -f
+ 
  	if [[ -n ${unsafe_files} ]] ; then
- 		__vecho "QA Security Notice: world writable file(s):"
- 		__vecho "${unsafe_files}"
- 		__vecho "- This may or may not be a security problem, most of the time it is one."
- 		__vecho "- Please double check that $PF really needs a world writeable bit and file bugs accordingly."
- 		sleep 1
+ 		eqawarn "QA Security Notice: world writable file(s):"
+ 
+ 		eqatag -v world-writable $unsafe_files
+ 
+ 		eqawarn "This may or may not be a security problem, most of the time it is one."
+ 		eqawarn "Please double check that $PF really needs a world writeable bit and file bugs accordingly."
+ 		eqawarn
  	fi
  
 -	local unsafe_files=$(find "${ED}" -type f '(' -perm -2002 -o -perm -4002 ')' | sed -e "s:^${ED}:/:")
 +	local unsafe_files=$(find "${ED}" -type f '(' -perm -2002 -o -perm -4002 ')' | sed -e "s:^${D}:/:")
  	if [[ -n ${unsafe_files} ]] ; then
  		eqawarn "QA Notice: Unsafe files detected (set*id and world writable)"
- 		eqawarn "${unsafe_files}"
+ 
+ 		eqatag -v world-writable-setid $unsafe_files
+ 
  		die "Unsafe files found in \${D}.  Portage will not install them."
  	fi
+ 
+ 	IFS=$OLDIFS
+ 	[[ ${prev_shopts} == *f* ]] || set +f
  }
  
  world_writable_check
diff --cc bin/misc-functions.sh
index 5b8e872,e08c228..4928575
mode 100644,100755..100644
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@@ -172,19 -168,21 +172,23 @@@ install_qa_check() 
  		local EPREFIX= ED=${D}
  	fi
  
 -	cd "${ED}" || die "cd failed"
 +	# PREFIX LOCAL: ED needs not to exist, whereas D does
 +	cd "${D}" || die "cd failed"
 +	# END PREFIX LOCAL
  
- 	# Run QA checks from install-qa-check.d.
- 	# Note: checks need to be run *before* stripping.
- 	local f
- 	# TODO: handle nullglob-like
- 	for f in "${PORTAGE_BIN_PATH}"/install-qa-check.d/*; do
- 		# Run in a subshell to treat it like external script,
- 		# but use 'source' to pass all variables through.
- 		(
- 			source "${f}" || eerror "Post-install QA check ${f##*/} failed to run"
+ 	# Collect the paths for QA checks, highest prio first.
+ 	paths=(
+ 		# sysadmin overrides
+ 		"${PORTAGE_OVERRIDE_EPREFIX}"/usr/local/lib/install-qa-check.d
+ 		# system-wide package installs
+ 		"${PORTAGE_OVERRIDE_EPREFIX}"/usr/lib/install-qa-check.d
+ 	)
+ 
+ 	# Now repo-specific checks.
+ 	# (yes, PORTAGE_ECLASS_LOCATIONS contains repo paths...)
+ 	for d in "${PORTAGE_ECLASS_LOCATIONS[@]}"; do
+ 		paths+=(
+ 			"${d}"/metadata/install-qa-check.d
  		)
  	done
  
diff --cc bin/phase-functions.sh
index 2dece5a,2743e27..f447fca
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@@ -31,8 -31,8 +31,8 @@@ PORTAGE_READONLY_VARS="D EBUILD EBUILD_
  	PORTAGE_TMPDIR PORTAGE_UPDATE_ENV PORTAGE_USERNAME \
  	PORTAGE_VERBOSE PORTAGE_WORKDIR_MODE PORTAGE_XATTR_EXCLUDE \
  	PORTDIR \
- 	PROFILE_PATHS REPLACING_VERSIONS REPLACED_BY_VERSION T WORKDIR \
+ 	REPLACING_VERSIONS REPLACED_BY_VERSION T WORKDIR \
 -	__PORTAGE_HELPER __PORTAGE_TEST_HARDLINK_LOCKS"
 +	__PORTAGE_HELPER __PORTAGE_TEST_HARDLINK_LOCKS ED EROOT"
  
  PORTAGE_SAVED_READONLY_VARS="A CATEGORY P PF PN PR PV PVR"
  
diff --cc cnf/make.globals
index a57a603,dd99618..880fed5
--- a/cnf/make.globals
+++ b/cnf/make.globals
@@@ -151,24 -122,11 +151,25 @@@ PORTAGE_ELOG_MAILFROM="@portageuser@@lo
  # Signing command used by repoman
  PORTAGE_GPG_SIGNING_COMMAND="gpg --sign --digest-algo SHA256 --clearsign --yes --default-key \"\${PORTAGE_GPG_KEY}\" --homedir \"\${PORTAGE_GPG_DIR}\" \"\${FILE}\""
  
+ # btrfs.* attributes are irrelevant, see bug #527636.
  # Security labels are special, see bug #461868.
  # system.nfs4_acl attributes are irrelevant, see bug #475496.
- PORTAGE_XATTR_EXCLUDE="security.* system.nfs4_acl"
+ PORTAGE_XATTR_EXCLUDE="btrfs.* security.* system.nfs4_acl"
  
 +# Writeable paths for Mac OS X seatbelt sandbox
 +#
 +# If path ends in a slash (/), access will recursively be allowed to directory
 +# contents (using a regex), not the directory itself. Without a slash, access
 +# to the directory or file itself will be allowed (using a literal), so it can
 +# be created, removed and changed. If both is needed, the directory needs to be
 +# given twice, once with and once without the slash. Obviously this only makes
 +# sense for directories, not files.
 +#
 +# An empty value for either variable will disable all restrictions on the
 +# corresponding operation.
 +MACOSSANDBOX_PATHS="/dev/fd/ /private/tmp/ /private/var/tmp/ @@PORTAGE_BUILDDIR@@/ @@PORTAGE_ACTUAL_DISTDIR@@/"
 +MACOSSANDBOX_PATHS_CONTENT_ONLY="/dev/null /dev/dtracehelper /dev/tty /private/var/run/syslog"
 +
  #            *****************************
  #            **  DO NOT EDIT THIS FILE  **
  # ***************************************************
diff --cc cnf/repos.conf
index 18c611a,1ca98ca..4433546
--- a/cnf/repos.conf
+++ b/cnf/repos.conf
@@@ -1,7 -1,8 +1,8 @@@
  [DEFAULT]
 -main-repo = gentoo
 +main-repo = gentoo_prefix
  
 -[gentoo]
 -location = /usr/portage
 +[gentoo_prefix]
 +location = @PORTAGE_EPREFIX@/usr/portage
  sync-type = rsync
 -sync-uri = rsync://rsync.gentoo.org/gentoo-portage
 +sync-uri = rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix
+ auto-sync = yes
diff --cc pym/_emerge/Package.py
index bdf3b23,2c1a116..1570f3d
--- a/pym/_emerge/Package.py
+++ b/pym/_emerge/Package.py
@@@ -13,12 -13,12 +13,13 @@@ from portage.cache.mappings import slot
  from portage.const import EBUILD_PHASES
  from portage.dep import Atom, check_required_use, use_reduce, \
  	paren_enclose, _slot_separator, _repo_separator
+ from portage.dep.soname.parse import parse_soname_deps
  from portage.versions import _pkg_str, _unknown_repo
  from portage.eapi import _get_eapi_attrs, eapi_has_use_aliases
- from portage.exception import InvalidDependString
+ from portage.exception import InvalidData, InvalidDependString
  from portage.localization import _
  from _emerge.Task import Task
 +from portage.const import EPREFIX
  
  if sys.hexversion >= 0x3000000:
  	basestring = str
@@@ -40,11 -41,12 +42,12 @@@ class Package(Task)
  		"_validated_atoms", "_visible")
  
  	metadata_keys = [
- 		"BUILD_TIME", "CHOST", "COUNTER", "DEPEND", "EAPI",
- 		"HDEPEND", "INHERITED", "IUSE", "KEYWORDS",
- 		"LICENSE", "PDEPEND", "PROVIDE", "RDEPEND",
- 		"repository", "PROPERTIES", "RESTRICT", "SLOT", "USE",
- 		"_mtime_", "DEFINED_PHASES", "REQUIRED_USE", "EPREFIX"]
+ 		"BUILD_ID", "BUILD_TIME", "CHOST", "COUNTER", "DEFINED_PHASES",
+ 		"DEPEND", "EAPI", "HDEPEND", "INHERITED", "IUSE", "KEYWORDS",
+ 		"LICENSE", "MD5", "PDEPEND", "PROVIDE", "PROVIDES",
+ 		"RDEPEND", "repository", "REQUIRED_USE",
+ 		"PROPERTIES", "REQUIRES", "RESTRICT", "SIZE",
 -		"SLOT", "USE", "_mtime_"]
++		"SLOT", "USE", "_mtime_", "EPREFIX"]
  
  	_dep_keys = ('DEPEND', 'HDEPEND', 'PDEPEND', 'RDEPEND')
  	_buildtime_keys = ('DEPEND', 'HDEPEND')
diff --cc pym/_emerge/main.py
index a5de7c3,a5dafa3..0bacd68
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@@ -19,8 -19,8 +19,9 @@@ portage.proxy.lazyimport.lazyimport(glo
  	'_emerge.is_valid_package_atom:insert_category_into_atom'
  )
  from portage import os
 +from portage.const import EPREFIX
  from portage.util._argparse import ArgumentParser
+ from portage.sync import _SUBMODULE_PATH_MAP
  
  if sys.hexversion >= 0x3000000:
  	long = int
diff --cc pym/portage/data.py
index f4bbb44,2fd287d..fa89242
--- a/pym/portage/data.py
+++ b/pym/portage/data.py
@@@ -91,52 -147,38 +151,50 @@@ def _get_global(k)
  		#Discover the uid and gid of the portage user/group
  		keyerror = False
  		try:
 -			portage_uid = pwd.getpwnam(_get_global('_portage_username')).pw_uid
 +			username = str(_get_global('_portage_username'))
 +			portage_uid = pwd.getpwnam(username).pw_uid
  		except KeyError:
 -			keyerror = True
 -			portage_uid = 0
 +			# PREFIX LOCAL: some sysadmins are insane, bug #344307
 +			if username.isdigit():
 +				portage_uid = int(username)
 +			else:
 +				keyerror = True
 +				portage_uid = 0
 +			# END PREFIX LOCAL
  
  		try:
 -			portage_gid = grp.getgrnam(_get_global('_portage_grpname')).gr_gid
 +			grpname = str(_get_global('_portage_grpname'))
 +			portage_gid = grp.getgrnam(grpname).gr_gid
  		except KeyError:
 -			keyerror = True
 -			portage_gid = 0
 +			# PREFIX LOCAL: some sysadmins are insane, bug #344307
 +			if grpname.isdigit():
 +				portage_gid = int(grpname)
 +			else:
 +				keyerror = True
 +				portage_gid = 0
 +			# END PREFIX LOCAL
  
- 		if secpass < 1 and portage_gid in os.getgroups():
- 			secpass = 1
- 
  		# Suppress this error message if both PORTAGE_GRPNAME and
  		# PORTAGE_USERNAME are set to "root", for things like
  		# Android (see bug #454060).
  		if keyerror and not (_get_global('_portage_username') == "root" and
  			_get_global('_portage_grpname') == "root"):
 +			# PREFIX LOCAL: we need to fix this one day to distinguish prefix vs non-prefix
 +			writemsg(colorize("BAD",
 +				_("portage: '%s' user or '%s' group missing." % (_get_global('_portage_username'), _get_global('_portage_grpname')))) + "\n", noiselevel=-1)
  			writemsg(colorize("BAD",
 -				_("portage: 'portage' user or group missing.")) + "\n", noiselevel=-1)
 -			writemsg(_(
 -				"         For the defaults, line 1 goes into passwd, "
 -				"and 2 into group.\n"), noiselevel=-1)
 -			writemsg(colorize("GOOD",
 -				"         portage:x:250:250:portage:/var/tmp/portage:/bin/false") \
 -				+ "\n", noiselevel=-1)
 -			writemsg(colorize("GOOD", "         portage::250:portage") + "\n",
 -				noiselevel=-1)
 +				_("         In Prefix Portage this is quite dramatic")) + "\n", noiselevel=-1)
 +			writemsg(colorize("BAD",
 +				_("         since it means you have thrown away yourself.")) + "\n", noiselevel=-1)
 +			writemsg(colorize("BAD",
 +				_("         Re-add yourself or re-bootstrap Gentoo Prefix.")) + "\n", noiselevel=-1)
 +			# END PREFIX LOCAL
  			portage_group_warning()
  
+ 		globals()['portage_gid'] = portage_gid
  		_initialized_globals.add('portage_gid')
+ 		globals()['portage_uid'] = portage_uid
  		_initialized_globals.add('portage_uid')
- 		_initialized_globals.add('secpass')
  
  		if k == 'portage_gid':
  			return portage_gid
@@@ -206,28 -244,24 +260,29 @@@
  			except OSError:
  				pass
  			else:
- 				if k == '_portage_grpname':
- 					try:
- 						grp_struct = grp.getgrgid(eroot_st.st_gid)
- 					except KeyError:
- 						v = eroot_st.st_gid
- 					else:
- 						v = grp_struct.gr_name
- 				else:
- 					try:
- 						pwd_struct = pwd.getpwuid(eroot_st.st_uid)
- 					except KeyError:
- 						v = eroot_st.st_uid
+ 				if _unprivileged_mode(eroot_or_parent, eroot_st):
+ 					if k == '_portage_grpname':
+ 						try:
+ 							grp_struct = grp.getgrgid(eroot_st.st_gid)
+ 						except KeyError:
+ 							pass
+ 						else:
+ 							v = grp_struct.gr_name
  					else:
- 						v = pwd_struct.pw_name
+ 						try:
+ 							pwd_struct = pwd.getpwuid(eroot_st.st_uid)
+ 						except KeyError:
+ 							pass
+ 						else:
+ 							v = pwd_struct.pw_name
  
  		if v is None:
 -			v = 'portage'
 +			# PREFIX LOCAL: use var iso hardwired 'portage'
 +			if k == '_portage_grpname':
 +				v = PORTAGE_GROUPNAME
 +			else:
 +				v = PORTAGE_USERNAME
 +			# END PREFIX LOCAL
  	else:
  		raise AssertionError('unknown name: %s' % k)
  
diff --cc pym/portage/dbapi/bintree.py
index 45e8614,b37f388..e3e50e0
--- a/pym/portage/dbapi/bintree.py
+++ b/pym/portage/dbapi/bintree.py
@@@ -70,18 -70,26 +71,26 @@@ class bindbapi(fakedbapi)
  	_known_keys = frozenset(list(fakedbapi._known_keys) + \
  		["CHOST", "repository", "USE"])
  	def __init__(self, mybintree=None, **kwargs):
- 		fakedbapi.__init__(self, **kwargs)
+ 		# Always enable multi_instance mode for bindbapi indexing. This
+ 		# does not affect the local PKGDIR file layout, since that is
+ 		# controlled independently by FEATURES=binpkg-multi-instance.
+ 		# The multi_instance mode is useful for the following reasons:
+ 		# * binary packages with the same cpv from multiple binhosts
+ 		#   can be considered simultaneously
+ 		# * if binpkg-multi-instance is disabled, it's still possible
+ 		#   to properly access a PKGDIR which has binpkg-multi-instance
+ 		#   layout (or mixed layout)
+ 		fakedbapi.__init__(self, exclusive_slots=False,
+ 			multi_instance=True, **kwargs)
  		self.bintree = mybintree
  		self.move_ent = mybintree.move_ent
- 		self.cpvdict={}
- 		self.cpdict={}
  		# Selectively cache metadata in order to optimize dep matching.
  		self._aux_cache_keys = set(
- 			["BUILD_TIME", "CHOST", "DEPEND", "EAPI",
- 			"HDEPEND", "IUSE", "KEYWORDS",
- 			"LICENSE", "PDEPEND", "PROPERTIES", "PROVIDE",
- 			"RDEPEND", "repository", "RESTRICT", "SLOT", "USE", "DEFINED_PHASES",
- 			"EPREFIX"
+ 			["BUILD_ID", "BUILD_TIME", "CHOST", "DEFINED_PHASES",
+ 			"DEPEND", "EAPI", "HDEPEND", "IUSE", "KEYWORDS",
+ 			"LICENSE", "MD5", "PDEPEND", "PROPERTIES", "PROVIDE",
+ 			"PROVIDES", "RDEPEND", "repository", "REQUIRES", "RESTRICT",
 -			"SIZE", "SLOT", "USE", "_mtime_"
++			"SIZE", "SLOT", "USE", "_mtime_", "EPREFIX"
  			])
  		self._aux_cache_slot_dict = slot_dict_class(self._aux_cache_keys)
  		self._aux_cache = {}
@@@ -306,12 -311,14 +312,14 @@@ class binarytree(object)
  			self._pkgindex_hashes = ["MD5","SHA1"]
  			self._pkgindex_file = os.path.join(self.pkgdir, "Packages")
  			self._pkgindex_keys = self.dbapi._aux_cache_keys.copy()
- 			self._pkgindex_keys.update(["CPV", "MTIME", "SIZE"])
+ 			self._pkgindex_keys.update(["CPV", "SIZE"])
  			self._pkgindex_aux_keys = \
- 				["BUILD_TIME", "CHOST", "DEPEND", "DESCRIPTION", "EAPI",
- 				"HDEPEND", "IUSE", "KEYWORDS", "LICENSE", "PDEPEND", "PROPERTIES",
- 				"PROVIDE", "RESTRICT", "RDEPEND", "repository", "SLOT", "USE", "DEFINED_PHASES",
- 				"BASE_URI", "EPREFIX"]
+ 				["BASE_URI", "BUILD_ID", "BUILD_TIME", "CHOST",
+ 				"DEFINED_PHASES", "DEPEND", "DESCRIPTION", "EAPI",
+ 				"HDEPEND", "IUSE", "KEYWORDS", "LICENSE", "PDEPEND",
+ 				"PKGINDEX_URI", "PROPERTIES", "PROVIDE", "PROVIDES",
+ 				"RDEPEND", "repository", "REQUIRES", "RESTRICT",
 -				"SIZE", "SLOT", "USE"]
++				"SIZE", "SLOT", "USE", "EPREFIX"]
  			self._pkgindex_aux_keys = list(self._pkgindex_aux_keys)
  			self._pkgindex_use_evaluated_keys = \
  				("DEPEND", "HDEPEND", "LICENSE", "RDEPEND",
@@@ -322,9 -329,9 +330,10 @@@
  				"CONFIG_PROTECT", "CONFIG_PROTECT_MASK", "FEATURES",
  				"GENTOO_MIRRORS", "INSTALL_MASK", "IUSE_IMPLICIT", "USE",
  				"USE_EXPAND", "USE_EXPAND_HIDDEN", "USE_EXPAND_IMPLICIT",
 -				"USE_EXPAND_UNPREFIXED"])
 +				"USE_EXPAND_UNPREFIXED",
 +				"EPREFIX"])
  			self._pkgindex_default_pkg_data = {
+ 				"BUILD_ID"           : "",
  				"BUILD_TIME"         : "",
  				"DEFINED_PHASES"     : "",
  				"DEPEND"  : "",
diff --cc pym/portage/dbapi/vartree.py
index a0881a2,277c2f1..a037200
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@@ -1077,8 -1097,8 +1112,11 @@@ class vardbapi(dbapi)
  				# Empty path is a code used to represent empty contents.
  				self._add_path("", pkg_hash)
  
- 			for x in contents:
- 				self._add_path(x[eroot_len:], pkg_hash)
+ 			for x in db._contents.keys():
 -				self._add_path(x[eroot_len:], pkg_hash)
++				path = x[eroot_len:]
++				if "case-insensitive-fs" in self._vardb.settings.features:
++					path = path.lower()
++				self._add_path(patch, pkg_hash)
  
  			self._vardb._aux_cache["modified"].add(cpv)
  
@@@ -1259,14 -1279,16 +1297,18 @@@
  								continue
  
  							if is_basename:
- 								for p in dblink(cpv).getcontents():
+ 								for p in dblink(cpv)._contents.keys():
 +									if case_insensitive:
 +										p = p.lower()
  									if os.path.basename(p) == name:
- 										owners.append((cpv, p[len(root):]))
+ 										owners.append((cpv, dblink(cpv).
+ 										_contents.unmap_key(
+ 										p)[len(root):]))
  							else:
- 								if dblink(cpv).isowner(path):
- 									owners.append((cpv, path))
+ 								key = dblink(cpv)._match_contents(path)
+ 								if key is not False:
+ 									owners.append(
+ 										(cpv, key[len(root):]))
  
  					except StopIteration:
  						path_iter.append(path)
@@@ -1314,14 -1336,16 +1356,18 @@@
  				dblnk = self._vardb._dblink(cpv)
  				for path, name, is_basename in path_info_list:
  					if is_basename:
- 						for p in dblnk.getcontents():
+ 						for p in dblnk._contents.keys():
 +							if case_insensitive:
 +								p = p.lower()
  							if os.path.basename(p) == name:
- 								search_pkg.results.append((dblnk, p[len(root):]))
+ 								search_pkg.results.append((dblnk,
+ 									dblnk._contents.unmap_key(
+ 										p)[len(root):]))
  					else:
- 						if dblnk.isowner(path):
- 							search_pkg.results.append((dblnk, path))
+ 						key = dblnk._match_contents(path)
+ 						if key is not False:
+ 							search_pkg.results.append(
+ 								(dblnk, key[len(root):]))
  				search_pkg.complete = True
  				return False
  
@@@ -2795,24 -2828,18 +2850,26 @@@ class dblink(object)
  			os_filename_arg.path.join(destroot,
  			filename.lstrip(os_filename_arg.path.sep)))
  
 +		pkgfiles = self.getcontents()
 +
 +		preserve_case = None
  		if "case-insensitive-fs" in self.settings.features:
  			destfile = destfile.lower()
 -
 -		if self._contents.contains(destfile):
 -			return self._contents.unmap_key(destfile)
 -
 -		if self.getcontents():
 +			preserve_case = dict((k.lower(), k) for k in pkgfiles)
 +			pkgfiles = dict((k.lower(), v) for k, v in pkgfiles.items())
 +
 +		if pkgfiles and destfile in pkgfiles:
 +			if preserve_case is not None:
 +				return preserve_case[destfile]
 +			return destfile
++		#if self._contents.contains(destfile):
++		#	return self._contents.unmap_key(destfile)
 +		if pkgfiles:
  			basename = os_filename_arg.path.basename(destfile)
  			if self._contents_basenames is None:
  
  				try:
- 					for x in pkgfiles:
 -					for x in self._contents.keys():
++					for x in pkgfiles):
  						_unicode_encode(x,
  							encoding=_encodings['merge'],
  							errors='strict')
@@@ -2897,10 -2924,8 +2954,12 @@@
  			if p_path_list:
  				for p_path in p_path_list:
  					x = os_filename_arg.path.join(p_path, basename)
 -					if self._contents.contains(x):
 -						return self._contents.unmap_key(x)
 +					if x in pkgfiles:
 +						if preserve_case is not None:
 +							return preserve_case[x]
 +						return x
++					#if self._contents.contains(x):
++					#	return self._contents.unmap_key(x)
  
  		return False
  
diff --cc pym/portage/package/ebuild/config.py
index 6e578a9,3a4007b..18e95ff
--- a/pym/portage/package/ebuild/config.py
+++ b/pym/portage/package/ebuild/config.py
@@@ -834,40 -857,38 +857,44 @@@ class config(object)
  				"PORTAGE_INST_UID": "0",
  			}
  
 -			eroot_or_parent = first_existing(eroot)
 -			unprivileged = False
 -			try:
 -				eroot_st = os.stat(eroot_or_parent)
 -			except OSError:
 -				pass
 -			else:
 -
 -				if portage.data._unprivileged_mode(
 -					eroot_or_parent, eroot_st):
 -					unprivileged = True
 -
 -					default_inst_ids["PORTAGE_INST_GID"] = str(eroot_st.st_gid)
 -					default_inst_ids["PORTAGE_INST_UID"] = str(eroot_st.st_uid)
 -
 -					if "PORTAGE_USERNAME" not in self:
 -						try:
 -							pwd_struct = pwd.getpwuid(eroot_st.st_uid)
 -						except KeyError:
 -							pass
 -						else:
 -							self["PORTAGE_USERNAME"] = pwd_struct.pw_name
 -							self.backup_changes("PORTAGE_USERNAME")
 -
 -					if "PORTAGE_GRPNAME" not in self:
 -						try:
 -							grp_struct = grp.getgrgid(eroot_st.st_gid)
 -						except KeyError:
 -							pass
 -						else:
 -							self["PORTAGE_GRPNAME"] = grp_struct.gr_name
 -							self.backup_changes("PORTAGE_GRPNAME")
 +			# PREFIX LOCAL: inventing UID/GID based on a path is a very
 +			# bad idea, it breaks almost everything since group ids
 +			# don't have to match, when a user has many
 +			# This in particularly breaks the configure-set portage
 +			# group and user (in portage/data.py)
- 			#if eprefix:
- 			#	# For prefix environments, default to the UID and GID of
- 			#	# the top-level EROOT directory.
- 			#	try:
- 			#		eroot_st = os.stat(eroot)
- 			#	except OSError:
- 			#		pass
- 			#	else:
- 			#		default_inst_ids["PORTAGE_INST_GID"] = str(eroot_st.st_gid)
- 			#		default_inst_ids["PORTAGE_INST_UID"] = str(eroot_st.st_uid)
- 
- 			#		if "PORTAGE_USERNAME" not in self:
- 			#			try:
- 			#				pwd_struct = pwd.getpwuid(eroot_st.st_uid)
- 			#			except KeyError:
- 			#				pass
- 			#			else:
- 			#				self["PORTAGE_USERNAME"] = pwd_struct.pw_name
- 			#				self.backup_changes("PORTAGE_USERNAME")
- 
- 			#		if "PORTAGE_GRPNAME" not in self:
- 			#			try:
- 			#				grp_struct = grp.getgrgid(eroot_st.st_gid)
- 			#			except KeyError:
- 			#				pass
- 			#			else:
- 			#				self["PORTAGE_GRPNAME"] = grp_struct.gr_name
- 			#				self.backup_changes("PORTAGE_GRPNAME")
++#			eroot_or_parent = first_existing(eroot)
++#			unprivileged = False
++#			try:
++#				eroot_st = os.stat(eroot_or_parent)
++#			except OSError:
++#				pass
++#			else:
++#
++#				if portage.data._unprivileged_mode(
++#					eroot_or_parent, eroot_st):
++#					unprivileged = True
++#
++#					default_inst_ids["PORTAGE_INST_GID"] = str(eroot_st.st_gid)
++#					default_inst_ids["PORTAGE_INST_UID"] = str(eroot_st.st_uid)
++#
++#					if "PORTAGE_USERNAME" not in self:
++#						try:
++#							pwd_struct = pwd.getpwuid(eroot_st.st_uid)
++#						except KeyError:
++#							pass
++#						else:
++#							self["PORTAGE_USERNAME"] = pwd_struct.pw_name
++#							self.backup_changes("PORTAGE_USERNAME")
++#
++#					if "PORTAGE_GRPNAME" not in self:
++#						try:
++#							grp_struct = grp.getgrgid(eroot_st.st_gid)
++#						except KeyError:
++#							pass
++#						else:
++#							self["PORTAGE_GRPNAME"] = grp_struct.gr_name
++#							self.backup_changes("PORTAGE_GRPNAME")
 +			# END PREFIX LOCAL
  
  			for var, default_val in default_inst_ids.items():
  				try:
diff --cc pym/portage/util/_dyn_libs/LinkageMapELF.py
index e4f8ee8,c44666a..c78f397
--- a/pym/portage/util/_dyn_libs/LinkageMapELF.py
+++ b/pym/portage/util/_dyn_libs/LinkageMapELF.py
@@@ -16,9 -16,33 +16,35 @@@ from portage.localization import 
  from portage.util import getlibpaths
  from portage.util import grabfile
  from portage.util import normalize_path
+ from portage.util import varexpand
  from portage.util import writemsg_level
+ from portage.util._dyn_libs.NeededEntry import NeededEntry
 +from portage.const import EPREFIX
  
+ # Map ELF e_machine values from NEEDED.ELF.2 to approximate multilib
+ # categories. This approximation will produce incorrect results on x32
+ # and mips systems, but the result is not worse than using the raw
+ # e_machine value which was used by earlier versions of portage.
+ _approx_multilib_categories = {
+ 	"386":           "x86_32",
+ 	"68K":           "m68k_32",
+ 	"AARCH64":       "arm_64",
+ 	"ALPHA":         "alpha_64",
+ 	"ARM":           "arm_32",
+ 	"IA_64":         "ia_64",
+ 	"MIPS":          "mips_o32",
+ 	"PARISC":        "hppa_64",
+ 	"PPC":           "ppc_32",
+ 	"PPC64":         "ppc_64",
+ 	"S390":          "s390_64",
+ 	"SH":            "sh_32",
+ 	"SPARC":         "sparc_32",
+ 	"SPARC32PLUS":   "sparc_32",
+ 	"SPARCV9":       "sparc_64",
+ 	"X86_64":        "x86_64",
+ }
++>>>>>>> overlays-gentoo-org/master
+ 
  class LinkageMapELF(object):
  
  	"""Models dynamic linker dependencies."""


             reply	other threads:[~2015-04-05  9:15 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-05  9:15 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
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-22 17:25 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=1428225228.eed711a2e330ae73978bd7612ae596a7b3f7adbb.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