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 |