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, 24 Jul 2022 09:45:50 +0000 (UTC)	[thread overview]
Message-ID: <1658655931.6bb0b79ecb88e536b2cdea570b0972c798170c4f.grobian@gentoo> (raw)

commit:     6bb0b79ecb88e536b2cdea570b0972c798170c4f
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun Jul 24 09:44:45 2022 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun Jul 24 09:45:31 2022 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=6bb0b79e

Merge remote-tracking branch 'origin/master' into prefix

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 .gitignorerevs => .git-blame-ignore-revs           |    4 +
 .github/workflows/black.yml                        |    8 +
 .github/workflows/ci.yml                           |    6 +-
 .gitignore                                         |    2 -
 DEVELOPING                                         |   40 +-
 MANIFEST.in                                        |    3 +
 NEWS                                               |  215 +-
 README.md                                          |    9 +-
 RELEASE-NOTES                                      |    3 +
 bin/archive-conf                                   |   46 +-
 bin/binhost-snapshot                               |  264 ++-
 bin/check-implicit-pointer-usage.py                |    2 +-
 bin/chmod-lite.py                                  |    2 +-
 bin/chpathtool.py                                  |    2 +-
 bin/clean_locks                                    |   58 +-
 bin/dispatch-conf                                  |  347 +--
 bin/dohtml.py                                      |    4 +-
 bin/doins.py                                       |    2 +-
 bin/eapi.sh                                        |  134 +-
 bin/ebuild                                         |  514 ++--
 bin/ebuild-helpers/dosym                           |    2 +-
 bin/ebuild-ipc.py                                  |    2 +-
 bin/ebuild.sh                                      |  120 +-
 bin/egencache                                      | 2437 ++++++++++---------
 bin/emaint                                         |   45 +-
 bin/emerge                                         |  130 +-
 bin/emirrordist                                    |   20 +-
 bin/env-update                                     |   46 +-
 bin/estrip                                         |   22 +-
 bin/filter-bash-environment.py                     |   20 +-
 bin/fixpackages                                    |   42 +-
 bin/glsa-check                                     |  705 +++---
 bin/{xpak-helper.py => gpkg-helper.py}             |   33 +-
 bin/install-qa-check.d/05prefix                    |    4 +-
 bin/install-qa-check.d/10ignored-flags             |    5 +-
 bin/install-qa-check.d/20runtime-directories       |    4 +-
 bin/install-qa-check.d/60pkgconfig                 |  118 +-
 bin/install-qa-check.d/95empty-dirs                |    2 +-
 bin/install.py                                     |    2 +-
 bin/isolated-functions.sh                          |   31 +-
 bin/lock-helper.py                                 |    2 +-
 bin/misc-functions.sh                              |  140 +-
 bin/phase-functions.sh                             |   42 +-
 bin/phase-helpers.sh                               |  230 +-
 bin/pid-ns-init                                    |   42 +-
 bin/portageq                                       | 2451 +++++++++++---------
 bin/quickpkg                                       |  718 +++---
 bin/regenworld                                     |  209 +-
 bin/save-ebuild-env.sh                             |    7 -
 bin/shelve-utils                                   |   40 +-
 bin/socks5-server.py                               |    4 +-
 bin/xattr-helper.py                                |    4 +-
 bin/xpak-helper.py                                 |    2 +-
 cnf/dispatch-conf.conf                             |    6 +-
 cnf/make.conf.example                              |   36 +
 cnf/make.globals                                   |   25 +-
 doc/package/ebuild.docbook                         |    2 -
 doc/package/ebuild/eapi/4-python.docbook           |  160 --
 doc/package/ebuild/eapi/5-progress.docbook         |  247 --
 doc/portage.docbook                                |    2 -
 lib/_emerge/Binpkg.py                              |   13 +-
 lib/_emerge/BinpkgExtractorAsync.py                |    9 +
 lib/_emerge/BinpkgFetcher.py                       |   31 +-
 lib/_emerge/EbuildBinpkg.py                        |   16 +-
 lib/_emerge/EbuildMetadataPhase.py                 |   17 -
 lib/_emerge/EbuildPhase.py                         |   33 +-
 lib/_emerge/MiscFunctionsProcess.py                |   11 +
 lib/_emerge/Package.py                             |   60 +-
 lib/_emerge/Scheduler.py                           |    2 +-
 lib/_emerge/actions.py                             |  107 +-
 lib/_emerge/depgraph.py                            |   48 +-
 lib/_emerge/is_valid_package_atom.py               |    2 +-
 lib/_emerge/main.py                                |  105 +-
 lib/_emerge/resolver/output.py                     |    2 +-
 lib/_emerge/resolver/package_tracker.py            |    8 +-
 lib/_emerge/resolver/slot_collision.py             |   32 +-
 lib/portage/__init__.py                            |   74 +-
 lib/portage/_global_updates.py                     |   74 +-
 lib/portage/_sets/__init__.py                      |    2 +-
 lib/portage/_sets/base.py                          |    2 +-
 lib/portage/_sets/files.py                         |    8 +-
 lib/portage/binpkg.py                              |   56 +
 lib/portage/cache/anydbm.py                        |    4 +-
 lib/portage/cache/cache_errors.py                  |    2 +-
 lib/portage/cache/mappings.py                      |    4 +-
 lib/portage/cache/sql_template.py                  |    6 +-
 lib/portage/checksum.py                            |   39 +-
 lib/portage/const.py                               |   72 +-
 lib/portage/data.py                                |   65 +-
 lib/portage/dbapi/_MergeProcess.py                 |   22 +
 lib/portage/dbapi/__init__.py                      |   40 +-
 lib/portage/dbapi/bintree.py                       |  529 ++++-
 lib/portage/dbapi/porttree.py                      |    6 +-
 lib/portage/dbapi/vartree.py                       |  176 +-
 lib/portage/dep/__init__.py                        |  152 +-
 lib/portage/dep/dep_check.py                       |    8 +-
 lib/portage/dispatch_conf.py                       |   99 +-
 lib/portage/eapi.py                                |  495 ++--
 lib/portage/eclass_cache.py                        |   11 +-
 lib/portage/exception.py                           |   26 +-
 lib/portage/getbinpkg.py                           |  245 +-
 lib/portage/glsa.py                                |  177 +-
 lib/portage/gpg.py                                 |  106 +
 lib/portage/gpkg.py                                | 2016 ++++++++++++++++
 lib/portage/localization.py                        |    8 +-
 lib/portage/mail.py                                |   16 +-
 lib/portage/manifest.py                            |  412 ++--
 lib/portage/metadata.py                            |   34 +-
 lib/portage/module.py                              |   76 +-
 lib/portage/news.py                                |   75 +-
 lib/portage/output.py                              |   75 +-
 lib/portage/package/ebuild/_config/UseManager.py   |  176 --
 .../package/ebuild/_config/special_env_vars.py     |    2 +-
 .../package/ebuild/_config/unpack_dependencies.py  |   55 -
 lib/portage/package/ebuild/config.py               |  112 +-
 lib/portage/package/ebuild/doebuild.py             |   22 +-
 lib/portage/package/ebuild/fetch.py                |    2 +-
 lib/portage/sync/modules/git/git.py                |   43 +-
 .../06B3A311BD775C280D22A9305D90EA06352177F6.rev   |   37 +
 .../8DEDA2CDED49C8809287B89D8812797DDF1DD192.rev   |   37 +
 .../273B030399E7BEA66A9AD42216DE7CA17BA5D42E.key   |  Bin 0 -> 2055 bytes
 .../C99796FB85B0C3DF03314A11B5850C51167D6282.key   |  Bin 0 -> 2055 bytes
 lib/portage/tests/.gnupg/pubring.kbx               |  Bin 0 -> 2774 bytes
 lib/portage/tests/.gnupg/trustdb.gpg               |  Bin 0 -> 1360 bytes
 lib/portage/tests/__init__.py                      |   37 +-
 lib/portage/tests/bin/test_filter_bash_env.py      |    4 +-
 lib/portage/tests/dep/testAtom.py                  |   34 +-
 lib/portage/tests/dep/test_isvalidatom.py          |    9 -
 lib/portage/tests/emerge/test_simple.py            |   47 +-
 .../portage/tests/gpkg}/__init__.py                |    0
 .../tests => lib/portage/tests/gpkg}/__test__.py   |    0
 lib/portage/tests/gpkg/test_gpkg_checksum.py       |  396 ++++
 lib/portage/tests/gpkg/test_gpkg_gpg.py            |  398 ++++
 .../tests/gpkg/test_gpkg_metadata_update.py        |   59 +
 lib/portage/tests/gpkg/test_gpkg_metadata_url.py   |  173 ++
 lib/portage/tests/gpkg/test_gpkg_path.py           |  390 ++++
 lib/portage/tests/gpkg/test_gpkg_size.py           |   58 +
 lib/portage/tests/gpkg/test_gpkg_stream.py         |  112 +
 .../test_lazy_import_portage_baseline.py           |    2 +-
 lib/portage/tests/process/test_PipeLogger.py       |   14 +-
 lib/portage/tests/process/test_PopenProcess.py     |    2 +-
 .../tests/process/test_PopenProcessBlockingIO.py   |    2 +-
 lib/portage/tests/process/test_poll.py             |    2 +-
 lib/portage/tests/resolver/ResolverPlayground.py   |   71 +-
 .../test_build_id_profile_format.py                |   50 +-
 .../binpkg_multi_instance/test_rebuilt_binaries.py |   44 +-
 .../tests/resolver/soname/test_autounmask.py       |   38 +-
 .../tests/resolver/soname/test_downgrade.py        |   84 +-
 .../tests/resolver/soname/test_or_choices.py       |   39 +-
 .../tests/resolver/soname/test_reinstall.py        |   40 +-
 .../tests/resolver/soname/test_skip_update.py      |   39 +-
 .../soname/test_slot_conflict_reinstall.py         |  135 +-
 .../resolver/soname/test_slot_conflict_update.py   |   38 +-
 .../tests/resolver/soname/test_soname_provided.py  |   45 +-
 .../tests/resolver/soname/test_unsatisfiable.py    |   40 +-
 .../tests/resolver/soname/test_unsatisfied.py      |   40 +-
 .../tests/resolver/test_autounmask_binpkg_use.py   |   38 +-
 lib/portage/tests/resolver/test_bdeps.py           |   44 +-
 .../resolver/test_binary_pkg_ebuild_visibility.py  |   35 +-
 lib/portage/tests/resolver/test_changed_deps.py    |   41 +-
 ...test_complete_if_new_subslot_without_revbump.py |   40 +-
 .../resolver/test_disjunctive_depend_order.py      |   34 +-
 lib/portage/tests/resolver/test_installkernel.py   |   93 +
 lib/portage/tests/resolver/test_multirepo.py       |   62 +-
 .../test_regular_slot_change_without_revbump.py    |   41 +-
 lib/portage/tests/resolver/test_simple.py          |   34 +-
 lib/portage/tests/resolver/test_slot_abi.py        |  113 +-
 .../tests/resolver/test_slot_abi_downgrade.py      |   77 +-
 .../resolver/test_slot_change_without_revbump.py   |   40 +-
 .../resolver/test_slot_operator_autounmask.py      |   40 +-
 .../tests/resolver/test_slot_operator_bdeps.py     |   74 +-
 .../tests/resolver/test_slot_operator_rebuild.py   |   40 +-
 .../tests/resolver/test_slot_operator_unsolved.py  |   41 +-
 .../tests/resolver/test_unecessary_slot_upgrade.py |   11 -
 lib/portage/tests/resolver/test_useflags.py        |   37 +-
 lib/portage/tests/runTests.py                      |   14 +-
 lib/portage/tests/update/test_move_ent.py          |  129 +-
 lib/portage/tests/update/test_move_slot_ent.py     |  139 +-
 lib/portage/tests/update/test_update_dbentry.py    |  168 +-
 lib/portage/tests/util/file_copy/test_copyfile.py  |    6 +-
 lib/portage/tests/util/test_install_mask.py        |   33 +-
 lib/portage/tests/util/test_mtimedb.py             |  362 +++
 lib/portage/tests/xpak/test_decodeint.py           |    2 +-
 lib/portage/util/_urlopen.py                       |    4 +-
 lib/portage/util/backoff.py                        |    2 +-
 lib/portage/util/changelog.py                      |    2 +-
 lib/portage/util/install_mask.py                   |   18 +-
 lib/portage/util/lafilefixer.py                    |    6 +-
 lib/portage/util/movefile.py                       |   16 +-
 lib/portage/util/mtimedb.py                        |  102 +-
 lib/portage/util/whirlpool.py                      |   16 +-
 lib/portage/versions.py                            |   82 +-
 lib/portage/xml/metadata.py                        |    2 +-
 man/ebuild.1                                       |   35 +-
 man/ebuild.5                                       |   86 +-
 man/make.conf.5                                    |  100 +-
 man/portage.5                                      |   52 +-
 pylintrc                                           |    1 -
 repoman/.repoman_not_installed                     |    0
 repoman/MANIFEST.in                                |    4 -
 repoman/NEWS                                       |   14 -
 repoman/README                                     |   49 -
 repoman/RELEASE-NOTES                              |  213 --
 repoman/TEST-NOTES                                 |   45 -
 repoman/bin/repoman                                |   52 -
 repoman/cnf/linechecks/linechecks.yaml             |   34 -
 repoman/cnf/metadata.xsd                           |  548 -----
 repoman/cnf/qa_data/qa_data.yaml                   |  139 --
 repoman/cnf/repository/linechecks.yaml             |  251 --
 repoman/cnf/repository/qa_data.yaml                |  163 --
 repoman/cnf/repository/repository.yaml             |   76 -
 repoman/lib/repoman/__init__.py                    |  103 -
 repoman/lib/repoman/_portage.py                    |   26 -
 repoman/lib/repoman/_subprocess.py                 |   58 -
 repoman/lib/repoman/actions.py                     |  828 -------
 repoman/lib/repoman/argparser.py                   |  388 ----
 repoman/lib/repoman/check_missingslot.py           |   39 -
 repoman/lib/repoman/checks/__init__.py             |    0
 repoman/lib/repoman/config.py                      |  172 --
 repoman/lib/repoman/copyrights.py                  |  143 --
 repoman/lib/repoman/errors.py                      |   21 -
 repoman/lib/repoman/gpg.py                         |   73 -
 repoman/lib/repoman/main.py                        |  255 --
 repoman/lib/repoman/metadata.py                    |   89 -
 repoman/lib/repoman/modules/__init__.py            |    0
 repoman/lib/repoman/modules/commit/__init__.py     |    0
 repoman/lib/repoman/modules/commit/manifest.py     |  122 -
 repoman/lib/repoman/modules/commit/repochecks.py   |   44 -
 repoman/lib/repoman/modules/linechecks/__init__.py |    0
 .../modules/linechecks/assignment/__init__.py      |   27 -
 .../modules/linechecks/assignment/assignment.py    |   38 -
 repoman/lib/repoman/modules/linechecks/base.py     |  115 -
 repoman/lib/repoman/modules/linechecks/config.py   |  149 --
 .../lib/repoman/modules/linechecks/controller.py   |  164 --
 .../repoman/modules/linechecks/depend/__init__.py  |   21 -
 .../repoman/modules/linechecks/depend/implicit.py  |   38 -
 .../modules/linechecks/deprecated/__init__.py      |   46 -
 .../modules/linechecks/deprecated/deprecated.py    |   35 -
 .../modules/linechecks/deprecated/inherit.py       |   67 -
 .../lib/repoman/modules/linechecks/do/__init__.py  |   21 -
 repoman/lib/repoman/modules/linechecks/do/dosym.py |   20 -
 .../repoman/modules/linechecks/eapi/__init__.py    |   51 -
 .../lib/repoman/modules/linechecks/eapi/checks.py  |   79 -
 .../repoman/modules/linechecks/eapi/definition.py  |   35 -
 .../repoman/modules/linechecks/emake/__init__.py   |   27 -
 .../lib/repoman/modules/linechecks/emake/emake.py  |   25 -
 .../modules/linechecks/gentoo_header/__init__.py   |   21 -
 .../modules/linechecks/gentoo_header/header.py     |   56 -
 .../repoman/modules/linechecks/helpers/__init__.py |   21 -
 .../repoman/modules/linechecks/helpers/offset.py   |   21 -
 .../repoman/modules/linechecks/nested/__init__.py  |   21 -
 .../repoman/modules/linechecks/nested/nested.py    |   14 -
 .../repoman/modules/linechecks/nested/nesteddie.py |    9 -
 .../repoman/modules/linechecks/patches/__init__.py |   21 -
 .../repoman/modules/linechecks/patches/patches.py  |   24 -
 .../repoman/modules/linechecks/phases/__init__.py  |   40 -
 .../lib/repoman/modules/linechecks/phases/phase.py |  188 --
 .../repoman/modules/linechecks/portage/__init__.py |   27 -
 .../repoman/modules/linechecks/portage/internal.py |   32 -
 .../repoman/modules/linechecks/quotes/__init__.py  |   27 -
 .../repoman/modules/linechecks/quotes/quoteda.py   |   15 -
 .../repoman/modules/linechecks/quotes/quotes.py    |   92 -
 .../lib/repoman/modules/linechecks/uri/__init__.py |   21 -
 repoman/lib/repoman/modules/linechecks/uri/uri.py  |   30 -
 .../lib/repoman/modules/linechecks/use/__init__.py |   21 -
 .../repoman/modules/linechecks/use/builtwith.py    |    9 -
 .../repoman/modules/linechecks/useless/__init__.py |   27 -
 .../lib/repoman/modules/linechecks/useless/cd.py   |   24 -
 .../repoman/modules/linechecks/useless/dodoc.py    |   17 -
 .../modules/linechecks/whitespace/__init__.py      |   27 -
 .../repoman/modules/linechecks/whitespace/blank.py |   24 -
 .../modules/linechecks/whitespace/whitespace.py    |   20 -
 .../modules/linechecks/workaround/__init__.py      |   21 -
 .../modules/linechecks/workaround/workarounds.py   |   11 -
 repoman/lib/repoman/modules/scan/__init__.py       |    0
 .../lib/repoman/modules/scan/depend/__init__.py    |   43 -
 .../repoman/modules/scan/depend/_depend_checks.py  |  260 ---
 .../lib/repoman/modules/scan/depend/_gen_arches.py |   67 -
 repoman/lib/repoman/modules/scan/depend/profile.py |  427 ----
 .../repoman/modules/scan/directories/__init__.py   |   53 -
 .../lib/repoman/modules/scan/directories/files.py  |   99 -
 .../lib/repoman/modules/scan/directories/mtime.py  |   30 -
 repoman/lib/repoman/modules/scan/eapi/__init__.py  |   28 -
 repoman/lib/repoman/modules/scan/eapi/eapi.py      |   50 -
 .../lib/repoman/modules/scan/ebuild/__init__.py    |   66 -
 repoman/lib/repoman/modules/scan/ebuild/ebuild.py  |  263 ---
 .../lib/repoman/modules/scan/ebuild/multicheck.py  |   62 -
 .../lib/repoman/modules/scan/eclasses/__init__.py  |   49 -
 repoman/lib/repoman/modules/scan/eclasses/live.py  |   77 -
 repoman/lib/repoman/modules/scan/eclasses/ruby.py  |   49 -
 repoman/lib/repoman/modules/scan/fetch/__init__.py |   37 -
 repoman/lib/repoman/modules/scan/fetch/fetches.py  |  205 --
 .../lib/repoman/modules/scan/keywords/__init__.py  |   37 -
 .../lib/repoman/modules/scan/keywords/keywords.py  |  179 --
 .../lib/repoman/modules/scan/manifest/__init__.py  |   34 -
 .../lib/repoman/modules/scan/manifest/manifests.py |   56 -
 .../lib/repoman/modules/scan/metadata/__init__.py  |   89 -
 .../repoman/modules/scan/metadata/description.py   |   44 -
 .../modules/scan/metadata/ebuild_metadata.py       |   88 -
 .../repoman/modules/scan/metadata/pkgmetadata.py   |  221 --
 .../lib/repoman/modules/scan/metadata/restrict.py  |   58 -
 .../lib/repoman/modules/scan/metadata/use_flags.py |  103 -
 repoman/lib/repoman/modules/scan/module.py         |  127 -
 .../lib/repoman/modules/scan/options/__init__.py   |   28 -
 .../lib/repoman/modules/scan/options/options.py    |   27 -
 repoman/lib/repoman/modules/scan/scan.py           |   67 -
 repoman/lib/repoman/modules/scan/scanbase.py       |   79 -
 repoman/lib/repoman/modules/vcs/None/__init__.py   |   32 -
 repoman/lib/repoman/modules/vcs/None/changes.py    |   50 -
 repoman/lib/repoman/modules/vcs/None/status.py     |   52 -
 repoman/lib/repoman/modules/vcs/__init__.py        |   12 -
 repoman/lib/repoman/modules/vcs/bzr/__init__.py    |   32 -
 repoman/lib/repoman/modules/vcs/bzr/changes.py     |   77 -
 repoman/lib/repoman/modules/vcs/bzr/status.py      |   72 -
 repoman/lib/repoman/modules/vcs/changes.py         |  170 --
 repoman/lib/repoman/modules/vcs/cvs/__init__.py    |   32 -
 repoman/lib/repoman/modules/vcs/cvs/changes.py     |  134 --
 repoman/lib/repoman/modules/vcs/cvs/status.py      |  134 --
 repoman/lib/repoman/modules/vcs/git/__init__.py    |   32 -
 repoman/lib/repoman/modules/vcs/git/changes.py     |  145 --
 repoman/lib/repoman/modules/vcs/git/status.py      |   80 -
 repoman/lib/repoman/modules/vcs/hg/__init__.py     |   32 -
 repoman/lib/repoman/modules/vcs/hg/changes.py      |  109 -
 repoman/lib/repoman/modules/vcs/hg/status.py       |   68 -
 repoman/lib/repoman/modules/vcs/settings.py        |  113 -
 repoman/lib/repoman/modules/vcs/svn/__init__.py    |   32 -
 repoman/lib/repoman/modules/vcs/svn/changes.py     |  156 --
 repoman/lib/repoman/modules/vcs/svn/status.py      |  151 --
 repoman/lib/repoman/modules/vcs/vcs.py             |  145 --
 repoman/lib/repoman/profile.py                     |   94 -
 repoman/lib/repoman/qa_data.py                     |  210 --
 repoman/lib/repoman/qa_tracker.py                  |   46 -
 repoman/lib/repoman/repos.py                       |  377 ---
 repoman/lib/repoman/scanner.py                     |  484 ----
 repoman/lib/repoman/tests/__init__.py              |  328 ---
 repoman/lib/repoman/tests/changelog/__test__.py    |    0
 .../lib/repoman/tests/changelog/test_echangelog.py |  169 --
 repoman/lib/repoman/tests/commit/__init__.py       |    2 -
 repoman/lib/repoman/tests/commit/__test__.py       |    0
 repoman/lib/repoman/tests/commit/test_commitmsg.py |  155 --
 repoman/lib/repoman/tests/runTests.py              |   75 -
 repoman/lib/repoman/tests/simple/__init__.py       |    2 -
 repoman/lib/repoman/tests/simple/__test__.py       |    0
 repoman/lib/repoman/tests/simple/test_simple.py    |  512 ----
 repoman/lib/repoman/utilities.py                   |  590 -----
 repoman/man/repoman.1                              |  478 ----
 repoman/runtests                                   |  182 --
 repoman/setup.py                                   |  515 ----
 run-pylint                                         |    2 +
 runtests                                           |  110 +-
 setup.py                                           |   20 +-
 tabcheck.py                                        |    7 -
 tox.ini                                            |    8 +-
 353 files changed, 13289 insertions(+), 22599 deletions(-)

