Gentoo Archives: gentoo-portage-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-portage-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-portage-dev] [PATCH 1/6] self-update: Copy only relevant packages from PORTAGE_PYM_PATH
Date: Thu, 21 Aug 2014 20:20:05
Message-Id: 1408652384-1954-2-git-send-email-mgorny@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCHES] setup.py install for Portage by "Michał Górny"
1 Update the self-update code to copy only packages relevant to Portage,
2 to avoid copying other packages when Portage is installed alongside
3 them.
4 ---
5 pym/portage/const.py | 3 +++
6 pym/portage/package/ebuild/doebuild.py | 8 ++++++--
7 2 files changed, 9 insertions(+), 2 deletions(-)
8
9 diff --git a/pym/portage/const.py b/pym/portage/const.py
10 index aab6e8a..4b01ff9 100644
11 --- a/pym/portage/const.py
12 +++ b/pym/portage/const.py
13 @@ -270,6 +270,9 @@ SUPPORTED_BINPKG_FORMATS = ("tar", "rpm")
14 # Time formats used in various places like metadata.chk.
15 TIMESTAMP_FORMAT = "%a, %d %b %Y %H:%M:%S +0000" # to be used with time.gmtime()
16
17 +# Top-level names of Python packages installed by Portage.
18 +PORTAGE_PYM_PACKAGES = ("_emerge", "portage", "repoman")
19 +
20 # ===========================================================================
21 # END OF CONSTANTS -- END OF CONSTANTS -- END OF CONSTANTS -- END OF CONSTANT
22 # ===========================================================================
23 diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
24 index 01707ae..d3e3f5a 100644
25 --- a/pym/portage/package/ebuild/doebuild.py
26 +++ b/pym/portage/package/ebuild/doebuild.py
27 @@ -45,7 +45,7 @@ from portage import auxdbkeys, bsd_chflags, \
28 unmerge, _encodings, _os_merge, \
29 _shell_quote, _unicode_decode, _unicode_encode
30 from portage.const import EBUILD_SH_ENV_FILE, EBUILD_SH_ENV_DIR, \
31 - EBUILD_SH_BINARY, INVALID_ENV_FILE, MISC_SH_BINARY
32 + EBUILD_SH_BINARY, INVALID_ENV_FILE, MISC_SH_BINARY, PORTAGE_PYM_PACKAGES
33 from portage.data import portage_gid, portage_uid, secpass, \
34 uid, userpriv_groups
35 from portage.dbapi.porttree import _parse_uri_map
36 @@ -2327,7 +2327,11 @@ def _prepare_self_update(settings):
37
38 orig_pym_path = portage._pym_path
39 portage._pym_path = os.path.join(base_path_tmp, "pym")
40 - shutil.copytree(orig_pym_path, portage._pym_path, symlinks=True)
41 + os.mkdir(portage._pym_path)
42 + for pmod in PORTAGE_PYM_PACKAGES:
43 + shutil.copytree(os.path.join(orig_pym_path, pmod),
44 + os.path.join(portage._pym_path, pmod),
45 + symlinks=True)
46
47 for dir_path in (base_path_tmp, portage._bin_path, portage._pym_path):
48 os.chmod(dir_path, 0o755)
49 --
50 2.0.4

Replies