From 47500360b3063b114904c0a7dc4817a2ac6390d4 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Fri, 4 Mar 2011 08:39:53 -0800 Subject: config: quote overlays containing spaces This will fix bug #357297. --- pym/portage/package/ebuild/config.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'pym') diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py index b63cff145..6981e24ca 100644 --- a/pym/portage/package/ebuild/config.py +++ b/pym/portage/package/ebuild/config.py @@ -501,21 +501,24 @@ class config(object): self._ppropertiesdict = portage.dep.ExtendedAtomDict(dict) self._penvdict = portage.dep.ExtendedAtomDict(dict) - """ repoman controls PORTDIR_OVERLAY via the environment, so no - special cases are needed here.""" - - overlays = shlex_split(self.get('PORTDIR_OVERLAY', '')) - if overlays: - new_ov = [] - for ov in overlays: + # repoman controls PORTDIR_OVERLAY via the environment, so no + # special cases are needed here. + portdir_overlay = shlex_split(self.get("PORTDIR_OVERLAY", "")) + new_ov = [] + if portdir_overlay: + whitespace_re = re.compile(r"\s") + for ov in portdir_overlay: ov = normalize_path(ov) if os.path.isdir(ov): + if whitespace_re.search(ov) is not None: + ov = portage._shell_quote(ov) new_ov.append(ov) else: writemsg(_("!!! Invalid PORTDIR_OVERLAY" " (not a dir): '%s'\n") % ov, noiselevel=-1) - self["PORTDIR_OVERLAY"] = " ".join(new_ov) - self.backup_changes("PORTDIR_OVERLAY") + + self["PORTDIR_OVERLAY"] = " ".join(new_ov) + self.backup_changes("PORTDIR_OVERLAY") locations_manager.set_port_dirs(self["PORTDIR"], self["PORTDIR_OVERLAY"]) @@ -2129,7 +2132,7 @@ class config(object): def thirdpartymirrors(self): if getattr(self, "_thirdpartymirrors", None) is None: profileroots = [os.path.join(self["PORTDIR"], "profiles")] - for x in self["PORTDIR_OVERLAY"].split(): + for x in shlex_split(self.get("PORTDIR_OVERLAY", "")): profileroots.insert(0, os.path.join(x, "profiles")) thirdparty_lists = [grabdict(os.path.join(x, "thirdpartymirrors")) for x in profileroots] self._thirdpartymirrors = stack_dictlist(thirdparty_lists, incremental=True) -- cgit v1.2.3-1-g7c22