diff --cc bin/archive-conf
index 11e1d25b7,3f7d186fe..ecc8d8a1c
--- a/bin/archive-conf
+++ b/bin/archive-conf
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2020 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/binhost-snapshot
index fbecfa8bb,4022cb32c..0788e2704
--- a/bin/binhost-snapshot
+++ b/bin/binhost-snapshot
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2010-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/check-implicit-pointer-usage.py
index 4c736fcd7,06b666c88..1457a3c9f
--- a/bin/check-implicit-pointer-usage.py
+++ b/bin/check-implicit-pointer-usage.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  
  # Ripped from HP and updated from Debian
  # Update by Gentoo to support unicode output
diff --cc bin/chmod-lite.py
index 642a6a544,517a55bd9..baec75c40
--- a/bin/chmod-lite.py
+++ b/bin/chmod-lite.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2015 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/chpathtool.py
index f3842bdd5,d658e5012..1b30bc272
--- a/bin/chpathtool.py
+++ b/bin/chpathtool.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2011-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/clean_locks
index 7959486ac,b80213911..4ff410aa3
--- a/bin/clean_locks
+++ b/bin/clean_locks
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/dispatch-conf
index c2587639d,9490197d3..52f065b91
--- a/bin/dispatch-conf
+++ b/bin/dispatch-conf
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/dohtml.py
index 30e685d00,7aebd2af7..198d63799
--- a/bin/dohtml.py
+++ b/bin/dohtml.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2020 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/eapi.sh
index 1aaaa19e8,689e09b10..59ce6d9de
--- a/bin/eapi.sh
+++ b/bin/eapi.sh
@@@ -1,5 -1,5 +1,5 @@@
 -#!/bin/bash
 +#!@PORTAGE_BASH@
