From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1RCeeC-0004AC-3U for garchives@archives.gentoo.org; Sat, 08 Oct 2011 21:41:32 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id DFE1221C01F; Sat, 8 Oct 2011 21:41:24 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id A2A9121C01F for ; Sat, 8 Oct 2011 21:41:24 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 0C55C1B4030 for ; Sat, 8 Oct 2011 21:41:24 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 1ECAD80042 for ; Sat, 8 Oct 2011 21:41:23 +0000 (UTC) From: "Arfrever Frehtes Taifersar Arahesis" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Arfrever Frehtes Taifersar Arahesis" Message-ID: Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/repository/ X-VCS-Repository: proj/portage X-VCS-Files: pym/portage/repository/config.py X-VCS-Directories: pym/portage/repository/ X-VCS-Committer: arfrever X-VCS-Committer-Name: Arfrever Frehtes Taifersar Arahesis X-VCS-Revision: ab2a6cc357ba3c8272a4a1556e2c0bcd4bee102e Date: Sat, 8 Oct 2011 21:41:23 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: 27fa47c1a736b7df0fab6ae255b85792 commit: ab2a6cc357ba3c8272a4a1556e2c0bcd4bee102e Author: Arfrever Frehtes Taifersar Arahesis Gentoo Org> AuthorDate: Sat Oct 8 21:37:35 2011 +0000 Commit: Arfrever Frehtes Taifersar Arahesis gentoo org> CommitDate: Sat Oct 8 21:37:35 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3Dab2a6cc3 RepoConfigLoader: Recursively expand masters. --- pym/portage/repository/config.py | 48 +++++++++++++++++++++-----------= ----- 1 files changed, 27 insertions(+), 21 deletions(-) diff --git a/pym/portage/repository/config.py b/pym/portage/repository/co= nfig.py index 9f4ac2b..8f7e809 100644 --- a/pym/portage/repository/config.py +++ b/pym/portage/repository/config.py @@ -474,32 +474,38 @@ class RepoConfigLoader(object): self._prepos_changed =3D True self._repo_location_list =3D [] =20 - #The 'masters' key currently contains repo names. Replace them with th= e matching RepoConfig. - for repo_name, repo in prepos.items(): - if repo_name =3D=3D "DEFAULT": - continue + def get_masters(repo_name, repo, recurse=3DTrue): + master_repos =3D [] if repo.masters is None: if self.mainRepo() and repo_name !=3D self.mainRepo().name: - repo.masters =3D self.mainRepo(), + master_repos =3D [self.mainRepo()] else: - repo.masters =3D () + master_repos =3D [] else: - if repo.masters and isinstance(repo.masters[0], RepoConfig): - # This one has already been processed - # because it has an alias. - continue - master_repos =3D [] - for master_name in repo.masters: - if master_name not in prepos: - layout_filename =3D os.path.join(repo.user_location, - "metadata", "layout.conf") - writemsg_level(_("Unavailable repository '%s' " \ - "referenced by masters entry in '%s'\n") % \ - (master_name, layout_filename), - level=3Dlogging.ERROR, noiselevel=3D-1) + for master in repo.masters: + if isinstance(master, RepoConfig): + master_repos.append(master) else: - master_repos.append(prepos[master_name]) - repo.masters =3D tuple(master_repos) + if master not in prepos: + layout_filename =3D os.path.join(repo.user_location, + "metadata", "layout.conf") + writemsg_level(_("Unavailable repository '%s' " \ + "referenced by masters entry in '%s'\n") % \ + (master_name, layout_filename), + level=3Dlogging.ERROR, noiselevel=3D-1) + else: + master =3D prepos[master] + if recurse: + master_repos.extend(get_masters(master.name, master) + [master]) + else: + master_repos.append(master) + return master_repos + + #The 'masters' key currently contains repo names. Replace them with th= e matching RepoConfig. + for repo_name, repo in prepos.items(): + if repo_name =3D=3D "DEFAULT": + continue + repo.masters =3D tuple(get_masters(repo_name, repo)) =20 #The 'eclass_overrides' key currently contains repo names. Replace the= m with the matching repo paths. for repo_name, repo in prepos.items():