- # Copyright 2012-2021 Gentoo Authors
+ # Copyright 2012-2022 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
  # PHASES
diff --cc bin/ebuild
index 6f70ee4bf,546ab9d1c..9cf4afd5a
--- a/bin/ebuild
+++ b/bin/ebuild
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/ebuild-ipc.py
index 2f5790ee4,bc5dda27d..4a6a9468a
--- a/bin/ebuild-ipc.py
+++ b/bin/ebuild-ipc.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2010-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  #
diff --cc bin/egencache
index 99028203b,842f453ea..31a555102
--- a/bin/egencache
+++ b/bin/egencache
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2009-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/emaint
index af5234183,b9a129ed0..38a2c6896
--- a/bin/emaint
+++ b/bin/emaint
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2005-2020 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/emerge
index d952840ef,d1a8d9f52..9a0a570b5
--- a/bin/emerge
+++ b/bin/emerge
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2006-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/emirrordist
index 866a2be65,9f8db8292..36bc7611a
--- a/bin/emirrordist
+++ b/bin/emirrordist
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2013-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/env-update
index 5c2df8544,8e597b03d..7f1ae90ab
--- a/bin/env-update
+++ b/bin/env-update
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2020 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/filter-bash-environment.py
index a3cf7191a,86cb22948..09a45e509
--- a/bin/filter-bash-environment.py
+++ b/bin/filter-bash-environment.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/fixpackages
index 5c4185071,6f78b174d..ae28b216c
--- a/bin/fixpackages
+++ b/bin/fixpackages
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2020 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/glsa-check
index 04312a236,431590cf8..2b2976100
--- a/bin/glsa-check
+++ b/bin/glsa-check
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/install.py
index 6729778a1,4bdffd255..e8933606a
--- a/bin/install.py
+++ b/bin/install.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2013-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/lock-helper.py
index f09e4f2a7,6619d625a..e7acd1938
--- a/bin/lock-helper.py
+++ b/bin/lock-helper.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2010-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/misc-functions.sh
index 6c86952b4,41340e3f7..887af7a23
--- a/bin/misc-functions.sh
+++ b/bin/misc-functions.sh
@@@ -19,17 -19,13 +19,17 @@@ source "${PORTAGE_BIN_PATH}/ebuild.sh" 
  install_symlink_html_docs() {
  	if ! ___eapi_has_prefix_variables; then
  		local ED=${D}
 +	else
 +		# PREFIX LOCAL: ED needs not to exist, whereas D does
 +		[[ ! -d ${ED} && -d ${D} ]] && dodir /
 +		# END PREFIX LOCAL
  	fi
  	cd "${ED}" || die "cd failed"
- 	#symlink the html documentation (if DOC_SYMLINKS_DIR is set in make.conf)
- 	if [ -n "${DOC_SYMLINKS_DIR}" ] ; then
+ 	# Symlink the html documentation (if DOC_SYMLINKS_DIR is set in make.conf)
+ 	if [[ -n "${DOC_SYMLINKS_DIR}" ]]; then
  		local mydocdir docdir
  		for docdir in "${HTMLDOC_DIR:-does/not/exist}" "${PF}/html" "${PF}/HTML" "${P}/html" "${P}/HTML" ; do
- 			if [ -d "usr/share/doc/${docdir}" ] ; then
+ 			if [[ -d "usr/share/doc/${docdir}" ]]; then
  				mydocdir="/usr/share/doc/${docdir}"
  			fi
  		done
@@@ -287,9 -234,22 +273,24 @@@ install_qa_check_elf() 
  			fi
  		fi
  	fi
 +}
  
 +install_qa_check_misc() {
+ 	# If binpkg-dostrip is enabled, apply stripping before creating
+ 	# the binary package.
+ 	# Note: disabling it won't help with packages calling prepstrip directly.
+ 	# We do this after the scanelf bits so that we can reuse the data. bug #749624.
+ 	if has binpkg-dostrip ${FEATURES}; then
+ 		export STRIP_MASK
+ 		if ___eapi_has_dostrip; then
+ 			"${PORTAGE_BIN_PATH}"/estrip --queue "${PORTAGE_DOSTRIP[@]}"
+ 			"${PORTAGE_BIN_PATH}"/estrip --ignore "${PORTAGE_DOSTRIP_SKIP[@]}"
+ 			"${PORTAGE_BIN_PATH}"/estrip --dequeue
+ 		else
+ 			prepallstrip
+ 		fi
+ 	fi
+ 
  	# Portage regenerates this on the installed system.
  	rm -f "${ED%/}"/usr/share/info/dir{,.gz,.bz2} || die "rm failed!"
  }
@@@ -1203,35 -507,50 +1204,54 @@@ __dyn_package() 
  	# Sandbox is disabled in case the user wants to use a symlink
  	# for $PKGDIR and/or $PKGDIR/All.
  	export SANDBOX_ON="0"
- 	[ -z "${PORTAGE_BINPKG_TMPFILE}" ] && \
+ 	[[ -z "${PORTAGE_BINPKG_TMPFILE}" ]] && \
  		die "PORTAGE_BINPKG_TMPFILE is unset"
  	mkdir -p "${PORTAGE_BINPKG_TMPFILE%/*}" || die "mkdir failed"
- 	[ -z "${PORTAGE_COMPRESSION_COMMAND}" ] && \
-         die "PORTAGE_COMPRESSION_COMMAND is unset"
- 	tar $tar_options -cf - $PORTAGE_BINPKG_TAR_OPTS -C "${D}" . | \
- 		$PORTAGE_COMPRESSION_COMMAND > "$PORTAGE_BINPKG_TMPFILE"
- 	assert "failed to pack binary package: '$PORTAGE_BINPKG_TMPFILE'"
- 	PYTHONPATH=${PORTAGE_PYTHONPATH:-${PORTAGE_PYM_PATH}} \
- 		"${PORTAGE_PYTHON:-@PREFIX_PORTAGE_PYTHON@}" "$PORTAGE_BIN_PATH"/xpak-helper.py recompose \
- 		"$PORTAGE_BINPKG_TMPFILE" "$PORTAGE_BUILDDIR/build-info"
- 	if [ $? -ne 0 ]; then
- 		rm -f "${PORTAGE_BINPKG_TMPFILE}"
- 		die "Failed to append metadata to the tbz2 file"
- 	fi
- 	local md5_hash=""
- 	if type md5sum &>/dev/null ; then
- 		md5_hash=$(md5sum "${PORTAGE_BINPKG_TMPFILE}")
- 		md5_hash=${md5_hash%% *}
- 	elif type md5 &>/dev/null ; then
- 		md5_hash=$(md5 "${PORTAGE_BINPKG_TMPFILE}")
- 		md5_hash=${md5_hash##* }
+ 
+ 	if [[ "${BINPKG_FORMAT}" == "xpak" ]]; then
+ 		local tar_options=""
+ 		[[ $PORTAGE_VERBOSE = 1 ]] && tar_options+=" -v"
+ 		has xattr ${FEATURES} && [[ $(tar --help 2> /dev/null) == *--xattrs* ]] && tar_options+=" --xattrs"
+ 		[[ -z "${PORTAGE_COMPRESSION_COMMAND}" ]] && \
+ 			die "PORTAGE_COMPRESSION_COMMAND is unset"
+ 		tar $tar_options -cf - $PORTAGE_BINPKG_TAR_OPTS -C "${D}" . | \
+ 			$PORTAGE_COMPRESSION_COMMAND > "$PORTAGE_BINPKG_TMPFILE"
+ 		assert "failed to pack binary package: '$PORTAGE_BINPKG_TMPFILE'"
++		# BEGIN PREFIX LOCAL: use PREFIX_PORTAGE_PYTHON fallback
+ 		PYTHONPATH=${PORTAGE_PYTHONPATH:-${PORTAGE_PYM_PATH}} \
 -			"${PORTAGE_PYTHON:-/usr/bin/python}" "$PORTAGE_BIN_PATH"/xpak-helper.py recompose \
++			"${PORTAGE_PYTHON:-@PREFIX_PORTAGE_PYTHON@}" "$PORTAGE_BIN_PATH"/xpak-helper.py recompose \
+ 			"$PORTAGE_BINPKG_TMPFILE" "$PORTAGE_BUILDDIR/build-info"
++		# END PREFIX LOCAL
+ 		if [[ $? -ne 0 ]]; then
+ 			rm -f "${PORTAGE_BINPKG_TMPFILE}"
+ 			die "Failed to append metadata to the tbz2 file"
+ 		fi
+ 		local md5_hash=""
+ 		if type md5sum &>/dev/null ; then
+ 			md5_hash=$(md5sum "${PORTAGE_BINPKG_TMPFILE}")
+ 			md5_hash=${md5_hash%% *}
+ 		elif type md5 &>/dev/null ; then
+ 			md5_hash=$(md5 "${PORTAGE_BINPKG_TMPFILE}")
+ 			md5_hash=${md5_hash##* }
+ 		fi
+ 		[[ -n "${md5_hash}" ]] && \
+ 			echo ${md5_hash} > "${PORTAGE_BUILDDIR}"/build-info/BINPKGMD5
+ 		__vecho ">>> Done."
+ 
+ 	elif [[ "${BINPKG_FORMAT}" == "gpkg" ]]; then
++		# BEGIN PREFIX LOCAL: use PREFIX_PORTAGE_PYTHON fallback
+ 		PYTHONPATH=${PORTAGE_PYTHONPATH:-${PORTAGE_PYM_PATH}} \
 -			"${PORTAGE_PYTHON:-/usr/bin/python}" "$PORTAGE_BIN_PATH"/gpkg-helper.py compress \
++			"${PORTAGE_PYTHON:-@PREFIX_PORTAGE_PYTHON@}" "$PORTAGE_BIN_PATH"/gpkg-helper.py compress \
+ 			"${CATEGORY}/${PF}" "$PORTAGE_BINPKG_TMPFILE" "$PORTAGE_BUILDDIR/build-info" "${D}"
++		# END PREFIX LOCAL
+ 		if [[ $? -ne 0 ]]; then
+ 			rm -f "${PORTAGE_BINPKG_TMPFILE}"
+ 			die "Failed to create binpkg file"
+ 		fi
+ 		__vecho ">>> Done."
+ 	else
+ 		die "Unknown BINPKG_FORMAT ${BINPKG_FORMAT}"
  	fi
- 	[ -n "${md5_hash}" ] && \
- 		echo ${md5_hash} > "${PORTAGE_BUILDDIR}"/build-info/BINPKGMD5
- 	__vecho ">>> Done."
  
  	cd "${PORTAGE_BUILDDIR}"
  	>> "$PORTAGE_BUILDDIR/.packaged" || \
diff --cc bin/phase-functions.sh
index 0b6b93038,84a5c1ec3..5a653fa64
--- a/bin/phase-functions.sh
+++ b/bin/phase-functions.sh
@@@ -766,9 -770,8 +770,9 @@@ __dyn_help() 
  		echo "production (stripped)"
  	fi
  	echo "  merge to    : ${ROOT}"
 +	echo "  offset      : ${EPREFIX}"
  	echo
- 	if [ -n "$USE" ]; then
+ 	if [[ -n "$USE" ]]; then
  		echo "Additionally, support for the following optional features will be enabled:"
  		echo
  		echo "  ${USE}"
diff --cc bin/portageq
index a178ff0b0,6d12c98dd..4fe254d5d
--- a/bin/portageq
+++ b/bin/portageq
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/quickpkg
index 1bcbda8ba,773c1c07e..7e0445dc3
--- a/bin/quickpkg
+++ b/bin/quickpkg
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/regenworld
index b4f8509cb,7927dd237..6d381fad6
--- a/bin/regenworld
+++ b/bin/regenworld
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 1999-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/save-ebuild-env.sh
index b3d4c7363,17e4b1b3e..5c7fd4d7d
mode 100755,100644..100755
--- a/bin/save-ebuild-env.sh
+++ b/bin/save-ebuild-env.sh
@@@ -81,21 -81,10 +81,14 @@@ __save_ebuild_env() 
  		${QA_INTERCEPTORS}
  
  	___eapi_has_usex && unset -f usex
- 	___eapi_has_master_repositories && unset -f master_repositories
- 	___eapi_has_repository_path && unset -f repository_path
- 	___eapi_has_available_eclasses && unset -f available_eclasses
- 	___eapi_has_eclass_path && unset -f eclass_path
- 	___eapi_has_license_path && unset -f license_path
- 	___eapi_has_package_manager_build_user && unset -f package_manager_build_user
- 	___eapi_has_package_manager_build_group && unset -f package_manager_build_group
  
 -	# Clear out the triple underscore namespace as it is reserved by the PM.
 -	unset -f $(compgen -A function ___)
 -	unset ${!___*}
 +	# BEGIN PREFIX LOCAL: compgen is not compiled in during bootstrap
 +	if type compgen >& /dev/null ; then
 +		# Clear out the triple underscore namespace as it is reserved by the PM.
 +		unset -f $(compgen -A function ___)
 +		unset ${!___*}
 +	fi
 +	# END PREFIX LOCAL
  
  	# portage config variables and variables set directly by portage
  	unset ACCEPT_LICENSE BUILD_PREFIX COLS \
diff --cc bin/xattr-helper.py
index fb39ae9df,6e50ac487..8ad94c4ab
--- a/bin/xattr-helper.py
+++ b/bin/xattr-helper.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2012-2018 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc bin/xpak-helper.py
index d92a3f7d8,ac29995e7..8ffa9c747
--- a/bin/xpak-helper.py
+++ b/bin/xpak-helper.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -b
 -#!/usr/bin/env python
++#!@PREFIX_PORTAGE_PYTHON@
  # Copyright 2009-2014 Gentoo Foundation
  # Distributed under the terms of the GNU General Public License v2
  
diff --cc cnf/make.globals
index 4840dc354,f951bb317..613f58ff0
--- a/cnf/make.globals
+++ b/cnf/make.globals
@@@ -145,11 -143,11 +166,11 @@@ PORTAGE_WORKDIR_MODE="0700
  PORTAGE_ELOG_CLASSES="log warn error"
  PORTAGE_ELOG_SYSTEM="save_summary:log,warn,error,qa echo"
  
 -PORTAGE_ELOG_MAILURI="root"
 +PORTAGE_ELOG_MAILURI="@rootuser@"
  PORTAGE_ELOG_MAILSUBJECT="[portage] ebuild log for \${PACKAGE} on \${HOST}"
 -PORTAGE_ELOG_MAILFROM="portage@localhost"
 +PORTAGE_ELOG_MAILFROM="@portageuser@@localhost"
  
- # Signing command used by repoman
+ # Signing command used by egencache
  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.
diff --cc lib/_emerge/EbuildPhase.py
index 3fe4c8f3a,9a04f9c1f..df166ad47
--- a/lib/_emerge/EbuildPhase.py
+++ b/lib/_emerge/EbuildPhase.py
@@@ -29,8 -29,8 +29,10 @@@ from portage.util._async.AsyncTaskFutur
  from portage.util._async.BuildLogger import BuildLogger
  from portage.util.futures import asyncio
  from portage.util.futures.executor.fork import ForkExecutor
+ from portage.exception import InvalidBinaryPackageFormat
+ from portage.const import SUPPORTED_GENTOO_BINPKG_FORMATS
 +# PREFIX LOCAL
 +from portage.const import EPREFIX
  
  try:
      from portage.xml.metadata import MetaDataXML
diff --cc lib/portage/__init__.py
index 1e4c68b13,a4a2c8865..ab3017a5d
--- a/lib/portage/__init__.py
+++ b/lib/portage/__init__.py
@@@ -50,19 -48,9 +50,19 @@@ except ImportError as e
      sys.stderr.write(
          "!!! gone wrong. Here is the information we got for this exception:\n"
      )
-     sys.stderr.write("    " + str(e) + "\n\n")
+     sys.stderr.write(f"    {e}\n\n")
      raise
  
 +# BEGIN PREFIX LOCAL
 +# for bug #758230, on macOS the default was switched from fork to spawn,
 +# the latter causing issues because all kinds of things can't be
 +# pickled, so force fork mode for now
 +try:
 +    multiprocessing.set_start_method('fork')
 +except RuntimeError:
 +    pass
 +# END PREFIX LOCAL
 +
  try:
  
      import portage.proxy.lazyimport
diff --cc lib/portage/const.py
index f2c69a4bb,f0f57067a..3038ce285
--- a/lib/portage/const.py
+++ b/lib/portage/const.py
@@@ -2,12 -2,8 +2,13 @@@
  # Copyright 1998-2021 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2
  
 +# ===========================================================================
 +# autotool supplied constants.
 +# ===========================================================================
 +from portage.const_autotool import *
 +
  import os
+ import sys
  
  # ===========================================================================
  # START OF CONSTANTS -- START OF CONSTANTS -- START OF CONSTANTS -- START OF
@@@ -62,40 -58,22 +63,40 @@@ DEPCACHE_PATH = f"/{CACHE_PATH}/dep
  GLOBAL_CONFIG_PATH = "/usr/share/portage/config"
  
  # these variables are not used with target_root or config_root
 +PORTAGE_BASE_PATH        = PORTAGE_BASE
  # NOTE: Use realpath(__file__) so that python module symlinks in site-packages
  # are followed back to the real location of the whole portage installation.
 +#PREFIX: below should work, but I'm not sure how it it affects other places
  # NOTE: Please keep PORTAGE_BASE_PATH in one line to help substitutions.
  # fmt:off
 -PORTAGE_BASE_PATH = os.path.join(os.sep, os.sep.join(os.path.realpath(__file__.rstrip("co")).split(os.sep)[:-3]))
 +# PREFIX LOCAL (from const_autotools)
 +#PORTAGE_BASE_PATH = os.path.join(os.sep, os.sep.join(os.path.realpath(__file__.rstrip("co")).split(os.sep)[:-3]))
  # fmt:on
- PORTAGE_BIN_PATH = PORTAGE_BASE_PATH + "/bin"
+ PORTAGE_BIN_PATH = f"{PORTAGE_BASE_PATH}/bin"
  PORTAGE_PYM_PATH = os.path.realpath(os.path.join(__file__, "../.."))
- LOCALE_DATA_PATH = PORTAGE_BASE_PATH + "/locale"  # FIXME: not used
- EBUILD_SH_BINARY = PORTAGE_BIN_PATH + "/ebuild.sh"
- MISC_SH_BINARY = PORTAGE_BIN_PATH + "/misc-functions.sh"
- # BEGIN PREFIX LOCAL
- SANDBOX_BINARY = EPREFIX + "/usr/bin/sandbox"
- FAKEROOT_BINARY = EPREFIX + "/usr/bin/fakeroot"
+ LOCALE_DATA_PATH = f"{PORTAGE_BASE_PATH}/locale"  # FIXME: not used
+ EBUILD_SH_BINARY = f"{PORTAGE_BIN_PATH}/ebuild.sh"
+ MISC_SH_BINARY = f"{PORTAGE_BIN_PATH}/misc-functions.sh"
 -SANDBOX_BINARY = "/usr/bin/sandbox"
 -FAKEROOT_BINARY = "/usr/bin/fakeroot"
++# BEGIN PREFIX LOCAL: use EPREFIX for binaries
++SANDBOX_BINARY = f"{EPREFIX}/usr/bin/sandbox"
++FAKEROOT_BINARY = f"{EPREFIX}/usr/bin/fakeroot"
 +# END PREFIX LOCAL
  BASH_BINARY = "/bin/bash"
  MOVE_BINARY = "/bin/mv"
  PRELINK_BINARY = "/usr/sbin/prelink"
- # BEGIN PREFIX LOCAL
++# BEGIN PREFIX LOCAL: macOS sandbox
 +MACOSSANDBOX_BINARY      = "/usr/bin/sandbox-exec"
 +MACOSSANDBOX_PROFILE     = '''(version 1)
 +(allow default)
 +(deny file-write*)
 +(allow file-write* file-write-setugid
 +@@MACOSSANDBOX_PATHS@@)
 +(allow file-write-data
 +@@MACOSSANDBOX_PATHS_CONTENT_ONLY@@)'''
 +
 +PORTAGE_GROUPNAME        = portagegroup
 +PORTAGE_USERNAME         = portageuser
 +# END PREFIX LOCAL
  
  INVALID_ENV_FILE = "/etc/spork/is/not/valid/profile.env"
  MERGING_IDENTIFIER = "-MERGING-"
@@@ -235,9 -217,7 +240,9 @@@ SUPPORTED_FEATURES = frozenset
          "usersync",
          "webrsync-gpg",
          "xattr",
 +        # PREFIX LOCAL
 +		"stacked-prefix",
-     ]
+     )
  )
  
  EAPI = 8
diff --cc lib/portage/data.py
index 6848751fe,1ef8d4aef..5d34db187
--- a/lib/portage/data.py
+++ b/lib/portage/data.py
@@@ -6,9 -6,9 +6,10 @@@ import gr
  import os
  import platform
  import pwd
 +from portage.const import PORTAGE_GROUPNAME, PORTAGE_USERNAME, EPREFIX
  
  import portage
+ from portage.localization import _
  
  portage.proxy.lazyimport.lazyimport(
      globals(),
@@@ -17,17 -17,11 +18,12 @@@
      "portage.util.path:first_existing",
      "subprocess",
  )
- from portage.localization import _
  
  ostype = platform.system()
- userland = None
- # Prefix always has USERLAND=GNU, even on
- # FreeBSD, OpenBSD and Darwin (thank the lord!).
- # Hopefully this entire USERLAND hack can go once
+ userland = "GNU"
 -if ostype == "DragonFly" or ostype.endswith("BSD"):
++# PREFIX LOCAL: Prefix always has USERLAND=GNU
 +if EPREFIX == "" and (ostype == "DragonFly" or ostype.endswith("BSD")):
      userland = "BSD"
- else:
-     userland = "GNU"
  
  lchown = getattr(os, "lchown", None)
  
diff --cc lib/portage/dbapi/bintree.py
index 8b008a93d,b441fff9a..986ffeb3d
--- a/lib/portage/dbapi/bintree.py
+++ b/lib/portage/dbapi/bintree.py
@@@ -514,9 -582,7 +588,10 @@@ class binarytree
                  "SLOT": "0",
                  "USE": "",
              }
-             self._pkgindex_inherited_keys = ["CHOST", "repository",
 -            self._pkgindex_inherited_keys = ["BINPKG_FORMAT", "CHOST", "repository"]
++            self._pkgindex_inherited_keys = ["BINPKG_FORMAT", "CHOST",
 +                    # PREFIX LOCAL
-                     "EPREFIX"]
++                    "EPREFIX",
++                    "repository"]
  
              # Populate the header with appropriate defaults.
              self._pkgindex_default_header_data = {
diff --cc lib/portage/dbapi/vartree.py
index 7e68b3f8c,a95d60691..6c668726d
--- a/lib/portage/dbapi/vartree.py
+++ b/lib/portage/dbapi/vartree.py
@@@ -59,8 -55,7 +60,9 @@@ from portage.const import 
      PORTAGE_PACKAGE_ATOM,
      PRIVATE_PATH,
      VDB_PATH,
+     SUPPORTED_GENTOO_BINPKG_FORMATS,
 +    # PREFIX LOCAL
 +    EPREFIX,
  )
  from portage.dbapi import dbapi
  from portage.exception import (
diff --cc lib/portage/getbinpkg.py
index aaf0bcf81,ea9ee1d0a..3cad401af
--- a/lib/portage/getbinpkg.py
+++ b/lib/portage/getbinpkg.py
@@@ -19,12 -19,8 +19,10 @@@ import socke
  import time
  import tempfile
  import base64
 +# PREFIX LOCAL
 +from portage.const import CACHE_PATH
  import warnings
  
- _all_errors = [NotImplementedError, ValueError, socket.error]
- 
  from html.parser import HTMLParser as html_parser_HTMLParser
  from urllib.parse import unquote as urllib_parse_unquote
  
@@@ -621,18 -603,15 +605,17 @@@ def dir_get_metadata
          stacklevel=2,
      )
  
-     if not conn:
+     keepconnection = 1
+     if conn:
          keepconnection = 0
-     else:
-         keepconnection = 1
  
 -    cache_path = "/var/cache/edb"
 +    # PREFIX LOCAL
 +    cache_path = CACHE_PATH
      metadatafilename = os.path.join(cache_path, "remote_metadata.pickle")
  
-     if makepickle is None:
-         # PREFIX LOCAL
-         makepickle = CACHE_PATH + "/metadata.idx.most_recent"
+     if not makepickle:
 -        makepickle = "/var/cache/edb/metadata.idx.most_recent"
++        # PREFIX LOCAL: use CACHE_PATH for EPREFIX
++        makepickle = os.path.join(cache_path, "metadata.idx.most_recent")
  
      try:
          conn = create_conn(baseurl, conn)[0]
diff --cc lib/portage/package/ebuild/doebuild.py
index af8845f34,8ee9f73c6..3c1998889
--- a/lib/portage/package/ebuild/doebuild.py
+++ b/lib/portage/package/ebuild/doebuild.py
@@@ -67,10 -66,7 +67,11 @@@ from portage.const import 
      INVALID_ENV_FILE,
      MISC_SH_BINARY,
      PORTAGE_PYM_PACKAGES,
+     SUPPORTED_GENTOO_BINPKG_FORMATS,
 +    # BEGIN PREFIX LOCAL
 +    EPREFIX,
 +    MACOSSANDBOX_PROFILE,
 +    # END PREFIX LOCAL
  )
  from portage.data import portage_gid, portage_uid, secpass, uid, userpriv_groups
  from portage.dbapi.porttree import _parse_uri_map
diff --cc lib/portage/tests/resolver/ResolverPlayground.py
index 969d8f2fb,ec69ee068..81ce9178b
--- a/lib/portage/tests/resolver/ResolverPlayground.py
+++ b/lib/portage/tests/resolver/ResolverPlayground.py
@@@ -356,8 -360,7 +360,9 @@@ class ResolverPlayground
              metadata["repository"] = repo
              metadata["CATEGORY"] = cat
              metadata["PF"] = pf
+             metadata["BINPKG_FORMAT"] = binpkg_format
 +            # PREFIX LOCAL
 +            metadata["EPREFIX"] = self.eprefix
  
              repo_dir = self.pkgdir
              category_dir = os.path.join(repo_dir, cat)
diff --cc lib/portage/tests/runTests.py
index f2e799c65,00a8ad7bb..2a11381b0
--- a/lib/portage/tests/runTests.py
+++ b/lib/portage/tests/runTests.py
@@@ -1,4 -1,4 +1,4 @@@
- #!@PREFIX_PORTAGE_PYTHON@ -bWd
 -#!/usr/bin/env python -Wd
++#!@PREFIX_PORTAGE_PYTHON@ -Wd
  # runTests.py -- Portage Unit Test Functionality
  # Copyright 2006-2020 Gentoo Authors
  # Distributed under the terms of the GNU General Public License v2


             reply	other threads:[~2022-07-24  9:45 UTC|newest]

Thread overview: 195+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-24  9:45 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-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-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=1658655931.6bb0b79ecb88e536b2cdea570b0972c798170c4f.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